唐智飛,牛重舉,王爭站,王國懿,敬明東
(北華大學 電氣與信息工程學院,吉林 吉林 132021)
本文提出了一種基于STM32F103,HX711稱重傳感器模塊、步進電機、超聲波模塊、激光筆、LD3320語音識別模塊、光敏電阻傳感器的智能體重秤設計,該體重秤可以識別語音指令,測量身高和體重[1]。
本次設計采用32位的嵌入式微控制器STM32F103完成智能體重秤的設計。體重的測量采用HX711稱重傳感器模塊,HX711稱重傳感器模塊的數(shù)據(jù)經(jīng)過STM32F103轉(zhuǎn)換,并將得到的體重數(shù)據(jù)顯示在LCD顯示屏上[2]。身高值的測量是通過超聲波測距實現(xiàn)的。超聲波發(fā)射器向人體發(fā)射聲波信號,信號在傳播途中遇到人體后立即返回,超聲波接收器接收回波信號停止計時,根據(jù)計時器記錄的發(fā)射聲波和接收回波的時間差,通過時間差測距法得到發(fā)射點到人體的距離,已知發(fā)射點的對地高度,即可計算出人體的高度[3]。本裝置考慮到測量身高時地面的傾斜度對測量的影響,將步進電機的轉(zhuǎn)軸與激光筆和超聲波模塊連接,通過所給步進驅(qū)動器的脈沖個數(shù)控制角位移量控制超聲波模塊指向零位,然后通過STM32F103自動控制超聲波模塊旋轉(zhuǎn),實現(xiàn)在零位左右4°范圍內(nèi)自動測量身高,并返回零位。體重秤總體結構如圖1所示。
圖1 體重秤總體結構
啟動體重秤,各個模塊初始化后測量毛皮質(zhì)量,進行零位檢測,如果未到達零位,通過識別語音指令或按鍵控制步進電機的左右旋轉(zhuǎn)使其指向零位;到達零位后,通過識別語音指令“開始”或按鍵WK_UP,STM32F103讀取HX711稱重傳感器模塊體重數(shù)據(jù),步進電機自動在零位左右4°范圍內(nèi)旋轉(zhuǎn),讀取超聲波模塊的身高數(shù)據(jù),回歸零位,LCD顯示屏顯示數(shù)據(jù)。系統(tǒng)軟件流程設計如圖2所示。
圖2 軟件流程
HX711是一款專為高精度電子秤而設計的24位A/D轉(zhuǎn)換器芯片,將端口SCK與STM32F103的引腳PD11連接,并將端口DOUT與STM32F103的引腳PD12連接;超聲波模塊根據(jù)計時器記錄發(fā)射聲波和接收回波的時間差計算人體高度;步進電機由ULN2003芯片進行驅(qū)動,通過控制脈沖個數(shù)來控制角位移量;光敏電阻傳感器通過調(diào)節(jié)電位器使其在接收到激光信號后開關指示燈發(fā)亮輸出低電平;LD3320語音識別模塊根據(jù)語音指令識別結果控制繼電器的常開與常閉觸點[3]。
3.2.1 STM32F103程序調(diào)試
按下按鍵KEY1后,步進電機右轉(zhuǎn);按下按鍵KEY0后,步進電機左轉(zhuǎn);按下按鍵WK_UP后,HX711稱重傳感器模塊開始測量體重,超聲波模塊開始測量身高,步進電機自動在零位左右4°范圍內(nèi)旋轉(zhuǎn)并回歸零位,并將得到的體重與身高數(shù)據(jù)顯示在LCD顯示屏上。
3.2.2 語音識別程序調(diào)試
對LD3320語音識別模塊發(fā)出語音指令“右轉(zhuǎn)”,LD3320語音識別模塊回復“右轉(zhuǎn)”且步進電機右轉(zhuǎn);發(fā)出語音指令“左轉(zhuǎn)”,LD3320語音識別模塊回復“左轉(zhuǎn)”且步進電機左轉(zhuǎn);發(fā)出語音指令“開始”,LD3320語音識別模塊回復“開始測量”,HX711稱重傳感器模塊開始測量體重,超聲波模塊開始測量身高,步進電機自動在零位左右4°范圍內(nèi)旋轉(zhuǎn)并回歸零位,并將得到的體重與身高數(shù)據(jù)顯示在LCD顯示屏上。
使用體重秤對重量為62.24 kg、高度為173 cm的同學分別進行了5次測量,調(diào)試結果如表1所示。
表1 調(diào)試結果(測試樣本的標準電子體重秤測量數(shù)據(jù):62.24 kg,身高173 cm)
電子秤設計要求:150 kg正負允許誤差值100 g;身高測量的醫(yī)學誤差2~3 cm。通過對表1中5次測量得到體重及身高測量值計算平均值,其誤差均在要求范圍內(nèi)。
本文利用STM32F103,HX711稱重傳感器模塊、步進電機、超聲波模塊、激光筆、LD3320語音識別模塊、光敏電阻傳感器實現(xiàn)了人體體重和身高的測量及語音指令的識別,測量精度符合設計要求。