今天介紹Arduino上的串口使用方法,配合用APP Inventor編寫的手機APP,通過藍(lán)牙通訊模塊實現(xiàn)手機APP和NOVA的通訊。
玩法將更加多樣、炫酷哦!
在介紹APP Inventor編程和藍(lán)牙通訊模塊使用之前,有必要簡單介紹一下“串口通訊”的概念。
1
串口通訊
上圖是MCU(微控制單元)驅(qū)動單個LED的電路,那么驅(qū)動多個LED的電路呢?玩過Arduino朋友都不會陌生。如下圖:
像上圖這樣由多個IO口同時傳輸數(shù)據(jù)的通訊方式,稱為“并口通訊”。
形如上圖的通訊方式均為“并口通訊”。不難想到并口通訊方式的優(yōu)點是傳輸是速度快,而缺點是線路復(fù)雜,一次要傳輸多少位的數(shù)據(jù),就得連接多少根導(dǎo)線。
而“串口通訊”,通常只有“TXD(發(fā)送)”和“RXD(接收)兩根信號線”,不論有多少數(shù)據(jù)需要傳輸,都通過這兩根線實現(xiàn),接線簡單。
其中CLK不是一根導(dǎo)線,它是“波特率”,指通過串口發(fā)送數(shù)據(jù)的速度,即單位時間內(nèi)發(fā)送數(shù)據(jù)的個數(shù)。
互相傳輸數(shù)據(jù)的兩端的波特率設(shè)置必須完全相同,才能保證通訊的正常。
一汽車倒車,一路人很熱心——“倒……倒……倒……倒不得了!”
可車子一只輪胎已滑進(jìn)路邊水溝。車夫怒氣沖沖下來,旁觀者說,“那人是一結(jié)巴。”
通訊兩端波特率不同就會鬧出想上面笑話里那樣的誤會。
NOVA HD主控板上的串口有兩個,分別為“串口”和“串口1”,對應(yīng)USB接口和C0接口。USB串口負(fù)責(zé)下載程序和串口打??;C0串口1則用來連接藍(lán)牙模塊。
這里有的同學(xué)可能會問,為什么不叫“串口1”和“串口2”?是因為其命名規(guī)則沿用Arduino體系下的“Serial”和“Serial1”。
串口通訊方面的知識告一段落,更詳細(xì)的串口知識介紹,可以點擊“串行外設(shè)接口”(以前連載的電路知識系列中為一篇文章)
手機APP、藍(lán)牙模塊、NOVA HD主控板三者的連接和數(shù)據(jù)流向是怎樣的呢?
手機APP向NOVA HD主控板發(fā)送數(shù)據(jù)
NOVA HD主控板向手機APP發(fā)送數(shù)據(jù)
2
APP Inventor
App Inventor是一款谷歌公司開發(fā)的手機APP編程軟件,與是類似于Scratch、Mixly的圖形化積木式編程軟件。
APP Inventor也有在線編程平臺,這里筆者推薦廣州電教網(wǎng)的:http://app.gzjkw.net
APP Inventor的相關(guān)資料網(wǎng)站推薦:http://www.17coding.net/。
APP Inventor因為沒有官方中文版,所以各家中文版平臺的翻譯略有不同,查閱資料時發(fā)現(xiàn)命名上的沖突,最好是查找對應(yīng)的英文說明。
登錄APP Inventor編程平臺
可以直接用QQ賬號登錄。
新建項目:
APP Inventor的項目分為“組件設(shè)計”和“邏輯設(shè)計”兩部分,上圖是組件設(shè)計界面。
其中,“組件面板”是組件庫,里面有按鍵、文本框、滑動條、畫布、藍(lán)牙客戶端等一系列組件,可以通過鼠標(biāo)拖拽的方式添加到APP中。
“工作面板”的內(nèi)容和最后生成的APP是完全一致的,即可以通過工作面板看到你最后做出APP是什么樣子的。
“組件列表”是APP中所有組件的關(guān)系樹,即屏幕1中有幾個組件、屏幕2中有幾個組件,名稱各是什么。
“組件屬性”是各個組件的具體參數(shù)設(shè)置,大部分參數(shù)可以在邏輯程序運行過程中修改。
邏輯設(shè)計是用于設(shè)計APP各組件對應(yīng)的程序,即設(shè)計當(dāng)用戶操作各組件時,APP做出什么樣的反應(yīng)。
本次教程將通過APP Inventor編寫一個控制NOVA端LED燈亮滅的程序。
在編寫完整的APP之前,先實現(xiàn)按鈕的一個小程序,即按一下按鈕,按鈕的文本由“ON”變?yōu)?ldquo;OFF”;再按一下按鈕,按鈕的文本由“OFF”變?yōu)?ldquo;ON”;
這些模塊的顏色與Scratch相似,按照不同的功能種類,有不同的顏色,大家可以根據(jù)示例程序中各模塊的顏色去模塊庫中尋找,這里不多做贅述。
在做完上述小程序APP后,可以讓它在手機上運行??梢杂肁I伴侶快速的在手機上運行寫好的APP。
點擊“幫助”菜單下的“AI同伴信息”:
點擊鏈接下載:
瀏覽器可能會彈出“不安全”提醒,選擇繼續(xù)訪問。該網(wǎng)站是安全可靠的,由廣州市電教館開發(fā)維護(hù)。
手機上打開AI伴侶APP,掃描網(wǎng)頁上AI伴侶生成的二維碼,即可快速的運行編寫好的APP,具體操作流程如下:
3
藍(lán)牙程序的編寫
藍(lán)牙相關(guān)程序的編寫,需要添加一個“藍(lán)牙客戶端”組件,它是非可視組件,即在APP中看不見它。
藍(lán)牙模塊需要選擇之后才能連接,所以這里需要添加一個“列表選擇框”組件。
將“列表選擇框”組件名和文本名都改為“藍(lán)牙列表”,提升程序可讀性。
在邏輯設(shè)計界面里編寫藍(lán)牙模塊選擇程序。
程序運行效果:點擊“藍(lán)牙列表”組件,彈出藍(lán)牙地址的選擇框;再點擊選擇要連接的藍(lán)牙地址,之后藍(lán)牙連接成功。
接下來配合NOVA HD主控板和藍(lán)牙模塊,來實現(xiàn)手機APP和藍(lán)牙模塊的連接。
4
NOVA HD主控板與藍(lán)牙模塊的連接
NOVA的藍(lán)牙模塊上有一個8針的接口
這里的設(shè)計是為了實現(xiàn)防反接,兩列的4個接口是軸對稱的,只要做到與C0 4對4的接插,就一定不會有問題。
因為接的C0是紅色接口,所以需外部供電,可以接上電池或適配器。
供電之后,藍(lán)牙模塊上的LED燈會閃爍,表示未連接,一旦連接成功,LED將變?yōu)殚L亮。
5
手機與藍(lán)牙模塊的配對
這里用的藍(lán)牙模塊為藍(lán)牙2.0模塊,在連接之前,需要在系統(tǒng)設(shè)置中完成配對。
配對示例:(示例系統(tǒng)版本為Android 5.0)
用AI伴侶,將寫好的APP在手機上運行。按照下圖的操作順序,實現(xiàn)藍(lán)牙模塊的連接。
LED長亮之后,代表藍(lán)牙連接成功。接下去繼續(xù)編寫藍(lán)牙程序,讓按鈕處于“ON”和“OFF”時發(fā)送不同的數(shù)值。
在按鈕文本切換的程序中添加藍(lán)牙客戶端發(fā)送數(shù)字的程序模塊。
這時運行APP,如果未連接藍(lán)牙,
就電機“ON/OFF”按鈕,
會彈出一個錯誤提示,是因為藍(lán)牙無連接情況下發(fā)送數(shù)字的報錯。
所以這里應(yīng)該添加一個判斷條件。即新建一個全局變量“藍(lán)牙連接成功”,它是一個布爾量,只有“true(真)”和“false(假)”兩個值可取。
初始化時,變量“藍(lán)牙連接成功”為“false(假)”,當(dāng)藍(lán)牙地址選擇完成之后,將其變?yōu)?ldquo;true(真)”。
手機APP端的程序編寫完成,接下來編寫NOVA HD端的程序。
全部的編程工作完成,可以用手機控制LED的亮滅了,同學(xué)們試試看吧。