本次參加電源網DIY設計大賽,非常感謝電源網和得捷電子的支持,讓我有機會接觸更多的有趣的硬件,這對工程師來說是非常具有誘惑力的,這本次活動中也首次體驗的云開發的整個流程,體驗了uiFlow2可視模塊化的便利設計,擴充了眼界和學識,接下來就讓我們一起走進本次的創意辦公小工具-“電子木魚”。
一、項目介紹
創意辦公小工具——電子木魚,實際上就是使用本次選取的硬件通過軟件的編輯實現電子木魚的功能,同時還可以選擇顯示辦公環境的數據監測功能。
根據以上的基本描述我們進行一下簡單的功能劃分:
1、電子木魚功能,通過動作可以模擬敲擊木魚的行為,并且可以實現敲擊摸魚的效果,在這里我們選取的是通過手勢檢測實現的動作的采集,實現非接觸式的控制效果;
2、環境檢測功能,可以檢測目前所處環境的溫濕度等基本數據,當然了參數越多越好;
3、主控需要實現顯示、聲音播放、按鍵或觸控按鍵等功能。
二、物料清單
物料選擇的關鍵是可以實現上述功能,為此通過功能來確定物料,實現功能的全覆蓋。
1、手勢傳感器:PAJ7620U2 手勢 傳感器 M5Stack 平臺評估擴展板
PAJ7620一款光學數組式傳感器,內置光源和環境光抑制濾波器集成的 LED,鏡頭和手勢感測器在一個小的立方體模組,能在黑暗或低光環境下工作。同時傳感器內置手勢識別,支持 9個手勢類型和輸出的手勢中斷和結果,還提供接近檢測功能,可用于感測物體接近或離開。工作原理是通過內部LED驅動器,驅動紅外LED向外發射紅外信號,當傳感器陣列在有效地距離中探測到物體時,目標信息提取陣列會對探測目標進行特征原始數據地獲取,獲取數據會存在寄存器中,同時手勢識別陣列會對原始數據進行識別處理,最后將手勢結果存到寄存器中,用戶可根據I2C接口對原始數據和手勢數據地結果進行讀取。
2、環境檢測:BME688 空氣質量,濕度,壓力,溫度 傳感器 Arduino,UIFlow 平臺評估擴展板
BME688是一款四合一的環境傳感器,可測量溫度、濕度、大氣壓和空氣質量,體積小巧,低功耗,可適用于智能家居,移動應用環境監測和可穿戴設備等。加熱的金屬氧化物會根據空氣中的揮發性有機化合物 (VOC) 改變電阻,因此可用于檢測氣體和酒精,例如乙醇、酒精和一氧化碳,并進行空氣質量測量。注意它會給你一個電阻值(即上圖中的Gas resistance),總的VOC含量,它不能區分氣體或酒精。
3、主控:Core S3
M5Stack的Core S3是一個非常全面且強大的開發平臺,也可以看到我們全區的傳感器也都是和這個開發平臺配套的,Core S3完全可以覆蓋咱們的全部需求。CoreS3 是 M5Stack 開發套件系列的第三代產品。其 MCU 采用 ESP32-S3 方案,雙核 Xtensa LX7 處理器,主頻 240 MHz,自帶 Wi-Fi 功能,板載 16M Flash 和 8M PSRAM。可通過 USB Type-C® 接口下載程序,支持 OTG 和 CDC 功能,方便外接 USB 設備和燒寫固件。正面配備一塊 2.0 英寸電容觸摸 IPS 屏,面板采用高強度玻璃材質。屏幕底部內置一個 30 萬像素攝像頭 GC0308,帶有接近傳感器 LTR-553ALS-WA。供電部分采用 AXP2101 電源管理核心芯片和 4 路功率流控制環路,整體采用低功耗設計。板載 6 軸姿態傳感器 BMI270、磁力儀 BMM150、TF 卡 (microSD) 卡槽、BM8563 RTC 芯片提供精準計時和睡眠定時器喚醒功能。聲音輸出采用高保真 16 位 I²S 功放芯片 AW88298,機身內置 1 W 揚聲器。聲音輸入方面,采用了 ES7210 音頻解碼芯片和雙麥克風輸入。機身側面有獨立的電源鍵和重啟 (RST) 鍵、延時電路,長按重啟鍵可進入程序下載模式。CoreS3 套裝默認自帶一個 DinBase 底座,方便導軌、墻壁、螺絲固定。可外接 DC 12 V(支持 9 V ~ 24 V)或內置 500mAh 鋰電池供電。DinBase 預留了多個原型位置供用戶 DIY。該產品適用于物聯網 (IoT) 開發、各種 DIY 項目開發、智能家居控制系統、工業自動化控制系統等場景。Core S3有很多強大的功能,如果大家有興趣也可以前來開發一番。
三、功能框圖
主控是咱們的Core S3,由于BME688和手勢傳感器使用的都是IIC接口,主控上目前外接的接口只有一個,正好兩個常感器的接口地址不一致,所以通過一個一轉多的接口擴展就可以實現正常的連接了。連接后的效果如下:
勢傳感器位于主控的上部,環境檢測和轉接板都位于后方。
四、軟件設計
軟件開發式本次設計的重中之重,我們在進行軟件開發的時候需要進行一些準備工作,可看如下帖子:
【 DigiKey DIY原創大賽】1、開發環境篇 http://m.daogou-taobao.cn/bbs/2777851.html;
可以進行初步的開發之后,我們就要對一些基礎功能和模塊進行初步的測試:
【 DigiKey DIY原創大賽】2、過程篇-BME688模塊的使用 http://m.daogou-taobao.cn/bbs/2777850.html;
【 DigiKey DIY原創大賽】3、過程篇-手勢傳感器的使用http://m.daogou-taobao.cn/bbs/2777854.html
我們在之前的文章里面已經初步了解了各個功能模塊的實現的方法,接下來就是我們軟件設計的開始,將每一個小功能串聯起來。
uiFlow2中的設計思路其實和adunio的設計思路是一致的,其包括了如下兩個模塊:
一個就是上電開始的初始化,然后就是循環操作的內容,根據我們的功能需求,主要包括按鍵掃描、傳感器數據掃描、頁面控制等內容。其中頁面是我們劃分功能的主要依據,目前一共包括四個主要界面,首頁、菜單頁、木魚頁、環境數據監測頁,頁面是我們是否執行操作的依據。
下面我們看一下觸摸掃描:
按鍵掃描的邏輯就是不斷的循環訪問,有一點比較好的就是當有觸摸發生的時候touch count是會發生變化,也因此判斷時候有真實觸摸發生,這個在最新的固件中居然有bug,大家如果有機會可以測試一下。觸摸按鍵的坐標會被通過不同頁面執行不同的動作。
然后就是頁面顯示:
基礎頁面只有在頁面切換的時候改變一次,不然一直刷屏還是能夠看到刷屏的痕跡的;
接下來是傳感器數據的采集和現實:
傳感器數據的采集也是有條件的,只有在環境檢測頁面顯示,這樣的設計也可以加快循環采集的速度。
到這里我們就本上就完成了整個功能邏輯的設計,實現了基本界面的切換,不同功能界面的顯示。
五、程序代碼
本次模塊化設計云開發工程如下:
大家如果感興趣可以在uiFlow2中打開,或者繼續編輯你想要的內容。
六、視頻展示
本次的展示視頻包括功能展示和程序設計開發過程講解量大部分,相關視頻已經上傳到bilibili,地址如下:
以下是視頻演示: