李凱 劉麗霞 曹楊



摘? 要:為了實現對提線木偶的無線自動控制,設計了一套利用手機App通過藍牙模塊發出控制指令,通過Arduino控制4個舵機驅動牽引線完成提線木偶左右手臂和左右腿動作的裝置。該裝置既可以完成提線木偶的單一動作,也可完成連續多個動作。經搭建實物測試,設計的裝置可以流暢的完成提線木偶的動作。
關鍵詞:App Inventor 2;藍牙通信;Arduino平臺;舵機驅動
中圖分類號: TP29 文獻標識碼:A 文章編號:2095-2945(2019)16-0012-03
Abstract: In order to realize the wireless automatic control of the wire lifting puppet, a set of device is designed, which uses the mobile phone App to send out the control command through the Bluetooth module, and uses Arduino to control the four steering gear driving leads to complete the left and right arms and left and right legs of the wire lifting puppet. The device can not only complete the single action of the puppet, but also complete a plurality of continuous actions. After building the physical test, the designed device can smoothly complete the action of wire lifting puppets.
Keywords: App Inventor 2; bluetooth communication; Arduino platform; actuator drive
1 概述
手機APP控制的可編程智能玩具市場日趨繁榮,它集娛樂和益智于一體,深受青少年的喜歡。手機APP平臺App Inventor 2是一個圖形化開發應用環境,它可以實現如“搭積木”一樣編寫程序,完成手機APP的制作[1]。Arduino是目前非常流行的開源創客工具,它對底層硬件進行了良好封裝,提供了豐富的庫函數可供開發者調用,有強大的社區論壇,以上使得開發過程更加簡單快速[2]。
為結合科技與娛樂,激發青少年的興趣,本文通過借助手機APP平臺App Inventor 2,運用藍牙BLE4.0模塊[3],利用舵機[4]驅動牽引線實現手機對智能提線木偶手臂和腿部的動作,可以實現提線木偶手臂、腿部的單獨動作和連續動作兩種模式的動作。用戶可對連續運動的動作進行設計,實現提線木偶完成一系列連貫動作。
2 系統設計
系統設計包括4部分內容,依次是總體方案設計、提線木偶動作設計、硬件電路設計和軟件設計,具體內容如下所述。
2.1 總體方案
本設計的總體方案如圖1所示,Arduino控制器接收由手機APP經由藍牙模塊傳來的指令,以此通過驅動電路控制舵機操作木偶運動。設計內容包括Android手機APP設計、藍牙通信連接、Arduino控制器程序編寫與調試、舵機驅動電路設計、提線木偶的動作設計,以及為各個模塊供電的直流電源模塊等。實現的目標包括:(1)能夠通過Android手機APP操作界面實現提線木偶的手臂和腿部的抬/放動作。(2)手臂或腿部能夠實現單獨動作和連續動作。(3)當超出藍牙控制范圍時,提示藍牙連接中斷,并保持提線木偶動作。
2.2 提線木偶動作設計
提線木偶可以實現的基本動作包括抬左手、放左手、抬右手、放右手、抬左腿、放左腿、抬右腿、放右腿8個動作。如圖2所示,由于上述8個基本動作由四個獨立的舵機控制,每個部位都可單獨動作,若將這8個動作組合,同時增加延時環節,可形成更多動作組合。如抬左手的同時抬右手并保持,延時2秒,抬左腳并保持,待左腳到位后抬右腳,保持2秒,全部復位。這樣木偶既可以實現單個動作,又可同時實現多個動作組合形成連續動作,且可以控制前一個(組)動作和后一個(組)動作之間的時間。
2.3 硬件電路設計
本系統的硬件電路原理圖見圖3所示,Arduino控制板、藍牙模塊、PCA9685芯片、4個舵機及5V直流電源(圖中未畫出)組成。
木偶動作是由舵機驅動牽引線來實現的,舵機可以實現180度(-90度—+90度)范圍內旋轉。舵機有3個外接引腳,分別是Vcc(+5V)、GND(接地)和PWM三個引腳。舵機供電由Vcc和GND兩個引腳實現,舵機的旋轉角度由PWM引腳接入脈沖信號的占空比來控制。PWM接入信號的頻率為50Hz,舵機旋轉-90—+90度線性對應PWM引腳脈沖信號占空比2.5%-12.5%。如PWM脈沖信號占空比為2.5%時,舵機旋轉到-90度的位置,PWM脈沖信號占空比為12.5%時,舵機旋轉到+90度的位置,PWM脈沖信號占空比為7.5%時,舵機旋轉到0度的位置。
本設計選用Arduino Uno控制板為主控單元,由于其引腳資源有限,也為了后期擴展方便,選用能夠同時控制16路舵機的PCA9685芯片[5]作為舵機驅動模塊。Arduino控制板與PCA9685芯片之間的通訊采用IIC協議[6],硬件接線需將Arduino的A4、A5引腳分別與PCA9685芯片的SDA、SCL引腳連接。PCA9685芯片的A0-A5都接地,即設置芯片的地址為0x40。本設計中使用PCA9685芯片的PWM9、PWM11、PWM13和PWM15四個引腳作為4路舵機轉角控制的PWM脈沖引腳,故需要將它們分別與4路舵機對應的PWM引腳相連。
手機利用藍牙模塊對Arduino下達指令,硬件連接需將藍牙模塊的TX、RX引腳分別與Arduino的D0(RX)、D1(TX)引腳相連。
最后為各個芯片模塊和舵機提供5V直流電源(圖中未畫出)即完成硬件電路設計。
2.4 軟件設計
軟件設計分為兩部分,分別是利用App Inventor 2完成手機APP的設計,利用C語言完成Arduino控制程序的設計。
2.4.1 APP的設計
手機APP是利用App Inventor 2平臺完成的,根據上文提線木偶的動作設計,手機APP需要完成的功能如圖4所示。所需要的組件分別為實現通信連接的BluetoothLE藍牙通信組件,實現時間觸發的計時器組件,以及實現點擊和顯示的按鈕和標簽組件。
程序的初始化需要完成記錄動作的空列表的創建,記錄列表項數量的變量定義以及定時時間標志位的定義等,并且自動開啟手機藍牙通信的功能。連接藍牙需要完成手機藍牙與藍牙模塊的通信連接。記錄動作需要完成將每次新增動作所對應的字符添加到列表的最后一項,直到添加完所有動作。發送動作需要完成將列表中的每一項依次(利用定時器實現時間次序,本設計的發送時間間隔為1.5秒)通過藍牙模塊發送給Arduino控制板。
2.4.2 Arduino控制程序的設計
Arduino控制程序流程圖見圖5所示。Arduino控制程序的初始化需要完成IIC通信(Arduino控制板和舵機驅動板PCA9685之間的通信)配置和藍牙通信初始化配置(Arduino控制板和藍牙模塊之間的通信),以及PCA9685芯片地址和PCA9685芯片寄存器地址的定義。藍牙通信和IIC通訊初始化配置后,等待接收手機APP的動作指令,當接收到指令,判斷指令動作,執行相應動作。流程圖5中動作1到動作9分別對應,抬左手、放左手、抬右手、放右手、抬左腳、放左腳、抬右腳、放右腳和延時共9個動作。
在Arduino程序編寫環境中,IIC通信需要引用“wire.h”庫文件,在setup()函數中調用Wire.begin()函數開啟IIC通信,調用Serial.begin(9600) 開啟Arduino串口通信以此接受藍牙指令。然后需要分別編寫IIC通信協議下的對PCA9685芯片存儲單元寫8位數據的函數和讀8位數據的函數,以及通過調用上述兩個函數完成PCA9685芯片PWM頻率設置的函數和PCA9685芯片PWM占空比設置函數,以上4個自定義函數可以完成舵機驅動的初始化配置。Arduino程序編寫環境中loop()函數內則要采用Serial.available()函數判斷是否有藍牙指令傳輸,若有則用Serial.read()函數讀取指令,然后利用switch選擇結構分別控制舵機執行相應指令動作。
3 系統調試
系統調試分為APP安裝、Arduino程序下載及硬件電路調試兩部分內容。
3.1 APP安裝
手機APP的安裝有兩種方式,一是將調試好的程序生成APK下載到手機中,然后在手機的文件管理器中點擊安裝。二是將調試好的程序利用App Inventor 2生成二維碼,再通過手機掃描二維碼下載安裝。安裝完成的界面如圖6所示。
3.2 Arduino程序下載及硬件電路調試
采用Arduino控制板配套的IDE環境編寫C程序,編譯完成后下載到Arduino控制板中,再將硬件電路按照圖3連接完畢,使用5V電源模塊供電后即可進行調試。
調試過程如下:首先打開手機APP的提線木偶控制界面,點擊按鈕“連接藍牙”,若藍牙模塊的顯示燈由閃爍變為常亮,且手機上顯示藍牙連接成功,則表示藍牙通信成功。然后可以點擊APP界面上的“抬左手”、“放左手”等的按鈕,既可一次只點擊一個按鈕,也可一次點擊多個按鈕。與此同時打開電腦上Arduino編譯環境IDE中串口的顯示界面,然后點擊手機APP界面上的“發送動作”按鈕,此時即可觀察到Arduino編譯環境的串口顯示界面有藍牙模塊傳輸過來的數據,并且舵機在驅動模塊的作用下開始動作。例如:點擊“抬左手”按鈕,再點擊“發送動作”按鈕,其中1路舵機會旋轉90度。連續按下“放左手”、“抬左手”、“抬右手”按鈕,再點擊“發送動作”按鈕,則是其中1路舵機會旋轉正90度,再旋轉初始位置,然后另1路舵機旋轉到90度的位置,完成連續動作。
手機操作界面的記錄清空按鈕是將上次的列表中動作清空,重新設計動作。完成硬件電路調試(如圖7所示)即可將4路舵機分別與提現木偶的相應部位連接完成本設計。經測試,該裝置可以順暢完成設計動作。
4 結束語
該系統設計主要完成的是目前流行的智能手機對傳統的提線木偶的無線控制,主要是一種娛樂的裝置,也為Arduino單片機增加一個趣味性的案例。后期還可以增加視覺模塊,動作的設計可以靠視覺模塊采集,然后利用舵機驅動提線木偶跟隨人的動作,以此擴展功能。
參考文獻:
[1]李文川,曾玉.APP Inventor 2的項目應用及教學策略[J].電子技術與軟件工程,2018(11):55-56.
[2]張哲,陳麗銀,汪棟,等.基于Arduino UNO大型汽車盲區檢測與報警裝置的設計[J].科技創新與應用,2018(28):49-50.
[3]劉少軍,王瑜瑜.基于Android手機藍牙控制的智能小車設計與實現[J].電子測量技術,2016,39(9):114-117.
[4]許曉飛.一種舵機組合控制策略的書寫機器人設計[J].高技術通訊,2018(7).
[5]周英路,王志亮,朱松青,等.基于PCA9685的多路舵機控制器設計[J].南京工程學院學報(自然科學版),2017,15(4):26-31.
[6]李強,霍淑珍,鄭偉.基于I2C通信的PCA9685在舵機控制中的應用[J].科技創新與應用,2018(28):173-174.