唐智飛,牛重舉,王爭站,王國懿,敬明東
(北華大學 電氣與信息工程學院,吉林 吉林 132021)
本文提出了一種基于STM32F103,HX711稱重傳感器模塊、步進電機、超聲波模塊、激光筆、LD3320語音識別模塊、光敏電阻傳感器的智能體重秤設計,該體重秤可以識別語音指令,測量身高和體重[1]。
本次設計采用32位的嵌入式微控制器STM32F103完成智能體重秤的設計。體重的測量采用HX711稱重傳感器模塊,HX711稱重傳感器模塊的數據經過STM32F103轉換,并將得到的體重數據顯示在LCD顯示屏上[2]。身高值的測量是通過超聲波測距實現的。超聲波發射器向人體發射聲波信號,信號在傳播途中遇到人體后立即返回,超聲波接收器接收回波信號停止計時,根據計時器記錄的發射聲波和接收回波的時間差,通過時間差測距法得到發射點到人體的距離,已知發射點的對地高度,即可計算出人體的高度[3]。本裝置考慮到測量身高時地面的傾斜度對測量的影響,將步進電機的轉軸與激光筆和超聲波模塊連接,通過所給步進驅動器的脈沖個數控制角位移量控制超聲波模塊指向零位,然后通過STM32F103自動控制超聲波模塊旋轉,實現在零位左右4°范圍內自動測量身高,并返回零位。體重秤總體結構如圖1所示。

圖1 體重秤總體結構
啟動體重秤,各個模塊初始化后測量毛皮質量,進行零位檢測,如果未到達零位,通過識別語音指令或按鍵控制步進電機的左右旋轉使其指向零位;到達零位后,通過識別語音指令“開始”或按鍵WK_UP,STM32F103讀取HX711稱重傳感器模塊體重數據,步進電機自動在零位左右4°范圍內旋轉,讀取超聲波模塊的身高數據,回歸零位,LCD顯示屏顯示數據。系統軟件流程設計如圖2所示。

圖2 軟件流程
HX711是一款專為高精度電子秤而設計的24位A/D轉換器芯片,將端口SCK與STM32F103的引腳PD11連接,并將端口DOUT與STM32F103的引腳PD12連接;超聲波模塊根據計時器記錄發射聲波和接收回波的時間差計算人體高度;步進電機由ULN2003芯片進行驅動,通過控制脈沖個數來控制角位移量;光敏電阻傳感器通過調節電位器使其在接收到激光信號后開關指示燈發亮輸出低電平;LD3320語音識別模塊根據語音指令識別結果控制繼電器的常開與常閉觸點[3]。
3.2.1 STM32F103程序調試
按下按鍵KEY1后,步進電機右轉;按下按鍵KEY0后,步進電機左轉;按下按鍵WK_UP后,HX711稱重傳感器模塊開始測量體重,超聲波模塊開始測量身高,步進電機自動在零位左右4°范圍內旋轉并回歸零位,并將得到的體重與身高數據顯示在LCD顯示屏上。
3.2.2 語音識別程序調試
對LD3320語音識別模塊發出語音指令“右轉”,LD3320語音識別模塊回復“右轉”且步進電機右轉;發出語音指令“左轉”,LD3320語音識別模塊回復“左轉”且步進電機左轉;發出語音指令“開始”,LD3320語音識別模塊回復“開始測量”,HX711稱重傳感器模塊開始測量體重,超聲波模塊開始測量身高,步進電機自動在零位左右4°范圍內旋轉并回歸零位,并將得到的體重與身高數據顯示在LCD顯示屏上。
使用體重秤對重量為62.24 kg、高度為173 cm的同學分別進行了5次測量,調試結果如表1所示。

表1 調試結果(測試樣本的標準電子體重秤測量數據:62.24 kg,身高173 cm)
電子秤設計要求:150 kg正負允許誤差值100 g;身高測量的醫學誤差2~3 cm。通過對表1中5次測量得到體重及身高測量值計算平均值,其誤差均在要求范圍內。
本文利用STM32F103,HX711稱重傳感器模塊、步進電機、超聲波模塊、激光筆、LD3320語音識別模塊、光敏電阻傳感器實現了人體體重和身高的測量及語音指令的識別,測量精度符合設計要求。