張棚 于娟 劉星 程洪強(qiáng) 張波
(攀枝花學(xué)院智能制造學(xué)院 四川省攀枝花市 617000)
伴隨著互聯(lián)網(wǎng)和嵌入式技術(shù)的發(fā)展,智能家居因此得到蓬勃發(fā)展,并且成為物聯(lián)網(wǎng)的主要領(lǐng)域之一。物聯(lián)網(wǎng)包含傳感器、控制器、大數(shù)據(jù)、人工智能等互聯(lián)網(wǎng)技術(shù)。傳感器實(shí)現(xiàn)AD 轉(zhuǎn)化信息的收集,而互聯(lián)網(wǎng)則實(shí)現(xiàn)信號(hào)傳遞,因此人們可以通過(guò)手機(jī)、電腦等顯示操控裝置查看控制器操作以及環(huán)境情況。物聯(lián)網(wǎng)系統(tǒng)可以應(yīng)用在及其復(fù)雜的環(huán)境下進(jìn)行工作,這樣可以提高人們的工作效率以及安全,物聯(lián)網(wǎng)應(yīng)用領(lǐng)域及其的廣泛,可以應(yīng)用到工業(yè)、農(nóng)業(yè)、以及智能家居等諸多領(lǐng)域。物聯(lián)網(wǎng)門(mén)禁系統(tǒng)則是通過(guò)攝像頭采集門(mén)外圖像信息,通過(guò)Wi-Fi模塊與互聯(lián)網(wǎng)連接,實(shí)現(xiàn)顯示信號(hào)的傳遞,再通過(guò)大數(shù)據(jù)、云計(jì)算傳輸?shù)绞謾C(jī)APP[3]。
基于STM32 的智能家居門(mén)禁系統(tǒng)包括手機(jī)APP 客戶端,網(wǎng)絡(luò)服務(wù)器和STM32 接收端。用戶可以根據(jù)智能手機(jī)APP 查看門(mén)外情況,再根據(jù)實(shí)際情況通過(guò)手機(jī)APP 發(fā)送控制指令至網(wǎng)絡(luò)服務(wù)器,STM32 為接收端[6]。用戶通過(guò)智能手機(jī)APP 可以發(fā)送指令給網(wǎng)絡(luò)服務(wù)器,網(wǎng)絡(luò)服務(wù)器將接受到的指令轉(zhuǎn)發(fā)到家中的STM32 接受設(shè)備,STM32 在把網(wǎng)絡(luò)服務(wù)的指令解釋和處理之后進(jìn)行電機(jī)控制帶動(dòng)門(mén)鎖的開(kāi),輕松、便捷的實(shí)現(xiàn)門(mén)的開(kāi),提高用戶的居住安全和生活質(zhì)量以及便捷度。控制系統(tǒng)框圖如圖1 所示。
硬件設(shè)計(jì)主要有四大模塊:網(wǎng)絡(luò)模塊ESP8266、STM32 模塊、電機(jī)控制模塊以及攝像頭模塊,其中STM32 為主控模塊。結(jié)構(gòu)設(shè)計(jì)框圖具體如圖2 所示。
ST(意法半導(dǎo)體)推出了以基于ARM Cortex-M4 為內(nèi)核的STM32F4 系列高性能微控制器,其采用了90 納米的NVM 工藝和ART(自適應(yīng)實(shí)時(shí)存儲(chǔ)器加速器,Adaptive Real-Time Memory Accelerator)。ART 技術(shù)使得程序零等待執(zhí)行,提升了程序執(zhí)行的效率,將Cortext-M4 的性能發(fā)揮到了極致,使得STM32 F4 系列可達(dá)到210DMIPS@168MHz。自適應(yīng)實(shí)時(shí)加速器能夠完全釋放Cortex-M4 內(nèi)核的性能;當(dāng)CPU 工作于所有允許的頻率(≤168MHz)時(shí),在閃存中運(yùn)行的程序,可以達(dá)到相當(dāng)于零等待周期的性能。此設(shè)計(jì)采用的是STM32F407 芯片[5]。
圖1:控制系統(tǒng)框圖
圖2:結(jié)構(gòu)設(shè)計(jì)框圖
圖3:ESP8266 模塊電路圖
圖4:攝像頭模塊電路原理圖
此設(shè)計(jì)采用的網(wǎng)絡(luò)模塊為ESP8266 模塊,ESP8266 是上海樂(lè)鑫信息科技設(shè)計(jì)的低功耗Wi-Fi 芯片,集成完整的TCP/IP 協(xié)議棧和MCU。TCP 是傳輸層協(xié)議,是在網(wǎng)絡(luò)層IP 協(xié)議的基礎(chǔ)上封裝而來(lái)。我們只需使用系統(tǒng)所提供的相關(guān)接口“拿來(lái)即用”,比如網(wǎng)絡(luò)編程中的Socket。ESP8266 模塊中也實(shí)現(xiàn)了TCP/IP 協(xié)議棧,模塊作為客戶端可輕松使用AT 指令向服務(wù)端發(fā)起TCP 連接。連接TCP 服務(wù)器并開(kāi)啟透?jìng)髂J胶?,模塊串口收到的數(shù)據(jù)就會(huì)通過(guò)TCP 連接透?jìng)鞯椒?wù)端,這樣就完成數(shù)據(jù)從硬件串口通過(guò)網(wǎng)絡(luò)到程序進(jìn)程的傳輸,實(shí)現(xiàn)軟硬結(jié)合。通過(guò)ESP8266 模塊,串口設(shè)備僅僅需要根據(jù)模塊通信協(xié)議,再進(jìn)行串口配置,通過(guò)Wi-Fi 進(jìn)行數(shù)據(jù)的傳輸[7]。ESP8266 模塊電路圖如圖3。
圖5:手機(jī)APP 示意圖
圖6:STM32 模塊與ESP8266 模塊通信原理圖
ATK -Wi-Fi- MODULE 是ALIENTEK 推出的一款百萬(wàn)高清Wi-Fi 航拍攝像頭模塊,該模塊支持在平板/手機(jī)端 1280x720 分辨率錄像和拍照,以及圖像實(shí)時(shí)回傳。一個(gè) N-MOS 管 SI2302 用來(lái)控制電源的通斷,控制腳為 E_CS1/PB0; D2 為防反接保護(hù)二極管;10K 電阻 R3 上拉到 3.0V,用作檢測(cè)該模塊的 ID;然后模塊和 Mini Fly 的串口通信接口E_RX1/PB3, 為單向通信(模塊發(fā),Mini Fly 收),波特率 19200bps。電路原理圖如圖4。
APP 設(shè)計(jì)有Android Studio 軟件和模擬器Genymotion 進(jìn)行開(kāi)發(fā)[2]。Android 平臺(tái)由Application. Application Framework、Libraries、Linuх Кеrnеl 四層結(jié)構(gòu)。Android 操作系統(tǒng)支持所有的網(wǎng)絡(luò)制式,包括GSM/EDGE、IDEN、CDMA、EV-DO、TD-SCDMA、Wi-Fi 等。Android 應(yīng)用程序由services、providers、activities 等組件構(gòu)成[1]。手機(jī)APP 示意圖如圖5 所示。
TCP 名為傳輸控制協(xié)議,是基于連接的通信協(xié)議。在互聯(lián)網(wǎng)設(shè)備進(jìn)行通信之前,數(shù)據(jù)交流的雙方必須建立安全可靠的連接。TCP 協(xié)議使用了重傳機(jī)制,在接收端接收到發(fā)送端發(fā)送的一個(gè)報(bào)文之后,會(huì)返回響應(yīng)報(bào)文,如果發(fā)送端沒(méi)有收到這個(gè)響應(yīng)報(bào)文,則會(huì)繼續(xù)重發(fā),這樣即便在網(wǎng)絡(luò)擁塞時(shí),也不會(huì)出現(xiàn)傳輸錯(cuò)誤的情況。在Java 中,JDK 提供了TCP、UDP 網(wǎng)絡(luò)通信的API,其中的Socket, ServerSocket 兩個(gè)類(lèi)用來(lái)建立TCP/IP 協(xié)議的網(wǎng)絡(luò)通信,Socket 本質(zhì)上就是對(duì)傳輸層中的TCP 協(xié)議進(jìn)行了的封裝,,由于TCP 是端到端的通信,要實(shí)現(xiàn)Socket 的傳輸,就要構(gòu)建客戶端與服務(wù)端[4]。由于兩個(gè)通信實(shí)體已經(jīng)連接,所以并沒(méi)有區(qū)分客戶端與服務(wù)端,但在兩個(gè)通信實(shí)體通信之前,其中作為服務(wù)端的一方需要建立等待連接的機(jī)制,等待客戶端的請(qǐng)求,這時(shí)就需要ServerSocket 對(duì)象監(jiān)聽(tīng)來(lái)自客戶端的Socket 連接,如果沒(méi)有連接,將會(huì)一直處于等待狀態(tài)。當(dāng)ESP8266 模塊接受到手機(jī)發(fā)送的信號(hào)時(shí),會(huì)發(fā)送一個(gè)響應(yīng)報(bào)文來(lái)確實(shí)手機(jī)與ESP8266 模塊的連接成功,當(dāng)手機(jī)沒(méi)有接受到響應(yīng)報(bào)文則會(huì)一直發(fā)送,直到接受到信號(hào)停止。采用TCP 協(xié)議進(jìn)行網(wǎng)絡(luò)通信更為簡(jiǎn)單,使用更加方便,只需要根據(jù)協(xié)議進(jìn)行通信。
首先STM32 模塊通過(guò)對(duì)ESP8266 模塊對(duì)通信協(xié)議TCP/IP 實(shí)現(xiàn)配置,在TCP 客戶端模式下,STM32 模塊接受端接收到遠(yuǎn)程服務(wù)器發(fā)出連接請(qǐng)求,遠(yuǎn)程服務(wù)器的監(jiān)視程序開(kāi)始運(yùn)行,則建立連接。在建立連接后,接受端與遠(yuǎn)程服務(wù)器可以進(jìn)行雙向數(shù)據(jù)傳輸,手機(jī)APP 與ESP8266 模塊形成連接后,手機(jī)APP 發(fā)送指令到ESP8266模塊,再次ESP8266 模塊發(fā)送信號(hào)到STM32 模塊,如圖6 所示;STM32 模塊發(fā)出信號(hào)接受攝像頭數(shù)據(jù)以及控制電機(jī)轉(zhuǎn)動(dòng),達(dá)到開(kāi)門(mén)與查看攝像頭圖像的效果。
經(jīng)過(guò)反復(fù)測(cè)試,該門(mén)禁系統(tǒng)能通過(guò)手機(jī)APP 對(duì)房門(mén)進(jìn)行開(kāi)關(guān)控制并查看門(mén)外情況,且有如下優(yōu)點(diǎn):基于Android 的手機(jī)APP 通用性強(qiáng),可在此基礎(chǔ)上進(jìn)行二次開(kāi)發(fā),可擴(kuò)展性強(qiáng),市場(chǎng)應(yīng)用價(jià)值高,成本價(jià)低,設(shè)計(jì)穩(wěn)定可靠。