陳鑫 李葉龍
摘要:以ESP8266-NodeMCU模塊為核心硬件,以Android手機為控制終端,以SG90型舵機為被控對象,設(shè)計一種遠(yuǎn)程控制系統(tǒng)。本設(shè)計采用Blinker app及Arduino IDE作為軟件開發(fā)工具,利用物聯(lián)網(wǎng)接人工具Blinker app在手機端搭建人機交互界面,利用Arduino IDE提供的舵機函數(shù)實現(xiàn)舵機的轉(zhuǎn)速控制,利用Arduino lDE提供的Blinker函數(shù)庫中的WIFl連接函數(shù)實現(xiàn)ESP8266-NodeMCU模塊與網(wǎng)絡(luò)服務(wù)器的連接,并借助互聯(lián)網(wǎng)與手機端的人機界面建立關(guān)聯(lián),由此實現(xiàn)手機對舵機的遠(yuǎn)程控制。
關(guān)鍵詞:遠(yuǎn)程控制;NodeMCU;WIFl;Android
中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A
文章編號:1009-3044(2020)29-0080-02
隨著現(xiàn)代信息技術(shù)的飛速發(fā)展,“互聯(lián)網(wǎng)+”思想正逐步融各行各業(yè),目前,信息技術(shù)已在企業(yè)、服務(wù)行業(yè)以及家庭生活等領(lǐng)域得到一定程度的應(yīng)用?;ヂ?lián)網(wǎng)是信息的重要傳遞媒介,智能移動平臺被人們廣泛使用,基于智能移動平臺的遠(yuǎn)程控制技術(shù),因其使用的便利性而被廣泛應(yīng)用于智能家居等領(lǐng)域。利用智能移動平臺進(jìn)行遠(yuǎn)程控制涉及多種技術(shù),對于一般的電子愛好者而言,較難以在短時間內(nèi)掌握。為此,以Android手機為控制終端,以ESP8266-NodeMCU WIFI模塊為核心硬件,以舵機為被控對象,設(shè)計實現(xiàn)一種遠(yuǎn)程控制系統(tǒng),進(jìn)而為廣大電子愛好者提供一種快速掌握該技術(shù)的借鑒案例。
1 總體方案
系統(tǒng)主要由Android手機、ESP8266-NodeMCU WIFI模塊(簡稱NodeMCU模塊)、SG90型舵機等硬件構(gòu)成。其具體實現(xiàn)方案為:首先將舵機與NodeMCU模塊的GPIO端子進(jìn)行連接,可視其為舵機的驅(qū)動器,然后將NodeMCU模塊與WIFI進(jìn)行連接,實現(xiàn)NodeMCU模塊與網(wǎng)絡(luò)服務(wù)器間數(shù)據(jù)互通,最后用戶在Android手機端通過人機界面,以互聯(lián)網(wǎng)為媒介,向在線的NodeMCU模塊發(fā)送指令,NodeMCU依據(jù)指令驅(qū)動舵機,進(jìn)而實現(xiàn)對舵機遠(yuǎn)程控制。
2 核心硬件
2.1 NodeMCU模塊
ESP8266-NodeMCU WIFI模塊是一開源的物聯(lián)網(wǎng)開發(fā)板,引腳如圖1所示。內(nèi)置了ESP8266-12型WIFI模塊和NodeM-CU驅(qū)動模塊,通常使用方便快捷的Lua語言或者Arduino IDE進(jìn)行開發(fā),在結(jié)構(gòu)上設(shè)計了一個方便的USB數(shù)據(jù)線接口,可用micro USB數(shù)據(jù)線進(jìn)行上傳代碼及供電,不需獨立電源,使用方便(其原始版本的ESP8266-OIS型號,需進(jìn)行FTDI轉(zhuǎn)USB或USB轉(zhuǎn)串口的開發(fā)步驟,且需要獨立電源進(jìn)行供電)。另外,其具有3.3V的電壓調(diào)節(jié)器,可以被3.3V以上的電源驅(qū)動運行,共有30個不同功能的引腳,其有多個串口可以選用,有五處接地引腳GND,五處以上的vcc引腳,13個GPIO(通用1/0端口)引腳中除了GPI016只能進(jìn)行讀寫以外,每個引腳都可以進(jìn)行中斷PWM或者I2C等功能。
本設(shè)計主要運用該模塊強大的IOT(Internet of Things)功能,區(qū)別于一般的單片機,其最大的特點就在于,它可以連接互聯(lián)網(wǎng),可從服務(wù)器當(dāng)中讀取信息回傳并處理,然后輸出。
2.2 舵機及其控制原理
1)舵機結(jié)構(gòu)
舵機主要由舵盤、位置傳感器、減速齒輪組、直流電機、內(nèi)部控制電路板(主體為信號調(diào)制芯片)構(gòu)成。本設(shè)計采用SG90型舵機。工作時,其內(nèi)部控制電路板對輸入信號進(jìn)行調(diào)制處理,驅(qū)動電機,帶動變速齒輪,在輸出軸上輸出動作,位置檢測器(角度傳感器)是它的輸入傳感器,該傳感器會對輸出軸所獲得的速度及方向進(jìn)行反饋,控制電路板依據(jù)反饋信息實時調(diào)節(jié)輸入信號,從而實現(xiàn)舵機的閉環(huán)式控制方式,提高了控制精度。其控制原理如圖2所示。
2)舵機控制方式
本設(shè)計中采用脈寬調(diào)制((PWM)信號控制舵機,即脈沖信號。舵機的控制信號周期為20 ms的脈寬調(diào)制信號,其中脈寬為0.5ms-2.5ms,相應(yīng)的舵盤位置從0-180 度,二者間滿足線性關(guān)系。當(dāng)給予舵機一定的脈寬時,舵機的輸出軸就會保持一定的對應(yīng)角度,無論外接轉(zhuǎn)矩在安全范圍內(nèi)如何改變,直到接收到下一個脈沖信號才會輸出新的對應(yīng)角度。脈寬與轉(zhuǎn)角間對應(yīng)關(guān)系如圖3所示。
3 系統(tǒng)軟件部分
3.1 Arduino IDE
本設(shè)計采用Arduino IDE作為開發(fā)工具,進(jìn)行舵機驅(qū)動程序的開發(fā)。Arduino IDE提供了一種集成化的開發(fā)環(huán)境,包括代碼編輯器、編譯器、調(diào)試器、串口監(jiān)視器、圖形用戶界面等,提供了代碼編寫、分析、編譯和上傳等一體化的服務(wù)功能。其用戶界面如圖4所示。使用時,只需要在白色區(qū)域內(nèi),編輯好程序代碼,點擊(√)功能按鈕,軟件便開始編譯程序,若編譯無誤,則可以連接USB數(shù)據(jù)線,點擊(→)后開始上傳,上傳完成后,界面也會顯示“上傳成功”字樣。
Arduino IDE本身集成了十分豐富的庫文件、例程等,編寫程序十分方便。本設(shè)計中主要使用其提供的Blinker函數(shù)庫及舵機函數(shù)庫(Servo.h)。利用舵機函數(shù)庫(Servo.h)實現(xiàn)舵機的轉(zhuǎn)速控制,該函數(shù)庫已將各個脈寬對應(yīng)的角度整理恰當(dāng),只需要使用者在其函數(shù)中輸入需求的角度,就可以輕而易舉的精確操控舵機。另外,在調(diào)整舵機轉(zhuǎn)速方面,Arduino IDE并沒有專門的庫文件可以調(diào)用,為此利用for函數(shù)編寫延時程序的方式實現(xiàn)調(diào)速目的。
在Blinker函數(shù)庫中,使用者可以輕松調(diào)用WIFI連接函數(shù),在函數(shù)內(nèi)輸入WIFI的SSID以及密碼,模塊上電工作時就可自動連接對應(yīng)WIFI,在Blinker的按鍵函數(shù)中,輸入按鍵的“數(shù)據(jù)鍵名”,以及舵機所對應(yīng)的運行代碼,此“數(shù)據(jù)鍵名”需與手機端人機交互界面內(nèi)“按鍵名”相對應(yīng),在這些函數(shù)的幫助下,即可以輕松連接至互聯(lián)網(wǎng)。
3.2 手機端應(yīng)用界面開發(fā)
Blinker app是一款專業(yè)的物聯(lián)網(wǎng)接人工具,可在人機之間搭建高效的交互平臺,使用Blinker可以方便、快捷的控制硬件設(shè)備,非常適合以Arduino,ESP8266-NodeMCU,Raspberry Pi(樹莓派)等為核心的智能家居項目的開發(fā)。其用戶自定義界面如圖5所示。
在Blinker中,用戶可以根據(jù)需要對控制界面進(jìn)行編輯,首先選擇所需的自定義界面,進(jìn)入到自定義界面之后,依據(jù)需要添加按鍵,并根據(jù)開發(fā)板程序內(nèi)部的“數(shù)據(jù)鍵名”,定義各按鍵的鍵名,于是當(dāng)手機端與互聯(lián)網(wǎng)連接后,使用者只需進(jìn)入用戶界面,點擊按鍵,Blinker App將對應(yīng)按鈕的數(shù)據(jù)鍵名以及其所包含的信息上傳至服務(wù)器,而另一端與互聯(lián)網(wǎng)連接的NodeM-CU開發(fā)板讀取服務(wù)器上變動的按鍵數(shù)據(jù),并運行數(shù)據(jù)鍵名所對應(yīng)的子程序,由此實現(xiàn)對硬件的控制。
4 系統(tǒng)實現(xiàn)過程
首先將Arduino IDE中寫好的Blinker例程、舵機驅(qū)動代碼寫入ESP8266-NodeMCUWIFI模塊,斷電后再上電,稍等片刻,模塊即可自動連接到設(shè)置好的WIFI;將手機連接WIFI(4G網(wǎng)絡(luò)),打開應(yīng)用界面,進(jìn)行按鍵操作,按鍵信息上傳至服務(wù)器,ESP8266-12子模塊讀取服務(wù)器上按鍵信息并回傳NodeMCU子模塊,NodeMCU模塊收到按鍵信息后,運行該按鍵信息所對應(yīng)舵機驅(qū)動代碼,進(jìn)而實現(xiàn)對舵機的遠(yuǎn)程控制。系統(tǒng)實現(xiàn)流程如
參考文獻(xiàn):
[1]寇世文.一種基于NodeMCU的智能鎖控制系統(tǒng)[Jl.電子技術(shù)與軟件工程,2018(10):100.
[2]戴宇軒.基于NodeMCU與Arduino的遠(yuǎn)程控制智能家居系統(tǒng)的設(shè)計與實現(xiàn)——以電熱水器遠(yuǎn)程溫控為例[J].電腦知識與技術(shù),2018,14(9):176-177,181.
[3] Tasong A C,Abao R P.Design and development of an IoT ap-plication with visual analytics for water consumption monitor-ing[J].Procedia Computer Science,2019,157:205-213.
[4]陳玲君.基于物聯(lián)網(wǎng)的遠(yuǎn)程控制智能家居系統(tǒng)設(shè)計與實現(xiàn)[J].山東農(nóng)業(yè)大學(xué)學(xué)報f自然科學(xué)版),2016,47(1):88-91.
[5]李瑋琳.遠(yuǎn)程智能家居控制系統(tǒng)的設(shè)計與實現(xiàn)[J].數(shù)字技術(shù)與應(yīng)用,2015(12):183.
[6]陳國童,邱興陽.基于WIFl的Android手機智能家居控制[J].遼寧大學(xué)學(xué)報(自然科學(xué)版),2020,47(1):91-96.
【通聯(lián)編輯:唐一東】
作者簡介:陳鑫(1999-),男,本科生,研究方向為機械制造及其自動化;通信作者:李葉龍(1978-),男,講師,博士,主要從事機電一體化技術(shù)研究。