本應(yīng)用筆記以STM32單片機(jī)作為控制和數(shù)據(jù)處理的單元,使用AHT10、BH1750和BMP280傳感器去監(jiān)測(cè)周圍的環(huán)境參數(shù),在LCD屏完成傳感器數(shù)據(jù)和相關(guān)信息的顯示。
同時(shí),采用了無(wú)線模組與單片機(jī)之間進(jìn)行數(shù)據(jù)交互。當(dāng)無(wú)線通訊模組成功連接網(wǎng)絡(luò),并接入機(jī)智云物聯(lián)網(wǎng)云平臺(tái)時(shí),用戶可以通過(guò)登錄物聯(lián)網(wǎng)云平臺(tái)后臺(tái)查看傳感器上報(bào)的數(shù)據(jù)和進(jìn)行遠(yuǎn)程控制。
目錄預(yù)覽
1. 總體方案設(shè)計(jì)
2. 系統(tǒng)硬件設(shè)計(jì)
3. 系統(tǒng)軟件設(shè)計(jì)
4. 物聯(lián)網(wǎng)平臺(tái)設(shè)備接入
5. 軟硬件實(shí)物調(diào)試
01
總體方案設(shè)計(jì)
本環(huán)境監(jiān)測(cè)系統(tǒng)設(shè)計(jì)選取了控制和數(shù)據(jù)處理能力強(qiáng)的ST32單片機(jī)作為核心部件。使用溫濕度傳感器對(duì)周圍環(huán)境中的溫度與濕度監(jiān)測(cè),選取高精度的光強(qiáng)度傳感器完成對(duì)周圍環(huán)境的光照強(qiáng)度的測(cè)量,對(duì)于氣壓數(shù)據(jù)的測(cè)量,將選取高精度的氣壓傳感器完成工作。
該系統(tǒng)使用液晶顯示屏幕完成對(duì)溫濕度數(shù)值,光照強(qiáng)度數(shù)值,大氣壓強(qiáng)數(shù)值以及設(shè)備的狀態(tài)信息的顯示。當(dāng)無(wú)線通訊模組成功連接網(wǎng)絡(luò)之后,接入云平臺(tái)。用戶可以通過(guò)登錄物聯(lián)網(wǎng)云平臺(tái)后臺(tái)[4],查看傳感器上報(bào)的數(shù)據(jù)信息和進(jìn)行遠(yuǎn)程控制。開(kāi)發(fā)Android上位機(jī)軟件,使用戶在上位機(jī)程序上實(shí)現(xiàn)對(duì)各種環(huán)境質(zhì)量參數(shù)監(jiān)測(cè)。整個(gè)系統(tǒng)的整體框架圖如下圖所示。
■1.1 控制模塊方案
本環(huán)境監(jiān)測(cè)系統(tǒng)設(shè)計(jì)使用單片機(jī)作為整個(gè)系統(tǒng)的控制中心。需要完成傳感器數(shù)據(jù)的采集,無(wú)線通訊模組的數(shù)據(jù)交互,顯示傳感器數(shù)據(jù)的功能[5]。在本次的環(huán)境監(jiān)測(cè)系統(tǒng)中,控制模塊采用的是STM32系列單片機(jī)。
例如在芯片選擇上面,有低功耗類型STM32L系列、主流類型F1系列、高性能F7/H7系列、以及異構(gòu)系統(tǒng)架構(gòu)下的 STM32MP157系列。在軟件程序設(shè)計(jì)過(guò)程中,官方提供了圖形化配置軟件STM32CubeMX??梢钥焖偕傻讓优渲么a,減少重復(fù)性移植。同時(shí)該32位芯片的相關(guān)技術(shù)資料和參考設(shè)計(jì)資料較多,因此被運(yùn)用到各種電子系統(tǒng)設(shè)計(jì)之中。本應(yīng)用筆記準(zhǔn)備使用控制性能強(qiáng)勁和數(shù)據(jù)處理能力強(qiáng)的STM32F103ZET6芯片作為核心控制模塊元件。
■1.2 環(huán)境監(jiān)測(cè)傳感器方案
環(huán)境監(jiān)測(cè)系統(tǒng)主要需要監(jiān)測(cè)的數(shù)據(jù)有溫濕度數(shù)據(jù),光照強(qiáng)度數(shù)據(jù)和大氣壓強(qiáng)數(shù)據(jù)等基本環(huán)境質(zhì)量參數(shù)。因此需要選擇相應(yīng)的溫濕度傳感器,光強(qiáng)傳感器,精度較高的氣壓傳感器[6]。
溫濕度數(shù)據(jù)采集傳感器選擇了AHT10。AHT10模塊上面有一個(gè)濕度傳感器元件和一個(gè)片上溫度傳感元件,該產(chǎn)品具有快速響應(yīng)、抗干擾能力強(qiáng)和高精度等優(yōu)點(diǎn)[7]。
光照強(qiáng)度數(shù)據(jù)采集的傳感器選擇了BH1750。BH1750是標(biāo)準(zhǔn)(I2C)接口的16位數(shù)字輸出類型的環(huán)境光強(qiáng)度傳感器,可以利用BH1750模塊的高分辨率探測(cè)較大范圍內(nèi)的光照強(qiáng)度變化情況[8]。
大氣壓強(qiáng)數(shù)據(jù)采集傳感器選擇了BMP280。數(shù)字式氣壓傳感器BMP280,具有高精度的特點(diǎn),而且也具有測(cè)量環(huán)境溫度和高度的功能。
綜上所述的傳感器模塊,在選擇時(shí)考慮到了其成本,使用的方便性,相關(guān)設(shè)計(jì)資料的豐富性,傳感器模塊實(shí)物圖如下圖所示。
■1.3 無(wú)線模塊方案
方案一:對(duì)于長(zhǎng)距離無(wú)線通訊模塊的選擇。查詢資料后,了解了國(guó)產(chǎn)LTE無(wú)線通訊模組上海合宙公司。該公司研發(fā)的LTE Cat 1無(wú)線通信模組提供了豐富的通用外設(shè)接口,并且支持Lua二次開(kāi)發(fā),合宙官方提供了嵌入式腳本運(yùn)行框架LuatOS。但是模組價(jià)格比較貴,而且開(kāi)發(fā)過(guò)程比較復(fù)雜,相關(guān)資料和設(shè)計(jì)參考較少,開(kāi)發(fā)難度較大。
方案二:esp8266芯片是***公司樂(lè)鑫科技所研發(fā)的一款WiFi無(wú)線模組芯片。內(nèi)置TCP/IP協(xié)議棧,支持AT本地升級(jí)和OTA遠(yuǎn)程升級(jí)。該無(wú)線模組能夠很好的接入國(guó)內(nèi)的開(kāi)放的物聯(lián)網(wǎng)云平臺(tái),具有易操作化的特點(diǎn),主要是相關(guān)資料和設(shè)計(jì)參考較多,開(kāi)發(fā)難度較小。
經(jīng)過(guò)對(duì)上述方案對(duì)比,方案二中的ESP8266模塊,擁有豐富的相關(guān)設(shè)計(jì)資料。最終選擇了以ESP8266芯片作為核心的無(wú)線模組。作為單片機(jī)與物聯(lián)網(wǎng)云端進(jìn)行數(shù)據(jù)傳輸和交換的單元,無(wú)線模塊實(shí)物圖如下圖所示。
02
系統(tǒng)硬件設(shè)計(jì)
環(huán)境監(jiān)測(cè)系統(tǒng)選取了STM32F103ZET6芯片作為電路的核心控制和數(shù)據(jù)處理單元。該芯片支持UART、SPI、I2C接口,芯片內(nèi)部集成了512KB閃存和64KB SRAM,可以存儲(chǔ)更多的程序和數(shù)據(jù)。環(huán)境監(jiān)測(cè)系統(tǒng)的主控電路設(shè)計(jì)如下圖所示。
STM32芯片正常運(yùn)行所需要的電壓范圍為2.0~3.6V,實(shí)際運(yùn)行時(shí)的電流只有幾十毫安,因此芯片功耗非常低。芯片可對(duì)系統(tǒng)電路之中的電壓進(jìn)行檢測(cè),可與電源芯片相接一起完成開(kāi)關(guān)電源調(diào)節(jié)。
芯片正常運(yùn)行時(shí),需要一個(gè)外部時(shí)鐘觸發(fā)信號(hào),為此將使用頻率范圍在4~16MHz之間的晶體振蕩器。芯片內(nèi)部存在一個(gè)自動(dòng)校準(zhǔn)的RTC振蕩電路,其實(shí)際運(yùn)行的頻率能夠達(dá)到32KHZ。在本次設(shè)計(jì)中,因?yàn)镾TM32系列擁有豐富的串口接口,因此可以實(shí)現(xiàn)與多個(gè)通訊模組通信。同時(shí)可以添加調(diào)試接口,利用串口軟件實(shí)現(xiàn)調(diào)試功能,打印設(shè)備狀態(tài)信息。
03
系統(tǒng)軟件設(shè)計(jì)
基于STM32的環(huán)境監(jiān)測(cè)系統(tǒng)的主程序流程如下。整個(gè)系統(tǒng),在提供電源之后,開(kāi)始進(jìn)行系統(tǒng)模塊的初始化操作。如進(jìn)行傳感器設(shè)備的初始化,LCD模塊的初始化,無(wú)線通訊模組的初始化。當(dāng)完成初始化操作之后,LCD屏幕則會(huì)顯示初始化信息。
此時(shí),利用路由器或手機(jī)熱點(diǎn)提供WIFI信號(hào),WIFI模塊會(huì)進(jìn)行聯(lián)網(wǎng)操作。當(dāng)聯(lián)網(wǎng)成功時(shí),系統(tǒng)開(kāi)始接收傳感器設(shè)備采集的數(shù)據(jù),APP程序會(huì)顯示相關(guān)傳感器數(shù)據(jù)信息,LCD屏幕也會(huì)顯示環(huán)境監(jiān)測(cè)系統(tǒng)的主要監(jiān)測(cè)數(shù)據(jù)。如果聯(lián)網(wǎng)失敗,則會(huì)重新嘗試連接網(wǎng)絡(luò)。主程序設(shè)計(jì)流程圖如下圖所示。
04
物聯(lián)網(wǎng)平臺(tái)設(shè)備接入
在本次的環(huán)境監(jiān)測(cè)系統(tǒng)的設(shè)計(jì)中,利用了無(wú)線模塊進(jìn)行基本通信操作。傳統(tǒng)的無(wú)線模組與單片機(jī)進(jìn)行數(shù)據(jù)交換,一般的方案是利用無(wú)線模組建立局域網(wǎng)實(shí)現(xiàn)通信功能。隨著云計(jì)算等相關(guān)信息技術(shù)的進(jìn)步,現(xiàn)在的無(wú)線通訊模組可以實(shí)現(xiàn)與云端連接,實(shí)現(xiàn)數(shù)據(jù)遠(yuǎn)程傳輸?shù)墓δ堋?/span>
在本次設(shè)計(jì)中,使用的無(wú)線模組需要連接網(wǎng)絡(luò),并接入云平臺(tái)。用戶可以通過(guò)登錄機(jī)智云物聯(lián)網(wǎng)云平臺(tái)后臺(tái),查看無(wú)線通訊模塊上報(bào)的傳感器數(shù)據(jù)和進(jìn)行遠(yuǎn)程控制等操作。在物聯(lián)網(wǎng)云平臺(tái)的選擇中,選擇了國(guó)內(nèi)的機(jī)智云物聯(lián)網(wǎng)平臺(tái)。物聯(lián)網(wǎng)設(shè)備接入的方案,如下圖所示。
云平臺(tái)提供了兩種版本的GAgent通信協(xié)議的接入方案,主要是獨(dú)立MCU方案和SOC方案兩種。本次環(huán)境監(jiān)測(cè)系統(tǒng)的設(shè)計(jì)中,選擇了獨(dú)立MCU方案接入平臺(tái)。
在本次設(shè)計(jì)過(guò)程中,需要把GAgent協(xié)議移植到WIFI模組上面,從而實(shí)現(xiàn)對(duì)接云平臺(tái)進(jìn)行數(shù)據(jù)交互的功能。云平臺(tái)提供了GAgent固件,GAgent固件的主要作用是完成對(duì)數(shù)據(jù)進(jìn)行上報(bào)云平臺(tái)和平臺(tái)遠(yuǎn)程下發(fā)命令的功能[14]。固件下載效果如下圖所示。
4.1 接入機(jī)智云平臺(tái)的流程
在本次的環(huán)境監(jiān)測(cè)系統(tǒng)是軟件設(shè)計(jì)中,采用了MCU+WIFI通信模組方案,現(xiàn)在介紹接入機(jī)智云平臺(tái)的流程。第一步,注冊(cè)IoT平臺(tái)的開(kāi)發(fā)者賬號(hào),并登陸選擇產(chǎn)品類型并創(chuàng)建。第二步,填寫(xiě)產(chǎn)品相關(guān)的基本信息之后,獲取到平臺(tái)提供的Product Key和Product Secret等密鑰信息[15],如下圖所示。
第三步,創(chuàng)建相關(guān)數(shù)據(jù)點(diǎn)信息,完成相關(guān)數(shù)據(jù)類型的填寫(xiě)。在環(huán)境監(jiān)測(cè)系統(tǒng)的設(shè)計(jì)中,需要?jiǎng)?chuàng)建溫度數(shù)據(jù)Temperature,濕度Humidity,光照強(qiáng)度Light_Intensity,氣壓Pressure等主要的傳感器數(shù)據(jù)點(diǎn),如下圖所示。
第四步,使用IoT平臺(tái)提供SDK文件包,進(jìn)行相關(guān)代碼移植。在SDK包生成的過(guò)程中,平臺(tái)提供了兩種類型。本次系統(tǒng)設(shè)計(jì)過(guò)程中,選擇獨(dú)立MCU方案作為最終方案。
在支持的硬件平臺(tái)中,有常見(jiàn)MCU類型。例如有STM32平臺(tái),MSP430平臺(tái)等,都提供了相關(guān)的測(cè)試SDK包。選擇使用通用的MCU平臺(tái)生成的SDK的代碼移植,有利于之后移植到其他的MCU芯片平臺(tái)上面去,選擇如圖4-11所示。
機(jī)智云SDK包的代碼移植到STM32系列平臺(tái)的流程如下。在整個(gè)代碼移植的過(guò)程,主要是去移植串口初始化及配置,定時(shí)器的初始化及配置[16],傳感器數(shù)據(jù)的采集接收和上報(bào)函數(shù)的配置,以及相關(guān)模塊的初始化配置。
4.2 上位機(jī)軟件應(yīng)用開(kāi)發(fā)
上位機(jī)軟件應(yīng)用開(kāi)發(fā)。在本次的環(huán)境監(jiān)測(cè)系統(tǒng)的設(shè)計(jì)中,采用了Android應(yīng)用程序作為上位機(jī)軟件。一般在APP開(kāi)發(fā)設(shè)計(jì)過(guò)程中,主要是進(jìn)行APP的UI界面設(shè)計(jì),和相關(guān)功能模塊底層邏輯設(shè)計(jì)。在APP的UI界面設(shè)計(jì)的過(guò)程中,選擇使用XML進(jìn)行布局,在應(yīng)用程序的底層邏輯設(shè)計(jì)使用的Java語(yǔ)言。應(yīng)用開(kāi)發(fā)選擇的是安卓平臺(tái),如下圖所示。
本次設(shè)計(jì)中,使用平臺(tái)提供生成的SDK文件包進(jìn)行修改。由于平臺(tái)的提供的例程只是完成了基本的顯示效果,界面效果一般。所以接下來(lái)的主要工作是對(duì)官方源碼進(jìn)行修改。打開(kāi)Android Studio軟件,導(dǎo)入從平臺(tái)下載的Demo源碼,通過(guò)修改src文件里面的layout的布局文件,進(jìn)行界面UI設(shè)計(jì)和優(yōu)化。
通過(guò)對(duì)src文件里面的java代碼,進(jìn)行底層邏輯代碼修改[17]。在界面的UI設(shè)計(jì)工過(guò)程,主要是傳感器的數(shù)據(jù)和系統(tǒng)狀態(tài)信息顯示,基本顯示效果如圖4-17所示。APP的界面設(shè)計(jì)需要優(yōu)化,后期可以添加相關(guān)傳感器歷史數(shù)據(jù)的查看和實(shí)時(shí)動(dòng)態(tài)曲線的功能[18]。
05
軟硬件實(shí)物調(diào)試
環(huán)境監(jiān)測(cè)系統(tǒng)的硬件實(shí)物的初步實(shí)驗(yàn)性調(diào)試工作。在實(shí)驗(yàn)性調(diào)試中,通過(guò)USB線接上電腦USB接口,實(shí)現(xiàn)供電。系統(tǒng)供上電之后,會(huì)有開(kāi)機(jī)啟動(dòng)界面顯示。
開(kāi)機(jī)結(jié)束之后,界面會(huì)停留在系統(tǒng)的功能選擇界面。選擇界面包括了三種功能展示。第一部分是傳感器采集到的數(shù)據(jù)SensorMessage展示, 第二部分是系統(tǒng)的網(wǎng)絡(luò)狀態(tài)信息NetworkMessage展示, 第三部分是系統(tǒng)的基本信息SystemMessage展示。基本功能的選擇界面,如下圖所示。
基于STM32的物聯(lián)網(wǎng)環(huán)境監(jiān)測(cè)系統(tǒng)的上位機(jī)軟件調(diào)試。在使用該Android應(yīng)用程序時(shí),APP和無(wú)線模組需要一起配合操作。在配網(wǎng)時(shí),需要把手機(jī)和WiFi同時(shí)連接到同一個(gè)熱點(diǎn)信號(hào)下面,進(jìn)行配置。輸入WiFi的賬號(hào)SSID和Password,選擇WiFi模組的類型進(jìn)行配置。
配置過(guò)程中APP和硬件設(shè)備不要進(jìn)行任何操作,否則會(huì)出現(xiàn)配置失敗的情況。如果配置失敗,請(qǐng)按下配網(wǎng)按鍵,重新配置。APP配網(wǎng)流程如下圖所示。
當(dāng)配網(wǎng)成功時(shí),會(huì)顯示在物聯(lián)網(wǎng)云平臺(tái)上面注冊(cè)的設(shè)備名稱。點(diǎn)擊進(jìn)入,則會(huì)顯示相關(guān)傳感器數(shù)據(jù)信息,如下圖所示。
登錄物聯(lián)網(wǎng)平臺(tái)的后臺(tái),選擇查看設(shè)備日志功能,在設(shè)備的運(yùn)行記錄里面,可以查看到上報(bào)的數(shù)據(jù)點(diǎn)信息,并支持動(dòng)態(tài)曲線顯示,如下圖所示。
06
總結(jié)
基于STM32的物聯(lián)網(wǎng)環(huán)境監(jiān)測(cè)系統(tǒng)的整個(gè)設(shè)計(jì)過(guò)程中,使用了相關(guān)的環(huán)境傳感器設(shè)備去監(jiān)測(cè)周圍環(huán)境的基本質(zhì)量參數(shù)。在整個(gè)設(shè)計(jì)過(guò)程中,利用LCD屏幕顯示數(shù)據(jù)信息,能夠顯示基本傳感器測(cè)量的數(shù)據(jù)。
由于顯示效果一般,后期可以添加嵌入式GUI圖形界面,例如LVGL,TouchGFX,emWin。使用無(wú)線通信模組與單片機(jī)進(jìn)行數(shù)據(jù)交互,完成了基本的通信功能,但在模組的選擇上需要考慮到其穩(wěn)定性和功耗問(wèn)題。
在上位機(jī)軟件程序設(shè)計(jì)中,使用了Android應(yīng)用程序去完成遠(yuǎn)程監(jiān)測(cè)的功能,但是APP的界面設(shè)計(jì)需要優(yōu)化,后期可以添加相關(guān)傳感器實(shí)時(shí)動(dòng)態(tài)曲線的功能。
APP界面實(shí)操
本應(yīng)用筆記旨在使用STM32的物聯(lián)網(wǎng)環(huán)境監(jiān)測(cè)系統(tǒng)的整個(gè)設(shè)計(jì)過(guò)程中,使用了相關(guān)的環(huán)境傳感器設(shè)備去監(jiān)測(cè)周圍環(huán)境的基本質(zhì)量參數(shù)。由于文章篇幅有限僅展示部分,完整內(nèi)容請(qǐng)點(diǎn)擊“閱讀原文”下載原文檔。
▽點(diǎn)擊“閱讀原文”,可下載原文檔
原文標(biāo)題:應(yīng)用筆記|基于STM32的物聯(lián)網(wǎng)環(huán)境監(jiān)測(cè)系統(tǒng)
文章出處:【微信公眾號(hào):機(jī)智云開(kāi)發(fā)者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
-
機(jī)智云
+關(guān)注
關(guān)注
2文章
573瀏覽量
26361
原文標(biāo)題:應(yīng)用筆記|基于STM32的物聯(lián)網(wǎng)環(huán)境監(jiān)測(cè)系統(tǒng)
文章出處:【微信號(hào):IoTMaker,微信公眾號(hào):機(jī)智云開(kāi)發(fā)者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論