【雙A計劃】Part8:Android 手機對 Arduino 同時進行資料收發

雙A計畫第八篇來了!這次我們將告訴您如何在 Android 手機端與Arduino端藉由藍牙來互傳資料,本範例可同時控制 Arduino D13 腳位的高低電位 (有個板載LED,也可以自己接一顆 LED),並在手機畫面上看到 D13 腳位的狀態(High / Low)代表資料收發都完成了。 另外,想了解雙A計畫所有內容的朋友,請參考下面的連結

雙A計畫文章總覽:

中文系列文章

English version

 

作者/攝影   袁又緣
難度

★★★☆☆

材料表

【推薦套件】自學者的天堂|Arduino 入門到雲端基本套件包

下載

程式下載請點我  (aia檔是App Inventor的專案檔,apk檔是手機端的安裝檔,直接丟到手機安裝就可以使用了, ino檔則是給Arduino執行的)

!!!注意!!! 如果Arduino端太頻繁去傳送LED燈的亮暗狀態給手機的話,可能會造成藍牙通訊塞車。

以本範例來說,Arduino端是每100毫秒會傳送一次訊息,但是筆者有試過如果幾乎不等待,就讓Arduino端一直傳送的話,那麼在接收Android手機端的命令時就會出現0與1以外奇怪的數值喔! 

 

手機端程式說明

使用 App Inventor: Designer 頁面 Screen Shot 2015-07-23 at 4.47.24 PM

請注意,本範例中的Clock1 元件的 TimeInterval 設定為10毫秒,也就是每10毫秒手機端就會去啟動藍牙接收程式,查看Arduino端的D13腳位的電位高低狀態。 這個參數您可以自由修改,如果想要做到最即時反應那就可以把時間間隔改低一點,但是在這邊提醒一下,藍牙的傳輸資料還是多多少少會有些時間延遲喔!

 

Blocks 頁面 Screen Shot 2015-07-23 at 4.33.18 PM

區塊 元件名稱 功能
藍牙列表的設定 when ListPicker1.BeforePicking 在藍牙連線到裝置前,先將之前配對好的藍芽裝置匯入到準備連接的列表中
藍牙連線到裝置 when ListPicker1.AfterPicking 選好要連接的藍牙裝置後,將藍牙列表關閉、啟動計時器開始每隔一段時間讀值,並把斷線的按鈕設定為可執行
斷線按鈕的設定 when Button3.Click 按下斷線後就會斷開藍牙通訊,並把按鈕配置回到一開始的狀態

按鈕發送藍牙訊號來控制 Arduino 以及定期接收 Arduino 的回傳值來改變按鈕 (Button2) 的背景顏色 Screen Shot 2015-07-23 at 4.33.55 PM

區塊 元件名稱 功能
藍牙遙控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的背景顏色設為暗色,代表此時燈是暗的

 

13 thoughts on “【雙A計劃】Part8:Android 手機對 Arduino 同時進行資料收發

  1. 小煜 says:

    您好,小弟近期開始關注貴網站,這個月要做畢業專題,想請教老師的一些建議指導,目前想知道藍芽4.0如果只用電池接VCC/GND不接arduino板,有辦法接收和發送資料嗎

  2. 小澤 says:

    你好我們專題是智慧植栽 請問有方法把寫在Arduino yun裡面的程式利用app inventor把資料互相傳輸嗎 例如溫度 濕度如何這類的

  3. 小澤 says:

    不好意思我不是很懂 我們寫好如何檢測濕度跟溫度的程式了且透過yun板可以一直回傳值到arduino裡
    然後想把那個值轉移到app inventor裡,所以現在的意思是說要買一個7688的server嗎

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *