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