天天看點

家用水表物聯網檢測儀

歡迎去github點星星:https://github.com/biggestorangecat/WATER_METER_DETECTOR

MIT協定,可随意更改。

micropython

0 引言

本報告為家用水表物聯網檢測儀執行個體的技術報告:

(1)本家用水表物聯網檢測儀執行個體的開發流程包含相機定位架、運算和顯示子產品固定架的機械設計;

(2)本執行個體采用Vscode+M5插件開發M5GO Lite,用于顯示圖像處理結果,并将結果通過wifi傳輸給阿裡雲;

(3)本執行個體采用Maxipy開發Widora AIRV r2用于處理表端圖像,并将圖像處理結果傳輸給M5 GO;

(4)本執行個體采用Flask Python于阿裡雲開發資料接收腳本。       

家用水表物聯網檢測儀

1機械設計方面

本執行個體購置了如圖所示的家用水表檢測儀。通過測量家用水表的相應參數,設計了相應的家用水表檢測儀執行個體的機械結構。通過Solidworks繪制三維圖紙和3D列印機列印,按照最終方案設計圖制作最終執行個體。

設計主要分為以下兩部分:

1.1底座部分

關于檢測儀的底座部分,采購相應的标準家用水表,根據水表的外邊尺寸規劃安裝固定部分。多次實踐後,采用了将檢測儀固定在水表表蓋上的解決方案。該方案具體實施流程:一對表蓋連接配接構件與表蓋直接連接配接,兩表蓋連接配接結構件同時固定在中間梁架;

家用水表物聯網檢測儀

1.2 子產品固定部分

關于M5 GO和AIRV r2子產品的固定,根據官方提供的外觀參數,本執行個體設計了相應的固定件。其設計圖和實際圖的最終效果如圖3所示,兩子產品的固定件同時與中間連接配接件連接配接。關于ov2640相機的标定計算參照相關的相機标定流程。

家用水表物聯網檢測儀

2 硬體算法設計

整體硬體算法流程圖,如圖4所示。

家用水表物聯網檢測儀

2.1 k210圖像處理子產品算法設計

本執行個體的圖像處理算法,包含針對指針的識别計算以及數字的識别計算。當完成整個表示數的檢測時,通過序列槽将結果發送給M5 GO子產品。

2.1.1 k210指針識别

基于Openmv庫開發設計,包含對四個圓區域内指針的檢測。檢測指針内圓與小表盤外圓之間範圍内滿足特定像素值範圍的像素資訊,根據統計到的像素資訊,經過相應權重計算将得到最終的指針角度,其檢測效果如圖5所示。

家用水表物聯網檢測儀

2.1.2 k210數字識别

基于K210的神經網絡數字檢測,利用k210晶片自帶的kpu,加載kmodel網絡模型,實作對印刷體數字的檢測識别分類。提取五個數字矩形區域,針對五塊矩形數字區域進行預處理:預處理包括灰階化、中值濾波二值化等操作。在預處理後,将預處理後矩形區域内像素資料輸入進網絡中進行類别預測。

針對所述kmodel模型生成的前期工作包含以下過程:

  1. 基于tensorflow編寫列印字母神經網絡腳本;
  2. 通過資料增廣生産列印字母資料集;
  3. 訓練網絡并儲存pb模型;
  4. 将pb轉化為tflite模型;
  5. 通過ncc工具将tflite轉化為可供k210加載的kmodel模型;

2.1.3序列槽通訊

子產品完成2.1.1和2.1.2中的檢測算法後,子產品需要将檢測結果通過序列槽形式傳輸給M5 GO子產品。針對k210的序列槽通訊,執行個體選用序列槽2。随序列槽2的初始化及設定,相關序列槽設定資訊為:比特率115200;資料位8;校驗位None;停止位1。

2.2 關于M5 GO算法設計

2.2.1 M5 GO序列槽通訊

M5 GO子產品采用與2.1.3同樣配置完成通訊。

2.2.2 M5 GO界面設計

從左至右的數字分别表示×10000、×1000、×100、×10、×1。從右至左的小表盤分别表示×0.1、×0.01、×0.001、×0.0001。

家用水表物聯網檢測儀

2.2.3 資料上傳

通過https請求,将2.2.1接收到的資料傳輸給伺服器。

3 伺服器

注冊阿裡雲伺服器,購買域名,并進行實名認證。配置伺服器為ubuntu系統,安裝相應開發環境。其中伺服器端接收腳本基于Flask庫。

此處附圖為阿裡雲背景資料。

由于裝置數目較少,并未制作資料庫和相應網站,僅驗證了跨域通訊功能。

家用水表物聯網檢測儀