杜鑫凱,魏雯,趙展
(蘇州工業(yè)職業(yè)技術(shù)學(xué)院,江蘇蘇州, 215104)
隨著人工智能和物聯(lián)網(wǎng)技術(shù)的不斷發(fā)展,智能家居也成為現(xiàn)代家庭中越來(lái)越重要的一部分。智能家居通過(guò)各種智能設(shè)備可以實(shí)現(xiàn)對(duì)家居的自動(dòng)化控制和智能化管理,其以舒適、便利和節(jié)能為目標(biāo),實(shí)現(xiàn)人機(jī)交互、自動(dòng)化管理和遠(yuǎn)程控制等功能??梢蕴岣呱钇焚|(zhì)和便利性。而隨著ARM 處理器的崛起,其在智能家居控制系統(tǒng)設(shè)計(jì)中的應(yīng)用也越來(lái)越廣泛。文章將基于A(yíng)RM 處理器,探討智能家居控制系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn),了解智能家居的內(nèi)部工作原理和實(shí)現(xiàn)方法,為更好地實(shí)現(xiàn)智能化家居生活提供一些技術(shù)支持。通過(guò)該系統(tǒng)的實(shí)際應(yīng)用,可以看到基于STM32 的智能家居控制系統(tǒng)具有快速響應(yīng)、低功耗、高穩(wěn)定性等優(yōu)點(diǎn),可以明顯增強(qiáng)用戶(hù)的整體使用感受,并能夠?yàn)槿藗儙?lái)更加便捷、智能的生活體驗(yàn)。
本設(shè)計(jì)采用核心處理器為STM32F103 系列單片機(jī),由一些外圍元器件搭建出此核心控制器的簡(jiǎn)易工作環(huán)境,從而提供整個(gè)系統(tǒng)所需要的算力及邏輯控制,電源方面采用了USB 電源設(shè)計(jì),單片機(jī)通過(guò)與溫濕度傳感器通信獲取實(shí)時(shí)數(shù)據(jù),用戶(hù)操作按鍵輸入預(yù)設(shè)信息,采集到外設(shè)的數(shù)據(jù)后即可實(shí)現(xiàn)離線(xiàn)控制環(huán)境的溫濕度,WiFi 模塊有接收到數(shù)據(jù)后會(huì)將數(shù)據(jù)發(fā)送到單片機(jī),單片機(jī)對(duì)信息篩選后寫(xiě)入指定寄存器后開(kāi)啟離線(xiàn)控制模式,此時(shí)WiFi 會(huì)將離線(xiàn)的數(shù)據(jù)實(shí)時(shí)上傳到云端里面,云端上的控制模式會(huì)將所采集到的信息,以及當(dāng)前離線(xiàn)模式的狀態(tài)發(fā)送到OLED 顯示屏上進(jìn)行顯示,供用戶(hù)閱讀;當(dāng)聲音信號(hào)被系統(tǒng)采集到后,經(jīng)過(guò)處理后送到語(yǔ)音識(shí)別模塊,結(jié)果將通過(guò)串口傳輸給單片機(jī),單片機(jī)接收到語(yǔ)音識(shí)別模塊的處理結(jié)果后,進(jìn)行分析并發(fā)出相對(duì)應(yīng)的控制指令,也可以利用傳感器來(lái)實(shí)時(shí)監(jiān)測(cè)室內(nèi)的環(huán)境,當(dāng)環(huán)境參數(shù)超過(guò)正常設(shè)定的值時(shí),語(yǔ)音識(shí)別模塊會(huì)播報(bào)語(yǔ)音報(bào)警,這樣可以更好的提醒用戶(hù)??傮w設(shè)計(jì)框圖如圖1 所示。
圖1 總體設(shè)計(jì)框圖
本文設(shè)計(jì)的智能家居控制系統(tǒng)的硬件電路是由單片機(jī)最小系統(tǒng)、語(yǔ)音識(shí)別模塊電路、傳感器模塊電路以及WiFi模塊電路四部分組成,其中單片機(jī)最小系統(tǒng)包括USB 電源輸入、晶振電路、復(fù)位電路、SWD 下載電路等;語(yǔ)音識(shí)別模塊采用LD3320 模塊;傳感器模塊采用了DHT11 溫濕度采集模塊;WiFi 模塊采用了ESP8266 WiFi 模塊。系統(tǒng)硬件部分總原理圖如圖2 所示。
圖2 系統(tǒng)總硬件電路圖
STM32 微處理器是目前微處理器領(lǐng)域應(yīng)用最廣泛的處理器之一,本設(shè)計(jì)的單片機(jī)最小系統(tǒng)所采用STM32F103C8T6 芯片,它的內(nèi)核是ARM Cortex-M3 系列32 位中央處理器,采用先進(jìn)的技術(shù)和工藝制作而成,它的功能十分強(qiáng)大,擁有多種可供使用的外設(shè)。
STM32F103C8T6 為48 引腳,最高工作頻率 72MHz,采用LQFP-48 封裝,它的供電電壓是2V ~3.6V,它擁有37 個(gè)準(zhǔn)雙口I/O 口,它的內(nèi)部具有64K 片內(nèi)Flash,20K字節(jié)SRAM[1],可以提升控制器的存儲(chǔ)速度和讀寫(xiě)速度,其引腳圖如圖3 所示。以穩(wěn)定輸出我們想要的3.3V,故選擇固定版,C9、C10 為輸入濾波電容,其中C9 為100nF 容量高,可提高輸入電源的穩(wěn)定性。C12、C13 為輸出濾波電容,它們的作用是提高3.3V 電平輸出的穩(wěn)定性。其電路圖見(jiàn)圖4 所示。
圖3 STM32F103C8T6 引腳圖
圖4 降壓電路
降壓電路采用AMS1117 降壓IC 輸出3.3V 供芯片工作,AMS1117 有兩個(gè)版本,分別為可調(diào)版和固定版,固定版可控制系統(tǒng)如果離開(kāi)時(shí)鐘是不能正常工作的,時(shí)鐘就好似人的心臟一樣,是芯片的動(dòng)力來(lái)源,時(shí)鐘產(chǎn)生一次就會(huì)推動(dòng)芯片執(zhí)行一次指令。控制系統(tǒng)的晶振電路能夠用來(lái)給芯片提供始時(shí)鐘信號(hào),本文采用了一個(gè)8MHz 的無(wú)源晶振和一個(gè)32.768kHz 的無(wú)源晶振,兩個(gè)晶振周?chē)饔袃蓚€(gè)諧振電容,這兩個(gè)諧振電容的作用是有著起振作用和保證晶振輸出的振蕩頻率更加穩(wěn)定。其電路圖見(jiàn)圖5 所示。
圖5 晶振電路
復(fù)位電路的目的是重置單片機(jī)的當(dāng)前狀態(tài),使單片機(jī)重新執(zhí)行程序。本文的復(fù)位電路采用低電平復(fù)位,電路中的電阻R 為保護(hù)電阻,電容C 為濾波電容,在電路中將按鍵接在RESET 引腳上,一旦按下按鍵,RESET 就會(huì)接地,使得RESET 拉低,系統(tǒng)完成復(fù)位,其電路圖如圖6 所示。
圖6 復(fù)位電路
SWD 是一種串行調(diào)試接口,在我們的實(shí)際生活中,SWD 相比JTAG 有許多優(yōu)勢(shì),其接口分別為:SWCLK 和SWDIO,SWDIO 是 串 行數(shù)據(jù)線(xiàn),用于數(shù)據(jù)的讀出和寫(xiě)入,SWDCLK 是串行時(shí)鐘線(xiàn),提供所需要的時(shí)鐘信號(hào)。首先,4根線(xiàn)的SWD 要比JTAG 的引腳少得多,這就節(jié)約了許多的PCB 空間。其次,SWD 在高速模式下要比JTAG 模式更加可靠,其電路圖如圖7 所示。
圖7 下載電路
語(yǔ)音識(shí)別模塊采用了LD3320 模塊,LD3320 模塊的應(yīng)用非常廣泛,包括智能家居、智能語(yǔ)音助手、智能機(jī)器人、語(yǔ)音播報(bào)等領(lǐng)域,能夠?qū)崿F(xiàn)語(yǔ)音識(shí)別和語(yǔ)音合成功能。其主要特點(diǎn)有:模塊內(nèi)置大量語(yǔ)音識(shí)別模型,能夠?qū)崿F(xiàn)離線(xiàn)語(yǔ)音識(shí)別,無(wú)需外部網(wǎng)絡(luò)或服務(wù)器支持;支持通過(guò)模擬或串口發(fā)送語(yǔ)音數(shù)據(jù),完成語(yǔ)音合成功能,方便實(shí)現(xiàn)語(yǔ)音播報(bào)功能;支持SPI、UART 和I2C 接口:模塊支持多種接口,方便與各種微控制器、單片機(jī)等設(shè)備連接。
本設(shè)計(jì)中的語(yǔ)音識(shí)別模塊與單片機(jī)采用串口通信方式,LD3320 模塊直接與STM32F103C8T6 芯片的RX 與TX 相連接,識(shí)別結(jié)果將通過(guò)串口傳送給單片機(jī)[2],其電路圖如圖8 所示。
圖8 語(yǔ)音識(shí)別模塊接口電路
DHT11 溫濕度傳感器是一款含有已校準(zhǔn)信號(hào)輸出的數(shù)字溫濕度傳感器,它用的是數(shù)字模塊采集技術(shù),體積小巧、功耗很低,抗干擾能力較強(qiáng)。溫濕度傳感器DHT11 一共有3 個(gè)引腳,連接到單片機(jī)的方式也比較簡(jiǎn)單,1 號(hào)引腳接電源,2 號(hào)引腳接數(shù)據(jù)輸出端,接到STM32 單片機(jī)的其中一個(gè)引腳上,3 號(hào)引腳接地,在實(shí)際使用時(shí),1 號(hào)引腳和3 號(hào)引腳之間可以增加一個(gè)電容以去耦濾波。
溫度傳感器DS18B20 最高可達(dá)12 位分辨率,12 位分辨率下工作周期為750ms,分辨率可根據(jù)要求調(diào)整,精度可達(dá)±0.5℃。內(nèi)置EEPROM 并附帶過(guò)溫報(bào)警功能。
如圖9 所示,J9 端子為DHT11 的接口,J12 端子為DS18B20 的接口。R6,R7 為DHT11 與DS18B20 的上拉電阻,這兩個(gè)傳感器均采用的單總線(xiàn)通信,此設(shè)計(jì)中將兩個(gè)單總線(xiàn)的接口分開(kāi),提高整個(gè)系統(tǒng)的容錯(cuò)率,當(dāng)環(huán)境溫濕度傳感器DHT11 損壞導(dǎo)致總線(xiàn)異常,程序可控制關(guān)閉此總線(xiàn)不影響溫度傳感器總線(xiàn),從而有效提高設(shè)備可靠性。
圖9 溫濕度檢測(cè)電路
ESP8266 在WiFi 模式時(shí)常用三種功能,STA 模式(需要外來(lái)WiFi 提供接入),AP 模式(釋放WiFi):ESP 模塊作為接入點(diǎn)讓其他設(shè)備連接WiFi 熱點(diǎn),STA+AP(兩者兼顧),使用ESP 一般用到RX、TX 聯(lián)合串口助手查看是否鏈接成功,或用AT 指令判斷ESP 是否正常。本文采用STA模式,讓ESP 模塊作為終端,使得在同一局域網(wǎng)內(nèi)的設(shè)備可以上云,訪(fǎng)問(wèn)服務(wù)器等。從而實(shí)現(xiàn)通訊。
ESP8266 模塊和STM32 單片機(jī)連接方式是串口連接,并使用 AT 指令配置WiFi 模塊的初始化。當(dāng)解析完成云端數(shù)據(jù)后會(huì)通過(guò)串口將數(shù)據(jù)發(fā)送給主控。底層會(huì)將實(shí)時(shí)溫濕度數(shù)據(jù)通過(guò)串口發(fā)送給EP8266,解析成功后ESP8266 將數(shù)據(jù)上傳ONENET,在用戶(hù)操作界面即可看到實(shí)時(shí)數(shù)據(jù)。數(shù)據(jù)解析功能可以避免干擾數(shù)據(jù)導(dǎo)致上傳數(shù)據(jù)出錯(cuò)。EPS8266 與云端通信采用的JSON 通信格式,便于云端對(duì)數(shù)據(jù)分析處理。ESP8266 WiFi 模塊電路如圖10 所示。
圖10 ESP8266 WiFi 模塊電路
網(wǎng)頁(yè)端的數(shù)據(jù)處理采用的是ONENET 平臺(tái),底層ESP8266 將數(shù)據(jù)打包上傳至服務(wù)器183.230.40.39 的6002端口,MQTT 協(xié)議接入如圖11 所示,能看到當(dāng)前上傳數(shù)據(jù)的總數(shù)及七日新增,能夠讓用戶(hù)直觀(guān)判斷當(dāng)前數(shù)據(jù)是否有效,在面板界面可以看到三組數(shù)據(jù),標(biāo)題分別為T(mén)EMP、Temp、Humi 分別對(duì)應(yīng)溫度、環(huán)境溫度、環(huán)境濕度,這三組數(shù)據(jù)都可看到最后更新時(shí)間,可以不借助圖形界面就可直觀(guān)地觀(guān)察當(dāng)前數(shù)據(jù),每一個(gè)標(biāo)題都對(duì)應(yīng)ESP8266 所訂閱的標(biāo)題,標(biāo)題用于區(qū)分不同數(shù)據(jù)。數(shù)據(jù)的獲取是從通過(guò)MQTT協(xié)議上傳到服務(wù)器的JSON 數(shù)據(jù)中解析的,預(yù)先根據(jù)指定的數(shù)據(jù)格式上傳數(shù)據(jù),ONENET 平臺(tái)會(huì)自動(dòng)解析數(shù)據(jù),并將解析過(guò)的數(shù)據(jù)顯示到當(dāng)前頁(yè)面。
圖11 ONENET 平臺(tái)程序
LD3320 是一種非特定人的芯片,主要作用是采集環(huán)境中的語(yǔ)音信號(hào),LD3320 與MCU 連接是RX 對(duì)TX、TX 對(duì)RX,通過(guò)串口連接,麥克風(fēng)采集到語(yǔ)音信號(hào)后,當(dāng)LD3320模塊識(shí)別出語(yǔ)音信號(hào)時(shí),將識(shí)別到的語(yǔ)音信號(hào)與識(shí)別列表中的關(guān)鍵詞匯進(jìn)行比較,找到最佳匹配的詞語(yǔ),芯片LD3320便會(huì)發(fā)出一個(gè)中斷信號(hào),然后將這個(gè)信號(hào)通過(guò)電路傳送給STM32 單片機(jī)進(jìn)行相應(yīng)的處理,語(yǔ)音識(shí)別的流程圖如圖12所示。
圖12 語(yǔ)音識(shí)別流程
圖13 為溫濕度檢測(cè)的工作流程圖,通過(guò)操作系統(tǒng)RTThread 對(duì)所需要進(jìn)行的任務(wù)進(jìn)行合理的安排,由于RTThread 是實(shí)時(shí)線(xiàn)性操作所以任務(wù)的安排具有優(yōu)先級(jí),獲取溫度任務(wù)尤為關(guān)鍵,程序運(yùn)行后會(huì)首先與數(shù)字傳感器(DS18B20)進(jìn)行通信,獲取到溫度數(shù)據(jù)后再與溫濕度傳感器(DHT11)通信,獲取環(huán)境的溫濕度值后用戶(hù)可以根據(jù)環(huán)境溫濕度調(diào)整溫度,程序所獲取的溫濕度都會(huì)上傳的用戶(hù)操作界面顯示。
圖13 溫濕度檢測(cè)流程圖
如圖14 所示,ESP8266 通電后會(huì)首先自檢各功能,當(dāng)檢查無(wú)誤后會(huì)對(duì)當(dāng)前WiFi 進(jìn)行連接,如果發(fā)現(xiàn)連接不成功會(huì)啟動(dòng)自動(dòng)配網(wǎng)模式,此時(shí)用戶(hù)開(kāi)啟手機(jī)自動(dòng)配網(wǎng)即可讓ESP8266 連接到與手機(jī)同一網(wǎng)絡(luò)。當(dāng)網(wǎng)絡(luò)連接成功后會(huì)自動(dòng)與ONENET 服務(wù)器進(jìn)行握手,發(fā)送用戶(hù)ID 與用戶(hù)Key后燈帶服務(wù)器驗(yàn)證后握手,驗(yàn)證成功后會(huì)持續(xù)檢測(cè)串口數(shù)據(jù),當(dāng)檢測(cè)到ESP8266 串口數(shù)據(jù)不為零時(shí)延時(shí)100ms 后對(duì)串口數(shù)據(jù)全部讀取,后進(jìn)行解析出有效數(shù)據(jù),將數(shù)據(jù)發(fā)送至對(duì)應(yīng)的訂閱主題下。
圖14 ESP8266 流程圖
當(dāng)ONENET 服務(wù)器下發(fā)數(shù)據(jù)后,MQTT 庫(kù)函數(shù)會(huì)調(diào)用接收函數(shù),接收函數(shù)對(duì)ONENET 下發(fā)數(shù)據(jù)進(jìn)行解析后通過(guò)串口發(fā)送給STM32F103 單片機(jī),發(fā)送成功后會(huì)復(fù)位并等待下次數(shù)據(jù)下發(fā)。
本設(shè)計(jì)通過(guò)嵌入式技術(shù)、無(wú)線(xiàn)通信技術(shù)以及物聯(lián)網(wǎng)數(shù)據(jù)采集技術(shù)對(duì)STM32 單片機(jī)進(jìn)行設(shè)計(jì)與開(kāi)發(fā),設(shè)計(jì)了基于STM32 的智能家居控制系統(tǒng),采用了LD3320 模塊、DS18B20 數(shù)字溫度傳感器、DHT11 溫濕度傳感器和ESP8266 WiFi 模塊,完成了語(yǔ)音識(shí)別及語(yǔ)音報(bào)警、室內(nèi)環(huán)境溫濕度的數(shù)據(jù)讀寫(xiě)以及云端的數(shù)據(jù)顯示與控制,實(shí)現(xiàn)了家庭中智能家居的自動(dòng)化、便利化、節(jié)能化,也大大地提高了家居生活的舒適度及用戶(hù)體驗(yàn)。本文設(shè)計(jì)的基于STM32 的智能家居控制系統(tǒng)作為一種應(yīng)用產(chǎn)品,應(yīng)該需要不斷地發(fā)展,提高其穩(wěn)定性、安全性和便捷性,為用戶(hù)提供更好的使用體驗(yàn)。