吳冬雨
(福州軟件職業技術學院智能產業學院,福建福州 350003)
本文介紹的智能嬰兒床系統采用ATmega328P單片機作為主控芯片基于Arduino IDE設計搖籃電機、溫濕度采集、哭聲檢測、遮陽板控制、紅外電子圍欄、助眠音樂播放、通風加熱及輔助照明等系統的控制程序。基于App Inventor平臺設計智能嬰兒床手機App上位機系統。嬰兒床能夠接收手機App上位機下發的控制指令,對嬰兒床的工作模式、搖晃頻率、助眠音樂等進行控制,并能夠接收和顯示嬰兒床實時回傳的溫濕度數據,同時根據環境溫濕度自動控制風扇調速及加熱墊溫度為嬰兒提供舒適的休息環境。
智能嬰兒床由采用ATmega328P單片機的Arduino NANO控制板作為核心控制器。采用12V電壓為電機及加熱系統供電,集成5V穩壓電路為控制系統供電[1]。嬰兒床由9大電路子系統組成,能夠實現對嬰兒床的實時監控和智能化控制(如圖1所示)。

圖1 總體系統框圖Fig.1 Overall system diagram
(1)藍牙通信系統。采用串口通信的方式,由JDY-31藍牙模塊接收手機App下發的控制指令,通過串口TXD信號線傳輸指令到單片機的RXD接收端口。單片機根據指令,控制嬰兒床的工作模式。
(2)MP3助眠系統。由5路單片機I/O控制信號進行控制,用戶可將自行錄制或在互聯網上下載的MP3格式助眠音頻文件使用MICRO USB數據線連接MY-2480 MP3模塊進行存儲。由單片機控制播放音量及曲目。
(3)溫濕度監測系統。采用內置AD采樣控制器的DHT11溫濕度傳感器對嬰兒床內的環境進行實時監測。通過數據總線方式將測得的溫濕度數據回傳給單片機處理。單片機能夠根據當前環境溫濕度智能調節散熱風扇轉速及加熱墊功率。
(4)LED照明系統。采用3W LED照明燈,由繼電器進行控制,用戶可通過手機App控制照明燈的開光。照明系統搭載有柔光燈罩,能夠在給嬰兒喂食或查看嬰兒狀態時提供溫和的環境補光。
(5)電機控制系統。采用TB6612電機驅動模塊獨立驅動調速風扇電機及搖籃搖擺電機。通過4路單片機電平變化信號控制搖籃左右搖擺及調速風扇的工作模式。單片機通過定時器產生PWM(脈寬調制)信號,根據正脈寬的占空比控制電機的轉速[2]。
(6)加熱墊控制系統。嬰兒床的加熱墊由MOS管驅動,通過分布在嬰兒床底部的電熱絲均勻加熱。同時搭載有NTC熱敏電阻,能夠對加熱區域的溫度進行實時采樣監控,溫度超過設定閾值時單片機將控制加熱回路自動斷電。
(7)遮陽板控制系統。由MG90舵機控制遮陽板的轉角,用戶可在手機App上滑動遮陽板角度調節滑塊在0-180°區間內實現無極調控。通過發送周期為20ms的脈沖信號控制舵機轉角,20ms內高電平占空比越高,舵機轉角度數越大。
(8)哭聲檢測系統。采用電容式麥克風采集環境聲音,當檢測到尖銳且高分貝的嬰兒哭聲時,會向單片機的D8 I/O口輸出一個低電平信號。單片機接收并處理收到的預警信號,通過手機App向用戶彈窗預警。用戶亦可在App上設置“自動帶娃”模式,當檢測到哭聲時自動播放催眠音樂并啟動搖籃電機搖晃搖籃。
(9)紅外電子圍欄。在嬰兒床的圍欄區域安裝紅外傳感器,當開啟紅外預警功能時,系統能夠檢測嬰兒床上的嬰兒是否有嘗試翻越“圍欄”的異常動態,并發出提示音,同時手機App發送彈框提醒。
軟件系統主要包括ATmega328P單片機的控制程序和智能嬰兒床手機App上位機程序。
ATmega328P單片機的控制程序是在Arduino IDE集成開發環境下設計完成的。當智能嬰兒床通電時,系統將等待對硬件系統的初始化。初始化完成,進入正常工作模式后,單片機的2個線程將輪詢執行實時溫濕度數據采集及藍牙串口數據掃描。當掃描到藍牙串口有控制指令傳入時,將接收到的控制指令傳入buff[]數組臨時存儲。并根據buff數組調度對應的子程序工作。控制及采集子程序主要包括:
(1)藍牙串口接收子程序:通過Arduino的串口緩存區掃描指令Serial.available()掃描串口緩存區是否接收到控制指令字符串,若接收到字符串且字符串的長度等于4,則調用Serial.read()函數接收串口數據,并將串口接收到的數據依次存入buff[]字符串數組。手機App下達的控制指令由“單字節控制指令+三字節控制參數”字符串組成。例如:控制調速風扇全速工作,則手機App將發送字符串控制指令“F255”。
(2)溫濕度采集子程序:DHT11溫濕度傳感器與單片機采用“單總線”方式通信,采集數據時首先由單片機I/O口在輸出模式下發送40ms的拉低信號和30us的高電平信號,告知傳感器可以開始回傳數據。信號發送完成后立即將單片機I/O口切換至輸入模式,等待接收DHT11傳感器回傳的溫濕度數據。數據傳輸部分由“濕度高字節”、“濕度低字節”、“溫度高字節”、“溫度低字節”及“校正位”組成,共計40位二進制數據。數據“0”由54us低電平和一個68-74us的高電平組成。單片機將接收到的溫濕度數據進行處理、轉換后傳輸至手機App顯示。
(3)搖籃電機控制子程序:搖籃電機的控制是由單片機的3個I/O口發送控制信號給TB6612電機驅動模塊。在電機運動方向的控制上由D2、D3兩個I/O組合控制。當D2輸出高電平,D3輸出低電平時,搖籃電機向左側運動;當D2輸出低電平,D3輸出高電平時,搖籃電機向右運動;D2、D3均輸出低電平時電機停止運轉。電機的速度控制是由單片機的D11 I/O口通過調用analogWrite( )函數以490Hz的頻率輸出PWM控制信號進行控制。當電機驅動模塊接收到高電平信號時使能電機工作,接收到低電平信號時終止電機工作。
(4)助眠音樂播放子程序:智能嬰兒床的助眠功能是由MY-2480 MP3模塊播放助眠音頻輔助嬰兒進入睡眠。MP3模塊由單片機的A0-A4 I/O口控制。當A0、A2輸出高電平,A1、A3、A4輸出低電平時控制播放音量增加;當A0-A4全部輸出低電平時,控制播放音量減小[3]。
(5)加熱及溫控子程序:溫控系統由10KRT NTC熱敏電阻實時監測加熱墊表面溫度。利用ADC對溫控回路進行模擬量采樣,并將采樣電壓數據換算為熱敏電阻阻值,并根據公式Rt=R*EXP(B*(1/T1-1/T2))計算當前加熱墊表面溫度。其中Rt為當前溫度下測得的熱敏電阻阻值,R是熱敏電阻在T2常溫下的標稱阻值,由于選用的是10KRT的熱敏電阻,R為常量10k,B值為熱敏電阻的固有參數,依數據手冊查詢,本設計中采用的熱敏電阻B值為3470,T2為常溫溫度即25℃下的開爾文溫度273.15+25。嬰兒床的加熱絲則是由MOS管控制,用戶可通過手機App設置自動加熱模式,當檢測到環境溫度低于15攝氏度且加熱墊表面溫度低于25℃時,單片機的D9口輸出高電平時驅動加熱絲工作;當加熱墊表面溫度高于37.5℃時,D9口輸出低電平加熱絲停止工作[4]。
在手機App上位機的設計上采用App Inventor平臺進行軟件設計(如圖2所示)。在手機App上位機的設計上分為“用戶界面”設計及“邏輯設計”兩大板塊。“用戶界面”設計上通過添加“列表選擇框”控件實現藍牙設備的選擇與連接;添加“按鈕”控件實現嬰兒床的助眠音樂播放、加熱功能、風扇功能、紅外電子圍欄等功能的啟動;添加“標簽”控件實現對實時回傳的溫濕度數據的顯示;添加“滑動條”控件實現對搖籃電機轉速及風扇速度的控制;添加“對話框”控件實現紅外電子圍欄的預警提示功能。“邏輯設計上”通過創建藍牙客戶端實現與嬰兒床的JDY-31藍牙模塊通信,當功能按鍵被按下時通過手機藍牙向嬰兒床發送對應控制指令。通過建立定時器控件,以每秒200次的掃描頻率掃描藍牙客戶端是否有數據傳入,若有數據傳入則對數據進行拆包和解析,并在用戶界面的溫濕度顯示區域顯示接收到的數據。

圖2 App用戶界面Fig.2 App user interface
由單片機向手機App上位機發送的每幀數據包由12個字符的字符串組成。數據包的第1位、第4位、第9位、第11位為固定標識符,當App獲取到數據包時會先對標識符進行校驗,若標識符不符,則認為這一幀數據為無效數據。App接收到有效數據包時,將對數據進行拆包處理。數據包的第2~3位為濕度參數、第5~8位為溫度參數。第10位和第12位為哭聲檢測報警狀態位及紅外電子圍欄報警狀態位,當參數為0時代表沒有檢測到異常,參數為1為觸發報警。例如:當前溫度是30.1℃,濕度為68%RH,此時紅外電子圍欄檢測到異常報警,但沒有檢測到嬰兒哭聲,則這幀數據包為“H68T30.1K0B1”。
智能嬰兒床系統,引入了智能化控制的理念,改變了傳統功能單一的嬰兒床。通過傳感器檢測嬰兒床的環境參數,并能夠通過單片機控制嬰兒床的通風及加熱,為小寶寶提供冬暖夏涼的舒適體驗,用戶僅需通過手機App操作即可輕松完成嬰兒床的使用。