杜鑫凱,魏雯,趙展
(蘇州工業職業技術學院,江蘇蘇州, 215104)
隨著人工智能和物聯網技術的不斷發展,智能家居也成為現代家庭中越來越重要的一部分。智能家居通過各種智能設備可以實現對家居的自動化控制和智能化管理,其以舒適、便利和節能為目標,實現人機交互、自動化管理和遠程控制等功能。可以提高生活品質和便利性。而隨著ARM 處理器的崛起,其在智能家居控制系統設計中的應用也越來越廣泛。文章將基于ARM 處理器,探討智能家居控制系統的設計與實現,了解智能家居的內部工作原理和實現方法,為更好地實現智能化家居生活提供一些技術支持。通過該系統的實際應用,可以看到基于STM32 的智能家居控制系統具有快速響應、低功耗、高穩定性等優點,可以明顯增強用戶的整體使用感受,并能夠為人們帶來更加便捷、智能的生活體驗。
本設計采用核心處理器為STM32F103 系列單片機,由一些外圍元器件搭建出此核心控制器的簡易工作環境,從而提供整個系統所需要的算力及邏輯控制,電源方面采用了USB 電源設計,單片機通過與溫濕度傳感器通信獲取實時數據,用戶操作按鍵輸入預設信息,采集到外設的數據后即可實現離線控制環境的溫濕度,WiFi 模塊有接收到數據后會將數據發送到單片機,單片機對信息篩選后寫入指定寄存器后開啟離線控制模式,此時WiFi 會將離線的數據實時上傳到云端里面,云端上的控制模式會將所采集到的信息,以及當前離線模式的狀態發送到OLED 顯示屏上進行顯示,供用戶閱讀;當聲音信號被系統采集到后,經過處理后送到語音識別模塊,結果將通過串口傳輸給單片機,單片機接收到語音識別模塊的處理結果后,進行分析并發出相對應的控制指令,也可以利用傳感器來實時監測室內的環境,當環境參數超過正常設定的值時,語音識別模塊會播報語音報警,這樣可以更好的提醒用戶。總體設計框圖如圖1 所示。

圖1 總體設計框圖
本文設計的智能家居控制系統的硬件電路是由單片機最小系統、語音識別模塊電路、傳感器模塊電路以及WiFi模塊電路四部分組成,其中單片機最小系統包括USB 電源輸入、晶振電路、復位電路、SWD 下載電路等;語音識別模塊采用LD3320 模塊;傳感器模塊采用了DHT11 溫濕度采集模塊;WiFi 模塊采用了ESP8266 WiFi 模塊。系統硬件部分總原理圖如圖2 所示。

圖2 系統總硬件電路圖
STM32 微處理器是目前微處理器領域應用最廣泛的處理器之一,本設計的單片機最小系統所采用STM32F103C8T6 芯片,它的內核是ARM Cortex-M3 系列32 位中央處理器,采用先進的技術和工藝制作而成,它的功能十分強大,擁有多種可供使用的外設。
STM32F103C8T6 為48 引腳,最高工作頻率 72MHz,采用LQFP-48 封裝,它的供電電壓是2V ~3.6V,它擁有37 個準雙口I/O 口,它的內部具有64K 片內Flash,20K字節SRAM[1],可以提升控制器的存儲速度和讀寫速度,其引腳圖如圖3 所示。以穩定輸出我們想要的3.3V,故選擇固定版,C9、C10 為輸入濾波電容,其中C9 為100nF 容量高,可提高輸入電源的穩定性。C12、C13 為輸出濾波電容,它們的作用是提高3.3V 電平輸出的穩定性。其電路圖見圖4 所示。

圖3 STM32F103C8T6 引腳圖

圖4 降壓電路
降壓電路采用AMS1117 降壓IC 輸出3.3V 供芯片工作,AMS1117 有兩個版本,分別為可調版和固定版,固定版可控制系統如果離開時鐘是不能正常工作的,時鐘就好似人的心臟一樣,是芯片的動力來源,時鐘產生一次就會推動芯片執行一次指令。控制系統的晶振電路能夠用來給芯片提供始時鐘信號,本文采用了一個8MHz 的無源晶振和一個32.768kHz 的無源晶振,兩個晶振周圍各有兩個諧振電容,這兩個諧振電容的作用是有著起振作用和保證晶振輸出的振蕩頻率更加穩定。其電路圖見圖5 所示。

圖5 晶振電路
復位電路的目的是重置單片機的當前狀態,使單片機重新執行程序。本文的復位電路采用低電平復位,電路中的電阻R 為保護電阻,電容C 為濾波電容,在電路中將按鍵接在RESET 引腳上,一旦按下按鍵,RESET 就會接地,使得RESET 拉低,系統完成復位,其電路圖如圖6 所示。

圖6 復位電路
SWD 是一種串行調試接口,在我們的實際生活中,SWD 相比JTAG 有許多優勢,其接口分別為:SWCLK 和SWDIO,SWDIO 是 串 行數據線,用于數據的讀出和寫入,SWDCLK 是串行時鐘線,提供所需要的時鐘信號。首先,4根線的SWD 要比JTAG 的引腳少得多,這就節約了許多的PCB 空間。其次,SWD 在高速模式下要比JTAG 模式更加可靠,其電路圖如圖7 所示。

圖7 下載電路
語音識別模塊采用了LD3320 模塊,LD3320 模塊的應用非常廣泛,包括智能家居、智能語音助手、智能機器人、語音播報等領域,能夠實現語音識別和語音合成功能。其主要特點有:模塊內置大量語音識別模型,能夠實現離線語音識別,無需外部網絡或服務器支持;支持通過模擬或串口發送語音數據,完成語音合成功能,方便實現語音播報功能;支持SPI、UART 和I2C 接口:模塊支持多種接口,方便與各種微控制器、單片機等設備連接。
本設計中的語音識別模塊與單片機采用串口通信方式,LD3320 模塊直接與STM32F103C8T6 芯片的RX 與TX 相連接,識別結果將通過串口傳送給單片機[2],其電路圖如圖8 所示。

圖8 語音識別模塊接口電路
DHT11 溫濕度傳感器是一款含有已校準信號輸出的數字溫濕度傳感器,它用的是數字模塊采集技術,體積小巧、功耗很低,抗干擾能力較強。溫濕度傳感器DHT11 一共有3 個引腳,連接到單片機的方式也比較簡單,1 號引腳接電源,2 號引腳接數據輸出端,接到STM32 單片機的其中一個引腳上,3 號引腳接地,在實際使用時,1 號引腳和3 號引腳之間可以增加一個電容以去耦濾波。
溫度傳感器DS18B20 最高可達12 位分辨率,12 位分辨率下工作周期為750ms,分辨率可根據要求調整,精度可達±0.5℃。內置EEPROM 并附帶過溫報警功能。
如圖9 所示,J9 端子為DHT11 的接口,J12 端子為DS18B20 的接口。R6,R7 為DHT11 與DS18B20 的上拉電阻,這兩個傳感器均采用的單總線通信,此設計中將兩個單總線的接口分開,提高整個系統的容錯率,當環境溫濕度傳感器DHT11 損壞導致總線異常,程序可控制關閉此總線不影響溫度傳感器總線,從而有效提高設備可靠性。

圖9 溫濕度檢測電路
ESP8266 在WiFi 模式時常用三種功能,STA 模式(需要外來WiFi 提供接入),AP 模式(釋放WiFi):ESP 模塊作為接入點讓其他設備連接WiFi 熱點,STA+AP(兩者兼顧),使用ESP 一般用到RX、TX 聯合串口助手查看是否鏈接成功,或用AT 指令判斷ESP 是否正常。本文采用STA模式,讓ESP 模塊作為終端,使得在同一局域網內的設備可以上云,訪問服務器等。從而實現通訊。
ESP8266 模塊和STM32 單片機連接方式是串口連接,并使用 AT 指令配置WiFi 模塊的初始化。當解析完成云端數據后會通過串口將數據發送給主控。底層會將實時溫濕度數據通過串口發送給EP8266,解析成功后ESP8266 將數據上傳ONENET,在用戶操作界面即可看到實時數據。數據解析功能可以避免干擾數據導致上傳數據出錯。EPS8266 與云端通信采用的JSON 通信格式,便于云端對數據分析處理。ESP8266 WiFi 模塊電路如圖10 所示。

圖10 ESP8266 WiFi 模塊電路
網頁端的數據處理采用的是ONENET 平臺,底層ESP8266 將數據打包上傳至服務器183.230.40.39 的6002端口,MQTT 協議接入如圖11 所示,能看到當前上傳數據的總數及七日新增,能夠讓用戶直觀判斷當前數據是否有效,在面板界面可以看到三組數據,標題分別為TEMP、Temp、Humi 分別對應溫度、環境溫度、環境濕度,這三組數據都可看到最后更新時間,可以不借助圖形界面就可直觀地觀察當前數據,每一個標題都對應ESP8266 所訂閱的標題,標題用于區分不同數據。數據的獲取是從通過MQTT協議上傳到服務器的JSON 數據中解析的,預先根據指定的數據格式上傳數據,ONENET 平臺會自動解析數據,并將解析過的數據顯示到當前頁面。

圖11 ONENET 平臺程序
LD3320 是一種非特定人的芯片,主要作用是采集環境中的語音信號,LD3320 與MCU 連接是RX 對TX、TX 對RX,通過串口連接,麥克風采集到語音信號后,當LD3320模塊識別出語音信號時,將識別到的語音信號與識別列表中的關鍵詞匯進行比較,找到最佳匹配的詞語,芯片LD3320便會發出一個中斷信號,然后將這個信號通過電路傳送給STM32 單片機進行相應的處理,語音識別的流程圖如圖12所示。

圖12 語音識別流程
圖13 為溫濕度檢測的工作流程圖,通過操作系統RTThread 對所需要進行的任務進行合理的安排,由于RTThread 是實時線性操作所以任務的安排具有優先級,獲取溫度任務尤為關鍵,程序運行后會首先與數字傳感器(DS18B20)進行通信,獲取到溫度數據后再與溫濕度傳感器(DHT11)通信,獲取環境的溫濕度值后用戶可以根據環境溫濕度調整溫度,程序所獲取的溫濕度都會上傳的用戶操作界面顯示。

圖13 溫濕度檢測流程圖
如圖14 所示,ESP8266 通電后會首先自檢各功能,當檢查無誤后會對當前WiFi 進行連接,如果發現連接不成功會啟動自動配網模式,此時用戶開啟手機自動配網即可讓ESP8266 連接到與手機同一網絡。當網絡連接成功后會自動與ONENET 服務器進行握手,發送用戶ID 與用戶Key后燈帶服務器驗證后握手,驗證成功后會持續檢測串口數據,當檢測到ESP8266 串口數據不為零時延時100ms 后對串口數據全部讀取,后進行解析出有效數據,將數據發送至對應的訂閱主題下。

圖14 ESP8266 流程圖
當ONENET 服務器下發數據后,MQTT 庫函數會調用接收函數,接收函數對ONENET 下發數據進行解析后通過串口發送給STM32F103 單片機,發送成功后會復位并等待下次數據下發。
本設計通過嵌入式技術、無線通信技術以及物聯網數據采集技術對STM32 單片機進行設計與開發,設計了基于STM32 的智能家居控制系統,采用了LD3320 模塊、DS18B20 數字溫度傳感器、DHT11 溫濕度傳感器和ESP8266 WiFi 模塊,完成了語音識別及語音報警、室內環境溫濕度的數據讀寫以及云端的數據顯示與控制,實現了家庭中智能家居的自動化、便利化、節能化,也大大地提高了家居生活的舒適度及用戶體驗。本文設計的基于STM32 的智能家居控制系統作為一種應用產品,應該需要不斷地發展,提高其穩定性、安全性和便捷性,為用戶提供更好的使用體驗。