李東明
(廣西科技職業(yè)學(xué)院,廣西 崇左 532200)
目前Python 編程語(yǔ)言是市場(chǎng)較受歡迎的編程語(yǔ)言之一,而MicroPython 是基于Python3 語(yǔ)法實(shí)現(xiàn)的一種可以在單片機(jī)上運(yùn)行的Python 語(yǔ)言分支[1],它擁有獨(dú)立的解析器、類庫(kù)、編譯器等完全可以實(shí)現(xiàn)對(duì)單片機(jī)底層的訪問(wèn)與操作,可以輕松實(shí)現(xiàn)I2C 讀取數(shù)據(jù),ADC、DAC 的轉(zhuǎn)換,SD 卡的訪問(wèn),對(duì)電機(jī)的控制等功能。MicroPython 支持的單片機(jī)類型有 STM32F4 系列、ESP32、W800、TI CC3200 等[2-3],它的創(chuàng)始人是一位澳大利亞的程序員、物理學(xué)家Damien George。
眾多的通信協(xié)議和云計(jì)算數(shù)據(jù)的交換,在智能家居的開(kāi)發(fā)中給開(kāi)發(fā)者帶來(lái)了更高的門檻和不便[4],這些問(wèn)題運(yùn)用MicroPython 編寫系統(tǒng)可以得到很好地解決。MicroPython 對(duì)大部分的通信協(xié)議做了封裝且使其具有良好的二次開(kāi)發(fā)特性,還具有腳本語(yǔ)言易讀的性質(zhì)[5-9]。因此本設(shè)計(jì)采用ESP32 作為載體MicroPython 編寫邏輯與通信協(xié)議來(lái)實(shí)現(xiàn)一種家庭環(huán)境監(jiān)測(cè)和控制系統(tǒng)。
監(jiān)測(cè)系統(tǒng)的總體框架如圖1 所示,通信Wi-Fi 模塊集成在ESP32 單片機(jī)模塊中,遠(yuǎn)程控制運(yùn)用手機(jī)APP 實(shí)現(xiàn),ESP32 模塊通過(guò)傳感器獲取室內(nèi)的環(huán)境信息并通過(guò)Wi-Fi 上傳到網(wǎng)絡(luò)從而傳送到使用者的手機(jī),使用者可以通過(guò)手機(jī)APP 查看家里的煤氣是否泄漏、環(huán)境質(zhì)量情況和溫濕度等情況,系統(tǒng)會(huì)根據(jù)檢測(cè)到的環(huán)境值自動(dòng)驅(qū)動(dòng)相關(guān)設(shè)備工作,如有可燃?xì)怏w泄漏時(shí)會(huì)自動(dòng)實(shí)現(xiàn)驅(qū)動(dòng)外接設(shè)備,使用者可以在手機(jī)APP控制繼電器外接設(shè)備??稍贠LED 屏幕顯示可燃?xì)怏w與空氣質(zhì)量情況。
圖1 家庭監(jiān)測(cè)系統(tǒng)總體框架
ESP32 采用兩個(gè)哈佛結(jié)構(gòu)Xtensa LX6 CPU 構(gòu)成雙核系統(tǒng)。它將天線開(kāi)關(guān)、RF balun、功率放大器、接收低噪聲放大器、濾波器、電源管理模塊等功能集于一體。ESP32 只需極少的外圍器件,即可實(shí)現(xiàn)強(qiáng)大的處理性能、可靠的安全性能和Wi-Fi 及藍(lán)牙功能,工作溫度范圍達(dá)到-40°C 到+125°C。集成的自校準(zhǔn)電路實(shí)現(xiàn)了動(dòng)態(tài)電壓調(diào)整,可以消除外部電路的缺陷并適應(yīng)外部條件的變化。獨(dú)立系統(tǒng)運(yùn)行應(yīng)用程序或主機(jī)MCU 的從設(shè)備,通過(guò)SPI/SDIO 或I2C/UART 接口提供Wi-Fi 和藍(lán)牙功能。如圖2 所示。此板供電為2.7-3.6V,12 個(gè)ADC,2 個(gè) DAC,2 個(gè) I2C。基本參數(shù)如表格 1 所示。
圖2 本設(shè)計(jì)使用的核心板正(左)反(右)圖
Blinker 物聯(lián)網(wǎng)平臺(tái)是由點(diǎn)燈科技(成都)有限責(zé)任公司基于物聯(lián)網(wǎng)技術(shù)和產(chǎn)業(yè)需求打造的輕量級(jí)平臺(tái)。適用多種現(xiàn)今市場(chǎng)上熱門智能硬件和多種開(kāi)發(fā)板的快速接入。
可以在 Windows、Linux、MacOS 系統(tǒng)下開(kāi)發(fā)設(shè)備,使用云服務(wù)器進(jìn)行存儲(chǔ)以及傳輸。手機(jī)端提供了Blinker APP,模塊化拼圖的形式對(duì)APP 應(yīng)用界面進(jìn)行編輯,此功能符合物聯(lián)網(wǎng)設(shè)備開(kāi)發(fā)的特性也為開(kāi)發(fā)者提供了極大方便。提供了多種SDK 和開(kāi)發(fā)文檔,簡(jiǎn)潔明了的交互界面,升級(jí)更新方便等優(yōu)點(diǎn)[10]。
本設(shè)計(jì)使用的MicroPython 編程語(yǔ)言遵照MIT 許可,由MicroPython.org 組織編寫的支持ESP32 的MicroPython 固件為基礎(chǔ)進(jìn)行開(kāi)發(fā)。ESP32 單片機(jī)與傳統(tǒng)單片機(jī)開(kāi)發(fā)有所不同,它與計(jì)算機(jī)的連接只需要運(yùn)用USB 連接即可。將MicroPython 移植到ESP32 中,具體操作如下:
(1)在 Windows 的環(huán)境下,從 MicroPython 的官網(wǎng)獲取ESP32 的固件。
(2)運(yùn)用uPyCraft 軟件將ESP32 的固件下載到ESP32 單片機(jī)中。
ESP32 的固件下載完成之后,下載由點(diǎn)燈物聯(lián)網(wǎng)平臺(tái)提供的MicroPython 封裝庫(kù)實(shí)現(xiàn)與Blinker APP通信。
軟件部分設(shè)計(jì)主要分為五個(gè)階段,溫濕度數(shù)據(jù)的采集和處理、可燃?xì)怏w的采集和處理、空氣質(zhì)量數(shù)據(jù)的采集和處理、光照強(qiáng)度的采集和上傳處理、數(shù)據(jù)包的上傳。
溫濕度的采集和處理運(yùn)用DHT11 溫濕度傳感器完成,在處理和采集的階段,在程序中需要調(diào)用固件中自帶的dht 封裝庫(kù),然后在主程序中調(diào)用端口獲取data 數(shù)據(jù),接下來(lái)進(jìn)行讀取即可獲得溫度與濕度值。在程序中應(yīng)綁定數(shù)據(jù)組件,將數(shù)據(jù)發(fā)送到Blinker APP,使用者即可在手機(jī)上看到溫濕度情況。
可燃?xì)怏w的采集和處理在本次設(shè)計(jì)中以液態(tài)丁烷作為測(cè)試對(duì)象,運(yùn)用ESP32 單片機(jī)的ADC 口進(jìn)行電壓數(shù)值的讀取。在程序中將可燃?xì)怏w泄漏情況分為三個(gè)階段:第一階段無(wú)泄漏狀態(tài),在此情況下程序照常運(yùn)行。第二階段輕度泄漏,在此情況下,通過(guò)程序驅(qū)動(dòng)IO口從而控制繼電器工作,根據(jù)實(shí)際使用需要可使輸出設(shè)備揚(yáng)聲器、警報(bào)工作。第三個(gè)階段嚴(yán)重泄漏,在此情況下,通過(guò)程序驅(qū)動(dòng)IO 口從而控制繼電器工作。根據(jù)實(shí)際使用需要外接步進(jìn)電機(jī)、揚(yáng)聲器等設(shè)備。在程序運(yùn)行后無(wú)論是否有可燃?xì)怏w泄漏都會(huì)在OLED 顯示屏和手機(jī)APP 上顯示監(jiān)測(cè)狀態(tài)。
運(yùn)用ESP32 單片機(jī)的ADC 口進(jìn)行電壓數(shù)值的讀取??諝赓|(zhì)量值檢測(cè)分為四個(gè)階段:分別是空氣質(zhì)量?jī)?yōu)、良、中、差。在程序運(yùn)行后會(huì)在OLED 顯示屏和手機(jī)APP 上顯示監(jiān)測(cè)狀態(tài)。
光照強(qiáng)度值通過(guò)ESP32 單片機(jī)的I2C 進(jìn)行數(shù)值的讀取,通過(guò)獲取到的數(shù)值程序自動(dòng)判斷是白天或夜晚,根據(jù)實(shí)際使用需要可外接步進(jìn)電機(jī)。
隨后每一分鐘將數(shù)據(jù)寫進(jìn)心跳包傳輸給Blinker APP,在選擇服務(wù)器時(shí)選用了阿里云,此平臺(tái)提供的云服務(wù)器、云平臺(tái)、云計(jì)算,為海量數(shù)據(jù)計(jì)算提供了很好的解決方案。系統(tǒng)軟件流程如圖3 所示。
圖3 系統(tǒng)軟件流程圖
根據(jù)需求列寫清單,購(gòu)買所需要元器件,測(cè)試各元器件本身是否良好,將MicroPython 固件下載到ESP32之中,然后進(jìn)行調(diào)試。所制作的家庭環(huán)境監(jiān)測(cè)系統(tǒng)物理樣機(jī)如圖4 所示。
圖4 家庭環(huán)境監(jiān)測(cè)系統(tǒng)物理樣機(jī)
調(diào)試方式如下:通過(guò)Blinker APP 界面查看實(shí)時(shí)數(shù)據(jù)和數(shù)據(jù)傳輸是否正常,數(shù)據(jù)是否有變化通過(guò)將系統(tǒng)斷電之后重啟進(jìn)行測(cè)試,控制指令的測(cè)試通過(guò)APP界面的按鈕操縱來(lái)完成,通過(guò)人為干擾的形式來(lái)查看溫室度傳感器、繼電器、可燃?xì)怏w傳感器等設(shè)備是否正常。
圖5 是本次設(shè)計(jì)正常使用的情況下手機(jī)界面,界面分為兩列,從左往右看,第一列第一個(gè)模塊是光照度,第二個(gè)模塊是溫度,第三個(gè)模塊是濕度。第二列第一個(gè)模塊是可燃?xì)怏w檢測(cè),第二個(gè)模塊是空氣質(zhì)量值。其余的兩個(gè)按鈕分別可手動(dòng)控制兩個(gè)繼電器。調(diào)試信息位于最下方,可以手動(dòng)刷新數(shù)據(jù)。
圖5 監(jiān)測(cè)手機(jī)界面
本次設(shè)計(jì)將MicroPython 編程語(yǔ)言與ESP32 單片機(jī)應(yīng)用在家庭環(huán)境監(jiān)測(cè)中,系統(tǒng)采用Wi-Fi 方式搭建傳輸網(wǎng)絡(luò),使用手機(jī)APP 獲取所采集到的家庭環(huán)境數(shù)據(jù)。系統(tǒng)能夠監(jiān)測(cè)判斷家庭的可燃?xì)怏w、空氣質(zhì)量、溫濕度等情況,可在手機(jī)APP 控制相應(yīng)設(shè)備,在較大程度上保障了家庭人員的安全和創(chuàng)建良好的環(huán)境,另外系統(tǒng)所使用的設(shè)備成本低、工作可靠、開(kāi)發(fā)簡(jiǎn)單周期短,可以遠(yuǎn)程操控,使用簡(jiǎn)單方便,并有許多IO 口提供開(kāi)發(fā)升級(jí)拓展使用。