雙A計畫第八篇來了!這次我們將告訴您如何在 Android 手機端與Arduino端藉由藍牙來互傳資料,本範例可同時控制 Arduino D13 腳位的高低電位 (有個板載LED,也可以自己接一顆 LED),並在手機畫面上看到 D13 腳位的狀態(High / Low)代表資料收發都完成了。 另外,想了解雙A計畫所有內容的朋友,請參考下面的連結
雙A計畫文章總覽:
作者/攝影 | 袁又緣 |
難度 |
★★★☆☆ |
材料表 |
|
下載 |
程式下載請點我 (aia檔是App Inventor的專案檔,apk檔是手機端的安裝檔,直接丟到手機安裝就可以使用了, ino檔則是給Arduino執行的) |
!!!注意!!! 如果Arduino端太頻繁去傳送LED燈的亮暗狀態給手機的話,可能會造成藍牙通訊塞車。
以本範例來說,Arduino端是每100毫秒會傳送一次訊息,但是筆者有試過如果幾乎不等待,就讓Arduino端一直傳送的話,那麼在接收Android手機端的命令時就會出現0與1以外奇怪的數值喔!
手機端程式說明
請注意,本範例中的Clock1 元件的 TimeInterval 設定為10毫秒,也就是每10毫秒手機端就會去啟動藍牙接收程式,查看Arduino端的D13腳位的電位高低狀態。 這個參數您可以自由修改,如果想要做到最即時反應那就可以把時間間隔改低一點,但是在這邊提醒一下,藍牙的傳輸資料還是多多少少會有些時間延遲喔!
Blocks 頁面
區塊 | 元件名稱 | 功能 |
藍牙列表的設定 | when ListPicker1.BeforePicking | 在藍牙連線到裝置前,先將之前配對好的藍芽裝置匯入到準備連接的列表中 |
藍牙連線到裝置 | when ListPicker1.AfterPicking | 選好要連接的藍牙裝置後,將藍牙列表關閉、啟動計時器開始每隔一段時間讀值,並把斷線的按鈕設定為可執行 |
斷線按鈕的設定 | when Button3.Click | 按下斷線後就會斷開藍牙通訊,並把按鈕配置回到一開始的狀態 |
按鈕發送藍牙訊號來控制 Arduino 以及定期接收 Arduino 的回傳值來改變按鈕 (Button2) 的背景顏色
區塊 | 元件名稱 | 功能 |
藍牙遙控LED燈 | when Button1.Click | 當按下ON之後就會透過藍牙傳送”1″的訊息給Arduino,如果Arduino成功接收到的話,就會亮燈當按下OFF之後就會透過藍牙傳送”0″的訊息給Arduino,如果Arduino成功接收到的話,就會熄燈每次按下手機螢幕上的開關時,按鈕上的文字都會在”ON”、”OFF”之間做切換 |
藍牙接收LED燈狀態 | when Clock1.Timer | 每隔一段時間(本次範例使用的是10ms),就會去接收Arduino透過藍牙傳送過來的LED燈狀態如果是”1″的話,就將旁邊按鈕2的背景顏色設為亮色,代表此時燈是亮的如果是”0″的話,就將旁邊按鈕2的背景顏色設為暗色,代表此時燈是暗的 |
有arduino的範例嗎?
這個範例就是 Arduino 啊??
您好,小弟近期開始關注貴網站,這個月要做畢業專題,想請教老師的一些建議指導,目前想知道藍芽4.0如果只用電池接VCC/GND不接arduino板,有辦法接收和發送資料嗎
當然 不行啊,還是要一個控制器。
請問有Arduino端的程式嗎~
您好,文中就有程式碼連結喔
請問 可以用Arduino 藍芽連接電腦(不接USB) 的方法從Arduino上傳送資料給電腦嗎
可以啊,一樣是 Serial 的概念
你好我們專題是智慧植栽 請問有方法把寫在Arduino yun裡面的程式利用app inventor把資料互相傳輸嗎 例如溫度 濕度如何這類的
您好,當然可以啊,請參考這個範例喔 http://wp.me/p3T9Qk-4OI
7688 作為 server, 可接受來自 app inventor 發送的字元
不好意思我不是很懂 我們寫好如何檢測濕度跟溫度的程式了且透過yun板可以一直回傳值到arduino裡
然後想把那個值轉移到app inventor裡,所以現在的意思是說要買一個7688的server嗎
你好,檸檬霸:
可以參考[雙A計劃] Part3:Android 手機透過藍牙接收 Arduino 類比腳位狀態