ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

如何自制NFC耗材扫描仪:Bambuddy配套SpoolBuddy硬件开发实战指南(树莓派+PN5180)

如何自制NFC耗材扫描仪:Bambuddy配套SpoolBuddy硬件开发实战指南(树莓派+PN5180) 如何自制NFC耗材扫描仪Bambuddy配套SpoolBuddy硬件开发实战指南树莓派PN5180【免费下载链接】bambuddyYour Bambu Lab. No Cloud. Your Rules. Self-hosted command center for Bambu Lab — from one A1 to an entire print farm.项目地址: https://gitcode.com/gh_mirrors/ba/bambuddyBambuddy 是一款自托管的 Bambu Lab 3D 打印指挥中心从一台 A1 到整个打印农场都能统一管理。而它开源的SpoolBuddy模块让你用一块树莓派加一片 PN5180 NFC 读卡器就能自制一台NFC 耗材扫描仪把耗材卷往扫描区一放材料、颜色、剩余重量自动识别入库告别手动填表。本文带你从零接线、配置系统到读懂源码里的通信原理完整走完硬件开发流程。为什么需要一台NFC耗材扫描仪 ️手工管理耗材是打印农场最大的痛点之一卷号记不住Bambu Lab 原装耗材卷自带 MIFARE 标签里面藏着材料类型、颜色和卷托盘 UUID但打印机屏幕之外的工具读不到它剩余量靠猜没有称重只能凭感觉判断还能打多久多卷混插易错换卷、换盘时人工登记极易出错SpoolBuddy 的思路很直接树莓派读标签 称重模块实时读数 → 事件推给 Bambuddy 后端 → 前端自动更新库存。支持三类标签标签类型SAK用途MIFARE Classic 1K0x08Bambu Lab 原装耗材标签MIFARE Classic 4K0x18Bambu Lab 原装耗材标签NTAG (213/215/216)0x00/0x04SpoolEase / OpenPrintTag 社区标签硬件清单如下可选模块不装也能跑模块作用接口树莓派 4 / 5主控—PN5180 NFC 读卡模块读取/写入耗材标签SPINAU7802 称重模块可选实时称量耗材卷重量I2C 总线1小屏幕可选Kiosk 显示界面DSI/HDMISpoolBuddy 软件架构三个异步循环SpoolBuddy 的核心是一个 Python 守护进程入口在 spoolbuddy/daemon/main.py它用 asyncio 同时跑三个循环NFC 轮询循环持续扫描标签检测到标签放上/取下事件就推送给后端后端下发的写标签指令也会在这里执行称重轮询循环每 100ms 读一次 NAU7802重量变化超过 2g 才上报避免无效数据刷屏心跳循环定期上报设备状态并接收后端指令去皮、校准、远程重启、运行诊断脚本等模块划分非常清晰方便你按需阅读spoolbuddy/daemon/pn5180.py — PN5180 底层 SPI 驱动注册、RF 配置、MIFARE 认证全在这里spoolbuddy/daemon/nfc_reader.py — 标签存在性状态机带连续丢失 3 次判定取下的去抖逻辑spoolbuddy/daemon/scale_reader.py — 称重封装与稳定性检测spoolbuddy/daemon/tag_parser.py — 把 Bambu 标签原始块解析成结构化元数据spoolbuddy/daemon/api_client.py — HTTP 客户端断网时事件进缓冲队列恢复后自动补发对应地Bambuddy 后端在 backend/app/api/routes/spoolbuddy.py 提供了设备注册、心跳、标签扫描、称重上报等整套 API前缀/api/v1/spoolbuddy扫描到的标签会经由 backend/app/services/spool_tag_matcher.py 自动匹配到已有耗材卷。PN5180 接线一张表搞定 9 根线 这是最容易出错的环节。PN5180 走 SPI 接口接线对照表如下引自 spoolbuddy/README.mdPN5180 引脚树莓派引脚GPIO线色建议3V3Pin 1—红5VPin 2—红GNDPin 20—黑SCKPin 23GPIO11黄MISOPin 21GPIO9蓝MOSIPin 19GPIO10绿NSS (CS)Pin 16GPIO23橙BUSYPin 22GPIO25白RSTPin 18GPIO24棕三个高频踩坑点⚡3V3 和 5V 都要接5V 给天线放大电路供电能显著扩展读取距离但千万别把 5V 接到 3V3 脚会直接烧坏读卡器️NSS 用 GPIO23 手动控制片选内核 SPI 驱动的自动 CS 时序不满足 PN5180 的 5µs 建立/100µs 保持要求所以代码里用 GPIO 手动切换片选全部焊接别用杜邦线SPI 对信号完整性很敏感接触不良会导致射频场闪烁、幽灵报错等玄学问题NAU7802 称重模块更简单4 根线VCC→Pin 1、SDA→Pin 3 (GPIO2)、SCL→Pin 5 (GPIO3)、GND→Pin 30。系统配置三步走开启 SPI 和 I2C树莓派新装系统后SPI 和 I2C 默认是关闭的。第一步raspi-config 开启接口sudo raspi-config # Interface Options - SPI - Enable # Interface Options - I2C - Enable sudo reboot第二步修改/boot/firmware/config.txt在[all]段追加两行dtparami2c_armon dtoverlayspi0-0cs前者启用 I2C 总线 1 给称重模块用后者禁用 SPI 自动片选配合 GPIO23 手动 CS。第三步安装依赖包sudo apt install python3-spidev python3-libgpiod gpiod libgpiod3 i2c-tools pip install spidev gpiod smbus2重启后用ls /dev/spidev0.*和i2cdetect -y 1验证看到0x2ANAU7802说明硬件已就绪。首次点亮诊断脚本 标签读取测试 仓库自带了三个诊断脚本装在spoolbuddy/scripts/目录下sudo python3 spoolbuddy/scripts/pn5180_diag.py # 验证 PN5180 通信应显示固件版本 sudo python3 spoolbuddy/scripts/read_tag.py # 放标签上读卡验证 UID 读取 sudo python3 spoolbuddy/scripts/scale_diag.py # 读 10 次称重采样验证 NAU7802遇到怪现象时官方排障表同样在 spoolbuddy/README.md 中非常好用症状原因修复SPI 读回全 0SPI 未开启raspi-config 启用 SPI 后重启SEND_DATA 报 GENERAL_ERROR自动 CS 时序太快用 GPIO23 手动 CS spi0-0csoverlayBUSY 超时接线问题或 RST 未接检查 RST、BUSY 引脚射频场闪烁电源接触不良全部焊接固定两个关键参数别动SPI 速率 500kHz再高就通信出错、SPI 模式 0CPOL0, CPHA0。硬核看点Bambu 标签是怎么被解锁的 这是整个项目最有意思的部分。Bambu Lab 原装耗材标签是加密的 MIFARE Classic 卡密钥不是固定的而是根据每张卡的 UID 动态推导出来的spoolbuddy/daemon/pn5180.py 中的hkdf_derive_keys()使用 HKDF-SHA256 算法以 Bambu 主密钥为盐、标签 UID 为输入密钥材料派生出 16 个扇区各 6 字节的密钥再逐扇区认证、读取 Block 1/2/4/5 —— 材料类型、颜色、温度参数和 32 位托盘 UUID 就都拿到了。认证本身由 PN5180 硬件代劳mfc_authenticate()发送MFC_AUTHENTICATE主机命令后Crypto1 加解密在硬件内完成Python 侧只需要读数据块。NTAG 社区标签则无需认证直接读 NDEF 数据区即可。SpoolBuddy 还支持做一台带屏小终端Kiosk 屏幕上放上标签或卷重量变化会唤醒显示空闲自动熄屏背光亮度都能从 Bambuddy 前端远程调整实现逻辑在 spoolbuddy/daemon/display_control.py。与 Bambuddy 后端联动扫描即入库 安装完成后SpoolBuddy 守护进程启动时会向后端注册设备上报 IP、固件版本、NFC/称重能力之后三个循环持续上报事件。前端的联动效果扫到标签 → 自动匹配或创建耗材卷AMS 槽位同步更新称重数据实时显示在耗材页预测还能打多久支持从前端远程触发写 NTAG 标签、设备去皮校准、运行诊断脚本甚至重启统计页面上能看到完整的耗材消耗曲线数据都在你自己服务器上不经过任何第三方云。快速开始一键安装脚本不想手动折腾的话官方安装脚本 spoolbuddy/install/install.sh 支持两种模式--mode spoolbuddy树莓派只做扫描仪伴侣连接远程 Bambuddy 实例需提供服务端地址和 API Key--mode full同一台树莓派上同时装 Bambuddy SpoolBuddy脚本会自动装系统包、建 venv、部署 systemd 服务并配置开机自启。也可以先克隆仓库自行研究源码git clone https://gitcode.com/gh_mirrors/ba/bambuddy核心代码都在spoolbuddy/目录测试用例在 spoolbuddy/tests/ 下比如test_tag_parser.py就覆盖了标签解析的各种边界情况是理解数据格式的绝佳材料。写在最后从 9 根杜邦线到自动入库的完整链路SpoolBuddy 展示了低成本硬件 自托管软件的典型玩法✅ 硬件成本极低PN5180 模块 可选称重模块百元级搞定✅ 协议逆向有惊喜HKDF 密钥派生让 Bambu 加密标签变得可读✅ 软件全链路开源驱动、状态机、诊断工具、后端 API 一应俱全✅ 打印农场越大规模收益越明显动手试试吧——扫一卷耗材看它自己报出姓名的那一刻是这套系统最有魔性的瞬间。✨【免费下载链接】bambuddyYour Bambu Lab. No Cloud. Your Rules. Self-hosted command center for Bambu Lab — from one A1 to an entire print farm.项目地址: https://gitcode.com/gh_mirrors/ba/bambuddy创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进