?

用STM32和ESP8266實現的可擴展物聯網系統*

2019-01-17 03:11,
單片機與嵌入式系統應用 2018年12期
關鍵詞:流程圖溫濕度串口

,

(武漢科技大學 信息科學與工程學院,武漢 430081)

引 言

物聯網是新一代信息技術的重要組成部分,通過智能組網、智能傳輸技術將傳統網絡的覆蓋范圍擴展到物與物的級別。當前物聯網已發展成為對物體具有全面感知能力,對信息具有可靠傳遞和智能處理能力的連接物與物之間的信息網絡[1]。STM32在原有的工業市場已經具有很好的基礎,在其上發展加入更多的聯接與云端的服務具有很大的市場成長空間[2]。本文在嵌入式應用最為典型STM32系列芯片的基礎上,結合使用ESP8266網絡通信芯片,通過軟硬件設計,解決了嵌入式系統常見的運行時狀態獨立、數據傳輸缺乏實時性的問題,有效拓展了其聯網應用能力。

1 系統框架組成

本系統主要分為三大模塊:數據采集端、控制端、網絡端。數據采集端是整個系統的數據入口,負責搜集傳感器數據。網絡端的主要功能是在網絡上對數據進行展示,本文使用OneNET作為數據接入和管理平臺,該平臺同時提供了基于數據認證和保護機制的信息可視化服務,允許用戶查看系統詳細數據,并在任何時間接收通知[3]??刂贫耸潜鞠到y的核心,承擔著數據接收、緩存、處理以及發送任務。系統架構如圖1所示。

圖1 系統框架圖

2 主設備硬件設計

本系統的主要硬件組成如圖2所示。其中,STM32F103ZE負責數據處理,由于其擁有112個可用的I/O端口,以及2個I2C接口和SPI接口、3個USART接口、一個USB接口和一個CAN接口,每個I/O均可接入相應外設[4]。所以根據需求可快速靈活地接入各種不同的外部設備,系統可實現的具體功能由所接入傳感器的類型決定。ESP8266負責網絡通信,具體采用了ESP8266 01S無線模塊,該模塊支持標準的 IEEE802.11 b/g/n 協議,此外還集成了包括天線開關、電源管理等硬件單元。不僅能解決單個系統中的網絡連接問題,也可以避免節點到服務器通信中任何類型的故障[5]。ESP8266的傳感器及其連接執行器通過網絡進行監控和控制,現有設備可以用來加強對應功能并令其更加智能[6]。集成調試單元主要用于編碼階段的代碼調試。狀態指示單元用于工作狀態監測。

圖2 系統硬件組成圖

ESP8266 01S無線模塊與STM32F103ZE連接需要4個接口,具體設計如圖3所示。

圖3 ESP8266接線以及實物圖

圖5 ESP8266程序流程圖

板載電源提供3.3 V和GND接口。MCU_RXD接口負責數據上傳,MCU_TXD接口負責數據下載。ESP_TXD接主控制器芯片的PA2口,ESP_RXD接PA3口,二者均被配置為串口(USART2)。

3 系統軟件設計

本系統的硬件程序采用C語言編寫,軟件部分包括硬件驅動、硬件間協調、數據處理以及格式化、數據轉發等功能。此外,本系統中用到的EDP協議包由已在GitHub上開源OneNET云平臺代碼經過適當改進而來,數據傳輸基于該協議。

3.1 主函數程序設計

本系統的工作過程大致可分為硬件初始化、建立網絡接、采集數據處理并轉發三大過程,流程圖如圖4所示。

圖4 Main函數流程圖

3.2 ESP8266程序設計

ESP8266程序主要完成硬件層面的初始化以及軟件層面的網絡連接兩大功能,其流程圖如圖5所示。

本文使用的ESP8266 01S與STM32F103ZE之間的通信采用基于AT指令的串口通信方式。串口是計算機上一種非常通用的通信協議,大多數計算機包含兩個基于RS232的串口,串口同時也是儀器儀表設備通用的通信協議[7]。其初始化代碼如下:

void NET_DEVICE_IO_Init(void){

GPIO_InitTypeDef gpioInitStruct;

gpioInitStruct.GPIO_Mode=GPIO_Mode_Out_PP;

gpioInitStruct.GPIO_Pin=GPIO_Pin_0;

//GPIOA0被定義為復位引腳

gpioInitStruct.GPIO_Speed=GPIO_Speed_50MHz;

GPIO_Init(GPIOA,&gpioInitStruct);

NET_IO_Init();

//串口初始化

netDeviceInfo.reboot=0;

}

在I/O初始化完成后,需要進一步設置相應的AT指令,其中最為關鍵的兩條指令如下:

#define ESP8266_WIFI_INFO "AT+CWJAP="PDCN","wxx960105" "

#define ESP8266_ONENET_INFO "AT+CIPSTART="TCP","183.230.40.39",876 "

AT+CWJAP指令的功能是連接無線WiFi指令,它有兩個參數,分別是SSID以及對應的密碼。只有正常接入網絡才可以向網絡服務器發送數據。AT+CIPSTART指令的功能是訪問指定網絡位置。它有三個參數,分別是通信協議類型、主機地址、端口號。ESP8266通過上述兩條宏指令實現與遠程服務器的連接。

3.3 數據處理程序設計

本系統產生的各種數據通過EDP協議進行傳輸。EDP (Enhanced Device Protocol)即增強設備協議,是OneNET平臺根據物聯網特點專門定制的完全公開的基于TCP的協議,被廣泛應用到家居、物流、能源以及其他行業應用中[8]。

數據傳送前需要對數據進行格式化處理。數據格式化的主要工作為封裝信息屬性和文件拆分。封裝信息屬性環節包括封裝協議頭和數據頭。協議頭指派采用對應協議格式傳輸,數據頭向服務器傳遞諸如數據類型大小等信息,以便服務器正確處理數據。文件拆分傳輸包含以下幾個環節:提取信息-拆分-傳輸-接收-組裝-檢查。接收組裝和檢查的過程由服務器端自動完成。綜上所述,數據格式化的流程圖如圖6所示。

圖6 數據處理程序流程圖

數據處理程序不僅完成了協議要求的數據傳輸前的各種準備工作,并且實現了硬件和數據間的隔離,即任何由硬件產生的數據經過該程序均可被換為服務器可識別的并且可進行網絡傳輸的數據,極大提高了本系統在數據層面的兼容性。

4 應用示例

4.1 圖片傳輸示例

本系統采用Flash芯片W25Q16,用于儲存程序本身和程序運行時所需的數據。在此基礎上,構建一個小型化的文件傳輸服務器,傳輸原理如圖7所示。

圖7 圖片上傳原理圖

準備一張待傳輸圖片,由于Flash儲存容量的限制,需要對圖片進行壓縮處理。最后將該圖片轉存為芯片可以識別的十六進制數組。

unsigned char Array[]={

………………

}

轉換完成后,將程序燒入Flash中并啟動系統,同時打開OneNET手機APP,即可看到已上傳的圖片,如圖8所示。

圖8 圖片上傳成功界面

4.2 溫濕度監測示例

本文演示的第二個功能是基于DHT22溫濕度傳感器的環境溫度監測系統。溫濕度采集傳感器采用常見的DHT22芯片,其是一種電容式可輸出數字信號的溫濕度傳感器,它包括濕度感知單元、NTC溫度感知單元,以及一個8位的微型處理器[9]。

在完成硬件設計與搭建、程序設計以及平臺設置之后,本系統即可實現實時監測室內溫度濕度并上傳至網絡的功能。如圖9所示,打開OneNET旗下手機客戶端設備云即可實時查看對應設備下對應數據點的實時數據。打開對應網頁即可看到一段時間內的溫濕度變化趨勢以及當前溫濕度值,對應界面如圖10所示。

圖9 手機端實時監測界面

圖10 網頁端數據流展示界面

結 語

猜你喜歡
流程圖溫濕度串口
溫濕度控制器在回收砂冷卻系統中的應用
淺談AB PLC串口跟RFID傳感器的通訊應用
基于DSP的多路溫濕度監測系統
基于溫濕度控制的天氣預測裝置
蒸發冷卻溫濕度獨立控制空調系統的應用
專利申請審批流程圖
專利申請審批流程圖
USB接口的多串口數據并行接收方法探索
基于藍牙串口適配器的GPS接收機與AutoCAD的實時無線通信
寧??h村級權力清單36條
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合