Arduino Leonardo使用web應(yīng)用程序操作繼電器并切換水泵
飲水機
一個分散的自動售貨機。
這個項目使用Web Serial API彌合了區(qū)塊鏈支付和物理硬件之間的鴻溝。
它檢測Base主網(wǎng)網(wǎng)絡(luò)上的USDC支付,觸發(fā)Arduino Leonardo分配250毫升水,并向商家的保險庫生成“影子收據(jù)”NFT,用于鏈上忠誠度跟蹤和未來的用戶獎勵。
關(guān)鍵特性
?即時將鏈上支付轉(zhuǎn)換為物理行為(分配水)。
?Chrome瀏覽器和Arduino Leonardo之間的直接通信。
?對Base區(qū)塊鏈的傳入事務(wù)進行實時監(jiān)控。
?將包含付款人數(shù)據(jù)的NFT收據(jù)發(fā)送到商戶地址。這為現(xiàn)金返還計劃或“隨機獎勵”創(chuàng)建了一個鏈上分類賬,而不會讓用戶的錢包變得雜亂。
?基于反應(yīng)的界面,具有QR碼生成、支付計時器和流暢的成功動畫。
業(yè)務(wù)流程
1. 該應(yīng)用程序顯示了一個“支付0.5美元”的按鈕。它等待用戶通過觸摸屏或連接到Arduino的物理按鈕進行交互(發(fā)送BUTTON_4_PRESSED)。在當(dāng)前版本中,使用紅外傳感器“飛魚”來檢測托盤中紙杯的存在。
2. 付款階段
生成帶有特定USDC傳輸URI的QR碼。
應(yīng)用程序開始輪詢區(qū)塊鏈,以便將0.5 USDC傳輸?shù)脚渲玫腗ERCHANT_ADDRESS。
3. 驗證
一旦在Base Network上檢測到有效的交易散列,就會確認支付。
4. 分發(fā)
應(yīng)用程序通過USB將RELAY_ON命令發(fā)送到Arduino。Arduino可以激活水泵繼電器。
應(yīng)用程序調(diào)用mintReceiptNFT。一份“影子收據(jù)”被鑄造到商戶的地址,記錄付款人的地址,用于將來的忠誠獎勵。
一個成功的聲音播放(alert.wav)和一個“填充杯”動畫顯示在屏幕上。
組件連線
它在飲水機里是什么樣子
在當(dāng)前的版本中,使用的是戴爾Vostro 15'筆記本電腦,它安裝在一個木柜里,作為web應(yīng)用程序的主機。筆記本電腦由原裝電源供電。水泵由單獨的12V電源供電。
Arduino草圖
您的Arduino必須被編程為在9600波特時處理以下串行協(xié)議
(通過Arduino IDE上傳)
瀏覽器設(shè)置
?在b谷歌Chrome或Microsoft Edge中打開應(yīng)用程序。
?重要:Web Serial需要安全上下文(HTTPS)或本地主機。
?點擊右上角的“連接USB”來配對你的Arduino Leonardo。
配置(配置對象)
您可以在PaymentApp中修改CONFIG對象。TSX更改價格或地址:
故障排除
?“不支持Web串行API”:確保您正在使用Chrome/Edge。Firefox和Safari還不支持這個API。
?Arduino未連接:檢查是否有其他應(yīng)用程序(如Arduino IDE)占用COM端口。瀏覽器需要獨占訪問。
?未檢測到付款:確保用戶發(fā)送的是基礎(chǔ)USDC,而不是本地ETH,并且金額與REQUIRED_AMOUNT完全匹配。
如何使用我們的飲水機
當(dāng)前版本
親愛的顧客們,請按照以下步驟獲取飲用水:
1. 準(zhǔn)備
在Base主網(wǎng)上打開您的加密錢包(例如MetaMask, Coinbase wallet)。確保你有以下最低金額:
?0.5 USDC(基于Base網(wǎng)絡(luò))
?以太坊(ETH)的gas費(在基礎(chǔ)網(wǎng)絡(luò)上)
2. 配藥過程(必須在50秒內(nèi)完成)
?將紙杯放入分配器托盤中。
?QR碼將立即出現(xiàn)在顯示器上。
?打開加密錢包中的掃描攝像頭。
?快速掃描二維碼。
?交易請求將出現(xiàn)在您的錢包中。
?至關(guān)重要的是,確認您在基礎(chǔ)網(wǎng)絡(luò)上傳輸?shù)氖?.5 USDC。(任何其他金額的付款將不發(fā)放水。)
3. 完成并收集
?等待屏幕提示:“Here you are”。
?把盛滿水的杯子從飲水機托盤上拿開。
時間安排的重要注意事項
?應(yīng)用程序會話持續(xù)時間為50秒。請快速掃描二維碼并確認您錢包中的交易。
本文編譯自hackster.io





