这是一个很有意思的——数字BB机开源方案!

没带手机的前提下
一群人接受到同一条消息后
怎么进行消息确认?
怎么签到?
怎么投票?
可以用它!
摇一摇就能
签到,投票,消息确认!
它不需要SIM卡,只需连接wifi,就能在空旷场景下100米(理论数据)内“通信”!
通俗的说——当BB机连上Wi-Fi后,服务端就会通过MQTT下发消息到BB机,BB机会响铃,并亮屏显示消息;此时,用户摇一摇,设备就会把【确认】回执,经MQTT再发回服务端。这时,控制台就能实时看到谁已读谁没读。

如此,即可实现上述的“没带手机”,也能“收集”签到,投票,确认信息的场景。
如你所见
这是一套完整的小型IoT系统!
如果你想进阶学习嵌入式,尝试自己开发从设备端到云端的完整链路,那你一定要收藏这个开源方案!
▼
那接下来,咱就一起瞅瞅!这个数字BB机具体是怎么设计的?ps:文末会附上开源网址~

原理图

PCB图
硬件参数
-
主控:ESP32-C3FH4
-
LDO降压:SY8089A1AAC
-
电量计:CW2017BAAD
-
扬声器:MAX98357AEWL+T
-
陀螺仪:LSM6DS3TR-C
-
无源晶振:T201640MFBDE2X
-
flash:W25Q128JVPIQ
-
充电:TP4057
-
屏幕:1.47' ips 172*320
硬件设计完成!真正的重头戏,开始了。
①固件
-
ESP-IDF v5.x · FreeRTOS
-
LVGL 9.3 · C / C++
②后端
-
Python 3.11 · FastAPI
-
aiosqlite · gmqtt · PyJWT · bcrypt
③前端
-
Vue 3.5 · Vite 6 · TypeScript 5
-
Pinia · Element Plus · ECharts
①如何保证消息能可靠投递?
每条消息有完整状态链(queued → sent → delivered → acknowledged / expired),状态变更经 SSE 实时推到控制台。ACK 先写进 NVS 持久化环形缓冲,指数退避重试,重启后继续投,彻底失败上报 ack_give_up 事件而非静默丢弃。
②系统怎么接入身份验证机制?以防谁都能连上来冒充你的设备发消息?
我用了批次 HMAC 鉴权方案:
同批设备共享 batch_secret,上线时用 HMAC-SHA256 动态密码(<ts>:<nonce>:<HMAC>)鉴权,nonce 防重放,没有合法批次凭证的设备无法接入 broker。
③Flash 和 RAM 很小,如何“快速”接受文字消息,节约Flash 和 RAM的空间?
我将MiSans 字体按 GB2312 裁剪编译进固件,不依赖运行时字体文件,屏幕直接渲染中英文混排。
据说这个项目的硬件、固件,后端,前端,都由作者一人设计,且完全开源了!
这意味着,如果你后续想深入研究——射频/低功耗/Linuxor 大数据/AI/云原生 or工业/医疗/农业,这个完整的开源作品,将是一个入门佳作。
你喜欢这个项目吗?
如果是你,你会想怎么设计?
欢迎在评论区探讨!
另外~
——迎您动动发财小手,前往开源网址,给这位作者的手搓作品,点个赞~↓
——如果你想深入学习也可以前往开源网址↓



