§ 一
最终要达到的目的与效果
这台机器要替舍监做哪几件事,又顺带替伊月学到了什么。
这台机器要解决什么
宿舍每晚点呼(查学生有没有按时回宿舍)原来靠舍监挨个房间敲门、纸上打钩,慢、易漏、没法防代答。点呼机把这件事数字化:
- 学生端:晚上回宿舍,把学生卡贴一下读卡器,或用手机碰一下贴纸,1 秒完成签到。
- 老师端:电脑/手机上实时看到谁回了、谁还没回,迟到 / 缺席自动判定、自动扣纪律分,不用手记。
- 防代刷:卡有唯一编号(防随便复制);手机碰的网址带一次性验证码(用过即失效,防截图转发替别人签到)。
- 现场反馈:签到成功亮绿灯 + 喇叭播日语姓名(「○○さん、お帰りなさい」=「○○同学,欢迎回来」),失败亮红灯。
对我(itsuki)来说还有一层目的:学习
这台机器不只是买来用,更是买来亲手组装、搞懂原理的学习材料:
- 第一次拿烙铁焊接(焊排针)—— 零电子经验跨出第一步
- 搞懂主板那排针脚(GPIO)怎么接模块
- 搞懂两种芯片间通信方式 SPI 和 I²C 的区别
- 搞懂 NFC(近场通信,手机/卡贴近就能读)怎么工作
- 这些动手过程本身就是升学(AC 入試)要讲的素材
§ 二
机器由什么组成、怎么工作
一块树莓派 + 5 个模块 + 两条签到路径 — 软件状态机串起整个流程。
大脑:Raspberry Pi 3 Model A+
一块巴掌大的小电脑(树莓派),跑 Python 程序。它板边有一排 40 根金属针叫 GPIO(通用输入输出脚),用来接各种模块。
两条签到路径
路径 A — 刷学生卡:
学生卡(NTAG215) → 读卡器(PN532)读出卡号 → 主板 Python → 网络发后端 → 后端判定签到 → 推送老师端
路径 B — 手机碰贴纸:
主板每隔几秒改写贴纸(ST25DV)里的网址(带一次性验证码) → 学生手机碰一下 → 打开签到网页 → 后端校验验证码
5 个模块各干什么
| 模块 | 是什么 / 干什么 | 怎么接主板 |
|---|---|---|
| PN532 读卡器 | 读学生卡的唯一编号 | SPI(一种高速 4 线通信总线) |
| ST25DV 贴纸 | 能被主板改写、又能被手机读的特殊 NFC 标签 | I²C(一种 2 线通信总线) |
| LED 灯 ×4 | 绿成功 / 红失败 / 蓝待机 / 白启动 | 数字脚,每个串 1 个电阻 |
| 风扇 | 主板长时间跑会热,吹散热(必须 5V) | 接 5V 供电针 |
| 喇叭 | 播日语姓名 | 插 USB 口 |
软件怎么转
主程序是个循环(状态机):待机 → 读到卡/手机碰 → 提交后端 → 成功亮绿/失败亮红 → 回到待机。
为什么 PN532 走 SPI 不走 I²C:ST25DV 已经占了 I²C 这条线,两个挤一条容易出问题;PN532 在树莓派上走 SPI 最稳(两个外部 AI 审查都确认)。
§ 三
下单前必看
核对链接后发现的四处问题 — 三处必须改,一处小修小补。
① 风扇链接是 12V 的,但树莓派只有 5V!
你给的风扇链接(B0DYV31FJZ)抓出来是「JYUDAUFU 30×10mm DC 12V 风扇 4 个装」。12V 风扇接树莓派 5V 转不动甚至不转。上次就说好换 5V 的——这个别买,重新找 5V 30mm 风扇。
你给的风扇链接(B0DYV31FJZ)抓出来是「JYUDAUFU 30×10mm DC 12V 风扇 4 个装」。12V 风扇接树莓派 5V 转不动甚至不转。上次就说好换 5V 的——这个别买,重新找 5V 30mm 风扇。
② 喇叭对不上。截图里是 HONKYOB ¥1,980,但你给的链接(B0G64JFMNR)抓出来是「Apqfw HM5002」另一款。两个都是 USB 小喇叭功能差不多,你确认到底买哪个,别两个都下。
③ 重复花钱:Qwiic 免焊线 ¥3,090 不用买。你愿意焊接,ST25DV 焊排针即可(板底有 6 个焊孔已确认)。排针套装 ¥749 留着焊 PN532 + ST25DV 都用它。你给的链接清单里已经没有 Qwiic 了,对的,购物车里如果还有就删掉,省 3,090。
④ 小问题(不致命):
· 蓝色 LED 漏了链接——你给的秋月 8 个链接里没有蓝色 LED(截图有),补一下 秋月 101321
· 杜邦线买了两种:母-母 15cm(103475)+ 母-母 20cm 连排(115868),都是母对母、功能重叠,留一种就够(都便宜,都留也行)
· PN532 链接抓不到(B0C7Q1PX3R 服务器报错),按排除法应该是 PN532 ¥1,190,下单前你点进去核对
· 45 孔小面包板可不买(有 400 孔了)
· Mac 没 SD 卡槽的话补个 microSD 读卡器
· 蓝色 LED 漏了链接——你给的秋月 8 个链接里没有蓝色 LED(截图有),补一下 秋月 101321
· 杜邦线买了两种:母-母 15cm(103475)+ 母-母 20cm 连排(115868),都是母对母、功能重叠,留一种就够(都便宜,都留也行)
· PN532 链接抓不到(B0C7Q1PX3R 服务器报错),按排除法应该是 PN532 ¥1,190,下单前你点进去核对
· 45 孔小面包板可不买(有 400 孔了)
· Mac 没 SD 卡槽的话补个 microSD 读卡器
§ 四
采购清单
三家渠道,点链接直接买。价格 / 库存 / 状态全在这一张表里。
秋月 满 6,000 免送料 · 翌日发 · 秋葉原有店头
SS 平日 14 时前当日发 · 送料约 400
Amazon Prime 翌日 · 自营免送料
线下 秋葉原店头可拿
秋月 秋月電子
| 商品 | 单价 | 数量 | 小计 | 链接 | 状态 |
|---|---|---|---|---|---|
| Raspberry Pi 3 Model A+(主板) | 5,580 | 1 | 5,580 | 114878 | ✓ 线下 |
| AC 适配器 5V3A microUSB(供电) | 1,100 | 1 | 1,100 | 112001 | ✓ 线下 |
| 红色 LED 5mm(失败灯) | 10 | 1 | 10 | 112605 | ✓ |
| 绿色 LED 5mm OSPG5111A(成功灯,最重要) | 20 | 1 | 20 | 112117 | ✓ 已确认 |
| 白色 LED 5mm(启动灯)10 个入 | 250 | 1包 | 250 | 104764 | ✓ |
| 蓝色 LED 5mm(待机灯)10 个入 | 180 | 1包 | 180 | 101321 | 漏了链接,补上 |
| 220Ω 电阻 1/4W(限流保护 LED)100 本入 | 150 | 1袋 | 150 | 125221 | ✓ 现货 线下40袋 |
| 杜邦线 母-母 15cm 10 本入 | 480 | 1包 | 480 | 103475 | ✓ |
| 杜邦线 母-母 20cm 40P 连排 | 200 | 1本 | 200 | 115868 | 和上一行重复 |
| 秋月小计 | ≈ 7,970 | ||||
SS Switch Science
| 商品 | 单价 | 数量 | 小计 | 链接 | 状态 |
|---|---|---|---|---|---|
| ST25DV16K I2C RFID 模块(手机碰的贴纸) | 968 | 4 或 5 | 3,872 / 4,840 | 7903 | 数量待定 / 库存 8 |
| 送料 | ~400 | — | 400 | — | |
| SS 小计(按 4 个) | ≈ 4,272 | ||||
Amazon Amazon Japan
| 商品 | 单价 | 数量 | 小计 | 链接 | 状态 |
|---|---|---|---|---|---|
| PN532 V3 NFC 套件(读学生卡) | 1,190 | 1 | 1,190 | B0C7Q1PX3R | 链接抓不到,自己核对 |
| NTAG215 白卡 10 张(学生卡) | 920 | 1套 | 920 | B08WRV4NHM | ✓ 已确认 |
| USB 迷你喇叭(日语播报) | 1,980 | 1 | 1,980 | B0G64JFMNR | 链接是 Apqfw,截图是 HONKYOB,选一个 |
| 2.54mm 公母排针套装 60 个(焊 PN532+ST25DV) | 749 | 1 | 749 | B0C13N6T48 | ✓ 已确认 |
| Samcos 400 孔面包板 + 跳线 2 个装 | 730 | 1 | 730 | B0C3TNP1RG | ✓ 已确认 |
| 5V 30mm 风扇 | — | 1 | — | B0DYV31FJZ | 链接是 12V!重找 5V |
| Amazon 小计(不含待定喇叭/风扇) | ≈ 5,569 | ||||
合计
17,800円
秋月 7,970 + SS 4,272 + Amazon 5,569
已删 Qwiic 省 3,090;不含待定的风扇 / 读卡器;ST25DV 按 4 个算
已删 Qwiic 省 3,090;不含待定的风扇 / 读卡器;ST25DV 按 4 个算
§ 五
接线速查
详见 点呼机接线说明.md。这里是四块模块的针脚对照速查。
PN532 → 主板(SPI)
SCK → pin23 / GPIO11
MISO → pin21 / GPIO9
MOSI → pin19 / GPIO10
SS → pin24 / GPIO8
VCC → 3.3V 或 5V(看模块标)
GND → pin6(接地)
MISO → pin21 / GPIO9
MOSI → pin19 / GPIO10
SS → pin24 / GPIO8
VCC → 3.3V 或 5V(看模块标)
GND → pin6(接地)
红板先用拨码/跳线切到 SPI 模式
ST25DV → 主板(I²C,焊排针版)
SDA → pin3 / GPIO2
SCL → pin5 / GPIO3
VIN → 3.3V
GND → pin9(接地)
SCL → pin5 / GPIO3
VIN → 3.3V
GND → pin9(接地)
板底 6 个焊孔焊排针,再用母-母杜邦线接
LED ×4(每个串 220Ω 电阻)
蓝 待机 → pin15 / GPIO22
绿 成功 → pin13 / GPIO27
红 失败 → pin11 / GPIO17
白 启动 → pin16 / GPIO23
绿 成功 → pin13 / GPIO27
红 失败 → pin11 / GPIO17
白 启动 → pin16 / GPIO23
长腿→电阻→GPIO;短腿→接地
风扇 / 喇叭
风扇正极 → 5V(pin2/pin4)
风扇负极 → 接地
喇叭 → USB 口
风扇负极 → 接地
喇叭 → USB 口
⚠️ 风扇绝不接 GPIO 信号针(会烧主板);风扇必须 5V
接线 7 条避坑:① 接线前先拔电源 ② 物理针号 ≠ 代码里的 GPIO 编号 ③ 所有模块接地连一起 ④ 先单独测每个模块别一次全接 ⑤ 到货按板子上印的脚名接 ⑥ LED 必串电阻 ⑦ 风扇只接 5V
§ 六
采购页截图
16 张原始采购页截图 — 默认折叠,图比较占地方。
点开看 16 张采购页原图

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16
注:方案改成「焊排针」后,点呼机接线说明.md §3 里写的还是「Qwiic 免焊」,待同步更新成焊排针版。