藍 波,孫浩然,趙 通,劉國棟
(1.北京石油化工學院信息工程學院,北京 102617;2.北京遨博雄鷹科技有限公司,北京 102299)
信息數量的爆炸式增長伴隨著不確定性的急劇上升,顯著增加了公眾對信息可信度判斷的困難程度[1]。在大數據和智能技術蓬勃發展的今天,利用相關技術可以實現疫情預防,協助醫療機構發現傳染源,提高醫院診療效率。與此同時,疫情數據的實時性對于疫情防控至關重要,是政府及相關部門做出相應防控措施的保障。有研究人員開發了實時疫情地圖平臺,公眾在手機以及PC 上打開軟件或者網站即可查看相關疫情數據。但這種方式獲得的數據量都在幾十萬字節以上,適用于PC 端,無法適用于存儲有限的MCU,因此需要對數據進行壓縮,從而減少數據量,以便將其加載到MCU 中進行后續處理。
STM32 和ESP8266 模塊在許多行業都有著十分廣泛的應用[2-5]。王鵬輝等[6]針對現有的物聯網溫室自動控制水平較低、管理模式落后、通信結構復雜、建網成本高等缺點,設計了一種基于ESP8266 的低成本物聯網連棟溫室控制管理系統。張琥石等[7]介紹了一款基于ESP8266 WiFi模塊的物聯網數控直流電壓源;田旭飛等[8]設計了一種基于LoRa 和STM32的路燈自動監控系統;姚啟龍[9]為了實時監測谷物水分變化,設計了一種基于STM32 的谷物水分在線監測系統。陳顯等[10]設計了基于STM32 的動車組軸端加速度監測裝置;于鵬[11]針對艦船通信系統容易出現通信指令不完整而導致通信周期長的問題,提出了基于STM32 嵌入式微處理器的艦船網絡通信系統設計。
雖然STM32 與ESP8266 模塊在許多行業應用廣泛,但缺少在新冠疫情監控方面的應用。文中設計了一套價格低廉且實用性高的實時監控終端系統,用于實時呈現新冠疫情數據,以便于相關人員開展疫情防控。
新冠疫情實時監控終端系統包含數據實時抓取部分和數據實時顯示部分。抓取的數據來自網絡,并轉化為結構化數據,最終存儲到本地計算機或數據庫。數據抓取結構如圖1 所示。

圖1 數據抓取結構
數據抓取部分采用爬蟲對新冠疫情數據進行爬取。爬蟲從一個或若干個初始網頁的URL 開始,獲得初始網頁上的URL。在抓取網頁的過程中,不斷從當前頁面上抽取新的URL 放入隊列,直到滿足系統的一定停止條件為止。通過網頁分析算法過濾與主題無關的鏈接,保留有用的鏈接并將其放入等待抓取的URL 隊列,再根據一定的搜索策略從隊列中選擇下一步要抓取的網頁URL,重復上述過程,直到達到系統的某一條件時停止。將抓取到的數據進行壓縮,以json 數據包的形式進行存儲,最后將數據包封裝成API 接口以供終端獲取。
實時監控終端采用STM32 作為其MCU,利用無線模塊接入到無線網中。接入網絡后,通過API 接口獲取到數據包,終端對數據進行解析,解析后的數據可以直接顯示在OLED 屏幕。為保證新冠疫情數據的實時性,終端系統定時對數據包進行獲取并更新到OLED 顯示。相關人員可通過OLED 屏幕顯示的內容掌握新冠疫情的實時數據,解決了手機查看新冠疫情數據需要手動刷新的問題。疫情監控系統終端運行過程如圖2 所示。

圖2 疫情監控系統終端運行過程
疫情監控系統終端硬件部分主要由主控芯片最小系統模塊、電源模塊、串口通信模塊、人機交互模塊以及無線通信模塊構成。
電源模塊有電池供電與USB 供電兩種供電方式,經過AMS-1117-3.3 穩壓電路與濾波電路[12-13],將輸出電壓穩定在3.3 V,其原理圖如圖3 所示。AMS1117-3.3芯片輸入電壓需滿足4.75 V≤VIN≤12 V。該電路從左至右依次為輸入、接地、輸出部分。電解電容C18用于濾除電源輸入端的低頻紋波,無極性電容C19用來濾除電源輸入中的高頻紋波。在AMS1117-3.3 芯片輸出端加上了兩個輸出濾波電容C21和C30,用于防止電壓輸出波形出現振蕩。LED 用于顯示輸出電壓,當終端中接入電源時,LED 點亮,表示供電正常。電源電路中,電阻R8為限流電阻,阻值為510 Ω。

圖3 電源電路原理圖
終端的控制部分采用STM32F103VET6 作為主控芯片,還包括由時鐘電路、復位電路和濾波電路組成的外圍電路。STM32F103VET6 具有32 位Cortex 內核,內置512 kB 閃存和64 kB 靜態隨機存取存儲器以及11 個定時器。該主控芯片包含80 個通用輸入輸出口,同時內置3 路12 位模數轉換器和2 路12 位數模轉換器。主控芯片的供電電壓范圍為2~3.6 V,因此采用穩壓后的3.3 V 電壓對主控芯片供電。穩壓后的3.3 V 電壓經過電容濾波后,接入主控芯片的VDD 端口。復位電路采用電阻、電容與按鍵開關實現,當按鍵開關懸空時,主控芯片NRST端口處于高電平;當按鍵按下時,NRST 端口變為低電平,芯片復位。終端中主控芯片最小系統部分如圖4 所示。

圖4 主控芯片最小系統
終端使用CH340G 串行轉換芯片及外圍電路實現USB 轉換串口功能,同時可以通過串口向主控芯片中下載程序?;贑H340G 串行轉換芯片串口轉換電路,可以通過主機實現STM32 單片機的擦除、編程、校驗和加密。利用該電路進行程序下載不需要單片機控制,具有電路簡單、價格低廉、功能穩定、下載速度快、無需冷啟動等優點[14]。終端中串口通信電路如圖5 所示。在使用串口向主控芯片下載程序過程中,首先將圖4 中主控芯片的BOOT0 引腳置于高電平,BOOT1 引腳置于低電平,按下復位按鍵,即NRST引腳由高電平置于低電平,主控芯片進入系統存儲器啟動模式,通過串口可把程序燒錄至主控芯片的FLASH 中。燒錄完成后,將主控的BOOT0 引腳置于 低電平,主控芯片復位后,燒錄進去的程序開始運行。

圖5 串口通信電路
終端采用OLED 顯示屏與按鍵的方式實現人機交互功能。OLED 顯示屏模塊具有8 引腳插針,通過插接的方式插入終端電路板的排母。終端電路板通過SPI 方式與OLED 顯示屏模塊通信。終端電路板中設計了四個按鍵用于外部輸入設置,其中一個按鍵為系統喚醒按鍵,其余三個為自定義按鍵,可在程序中設定。當按鍵懸空時,按鍵所連接的主控芯片引腳狀態為高電平;當按鍵按下時,該引腳狀態變為低電平,觸發外部中斷。人機交互電路原理圖如圖6所示。

圖6 人機交互電路原理圖
終端通信部分選用ESP8266 模塊作為網絡收發器接入網絡。ESP8266 模塊供電范圍為3.0~3.6 V,與STM32 通過串口方式通信,該模塊原理圖如圖7所示。ESP8266 模塊可以連接到2.4 GHz 的無線網絡當中,同時兼容IEEE802.11b、IEEE802.11g 和IEEE802.11n 三種無線協議[1-16]。ESP8266 模塊支持三種工作模式,分別為STA 工作模式、AP 工作模式和STA+AP 工作模式。在文中終端設計中,將ESP8266模塊設置為STA 模式。

圖7 ESP8266模塊原理圖
疫情監控系統終端軟件主要包含數據獲取、數據分析與數據顯示部分,其流程圖如圖8 所示。

圖8 程序流程圖
終端開始運行之后,程序首先進行初始化,包括OLED 屏幕顯示初始化、ESP8266 通信初始化和中斷程序初始化。MCU 通過串口方式與ESP8266 通信,發送AT 指令對ESP8266 進行設置。首先關閉透傳模式,將工作模式設置成WiFi 的STA 模式,隨后設置要接入WiFi 的網絡名稱與密碼。當ESP8266 連接網絡成功后,OLED 屏幕顯示“WiFi 連接成功”字樣。若ESP8266 連接網絡不成功,則繼續嘗試重新連接。中斷程序初始化部分為各個按鍵觸發的外部中斷初始化。
初始化程序執行完成后,終端通過向ESP8266寫入指令連接到API 接口,從而獲取疫情數據包。獲取到的數據包為json 數據包,通過對數據包的解析抽取出需要顯示的數據。
顯示部分采用滾動顯示的方式將國內及全球疫情數據分別顯示。首先將國內疫情數據進行顯示,包括現存確診患者人數、累計確診患者人數、累計治愈患者人數、現存重癥患者人數和累計死亡患者人數。當國內疫情數據顯示結束后,以同種方式顯示全球疫情數據。
利用網線將無線路由器接入網絡,配置無線網絡名稱與無線網絡密碼。將疫情監控系統終端通電,終端開機執行初始化程序,接入到配置好的無線網絡當中,隨即終端開始從網絡中獲取json 數據包,將數據包進行解析,如圖9 所示,數據解析完成后首先顯示國內疫情數據。

圖9 國內疫情數據顯示
如圖10 所示,在國內疫情數據顯示完后,終端繼續滾動顯示全球疫情,全球疫情的顯示方式與國內疫情顯示方式一致。

圖10 全球疫情數據顯示
基于STM32 的新冠疫情監控系統終端可以通過無線通信的方式接入互聯網,從而獲取新冠疫情數據,將數據進行解析后在屏幕上顯示,方便了相關人員對疫情數據的實時掌握。但該終端仍存在一定的局限性,如數據來源單一,無法對不同平臺提供的疫情數據進行整合,后續可在疫情數據融合方面進行深入研究。