李嘉明 馮建 廖明華 徐操喜



摘要:設計了一種基于ESP32的電子秤系統,通過HX711模塊對稱重傳感器輸出的重量信號進行高精度的模數轉換,轉換后的數字信號供主控芯片ESP32處理,ESP32將稱重數據輸出到OLED屏上顯示,同時上傳至OneNet云平臺,實現每次稱重數據的自動記錄,在需要統計物料出庫情況的應用領域,具有一定的實用及推廣價值。
關鍵詞:電子秤;ESP32;OLED;OneNet;物料出庫
中圖分類號:TP311? ? ? 文獻標識碼:A
文章編號:1009-3044(2021)12-0216-04
1 背景
電子秤以嵌入式芯片作為主控系統,具有測量精度高、測量速度快、可靠性強、應用面廣等一系列優點[1-2],逐漸取代了傳統的桿秤,廣泛應用于各種商貿活動中[3-5]。然而,目前市面上常用的電子秤不具備自動記錄稱重數據的功能,無法自動保存從倉庫領取物料的多少,只能通過人工手動記錄稱重后顯示的數值。相對于電子秤自動保存測量稱重數值,人工記錄的方式比較容易出錯,并且不符合智能化的要求。
針對上述問題,結合傳感器技術、嵌入式技術、信息通信技術、云技術,采用MicroPython編寫主控程序,設計一款基于ESP32的電子秤系統。通過對稱重物重量的測量、模數轉換、數據上傳,完成每次稱重數據自動接入中國移動的OneNet物聯網云平臺,包括所稱物料的重量以及出庫時間,相關的倉庫管理人員可以登錄OneNet云平臺查看每次上傳的稱重數據,非常直觀便捷地掌握某物料的領用情況,整個過程無需人工進行數據記錄。本系統對于現有的電子秤產品的改進具有一定的參考價值。
2 系統方案設計
基于ESP32的電子秤系統主要包括稱重傳感器、HX711模塊、按鍵模塊、ESP32主控模塊、OLED顯示屏模塊,系統框圖如圖1所示。本系統上電后進入網絡連接模式,根據預設的WiFi賬號和密碼,接入本地的無線網絡,網絡連接成功后進入稱重模式。在稱重模式下,稱重傳感器檢測所稱物料的重量,轉換成電信號輸出至HX711模塊,主控芯片ESP32不斷讀取由HX711模塊進行模數轉換輸出的數字信號,該數字信號經過ESP32解析后顯示在OLED屏上,所顯示的值便是所稱物料的重量。得到所稱物料的重量后,操作人員按下按鍵模塊中的“S2”按鍵持續2秒,系統進入數據上傳模式,在該模式下,ESP32通過http協議上傳當前稱重數據,同時鎖定當前的稱重數據,不再解析HX711發送過來的數字信號,直至接收到OneNet云平臺確認成功接入數據的響應信息,系統回到稱重模式。若接收到的是上傳出錯的響應信息,則系統不會切換回稱重模式,同時ESP32會驅動蜂鳴器工作,發出警報聲提醒操作人員數據上傳失敗,此時操作人員再次按下按鍵模塊的按鍵“S2”2秒,重新上傳稱重數據,數據上傳成功后,蜂鳴器停止報警。
3 系統硬件設計
3.1 ESP32主控模塊
ESP32可作為獨立系統運行應用程序,也可作為主機MCU的從設備,通過SPI/SDIO或I2C/UART接口提供WiFi和藍牙功能,其引腳電路圖如圖2所示。ESP32性能穩定,工作溫度范圍達到-40℃到+125℃,內部集成了自校準電路,能夠動態調整電壓,并且適應外部條件的變化。本系統選用ESP32作為系統的主控芯片和通信芯片,完成本地數據的分析處理,同時通過WiFi上傳稱重數據至云平臺。
3.2 稱重傳感器
稱重傳感器如圖3所示,屬于電阻應變式壓力傳感器。力敏型彈性元件上粘貼上應變片,當彈性元件因受力產生形變時,導致應變片發生相應的應變,進而轉化成電阻的變化,最后引起內部測量電路輸出電壓的變化。
3.3 HX711模塊
HX711模塊是專為高精度電子秤而設計的,電路圖如圖4所示。主芯片HX711是一款24位高精度的模數轉換器芯片,工作電壓2.6V至5.5V,具有兩路模擬通道輸入,輸出端的時鐘線PD_SCK和數據線DOUT與主控芯片ESP32相連,用于輸出轉換成數字信號的稱重數據。
3.4 OLED顯示模塊
OLED顯示模塊通過I2C接口與主控ESP32芯片連接,接收并顯示ESP32發送的信息,主要有當前的稱重數據、連接WiFi的狀態,用戶可以從OLED屏上顯示的數據獲知當前稱重數據以及系統的聯網狀態。
3.5 按鍵模塊
按鍵模塊用于實現人機交互,其電路圖如圖6所示。當需要上傳稱重數據時,按下按鍵“S2”超過2秒,ESP32的GPIO0引腳檢測到持續2秒的低電平,系統進入上傳數據模式,此時會鎖定當前的稱重數據,直至接收到云平臺返回接入成功的響應信息。當需要切換物料種類時,短按按鍵“S2”,即按鍵“S2”按下的持續時間小于2秒,OLED屏顯示切換后的物料名稱,稱重數據也會上傳到切換后的物料所對應的云平臺數據流中。當遇到運行故障或是網絡連接失敗時,按下按鍵“S1”,系統將會重啟。
3.6 蜂鳴器模塊
蜂鳴器模塊用于聲音報警,提醒操作人員當前稱重數據上傳失敗,其電路圖如圖7所示。圖中的蜂鳴器屬于有源蜂鳴器,使用直流信號即可令其鳴叫。ESP32的輸出引腳連接限流電阻R5后接入三極管Q1的基級,當該輸出引腳為低電平時,三極管截止,蜂鳴器不發出聲響,反之,三極管導通,蜂鳴器持續發出聲響。
4 系統軟件設計
本系統采用Mu作為開發軟件,代碼用MicroPython編寫,程序流程圖如圖8所示。系統上電并初始化后,ESP32開始連接WiFi網絡。若WiFi連接失敗,則在10秒內進行重連,10秒后如果還是連接不成功,OLED屏上顯示“WiFi連接失敗,請重啟系統”,并結束程序運行。
WiFi連接成功后,ESP32接收并解析HX711傳遞過來的稱重數據,并將其顯示在OLED顯示屏上,單位是kg(千克),接著ESP32檢測按鍵“S2”有無被按下,若沒有檢測到按鍵“S2”被按下,則采集并解析新的稱重值,若檢測到按鍵“S2”有被按下,則根據被按下的時長,即相應輸入引腳檢測到的低電平持續時間是否大于2秒,來判斷是進入上傳數據的模式還是切換物料的模式,超過2秒進入數據上傳模式,低于2秒則進入物料切換模式。
數據上傳模式下,ESP32會將當前稱重數據鎖定,并將該數據發送OneNet云平臺,接入協議是http,直至接收到云平臺返回的成功接收的應答信息,ESP32才會解開鎖定的稱重數據,重新獲取新的稱重值,否則將會判定本次數據上傳失敗,并驅動蜂鳴器報警,蜂鳴器響起后須重新進行上傳操作,成功本次稱重數據后蜂鳴器停止報警。物料切換模式下,OLED顯示當前所選的物料名稱,仍然是通過按下按鍵“S2”來觸發物料的切換。
5 系統測試
OneNet是由中國移動打造的PaaS(平臺即服務)物聯網開放平臺,提供數據接入、分析和可視化功能,為企業提供成熟、穩定的物聯網云平臺,幫助開發者輕松實現設備接入與設備連接,快速完成產品開發及部署,提供完善的物聯網解決方案。本系統采用OneNet4.0作為云端接入,接入協議為HTTP,云平臺的配置部署流程如圖9所示。
打開瀏覽器訪問OneNet官網“https://open.iot.10086.cn/”,首先注冊并登錄賬號,然后進入控制臺,選擇“切換至舊版”,點擊“多協議接入”,在“HTTP”選項欄下添加產品,填寫產品相關信息。產品創建成功后,點擊進入該產品,左側欄點擊“設備列表”,點擊“添加設備”,填寫設備相關信息。設備創建成功后,點擊該設備對應的“詳情”,在設備詳情頁面中點擊“添加APIKey”,云平臺會根據用戶輸入的表單信息生成一串加密字符串,如圖10所示,由圖可知該設備的設備ID和APIKey這兩個關鍵信息,通過設備ID和APIKey,可以唯一地識別云平臺上所創建的設備。接著點擊左側欄的“數據流模板”,添加兩個數據流,數據流名稱分別為“matterA”、“matterB”,單位名稱均為“千克”,單位符號均為“kg”。最后,點擊左側欄的“應用管理”添加應用,在應用編輯器里完成控件與設備數據流之間的關聯,完成后保存并發布該應用。
完成云平臺的配置后,保存設備ID和APIKey對應的值,上傳稱重數據時需要使用上述兩個值,否則不能完成數據上傳操作。ESP32實現HTTP數據上傳需要導入urequest依賴包,通過HTTP的post請求上傳數據至云平臺的核心代碼如下:
headersData = { "api-key":"1ekLTm7pTjmInZ=7QLOgvtmfamU=" }
jsonData = {"datastreams": [{"id": "matterA","datapoints": [{"value": weight}]}]}
response = urequests.post('http://api.heclouds.com/devices/678335201/datapoints',
json =jsonData,headers = headersData)
云平臺的APIKey值賦值給字典類型變量headersData的api-key字段,設備ID的值則替換掉post方法中第一個參數url中的數字部分,字典類型jsonData中包含了數據流名稱和實際稱重數據,其中,“id”字段對應的是數據流名稱,“value”字段對應的是實際稱重數據,實際測得的稱重數據保存在變量weight中。數據上傳成功后,ESP32將會接收到如下的響應信息:
{
"errno": 0,
"error": "succ"
}
系統數據上傳測試效果如圖11所示,更改稱重傳感器上的物體重量,分別對“matterA”和“matterB”測試10次。由圖可知,所有測試均成功上傳至云平臺,并無數據在上傳過程中丟失,系統運行穩定。
6 結束語
本文設計的基于ESP32的電子秤系統,能夠檢測物體的重量,ESP32經過換算之后的實際重量顯示在OLED屏上,并通過ESP32自動上傳當前稱重數據至OneNet云平臺,用戶可登錄OneNet云平臺查看每次稱重的重量以及時間。采用本系統進行稱重,無需人工手動記錄稱重數據,數據自動上傳至云平臺存儲。在需要統計物料領用情況的工廠、餐廳等應用領域,相關管理人員可通過查詢云平臺的數據,非常便利地來了解到出庫物料的領用情況,具有一定的實用價值。
參考文獻:
[1] 邱麥迪,任芳,蔣飛.基于STM32的電子稱重系統的設計與實現[J].中國儀器儀表,2020(7):73-76.
[2] 崔國強,詹寧,羅德雨,等.基于STM32和AD7791實現電子秤設計[J].儀器儀表用戶,2020,27(2):5-8.
[3] 程麗霞,吳璞.家用智能電子秤設計[J].機械工業標準化與質量,2020(10):46-48.
[4] 趙云,李振,李海楓,等.基于51單片機電子秤重量報警系統[J].軟件,2020,41(4):88-92.
[5] 劉嘉慧.基于STC89C52的智能無線稱重系統設計[J].電腦知識與技術,2020,16(14):103-104.
【通聯編輯:謝媛媛】