Arduino Leonardo使用web应用程序操作继电器并切换水泵
扫描二维码
随时随地手机看文章
饮水机
一个分散的自动售货机。
这个项目使用Web Serial API弥合了区块链支付和物理硬件之间的鸿沟。
它检测Base主网网络上的USDC支付,触发Arduino Leonardo分配250毫升水,并向商家的保险库生成“影子收据”NFT,用于链上忠诚度跟踪和未来的用户奖励。
关键特性
•即时将链上支付转换为物理行为(分配水)。
•Chrome浏览器和Arduino Leonardo之间的直接通信。
•对Base区块链的传入事务进行实时监控。
•将包含付款人数据的NFT收据发送到商户地址。这为现金返还计划或“随机奖励”创建了一个链上分类账,而不会让用户的钱包变得杂乱。
•基于反应的界面,具有QR码生成、支付计时器和流畅的成功动画。
业务流程
1. 该应用程序显示了一个“支付0.5美元”的按钮。它等待用户通过触摸屏或连接到Arduino的物理按钮进行交互(发送BUTTON_4_PRESSED)。在当前版本中,使用红外传感器“飞鱼”来检测托盘中纸杯的存在。
2. 付款阶段
生成带有特定USDC传输URI的QR码。
应用程序开始轮询区块链,以便将0.5 USDC传输到配置的MERCHANT_ADDRESS。
3. 验证
一旦在Base Network上检测到有效的交易散列,就会确认支付。
4. 分发
应用程序通过USB将RELAY_ON命令发送到Arduino。Arduino可以激活水泵继电器。
应用程序调用mintReceiptNFT。一份“影子收据”被铸造到商户的地址,记录付款人的地址,用于将来的忠诚奖励。
一个成功的声音播放(alert.wav)和一个“填充杯”动画显示在屏幕上。
组件连线
它在饮水机里是什么样子
在当前的版本中,使用的是戴尔Vostro 15'笔记本电脑,它安装在一个木柜里,作为web应用程序的主机。笔记本电脑由原装电源供电。水泵由单独的12V电源供电。
Arduino草图
您的Arduino必须被编程为在9600波特时处理以下串行协议
(通过Arduino IDE上传)
浏览器设置
•在b谷歌Chrome或Microsoft Edge中打开应用程序。
•重要:Web Serial需要安全上下文(HTTPS)或本地主机。
•点击右上角的“连接USB”来配对你的Arduino Leonardo。
配置(配置对象)
您可以在PaymentApp中修改CONFIG对象。TSX更改价格或地址:
故障排除
•“不支持Web串行API”:确保您正在使用Chrome/Edge。Firefox和Safari还不支持这个API。
•Arduino未连接:检查是否有其他应用程序(如Arduino IDE)占用COM端口。浏览器需要独占访问。
•未检测到付款:确保用户发送的是基础USDC,而不是本地ETH,并且金额与REQUIRED_AMOUNT完全匹配。
如何使用我们的饮水机
当前版本
亲爱的顾客们,请按照以下步骤获取饮用水:
1. 准备
在Base主网上打开您的加密钱包(例如MetaMask, Coinbase wallet)。确保你有以下最低金额:
•0.5 USDC(基于Base网络)
•以太坊(ETH)的gas费(在基础网络上)
2. 配药过程(必须在50秒内完成)
•将纸杯放入分配器托盘中。
•QR码将立即出现在显示器上。
•打开加密钱包中的扫描摄像头。
•快速扫描二维码。
•交易请求将出现在您的钱包中。
•至关重要的是,确认您在基础网络上传输的是0.5 USDC。(任何其他金额的付款将不发放水。)
3. 完成并收集
•等待屏幕提示:“Here you are”。
•把盛满水的杯子从饮水机托盘上拿开。
时间安排的重要注意事项
•应用程序会话持续时间为50秒。请快速扫描二维码并确认您钱包中的交易。
本文编译自hackster.io





