NFC 会员无现金自助消费终端

Touch 'n Drink 开源 NFC 自助消费终端,面向社团与俱乐部场景。会员刷 NFC 卡选购饮品,消费自动记账,按月统一结算。整机搭载 ESP32-C3,配套键盘、OLED 显示屏,硬件图纸与 Rust 固件全部开源,可自主复刻与二次改造。

NFC 会员无现金自助消费终端封面
oshw_hqzl2026-08-04 11:59:33CERN-OHL-S v2
58
Star

PCBA

设计文件

KiCad图标touch-n-drink-main.zip10.04MB(1次下载)

EDA查看器

复制嵌入代码

详细介绍

一、项目简介

Touch 'n Drink 是一套完全开源的 NFC 会员自助记账终端,基于 ESP32-C3 与嵌入式 Rust 开发。设备支持刷卡识别会员、选购商品并自动同步消费记录至管理后台,无需现场结算,适合俱乐部、社团实现饮品自助售卖、月度统一对账。项目开放 PCB、结构图纸与全部固件,硬件采用 CERN-OHL-S-2.0、软件采用 EUPL-1.2 协议开源。

项目背景:

开发者:Andreas Neuhaus(zargony,德国业余飞行员)

应用场景:德国哈默机场(EDLH)航空俱乐部 Aeroclub (LSC) Hamm 俱乐部小屋

核心模式:会员记账式自助消费终端 不同于即时扫码支付设备:会员刷卡选购饮料,消费记录自动提交俱乐部财务系统,不现场扣款,统一合并至月度会员账单结算。适合俱乐部、社团、飞行社群这类熟人会员制场景。

二、业务完整工作流程

  1. 终端上电连接 2.4GHz Wi-Fi,通过 Vereinsflieger API 拉取会员白名单、在售商品清单、价格信息

  2. 会员将 NFC 会员卡 / 标签贴近读卡区完成身份识别

  3. 在数字键盘输入商品编号,OLED 屏幕确认商品与价格

  4. 用户确认下单,交易数据上传 Vereinsflieger 后台记账

  5. (可选)交易事件推送至 MQTT 服务器或 Mixpanel 做消费统计

  6. 俱乐部财务系统按月汇总所有消费,生成会员月度账单统一结算

💡 Vereinsflieger.de:德语区飞行俱乐部广泛使用的会员、飞行时长、财务一体化管理平台,本项目原生对接该平台 API。

三、完整功能清单

  1. 身份认证:NFC 卡片 / 标签识别俱乐部在册会员,仅授权会员可消费

  2. 商品管理:在线拉取商品目录,无需本地硬编码商品信息

  3. 人机交互:0-9/*# 数字薄膜键盘 + 高亮 OLED 显示屏

  4. 网络通信:2.4GHz Wi-Fi,支持 WPA2/WPA3,DHCP 自动获取 IPv4

  5. 数据统计(可选)

    • Mosquitto MQTT:本地局域网事件上报

    • Mixpanel:云端消费行为数据分析

  6. 供电方案:标准 USB-C 供电,不需要 USB-PD 快充,部署简单

  7. 安装结构:亚克力外壳、磁吸壁挂设计,方便安装拆卸

四、硬件系统详解

主控平台

  • MCU:ESP32-C3 RISC-V 单核无线芯片

    选用理由:内置 Wi-Fi、资源足够、功耗友好,支持嵌入式 Rust 开发

外设清单

  • I2C OLED 显示屏

  • 4×4 薄膜数字键盘

  • NFC 读写模块(读取卡片 UID 用于会员绑定)

  • 状态指示灯

PCB 方案

项目pcb/目录提供设计文件,两种实现方式:

  1. 工厂制版:定制小型 PCB,集成 MCU、外设接口

  2. 手工方案:电路可直接搭建在洞洞板(perfboard)上,适合小规模自制

结构外壳

hardware/目录存放亚克力面板切割图纸;正面印刷 NFC 感应标识,磁吸结构实现壁挂安装。

五、固件软件架构

  1. 开发语言:嵌入式 Rust(无 C/C++,仓库 100% Rust 代码)

  2. 核心依赖:

    • vereinsflieger Rust crate:封装平台 REST API

    • ESP HAL:ESP32-C3 硬件底层驱动

    • Wi-Fi、MQTT、NFC 外设驱动

  3. 工程目录:firmware/

  4. CI 自动化:.github/workflows实现自动编译固件、版本发布

  5. 版本管理:提供正式 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           # 项目主文档

七、开源许可证(重要约束)

  1. 硬件(PCB、结构图纸)CERN-OHL-S-2.0

    强互惠开源硬件协议:衍生硬件设计必须保持相同开源协议公开。

  2. 固件代码EUPL-1.2(欧盟公共许可证)

    欧盟官方开源协议,兼容多种开源许可证,面向欧盟场景设计。

补充:所有主动提交的代码贡献,默认自动沿用上述协议,除非贡献者另行明确声明。

八、项目优劣势分析

优势

  • 全套开源:硬件图纸 + 固件源码完整开放,可自由复刻改造

  • 采用记账模式,完美适配俱乐部会员月度结算场景

  • 硬件物料通用,USB-C 供电,部署门槛低

  • 嵌入式 Rust 开发,内存安全,固件稳定性高

  • 原生对接德语区飞行俱乐部主流管理平台 Vereinsflieger

⚠️ 局限

  • 原生依赖 Vereinsflieger API,如果移植到国内社团,需要自行替换后端对接接口

  • 仅支持 2.4GHz Wi-Fi,不兼容 5GHz 网络

  • 无内置冷藏柜 / 售货机驱动,仅做记账终端,不控制商品出货机构

九、移植改造方向参考

如果你希望将这套方案本土化复用,可以做这些修改:

  1. 替换后端 API:把 Vereinsflieger 对接代码改为自研会员 / 记账后台

  2. 扩展硬件:增加继电器驱动自动售货机、扫码支付模块

  3. 新增功能:离线缓存(断网时暂存交易,联网后同步)、会员余额预存模式

  4. UI 本地化:OLED 屏幕文字改为中文

十、项目地址及开源协议

Hardware licensed under the CERN OHL-S-2.0;Software (Firmware) licensed under the EUPL-1.2

https://github.com/zargony/touch-n-drink