多功能智能時鐘的設(shè)計
謝志平(廣東省技師學院,廣東 惠州 516100)
摘? 要:充分利用32位單片機內(nèi)部強大資源,開發(fā)了一種將電子時鐘、倒計時器、簡易心率、天氣預報、體溫檢測裝置與藍牙音響系統(tǒng)結(jié)合的電子設(shè)備。采用了高精度時鐘芯片DS3231,能做到時間精準;采用了ESP8266Wi-Fi模塊進行授時和天氣預報功能;采用了專用血氧傳感器芯片MAX30102,體積小,功耗低,能方便檢測血氧與心率;利用無線串口HC-12模塊實現(xiàn)了遠距離無線遙控功能。經(jīng)實際測試,達到了預期的各項功能。
關(guān)鍵詞:單片機;高精度;Wi-Fi模塊;無線遙控
1 關(guān)鍵核心技術(shù)
1.1 單片機部分
單片機為STM32主流型號,是一種高性能、低成本、低功耗的嵌入式單片機。整個系統(tǒng)分為主機和遙控器:主機采用LED全彩屏顯示,遙控器采用OLED顯示屏[2]。LED顯示屏可以采用市場上主流的P3、P2.5小間距高清LED顯示屏,利用STM32單片機CPU速度優(yōu)勢,采用動態(tài)掃描技術(shù),既節(jié)約電能,又能達到高清顯示的目的。 整個系統(tǒng)結(jié)構(gòu)如圖1所示。
1.2 時鐘芯片
時鐘芯片采用了DS3231,該芯片是低成本、高精度I2C實時時鐘(RTC),具有集成的溫補晶振(TCXO)和晶體,在沒有Wi-Fi授時時,正常溫度工作范圍內(nèi)精度為±2×10-6,走時非常精準,優(yōu)于普通鐘表,農(nóng)歷的算法和星期算法100年內(nèi)零誤差。
1.3 Wi-Fi授時與天氣數(shù)據(jù)采集
Wi-Fi模塊采用ESP8266。接收天氣時間用arduino程序編寫,arduino程序的示例做得好,容易快速上手,通 過ESP8266讀天氣及時間程序就是用arduino程序里的示例修改的。在其基礎(chǔ)上增加字符串處理,把收到的網(wǎng)站數(shù)據(jù)重新整理成比較簡單的字符串。由于是個人應用,所以參數(shù)需根據(jù)實際情況進行修改。如:在ESP8266例程里相應的位置將實際使用的Wi-Fi名改為test ,密碼為123456789。模塊就能自動連接到這個test了。
WiFi.mode(WIFI_STA);
WiFiMulti.addAP(“test”, “123456789”);
如果要查詢指定地區(qū)的天氣,利用免費開放的天氣查詢網(wǎng)站,在例程里相應的位置直接修改當?shù)氐牡刂?。如要查詢惠州地區(qū)的天氣,則:http.begin(“http://www.webxml.com.cn/WebServices/WeatherWS.asmx/getWeather?theUserID=&theCityCode=惠州”)。
1.4 血氧飽和度與心率采集
身體細胞需要氧氣來進行有氧呼吸。呼吸是細胞獲得有用能量的關(guān)鍵方法之一。血氧飽和度是血液中被氧結(jié)合的氧合血紅蛋白(HbO2)的容量占全部可結(jié)合的血紅蛋白(Hb)容量的百分比,即血液中血氧的濃度,它是呼吸循環(huán)的重要生理參數(shù)。
血氧傳感器采用Maxim公司的MAX30102[4],是一種專為可穿戴設(shè)備設(shè)計開發(fā)的血氧飽和度和心率監(jiān)測傳感器,它是集光源、接收和濾波及數(shù)字化為一體。芯片功耗極低,采用了1.8 V內(nèi)核供電,采用I2C標準通信,可用軟件關(guān)斷芯片,待機電流低至0.7 μA。芯片內(nèi)集成的光源為660 nm的紅光和880 nm的紅外光,接收端為高靈敏度的光敏三極管,接收到的信號進行放大后可進行模擬濾波和數(shù)字濾波,然后將測得的數(shù)據(jù)存放到內(nèi)部存儲器中,供外部控制器讀取。電路見圖2。
內(nèi)部LED通信是通過一個標準的I2C兼容接口,該模塊可以通過軟件在零待機電流的情況下關(guān)閉,使電源導軌始終處于通電狀態(tài)。
脈沖血氧儀需要兩種不同的波長來執(zhí)行測量。MAX30102集成了紅色和紅外 LED 驅(qū)動器,可調(diào)制血氧飽和度(SPO2)和心率(HR)測量的 LED 脈沖。LED 電流可在適當?shù)碾娫措妷合聫?~50 mA進行編程。LED 脈沖寬度可編程為69~411 μs,使算法能夠根據(jù)使用情況優(yōu)化血氧飽和度(SPO2)和心率(HR)的精度和功耗。圖3為實物圖。
數(shù)據(jù)的讀取方法:設(shè)置一個串行通信_周期任務函數(shù),當 USB 緩沖區(qū)中存在數(shù)據(jù)時,此函數(shù)會分析數(shù)據(jù),并在是有效的命令時執(zhí)行。
串行通信_周期任務函數(shù)不斷檢查g_recv_size 標志。當此標志的值不是0時,這意味著在USB 緩沖區(qū)上從單片機接收了一些數(shù)據(jù)。此信息將復制到主應用程序 InBuffer,并且接收的數(shù)據(jù)數(shù)量將復制到 InSize。之后, g_recv_size 設(shè)置為 0,指示數(shù)據(jù)已讀取。當 InSize 的值不是 0 時,數(shù)據(jù)已收到,并且檢查它是否與通信協(xié)議數(shù)據(jù)兼容。數(shù)據(jù)讀取流程圖如圖4。
1.5 無線遙控
為能手動遠程控制,考慮距離和抗干擾能力,遙控器采用了HC-12無線串口通信模塊,該模塊工作在433.4~473 MHz,可以設(shè)置多個頻道,步進為400 kHz。模塊最大發(fā)射功率為100 MW,5 kbit/s,空中波特率下接收靈敏度為-116 dBm,開闊地1 000 m的通信距離。模塊與單片機的連接見圖5。
HC-12 模塊共有四種工作模式,考慮實際使用時,遙控器數(shù)據(jù)量小,正常使用時距離也比較近,故采用FU2 模式。此模式為省電模式,此時模塊的空閑工作電流為 80 μA 左右。只適用傳輸少量數(shù)據(jù)(每個數(shù)據(jù)包在 20 個字節(jié)以內(nèi)),數(shù)據(jù)包發(fā)送時間間隔不能太短(最好在 2 s以上),否則會造成數(shù)據(jù)丟失。AT 指令用來設(shè)置模塊的參數(shù)和切換模塊的功能,設(shè)置后需退出設(shè)置狀態(tài)才生效。方法為:正常使用(已經(jīng)上電)中,把 第 5 引腳“SET”置低電平,利用串口調(diào)試助手,發(fā)送AT+FU2回車。串口調(diào)試助手返回OK+FU2。此模式下不能設(shè)置成其它串口波特率。FU2 模式下,參數(shù)和功能的修改,掉電不會丟失。指令格式見表1。
由于 HC-12 模塊的無線接收靈敏度比較高,當串口波特率大于 9.6 kbit/s 時,必須要錯開 5 個相鄰頻道來使用。當串口波特率不大于 9.6 kbit/s 時,如果短距離(10 m以內(nèi))通信,也需要錯開 5 個相鄰頻道使用。
設(shè)置好串口相關(guān)工作模式后,程序配置好初始化(波特率和串口控制字等)。然后只要將發(fā)送的數(shù)據(jù)送入發(fā)送函數(shù)即可。例如:發(fā)送0x99。即:UART_Send_Byte(0x99);發(fā)送函數(shù)為:
void UART_Send_Byte(unsigned char mydata)
{
ES=0;//關(guān)串口中斷
TI=0;//串口中斷標志置0
SBUF=mydata;//將發(fā)送的數(shù)據(jù)送入SBUF
while(!TI);//等待發(fā)送完成
TI=0;//清發(fā)送中斷標志
ES=1;//打開中斷
}
2 系統(tǒng)測試
系統(tǒng)顯示采用了LED屏幕。LED屏采用了局部刷新算法,響應速度快,程序功能優(yōu)化,效率較高。并且視覺效果很好,支持運行動畫效果、顯示圖片等。操作按鍵算法采用非延遲消抖,提高了單片機工作效率,使用STM32F0單片機HAL庫[5]里的SysTick時鐘檢查時長實現(xiàn)消抖,定時器高速采樣,響應快,對程序運行速度影響小,支持多種按鍵事件的響應,實現(xiàn)了數(shù)據(jù)操作、界面設(shè)置等諸多人性化功能。程序里設(shè)置為每天連接一次Wi-Fi信號,對時鐘芯片進行授時。經(jīng)過半年的運行,完全能與北京時間完全一致。藍牙模塊采用集成的模塊,接通電源后就可以與手機藍牙進行配對,成功后就可以獲取手機內(nèi)的音樂信息,使智能時鐘有了相應的娛樂功能,使智能時鐘的應用更加廣泛。遙控器的操作在正常工作和生活環(huán)境里均能可靠地對主機進行設(shè)置,使用效果良好。
3 結(jié)語
普通的電子時鐘功能單一,走時不夠精準,利用32位單片機豐富的硬件與軟件資源,將普通的電子鐘功能進行擴展,實現(xiàn)了諸多人性化的功能,方便了人們的生活,在性價比方面具有較大的優(yōu)優(yōu)勢,具有一定的市場。
參考文獻
[1] 屈微, 王志良. STM32單片機應用基礎(chǔ)與項目實踐-微課版[M].北京:清華大學出版社,2019:100-201.
[2] 劉正翔.基于STM32的OLED顯示屏接口設(shè)計[J].電子技術(shù)與軟件工程, 2017(19):65.
[3] 白鵬飛.基于MAX30102的穿戴式血氧飽和度檢測系統(tǒng)[J].激光與紅外, 2017(10):1277-1279
[4] 高顯生.STM32F0實戰(zhàn):基于HAL庫開發(fā)[M]. 北 京: 機械工業(yè)出版社,2018:98-104.
[5] 李立春,劉卓.基于ARM Cortex-M3的SysTick解 析[J].吉林化工學院學報, 2015,32(1):37-38.
本文來源于科技期刊《電子產(chǎn)品世界》2020年第02期第81頁,歡迎您寫論文時引用,并注明出處。
評論