劉靜琦, 周振虎,時 飛,阮煜婕,劉靜波,袁瑞奇
(南京工程學院信息與通信工程學院,南京 211167)
外賣騎手體溫是否正常是其身體健康指標的重要方面,外賣騎手擔負著配送食物或其他用品的職責,經(jīng)常需要與不同人員近距離接觸?,F(xiàn)在對于外賣騎手或其他人員進行體溫測量一般采用以下方法:有專門的人員進行手工測量,采用接觸式或非觸式測量工具進行測量;在固定場所安裝熱成像非接觸式體溫測量裝置。這些方法必須需要外賣騎手等被測人員到固定場所才能對其體溫進行監(jiān)測,占用人力物力較多,效率較低,并且由于外賣騎手的流動性與特殊性不便于多次定時監(jiān)測。按照要求,外賣騎手需佩戴安全頭盔,保證交通安全,現(xiàn)有智能頭盔,大多用于對佩戴人員進行定位、語音提示、環(huán)境參數(shù)測量、腦電波心率測量等,或者有一種外賣配送智能安全頭盔實時督促配送員遵守交規(guī),自動撥打外賣客戶電話,讓客戶掌握訂單配送狀態(tài)等應用功能。這類智能頭盔具備的常規(guī)功能,多以定位、語音、拍攝或以測量環(huán)境參數(shù)為應用功能,測量腦電波、心電信號來監(jiān)測佩戴者的生理參數(shù),其內(nèi)置的傳感器并不具備直接測量騎手體溫的功能,不能防范外賣騎手體溫異常造成的風險。本系統(tǒng)設計一種實時監(jiān)測外賣騎手體溫的智能頭盔,可以定時監(jiān)測騎手的體溫數(shù)據(jù),同時把騎手身份信息、位置狀態(tài)數(shù)據(jù)等一起封裝后,通過WIFI 傳輸至云平臺,從而實現(xiàn)定時監(jiān)測騎手體溫和位置狀態(tài)的應用功能,后臺人員通過網(wǎng)頁端查看數(shù)據(jù)信息。不依賴于人工測量騎手體溫,也不需要騎手到指定的地方測量體溫,智能頭盔可以準確、方便、定時監(jiān)測騎手體溫,并發(fā)送數(shù)據(jù)到平臺,為多次定時測量提供可行性。
系統(tǒng)有頭盔部分和物聯(lián)網(wǎng)云平臺部分兩部分組成。頭盔部分采用主控芯片讀取非接觸式高精度紅外測溫傳感器測量的體溫數(shù)據(jù),采集GPS 模塊的經(jīng)緯度數(shù)據(jù)信息,WIFI 模塊通過連接到騎手手機熱點接入網(wǎng)絡,進行數(shù)據(jù)傳輸。時鐘芯片和EEPROM 存儲芯片連接于一組IIC總線上,時鐘芯片提供系統(tǒng)運行時間信息,也作為定時檢測體溫的時間信號,EEPROM 存儲芯片保存騎手身份信息和其他配置數(shù)據(jù)信息,光電檢測部分檢測頭盔是否正常佩戴。系統(tǒng)組成如圖1所示。
圖1 系統(tǒng)組成
非接觸紅外測溫傳感器MLX90614 體積小,非常適合安裝于頭盔正對騎手額頭的部位。通過定時測量體溫數(shù)據(jù)并發(fā)送到云平臺,實現(xiàn)自動檢測的功能。物聯(lián)網(wǎng)云平臺采用中國移動的OneNET 平臺,該平臺為用戶提供簡單高效實用的物聯(lián)網(wǎng)平臺,和可編輯的網(wǎng)頁可視化界面,在網(wǎng)頁端接收數(shù)據(jù)或者下發(fā)控制指令。按照云平臺協(xié)議和數(shù)據(jù)類型封裝數(shù)據(jù)包,發(fā)送數(shù)據(jù)包括騎手身份數(shù)據(jù)、體溫數(shù)據(jù)、位置信息數(shù)據(jù)等,達到定時多次監(jiān)測騎手體溫的目的,提高效率。
OneNET 是中國移動推出的物聯(lián)網(wǎng)開放平臺,該平臺屏蔽了復雜的技術細節(jié),提供多種協(xié)議類型,支持多種智能硬件的接入和大數(shù)據(jù)服務,開發(fā)文檔和技術支持完善。支持多種網(wǎng)絡協(xié)議接入,如MQTT、EDP、HTTP 等,可輕松實現(xiàn)設備的接入與管理。用戶按照OneNET云平臺的規(guī)范接入平臺,上傳數(shù)據(jù),實現(xiàn)數(shù)據(jù)傳輸與存儲管理功能。用戶在官網(wǎng)注冊賬號,就可以進入云平臺創(chuàng)建項目。通過創(chuàng)建選定協(xié)議下的產(chǎn)品,系統(tǒng)給出當前產(chǎn)品的產(chǎn)品ID,添加設備,分析和創(chuàng)建項目數(shù)據(jù)流,添加APIKEY,從而創(chuàng)建用戶自己的應用項目。數(shù)據(jù)上傳完成后,用戶可以在網(wǎng)頁查看數(shù)據(jù)和對應的變化曲線,也可以下發(fā)控制指令,控制智能設備的運行。OneNET 系統(tǒng)可以在同一產(chǎn)品下添加多個設備,例如“智能頭盔”產(chǎn)品,添加1號頭盔、2 號頭盔……,OneNET 系統(tǒng)分配不同的設備ID和鑒權信息,允許多設備運行。
針對頭盔的結構,硬件設計采取模塊化結構設計方法。智能頭盔系統(tǒng)硬件分為主控芯片、非接觸式紅外測溫傳感器、WIFI 模塊、GPS 模塊、時鐘芯片、存儲芯片AT24C02 和光電檢測這幾個部分組成。圖2表示了各單元與主控單元的連接,根據(jù)不同模塊的應用特點,合理分配主控單元的外設資源,實現(xiàn)對智能頭盔最優(yōu)的硬件資源配置。
圖2 智能頭盔接口電路
智能頭盔主控芯片采用STM32F103RCT6,這是基于Cortex-M3架構的高性能處理器,主頻達72 MHz,具備48 kB SRAM、256 kB FLASH,其他資源包括定時器、串口、ADC、SPI、DMA 控制器、外中斷等,滿足智能頭盔的應用需求及后續(xù)的拓展應用。在系統(tǒng)中,WIFI 模塊和GPS模塊分別連接于主控芯片串口3 和串口2,串口編程收發(fā)數(shù)據(jù)在本系統(tǒng)中是重要的環(huán)節(jié),實際編程應用中,采用主控芯片的DMA 功能與串口中斷接收,使得串口收發(fā)數(shù)據(jù)的效率得到充分提高。
MELEXIS 公司生產(chǎn)的MLX90614 溫度傳感器是一種使用方便的紅外測溫器件, 直接輸出完全線性化的并已對環(huán)境溫度進行補償?shù)臄?shù)字溫度,可實現(xiàn)高精度和高分辨率的溫度采集,該器件具有2 種溫度輸出方式:數(shù)字PWM 輸出及SMBus 接口輸出,具有體積小、精度高、測溫范圍廣、使用方便的特點。在溫度范圍為32~42 ℃時,測量的絕對精度為±0.2 ℃,因此非常適用于對人體溫度進行測量。本系統(tǒng)主控芯片PB6和PB7作為SMBus接口,連接于MLX90614。
ESP8266 是一款高集成度的WIFI 模塊,其本身是一個32 位的MCU 單元可以獨立訪問網(wǎng)絡,也可以搭配其他主控芯片,幫助其他主控芯片接入互聯(lián)網(wǎng)。ESP8266 提供一對串口與主控芯片進行數(shù)據(jù)交換,與主控芯片通過串口3連接。ESP8266 允許配置為熱點(AP)、客戶端(STA),熱點+客戶端(AP+STA)三種模式,本系統(tǒng)把ESP8266 配置為STA 模式,通過手機熱點接入網(wǎng)絡,實現(xiàn)遠程控制與數(shù)據(jù)傳輸。
GPS 模塊采用VK2828U7G5LF 模塊,帶有高精度TCXO,內(nèi)置FLASH,可自由配置多項參數(shù),包括波特率和數(shù)據(jù)刷新率(1~10 Hz)。輸出語句NMEA0183V3.0 協(xié)議數(shù)據(jù),可任意設置其中協(xié)議數(shù)據(jù)輸出.模塊與主控芯片之間通過串口2連接,本系統(tǒng)應用中,配置GPS模塊串口波特率為38400 bps,5 Hz數(shù)據(jù)更新速率。
時鐘芯片選用DS3231 芯片,這是一款內(nèi)置溫補晶振的時鐘芯片,3.3 V 供電電壓,精度可達 正 負2 ppm(0°~40°),標 準IIC 接 口 與STM32 主控芯片進行數(shù)據(jù)讀寫,DS3231 的器件地址分別是0XD0(寫)0XD1(讀),該芯片具有1Hz信號輸出引腳INT/SQW,可作為中斷信號輸出,INT 引腳是開漏輸出模式,該管腳外接10k上拉電阻連接到3.3 V。在初始化DS3231時,配置控制寄存器OEH 為OOH,則OEH 其中的BIT4 和BIT3(RS2 和RS1)以及BIT2(INTCN)為0,則3 腳INT/SQW 輸出1Hz 方波,該信號連接STM32端口PC6,可作為外中斷信號,在外中斷服務程序中處理對應的程序,提高了主程序運行的效率。
本系統(tǒng)PB11 和PB10 配置為IIC 總線,其中PB11 為SDA 數(shù)據(jù)線,PB10 為SCL 時鐘線,其中接入10 k 上拉電阻,保證確定的電平信號。在IIC 總線上除了接有時鐘芯片DS3231,還包括EEPROM 存儲芯片AT24C02,主控芯片通過不同的器件地址訪問總線上的器件,讀取數(shù)據(jù)。EEPROM 存儲芯片AT24C02 用作存放系統(tǒng)配置的參數(shù)。
采用GL5516 光敏電阻與10 k 電阻分壓,接入主控芯片的PA1,程序中配置PA1 模數(shù)轉(zhuǎn)換讀取分壓的電壓數(shù)值。光敏電阻安裝于頭盔內(nèi)側(cè),正常佩戴頭盔和未佩戴頭盔兩種情形下,光敏電阻呈現(xiàn)出不同的電阻阻值,從而換算為不同的分壓數(shù)值,系統(tǒng)根據(jù)讀取的數(shù)據(jù),如未正常佩戴頭盔,則系統(tǒng)通過PC0 端口驅(qū)動蜂鳴器,發(fā)出提示,確認使用者正常佩戴頭盔。
智能頭盔與OneNET 之間以MQTT 協(xié)議方式傳輸數(shù)據(jù),該協(xié)議支持數(shù)據(jù)雙向傳輸、實時性高,也具有長時間穩(wěn)定連接的優(yōu)點。設備登錄OneNET 平臺后,選擇在此協(xié)議下創(chuàng)建“智能頭盔”產(chǎn)品,添加設備后,在程序中封裝數(shù)據(jù),包括需要上傳云平臺的數(shù)據(jù),和接收云平臺發(fā)送的指令數(shù)據(jù),把這些數(shù)據(jù)統(tǒng)稱為數(shù)據(jù)流。OneNET 對數(shù)據(jù)流的封裝提供了多種數(shù)據(jù)類型封裝形式,本系統(tǒng)采用數(shù)據(jù)類型3(TYPE=3,JSON 格式2字符串)模式。本系統(tǒng)數(shù)據(jù)流根據(jù)數(shù)據(jù)傳輸方向分為兩類:①上行數(shù)據(jù)流,包括智能頭盔定時測量的體溫數(shù)據(jù)、GPS 定位模塊獲取的經(jīng)緯度位置信息、騎手身份信息、發(fā)送時間等。這些數(shù)據(jù)流封裝為完整的數(shù)據(jù)包,通過ESP8266 發(fā)送至OneNET 云平臺。②下行數(shù)據(jù)流,是網(wǎng)頁端發(fā)出的控制指令,通過OneNET云平臺發(fā)送給智能頭盔,發(fā)布的控制指令主要是修改測量體溫的定時時間數(shù)據(jù),智能頭盔接收到該控制指令后,可以更改定時發(fā)送的時間。
程序首先對智能頭盔系統(tǒng)各模塊進行初始化,包括串口2 和串口3 初始化,紅外測溫傳感器SMBus接口初始化、IIC總線端口初始化、IIC總線接入的DS3231 芯片配置初始化、ADC 轉(zhuǎn)換初始化等。然后,經(jīng)串口3 發(fā)送AT 指令給ESP8266模塊,設置ESP8266為STA 模式,連接WIFI 后,等待連接OneNET 云平臺的回應信號,確認連接OneNET 服務器。在初始化連接OneNET 的過程中,程序可以設定與OneNET 服務器的KeepAlive ?;顣r間,每個客戶端可自定義設置連接保持時間,最短120 s,最長65535 s,用戶可以在此范圍自己設定上傳數(shù)據(jù)的時間間隔。連接OneNET后,程序中按照設定的發(fā)送時間間隔T,把測量的體溫數(shù)據(jù)和經(jīng)緯度位置數(shù)據(jù)信息傳輸至云平臺。主流程如圖3所示。
圖3 系統(tǒng)主流程
其中接收GPS數(shù)據(jù)是根據(jù)串口2中斷給出中斷標志位后,對接收的GPS 位置信息分析后存入相應的變量,最后與體溫數(shù)據(jù)、身份信息等封裝打包為上行數(shù)據(jù)流,發(fā)送數(shù)據(jù)至OneNET云平臺。為適用于不同的情況,定時發(fā)送體溫的時間間隔是可以改變的,定時時間的設定由OneNET 網(wǎng)頁端下達控制指令,主流程中,智能頭盔的ESP8266連接于串口3,利用串口中斷處理接收指令,解析數(shù)據(jù)后,設定時間間隔T,同時存入EEPROM芯片中。
SMBus 接口為兩線協(xié)議,允許主控器件(MD)和一個或一個以上的從器件(SD)通信。系統(tǒng)在給定的時刻只有一個主控器件。本系統(tǒng)中主控器件是STM32F103RCT6,MLX90614只作為從器件使用。主控器件是通過從地址(SA)選擇從器件MLX90614 并開始數(shù)據(jù)傳輸,本系統(tǒng)中采用一個MLX90614作為體溫測量傳感器,其地址為0x00。SMBus 有標準的協(xié)議,主控芯片發(fā)送和接收數(shù)據(jù)都是以字節(jié)為單位進行。主控芯片每發(fā)送一個字節(jié),會檢查從機是否有應答;當主控芯片接收數(shù)據(jù)時,如當前接收的非最后一個字節(jié),主控芯片會給對方發(fā)送應答信號(ACK),如接收的是最后一個字節(jié),主控芯片會給對方發(fā)送非應答信號(NACK)。
圖4是MLX90614測量體溫流程。
圖4 MLX90614測量體溫流程
MLX90614 測溫程序中,設定一個計數(shù)值,該計數(shù)值遞減計數(shù),如果計數(shù)到0,則表示測量不成功,退出本次測量。對于測量不成功包含兩個方面:①主控器件在每次發(fā)送數(shù)據(jù)后,檢查MLX90614 的應答情況,如從機應答不成功,則重新開始循環(huán),直到計數(shù)值為0,則退出本次測量。②從機應答正常,但最后主機讀取的校驗字節(jié)與校驗計算和不一致,循環(huán)測量后,判斷計數(shù)值為0,則退出本次測量。一個完整的體溫測量,實際上包括MLX90614正常應答和校驗正確,只有滿足這兩個方面,就得到本次測量的體溫數(shù)據(jù)。MLX90614 測量流程如圖4 所示。讀出的體溫數(shù)據(jù)字節(jié)是高字節(jié)和低字節(jié)數(shù)據(jù),按照按照式(1)組合為16 進制數(shù)據(jù),式(2)得到體溫。
DS3231 有INT 輸出引腳,接入STM32F103 RCT6 的PC6 端口,這是一個每秒的輸出中斷信號,在智能頭盔系統(tǒng)中可以配置PC6 端口的外中斷,在外中斷服務子程序,每次中斷執(zhí)行一次讀取時間和日期數(shù)據(jù)。同時,讀取模數(shù)轉(zhuǎn)換的數(shù)據(jù)也在外中斷中執(zhí)行,用于檢測是否佩戴頭盔,檢測數(shù)值低于設定數(shù)值后,驅(qū)動蜂鳴器每秒發(fā)出提示。外中斷程序的利用,減少系統(tǒng)主程序的占用,提高程序的執(zhí)行效率。外中斷程序如下所示。
void EXTI9_5_IRQHandler(void)
{
if(EXTI_GetITStatus(EXTI_Line6)!=RESET)//外中斷PC6入口
{
ds3231_get_time(); //獲取時間日期
ds3231_get_date();
//光線傳感檢測佩戴頭盔
if(Adc_Average(5)<1500)//取AD 轉(zhuǎn)換值,小于數(shù)值1500未佩戴
FMQ=!FMQ;//驅(qū)動蜂鳴器
else FMQ=1;//蜂鳴器停止
}
EXTI_ClearITPendingBit(EXTI_Line6);//清除PC6中斷標志
}
體溫監(jiān)測智能頭盔系統(tǒng)軟硬件搭建完成,進行實際測試。加電后,等待系統(tǒng)連接OneNET,在網(wǎng)頁端可看到設備狀態(tài),系統(tǒng)連接到OneNET后,設備顯示為在線狀態(tài)。在網(wǎng)頁端刷新數(shù)據(jù)流,實時接收到測量的體溫數(shù)據(jù)和當前的經(jīng)緯度、發(fā)送時間等信息。也可以利用OneNET 提供的可視化用戶界面編輯設計功能,組合編輯文本框、旋鈕等控件,在其應用界面上展示數(shù)據(jù)結果,圖5是實際測量數(shù)據(jù)展示,其中包含體溫、經(jīng)緯度、時間等,可視化界面中添加的旋鈕控件,用于網(wǎng)頁端下發(fā)指令,控制數(shù)據(jù)上傳的時間間隔。實際測試表明,系統(tǒng)運行穩(wěn)定,數(shù)據(jù)接收和下發(fā)指令功能正常,可視化界面簡潔,有較好的應用效果。
圖5 實際測試可視化用戶界面顯示
本系統(tǒng)采用非接觸式紅外測溫傳感器定時測量外賣騎手體溫,按照預設的定時時間測量數(shù)據(jù)。采用模塊化結構,對系統(tǒng)進行實際測試,結合OneNET物聯(lián)網(wǎng)云平臺方便簡潔的可視化應用界面設計,實現(xiàn)了定時測量體溫并遠程上傳體溫數(shù)據(jù)、經(jīng)緯度信息等功能。STM32 豐富的資源,為系統(tǒng)優(yōu)化提供了基礎,后續(xù)可進一步對系統(tǒng)進行優(yōu)化,對系統(tǒng)進行集成化設計,使系統(tǒng)小型化集成化,優(yōu)化電源管理,加入低功耗設計,則更具實用性。加入碰撞跌倒檢測與報警,或者網(wǎng)頁端可以下發(fā)指令,加入呼叫功能等,都是可以進一步優(yōu)化的環(huán)節(jié)。