樊建強(qiáng),秦 玉,李凱麗,成慧翔
(晉中信息學(xué)院,山西 晉中 030600)
在我國(guó)廣大的農(nóng)村,鐵鍬、鋤頭、鏟子等便攜式工具是農(nóng)民經(jīng)常會(huì)使用到的農(nóng)具,但他們又會(huì)時(shí)常面對(duì)將農(nóng)具落在田間地頭,由于莊稼較高等環(huán)境因素又不容易找到的苦惱。隨著智能手機(jī)和無(wú)線(xiàn)通信技術(shù)的發(fā)展與普及,基于這種實(shí)際情況為實(shí)現(xiàn)便民的目的,特設(shè)計(jì)了一種快速的尋物防丟失系統(tǒng),以解決農(nóng)具丟失的問(wèn)題。
本文設(shè)計(jì)了一款基于WiFi的農(nóng)具防丟失系統(tǒng),該系統(tǒng)通過(guò)手機(jī)的一鍵操作對(duì)綁定農(nóng)具上的單片機(jī)進(jìn)行通信使其發(fā)光發(fā)聲,實(shí)現(xiàn)快速定位農(nóng)具的位置。
在鋤頭、鐵鍬等常用農(nóng)具上裝有一個(gè)可發(fā)光、發(fā)聲的模塊并通過(guò)無(wú)線(xiàn)網(wǎng)用手機(jī)app 向其發(fā)送啟動(dòng)命令,綁定在農(nóng)具上的單片機(jī)接收到命令后,將會(huì)控制蜂鳴器發(fā)聲、LED 模塊發(fā)光。當(dāng)找到農(nóng)具后按一下重啟按鈕即可關(guān)閉聲音,并為下一次尋物做準(zhǔn)備。本系統(tǒng)主要包括3部分:?jiǎn)纹瑱C(jī)控制模塊、WiFi技術(shù)、安卓開(kāi)發(fā)平臺(tái)。
系統(tǒng)總體原理見(jiàn)圖1。
圖1 系統(tǒng)原理Fig.1 The system principle
基于WiFi的農(nóng)具防丟失系統(tǒng)總體電路圖見(jiàn)圖2。
圖2 總體電路圖Fig.2 The overall circuit diagram
本設(shè)計(jì)采用的是ESP8266WiFi 模塊與單片機(jī)進(jìn)行連接,ESP8266 內(nèi)部具有高度集成,包括天線(xiàn)開(kāi)關(guān),電源轉(zhuǎn)換器,它能夠從外接閃存中快速啟動(dòng),內(nèi)部具有高速緩沖裝置有利于提高系統(tǒng)性能并降低內(nèi)存,因此僅需要極少的外部電路。
將51 單 片 機(jī) 的30 引 腳31 接ESP8266 模 塊 外 部 的TX 和RX 就可以單片機(jī)和WiFi 模塊可以進(jìn)行串口通信,但是在下載程序時(shí)必須拔下30與31引腳的接線(xiàn)否則會(huì)下載失敗。
由于只能使用3.3 V 電壓進(jìn)行驅(qū)動(dòng),WiFi 模塊在外部還必須接有一個(gè)穩(wěn)壓裝置,在轉(zhuǎn)換的部分曾考慮過(guò)使用穩(wěn)壓二極管進(jìn)行變壓,但是由于穩(wěn)壓二極管在低電流的情況下很難保持穩(wěn)定,電壓從USB 輸入的5 V 電壓只能穩(wěn)定在4.6 V 已經(jīng)遠(yuǎn)遠(yuǎn)超出WiFi模塊的電壓承受范圍,長(zhǎng)時(shí)間的承受高于自身規(guī)定電壓將會(huì)造成不可逆的損壞。
面對(duì)這種情況可以采用三端穩(wěn)壓器或者3.3 V 紐扣電池,本設(shè)計(jì)采用三端穩(wěn)壓器,又稱(chēng)ASM117三端穩(wěn)壓器是集成芯片,內(nèi)部有放大、補(bǔ)償、反饋等環(huán)節(jié),穩(wěn)壓性能優(yōu)秀,在低電流的情況下也優(yōu)于穩(wěn)壓二極管,將三端穩(wěn)壓器變壓后的3.3 V處連接到ESP8266 模塊上即可完成3.3 V 供電保證其不被擊穿。
蜂鳴器是一種可以發(fā)聲模塊,但它只能發(fā)出幾種單調(diào)的聲音,是一種窄頻率發(fā)聲器件,只給高電平或者低電平是不能夠發(fā)聲的,需給出交替的高低電平產(chǎn)生方波信號(hào)輸入諧振裝置轉(zhuǎn)換為聲音信號(hào)輸出,讓其振蕩片一張一合,將蜂鳴器接入51單片機(jī)P1.0口或者P3.6口單片機(jī)向其輸入延時(shí)1 s的高低電平程序,就可以發(fā)出聲音。
采用NPN 型三極管進(jìn)行兩級(jí)放大將控制端接入單片機(jī)P1.0,當(dāng)單片機(jī)發(fā)出電流脈沖就會(huì)給第一個(gè)三極管的基極一個(gè)很小的脈沖電流信號(hào)這時(shí)就會(huì)使集電極電流和發(fā)射極電流產(chǎn)生很大的電流輸出,接著發(fā)射極帶著更大的電流信號(hào)給入下一個(gè)三極管的基極這時(shí)就會(huì)產(chǎn)生一個(gè)比之前還要大的電流信號(hào)從第二個(gè)三極管的集電極和發(fā)射極輸出,這時(shí)將兩個(gè)三極管的集電極連接至蜂鳴器電流信號(hào)接收端,蜂鳴器發(fā)出更高分貝的聲音。
使用AT89C51 芯片作為控制蜂鳴器與LED 燈的主要控制方式,將ESP8266WiFi 模塊與單片機(jī)進(jìn)行通信通信成功后ESP8266,模塊會(huì)建立AP模式的WiFi網(wǎng)絡(luò),Android手機(jī)連接AP 網(wǎng)絡(luò)連接后通過(guò)網(wǎng)絡(luò)調(diào)試助手對(duì)單片機(jī)進(jìn)行發(fā)送指令,控制51 單片機(jī)傳遞高頻電用來(lái)控制LED 燈發(fā)光與蜂鳴器發(fā)聲,工作流程圖,見(jiàn)圖3。
圖3 系統(tǒng)總體流程圖Fig.3 The overall system flow chart
這時(shí)使用PC 端串更改波特率,因?yàn)閃iFi 芯片的波特率有內(nèi)部設(shè)置,然后點(diǎn)擊發(fā)送即可并勾選發(fā)送新行即可兩者調(diào)成一致如圖4串口助手所示。
圖4 串口助手Fig.4 The serial port assistant
這時(shí)WiFi 芯片從內(nèi)部會(huì)反饋未知的3 段數(shù)據(jù),同時(shí)更改了之前芯片的內(nèi)部數(shù)據(jù)。
配置好了ESP8266 后就可以更改模塊信息了。首先,需要設(shè)置ESP8266模塊的AP 模式下的WiFi用來(lái)保證在與單片機(jī)通訊后可以建立AP 網(wǎng)絡(luò),在串口助手中輸入以下指令設(shè)置如下:
AT+CWMODE=2 這段指令是令WiFi 芯片建立無(wú)線(xiàn)網(wǎng)絡(luò),當(dāng)然也要建立通信通道,這時(shí)使用這段指令A(yù)T+CWSAP="","",第一個(gè)逗號(hào)前是給這個(gè)網(wǎng)絡(luò)定義昵稱(chēng),第二個(gè)逗號(hào)是給這個(gè)網(wǎng)絡(luò)上鎖。在配置完成以上指令后使用AT+RST指令重啟芯片,前面的兩條命令會(huì)固定存儲(chǔ)在芯片內(nèi)保存,重啟完成后配置AT+CIPMUX=1可以讓多個(gè)無(wú)線(xiàn)接入端連接。如果不開(kāi)啟這個(gè)就會(huì)導(dǎo)致無(wú)法連接,這些都設(shè)置好以后輸入AT+CIPSERVER=1,9090 設(shè)置固定9090 為通信號(hào)也稱(chēng)端口號(hào)以便在網(wǎng)絡(luò)調(diào)試助手中使用,不過(guò)在每次重啟后都需要配置通信號(hào)指令和多連接指令。
這時(shí)就可以和手機(jī)進(jìn)行連接,說(shuō)明ESP8266 模塊的AP模式啟動(dòng)成功,但由于還沒(méi)有單片機(jī)進(jìn)行配置所以不會(huì)控制LED燈與蜂鳴器。
單片機(jī)如果無(wú)外接晶振芯片時(shí)其內(nèi)部的通訊頻率為9600,因?yàn)楸敬螠y(cè)試系統(tǒng)使用開(kāi)發(fā)板制作的單片機(jī)模塊所以最高就是9600 了,若想通訊就在之前PC 端時(shí)更改WiFi 芯片的頻率即可完成通信,在串口助手中輸入AT+UART=9600,8,1,0,0 就完成了頻率的更改,按一下USB 上的按鈕就完成了數(shù)據(jù)的存儲(chǔ)并拔下接線(xiàn)于單片機(jī),單片機(jī)傳輸一段之前的通信號(hào)與鎖號(hào),使用傳輸?shù)耐ㄐ盘?hào)與鎖子號(hào)就可以與手機(jī)連接時(shí)候使用。
在與單片機(jī)連接時(shí)也要重新初始化ESP模塊,AP模式開(kāi)啟使用一段連接的函數(shù)并包含多連接和通信號(hào)的兩條指令,然后再使用延時(shí)函數(shù)給WiFi 芯片大概需要1 s 反饋時(shí)間,當(dāng)看到WiFi芯片重啟并閃爍紅燈說(shuō)明已經(jīng)完成了51 單片機(jī)與ESP8266的連接初始化,完成了通信設(shè)置。
在單片機(jī)中寫(xiě)入一個(gè)中斷其操作過(guò)程的虛擬按鈕指令,這個(gè)就是通過(guò)手機(jī)端對(duì)WiFi 芯片傳輸數(shù)據(jù)。單片機(jī)會(huì)對(duì)開(kāi)發(fā)板上的其他硬件進(jìn)行控制,使用一段中斷函數(shù),來(lái)進(jìn)行數(shù)據(jù)的接收。如果輸入0 時(shí)單片機(jī)會(huì)在中斷函數(shù)中做出響應(yīng),同時(shí)輸入1時(shí),也會(huì)有對(duì)應(yīng)的響應(yīng),只需要輸入一個(gè)數(shù)字或者字母讓燈與蜂鳴器同時(shí)發(fā)光、發(fā)聲,直到找到了農(nóng)具按下開(kāi)發(fā)板上的按鈕關(guān)閉即可。如果再次使用時(shí)只需要再按一次這個(gè)按鈕即可重新啟動(dòng)所有模塊的功能,他們的響應(yīng)只需要手機(jī)端的發(fā)送信號(hào)。
將設(shè)計(jì)好的程序?qū)懭氩涍M(jìn)單片機(jī),應(yīng)該先將ESP8266 模塊的TX 和RX 端口拔下,防止在給51 單片機(jī)燒錄程序時(shí)失敗,復(fù)位單片機(jī),與Android手機(jī)進(jìn)行連接。
Android 系統(tǒng)相對(duì)于其他手機(jī)操作系統(tǒng)平臺(tái)具有較強(qiáng)的編譯性,使用從手機(jī)應(yīng)用商店下載的網(wǎng)絡(luò)調(diào)試助手,操作流程如下:
首先,打開(kāi)手機(jī)WiFi 網(wǎng)絡(luò)設(shè)置連接在之前設(shè)置好的ESP8266 模塊建立的AP 網(wǎng)絡(luò),輸入之前設(shè)定的密碼0123456789;其次,點(diǎn)開(kāi)網(wǎng)絡(luò)調(diào)試助手app,點(diǎn)擊tcp server 配置端口服務(wù),在之前的ESP8266 模塊中設(shè)置的端口為8080,點(diǎn)擊tcp client 增加連接輸入手機(jī)的IP 網(wǎng)絡(luò)地址192.168.41,把之前的端口號(hào)也同樣輸入8080,這樣手機(jī)就連接到了WiFi模塊發(fā)射出來(lái)的AP無(wú)線(xiàn)網(wǎng)絡(luò)。如圖5網(wǎng)絡(luò)調(diào)試所示,接下來(lái)在網(wǎng)絡(luò)調(diào)試助手界面的對(duì)話(huà)框內(nèi)發(fā)送1 即可讓LED 燈點(diǎn)亮和蜂鳴器發(fā)聲。
圖5 網(wǎng)絡(luò)調(diào)試Fig.5 The network debugging
本設(shè)計(jì)以單片機(jī)模塊為核心,配以ESP8266WiFi 模塊,LED 燈模塊,蜂鳴器模塊,以及其他外設(shè)控制電路,設(shè)計(jì)了這款尋物系統(tǒng)。于此同時(shí),應(yīng)用了當(dāng)今使用頻率中高,可開(kāi)發(fā)性能極高的Android 系統(tǒng)設(shè)計(jì)開(kāi)發(fā)了手機(jī)客戶(hù)端的一鍵操作方式,為使用提供了便捷性。