一、项目简介
Touch 'n Drink 是一套完全开源的 NFC 会员自助记账终端,基于 ESP32-C3 与嵌入式 Rust 开发。设备支持刷卡识别会员、选购商品并自动同步消费记录至管理后台,无需现场结算,适合俱乐部、社团实现饮品自助售卖、月度统一对账。项目开放 PCB、结构图纸与全部固件,硬件采用 CERN-OHL-S-2.0、软件采用 EUPL-1.2 协议开源。
项目背景:
开发者:Andreas Neuhaus(zargony,德国业余飞行员)
应用场景:德国哈默机场(EDLH)航空俱乐部 Aeroclub (LSC) Hamm 俱乐部小屋
核心模式:会员记账式自助消费终端 不同于即时扫码支付设备:会员刷卡选购饮料,消费记录自动提交俱乐部财务系统,不现场扣款,统一合并至月度会员账单结算。适合俱乐部、社团、飞行社群这类熟人会员制场景。

二、业务完整工作流程
终端上电连接 2.4GHz Wi-Fi,通过 Vereinsflieger API 拉取会员白名单、在售商品清单、价格信息
会员将 NFC 会员卡 / 标签贴近读卡区完成身份识别
在数字键盘输入商品编号,OLED 屏幕确认商品与价格
用户确认下单,交易数据上传 Vereinsflieger 后台记账
(可选)交易事件推送至 MQTT 服务器或 Mixpanel 做消费统计
俱乐部财务系统按月汇总所有消费,生成会员月度账单统一结算
💡 Vereinsflieger.de:德语区飞行俱乐部广泛使用的会员、飞行时长、财务一体化管理平台,本项目原生对接该平台 API。
三、完整功能清单
身份认证:NFC 卡片 / 标签识别俱乐部在册会员,仅授权会员可消费
商品管理:在线拉取商品目录,无需本地硬编码商品信息
人机交互:0-9/*# 数字薄膜键盘 + 高亮 OLED 显示屏
网络通信:2.4GHz Wi-Fi,支持 WPA2/WPA3,DHCP 自动获取 IPv4
数据统计(可选)
Mosquitto MQTT:本地局域网事件上报
Mixpanel:云端消费行为数据分析
供电方案:标准 USB-C 供电,不需要 USB-PD 快充,部署简单
安装结构:亚克力外壳、磁吸壁挂设计,方便安装拆卸
四、硬件系统详解
主控平台
MCU:ESP32-C3 RISC-V 单核无线芯片
选用理由:内置 Wi-Fi、资源足够、功耗友好,支持嵌入式 Rust 开发
外设清单
I2C OLED 显示屏
4×4 薄膜数字键盘
NFC 读写模块(读取卡片 UID 用于会员绑定)
状态指示灯
PCB 方案
项目pcb/目录提供设计文件,两种实现方式:
工厂制版:定制小型 PCB,集成 MCU、外设接口
手工方案:电路可直接搭建在洞洞板(perfboard)上,适合小规模自制
结构外壳
hardware/目录存放亚克力面板切割图纸;正面印刷 NFC 感应标识,磁吸结构实现壁挂安装。
五、固件软件架构
开发语言:嵌入式 Rust(无 C/C++,仓库 100% Rust 代码)
核心依赖:
vereinsfliegerRust crate:封装平台 REST APIESP HAL:ESP32-C3 硬件底层驱动
Wi-Fi、MQTT、NFC 外设驱动
工程目录:
firmware/CI 自动化:
.github/workflows实现自动编译固件、版本发布版本管理:提供正式 Release 固件包,当前最新版本 v2.0.5
六、仓库目录结构一览
plaintext
touch-n-drink/
├── .github/workflows # GitHub Actions自动构建、发布流水线
├── .zed # Zed编辑器项目配置
├── firmware # Rust嵌入式固件源码
├── hardware # 亚克力外壳结构图纸、组装资料
├── images # PCB渲染图、成品实拍图
├── pcb # PCB设计源文件
├── LICENSE-EUPL # 软件许可证
├── LICENSE-OHL-S # 硬件开源协议
└── README.md # 项目主文档
七、开源许可证(重要约束)
硬件(PCB、结构图纸):CERN-OHL-S-2.0
强互惠开源硬件协议:衍生硬件设计必须保持相同开源协议公开。
固件代码:EUPL-1.2(欧盟公共许可证)
欧盟官方开源协议,兼容多种开源许可证,面向欧盟场景设计。
补充:所有主动提交的代码贡献,默认自动沿用上述协议,除非贡献者另行明确声明。
八、项目优劣势分析
✅ 优势
全套开源:硬件图纸 + 固件源码完整开放,可自由复刻改造
采用记账模式,完美适配俱乐部会员月度结算场景
硬件物料通用,USB-C 供电,部署门槛低
嵌入式 Rust 开发,内存安全,固件稳定性高
原生对接德语区飞行俱乐部主流管理平台 Vereinsflieger
⚠️ 局限
原生依赖 Vereinsflieger API,如果移植到国内社团,需要自行替换后端对接接口
仅支持 2.4GHz Wi-Fi,不兼容 5GHz 网络
无内置冷藏柜 / 售货机驱动,仅做记账终端,不控制商品出货机构
九、移植改造方向参考
如果你希望将这套方案本土化复用,可以做这些修改:
替换后端 API:把 Vereinsflieger 对接代码改为自研会员 / 记账后台
扩展硬件:增加继电器驱动自动售货机、扫码支付模块
新增功能:离线缓存(断网时暂存交易,联网后同步)、会员余额预存模式
UI 本地化:OLED 屏幕文字改为中文
十、项目地址及开源协议
Hardware licensed under the CERN OHL-S-2.0;Software (Firmware) licensed under the EUPL-1.2。
