李紅衛(wèi)
(山東魯碧建材有限公司,山東濟(jì)南,271103)
阿里云物聯(lián)網(wǎng)平臺(tái)是具有設(shè)備接入與管理、監(jiān)控運(yùn)維、存儲(chǔ)與流轉(zhuǎn)數(shù)據(jù)、訂閱發(fā)布消息等功能的一體化平臺(tái)。支持多個(gè)物聯(lián)網(wǎng)設(shè)備連接,采集設(shè)備數(shù)據(jù)存儲(chǔ)到云服務(wù)器;服務(wù)端按照協(xié)議發(fā)送指令到設(shè)備,實(shí)現(xiàn)遠(yuǎn)程控制。
本文通過(guò)移植MQTT協(xié)議到STM32F103單片機(jī),通過(guò)串口控制ESP8266無(wú)線模塊將空氣中溫濕度和有害氣體濃度傳送到阿里云,并利用loT Studio物聯(lián)網(wǎng)開(kāi)發(fā)服務(wù)設(shè)計(jì)電腦端WEB應(yīng)用和手機(jī)APP。同時(shí)云端可以通過(guò)STM32控制現(xiàn)場(chǎng)照明設(shè)備,實(shí)現(xiàn)了對(duì)現(xiàn)場(chǎng)空氣質(zhì)量的監(jiān)測(cè)和遠(yuǎn)程控制。
系統(tǒng)總體框圖如圖1所示,主要包括STM32單片機(jī)模塊,DHT11傳感器模塊,MQ135傳感器模塊,ESP8266無(wú)線模塊,阿里云模塊,繼電器模塊。
圖1 系統(tǒng)總體框圖
控制器采用STM32F103芯片,該芯片是意法半導(dǎo)體推出的高性能、低功耗的32位處理器。其最高工作頻率72MHz,128k字節(jié)的閃存程序存儲(chǔ)器,高達(dá)20k字節(jié)的SRAM,2個(gè)12位數(shù)模轉(zhuǎn)換器,7通道的DMA控制器,多達(dá)80個(gè)快速I/O端口。該芯片性價(jià)比高、可靠穩(wěn)定性好。
MQ135傳感器可以檢測(cè)氨氣、硫化物等多種有害氣體在空氣中的濃度,其檢測(cè)元件是二氧化錫(Sn02)。二氧化錫在干凈的空氣中電導(dǎo)率是較低的,隨著污染氣體濃度的上升,其電導(dǎo)率會(huì)增大。通過(guò)相應(yīng)的外圍電路可以輸出與污染氣體濃度相對(duì)應(yīng)的電壓信號(hào)。其監(jiān)測(cè)濃度范圍10~1000ppm,具有壽命長(zhǎng),低成本的特點(diǎn)。
實(shí)際使用中,采用MQ135傳感器模塊,四個(gè)端口分別為VCC、GND、AOUT和DOUT,其中AOUT接STM32內(nèi)置的AD轉(zhuǎn)換器的輸入引腳。模塊電路圖如圖2所示。
圖2 MQ135傳感器模塊原理圖
STM32具有3個(gè)12位分辨率的ADC,每個(gè)ADC共用21個(gè)外部檢測(cè)通道,具有單次或多次掃描轉(zhuǎn)換功能,轉(zhuǎn)換速度最快只需1μs。同時(shí)我們利用STM32的直接內(nèi)存存儲(chǔ)器(DMA)功能,把ADC轉(zhuǎn)換結(jié)果直接傳輸?shù)絊RAM,節(jié)省了CPU資源,處理速度進(jìn)一步提升。
通過(guò)MQ135的靈敏度特性曲線可以發(fā)現(xiàn)RS/R0與ppm的關(guān)系。利用曲線擬合方程工具,在標(biāo)準(zhǔn)條件下(溫度20℃,濕度65%,氧氣濃度21%,RL=10K),對(duì)靈敏度曲線進(jìn)行數(shù)據(jù)采集和曲線擬合,得出甲烷濃度和傳感器電壓的大致關(guān)系:
ppm=pow((3.488*10*A DC_VALUE)/(5-ADC_VALUE),(1.0/0.3203))。
DHT11是一款溫濕度一體的數(shù)字化傳感器,包括一個(gè)電阻式測(cè)濕元件和一個(gè)NTC測(cè)溫元件,具有穩(wěn)定性好,響應(yīng)快,成本低等優(yōu)點(diǎn)。DHT11與STM32之間采用簡(jiǎn)單的單總線通訊,僅需要一個(gè)IO口就可以將40bit的溫濕度數(shù)據(jù)一次性傳送給STM32。數(shù)據(jù)采用校驗(yàn)和方式方式校驗(yàn),有效的保證了數(shù)據(jù)的準(zhǔn)確性。DHT11功耗較低,5V電壓工作下,工作平均最大電流0.5mA,溫度測(cè)量范圍0℃~50℃,濕度測(cè)量范圍20~90%RH。
ESP8266是串口型WIFI,擁有無(wú)線高性能SOC,能夠獨(dú)立運(yùn)行,也可以作為slave搭載于其他Host運(yùn)行。芯片內(nèi)部集成內(nèi)核CPU、電源管理轉(zhuǎn)換器、天線開(kāi)關(guān)balun等。同時(shí)內(nèi)嵌了高速緩存存儲(chǔ)器,減少內(nèi)存需求,提高了系統(tǒng)運(yùn)行效率。
ESP8266有三種網(wǎng)絡(luò)運(yùn)行模式:STA模式、AP模式和STA+AP模式。本系統(tǒng)中ESP8266主要承擔(dān)了信息接受和信息發(fā)送的任務(wù),故設(shè)置為STA模式。通過(guò)AT指令來(lái)連接到設(shè)定的路由器上。
AT+CWJAP=ssid,pswd; 其中ssid為路由器名稱,pswd為路由器密碼。
設(shè)備登錄阿里云的AT指令為:
AT+IOTCFG=devicename;productkey;devicesecret;其中devicename為創(chuàng)建的設(shè)備名稱,productkey為產(chǎn)品名稱,devicesecret為設(shè)備密鑰。這三個(gè)在阿里云平臺(tái)創(chuàng)建產(chǎn)品和設(shè)備的時(shí)候可以得到。
STM32通過(guò)串口2與ESP8266通訊,具體接線方式如圖3所示,ESP8266原理圖如圖4所示。
圖3 ESP8266與STM32引腳
圖4 ESP8266原理圖
當(dāng)STM32接收到云端發(fā)來(lái)的控制命令時(shí),可以通過(guò)繼電器模塊執(zhí)行相應(yīng)操作,這里用來(lái)控制現(xiàn)場(chǎng)照明設(shè)備。原理圖如圖5所示。當(dāng)PD0輸出高電平時(shí),點(diǎn)亮光電耦合器內(nèi)部LED,晶體管導(dǎo)通,此時(shí)Q1的G電壓很低,當(dāng)Q1導(dǎo)通的時(shí)候,電磁線圈內(nèi)部產(chǎn)生電流,繼電器吸合。當(dāng)PD0輸出低電平時(shí),Q1關(guān)閉,繼電器復(fù)位。繼電器模塊是5V供電,STM32單片機(jī)系統(tǒng)是3.3V供電,所以采用光電耦合器進(jìn)行隔離,起到了保護(hù)作用。
圖5 繼電器模塊原理圖
STM32控制器的開(kāi)發(fā)環(huán)境是MDK 5,采用C語(yǔ)言編程,移植了MQTT傳輸協(xié)議實(shí)現(xiàn)與阿里云平臺(tái)的可靠通訊。將STM32的usart1與電腦端串口調(diào)試助手相連,可以實(shí)時(shí)打印出控制器的運(yùn)行和連接狀態(tài),方便系統(tǒng)的調(diào)試。軟件流程圖如6所示。
圖6 系統(tǒng)流程圖
STM32通過(guò)PA8讀取DHT11數(shù)據(jù),上電后先對(duì)DHT11進(jìn)行初始化,當(dāng)PA8檢測(cè)到返回0時(shí),說(shuō)明初始化成功。DHT11的溫濕度數(shù)據(jù)存放在5個(gè)字節(jié),其中包括8位濕度整數(shù)部分、8位濕度小數(shù)部分、8位溫度整數(shù)部分和8位溫度小數(shù)部分。因?yàn)镈HT11一次通訊時(shí)間最大3ms,所以stm32連續(xù)采樣間隔不小于100ms。讀取數(shù)據(jù)的關(guān)鍵程序如下所示:
MQ135模塊輸出的時(shí)模擬信號(hào),電壓范圍是是0到5V,檢測(cè)到有害氣體的濃度越高,輸出電壓越高。stm32首先對(duì)AD轉(zhuǎn)換器和DMA進(jìn)行初始化,然后將MQ135的模擬信號(hào)轉(zhuǎn)換成數(shù)字信號(hào),通過(guò)公式計(jì)算出有害氣體濃度。關(guān)鍵代碼如下所示:
MQTT是一種具有發(fā)布/訂閱模式功能的輕量級(jí)通訊協(xié)議。具有代碼設(shè)計(jì)簡(jiǎn)單,帶寬占用低,通訊實(shí)時(shí)可靠的特點(diǎn)。對(duì)于受限環(huán)境如物聯(lián)網(wǎng)通訊,尤為適用。本協(xié)議運(yùn)行在TCP/IP協(xié)議上,有以下特點(diǎn):
(1)發(fā)布/訂閱消息模式,提供了一對(duì)多的消息分發(fā)和應(yīng)用之間的解耦。
(2)消息傳輸不需要知道負(fù)載內(nèi)容。
(3)提供三種等級(jí)的服務(wù)質(zhì)量。
(4)“至多一次”,底層完全依靠TCP/IP協(xié)議,有出現(xiàn)數(shù)據(jù)丟失的機(jī)率。
(5)“至少一次”,確保消息到達(dá),但有數(shù)據(jù)重復(fù)的概率。
(6)“僅一次”,保證消息只到達(dá)一次。
(7)網(wǎng)絡(luò)流量占用低,傳輸簡(jiǎn)單,協(xié)議交換方便。
(8)發(fā)送異常中斷時(shí),利用Last Will與Testment功能告知客戶端。
由于阿里云平臺(tái)只接受Alink JSON 標(biāo)準(zhǔn)數(shù)據(jù)格式,所以在ESP8266采集數(shù)據(jù)之后要進(jìn)行數(shù)據(jù)嵌套,然后再通過(guò)MQTT協(xié)議發(fā)送到云端。數(shù)據(jù)轉(zhuǎn)換與上傳的核心程序如下所示:
同時(shí)可以訂閱阿里云的相關(guān)主題,將平臺(tái)下傳的數(shù)據(jù)進(jìn)行解析,獲取核心數(shù)據(jù),然后跟本地設(shè)定好的字符串對(duì)比,成功則執(zhí)行相關(guān)命令。這里我們通過(guò)云平臺(tái)控制現(xiàn)場(chǎng)照明,如果發(fā)送的命令參數(shù)是LED:1則打開(kāi)照明設(shè)備,如果是LED:0則關(guān)閉照明設(shè)備。核心程序如下所示:
首先要注冊(cè)阿里云物聯(lián)網(wǎng)平臺(tái),登陸后選擇公共實(shí)例,主要包括以下步驟:創(chuàng)建產(chǎn)品與設(shè)備,為產(chǎn)品定義物聯(lián)網(wǎng)模型,建立設(shè)備與平臺(tái)的連接,服務(wù)端訂閱設(shè)備消息,云端下發(fā)指令。創(chuàng)建的產(chǎn)品是管理一類設(shè)備的集合,每一個(gè)平臺(tái)設(shè)備對(duì)應(yīng)一個(gè)實(shí)際的物聯(lián)網(wǎng)設(shè)備。創(chuàng)建完設(shè)備會(huì)獲得平臺(tái)提供的設(shè)備三元組,即ProductKey、DeviceName和DeviceSecret。然后按照平臺(tái)設(shè)定的協(xié)議規(guī)則得到Username、Password、ClientID、IP等參數(shù),最終燒錄到物聯(lián)網(wǎng)設(shè)備,作為連接阿里云的身份驗(yàn)證信息。
本文中創(chuàng)建了溫度、濕度、MQ135空氣質(zhì)量和控制LED四個(gè)屬性,主要包含功能名稱、標(biāo)識(shí)符、數(shù)據(jù)類型和數(shù)據(jù)定義四個(gè)屬性,具體如圖7所示。
圖7 屬性和功能
loT Studio是阿里云提供的一款簡(jiǎn)單、高效的物聯(lián)網(wǎng)開(kāi)發(fā)工具,適用于各個(gè)物聯(lián)網(wǎng)行業(yè)核心場(chǎng)景。提供了豐富的產(chǎn)品和設(shè)備選擇。具有web和移動(dòng)可視化開(kāi)發(fā)功能,開(kāi)發(fā)者無(wú)需編寫代碼就可以快速搭建WEB端和移動(dòng)端應(yīng)用。通過(guò)拖拽的方式引入儀表盤、歷史曲線圖、設(shè)備控制面板等控件,然后為每個(gè)控件配置數(shù)據(jù)源,應(yīng)用搭建完畢就可以預(yù)覽和使用,并支持綁定自己的域名對(duì)最終用戶進(jìn)行發(fā)布。本文設(shè)計(jì)的WEB端運(yùn)行效果如圖8所示。APP端如圖9所示。
圖8 WEB運(yùn)行界面
圖9 手機(jī)APP界面
本文設(shè)計(jì)的空氣質(zhì)量監(jiān)測(cè)系統(tǒng),可以監(jiān)測(cè)空氣中的有害氣體濃度和溫濕度,并可以將數(shù)據(jù)傳送到阿里云平臺(tái),用戶可以通過(guò)電腦web端和手機(jī)app查看,同時(shí)可以控制現(xiàn)場(chǎng)照明設(shè)備。系統(tǒng)可靠,成本低滿足了現(xiàn)場(chǎng)環(huán)境的需要。