由於智慧型手機的普及,幾乎人人都各自擁有一台,所以我將發一系列教導大家如何將手機與Arduino做結合。
若沒學過java的控制手機怎辦?別擔心,本系列所用的程式語言為appinventor,是給沒使用過java但想寫手機程式的玩家所使用。 想學習appinventor的玩家可以透過下列二個網址學習: 前往AppInventor官網。
雙A計畫文章總覽:
作者/攝影 | 偉和 |
難度 |
★★★☆☆ |
材料表 |
|
下載 | 範例程式請點我下載(App Inventor中文學習網檔案庫) |
硬體接線
請根據下圖,將藍牙發射器及LED接上Arduino (藍牙RX – Arduino D11, 藍牙TX – Arduino D10腳位)
![bt](https://blog-cavedu.sgp1.digitaloceanspaces.com/wp-content/uploads/2013/11/bt.png)
App Inventor 介面設計
STEP1:App Inventor 編寫簡易的藍牙訊息發送程式。畫面上只有三個元件,由上而下依序為 ListPicker 與兩個Button。
app 程式說明
在程式初始化時,設定各元件可否點選。並在 ListPicker 點選之前設定其內容為藍牙(BLuetoothClient)的配對裝置位址與名稱。
當 ListPicker 被點選之後,則對該點選位置發起連線。成功的話則設定各元件可否點選。
當按下[sens a word]按鈕後,Android 手機會經由藍牙發送一個字元「a」給Arduino,您可在 Arduino IDE 的 Serial Monitor 中看看是否正確接收。
按下[disconnect]按鈕,則斷開藍牙連線,並將各元件恢復連線前狀態。
Arduino CODE
執行
執行時請先確認 Arduino 程式已正確上傳,再開啟 app,從選單中選擇 Arduino (其實是藍牙發射器) 的藍牙位址之後,就可以連線。
連線成功之後,點選 [send a word] 按鈕就會對 Arduino 發送字元 ‘a’,Arduino 端的 Serial Monitor 也會看到對應的訊息。後續與控制相關的教學,都會以這個架構作為出發點。
操作完畢,點選 [disconnect] 按鈕就會斷開藍牙連線,才可進行下一次操作。
你好,請問如果我要將Arduino資料傳到android要怎麼寫?
您好 將Arduino資料傳到android這問題會在[雙A計劃] App Inventor 傳送訊號給 Arduino,使用藍牙 part3內提到近期內會轉寫完成
恩,謝謝
你們的app inventor寫的很易懂,不過最近升級inventor2,有考慮將之前的書改掉嗎?
怎麼說呢?要改也需要一點時間哩,我們會先從App Inventor中文學習網的範例開始。不過一定會有的啦
Serial.print(“input size = “); 這邊在編譯的時候會有錯 ” ” 我改為這樣就好了
Serial.println(insize);
for (int i=0; i<insize; i++)
Serial.print(cmmd[i]=char(I2CBT.read()));
Serial.println(" “); 這邊在編譯的時候會有錯 " " 我改為這樣就好了
您好 “”這部分為在BLOG會變成另一種字體,導致Arduino在compile上會有錯誤,我補上code的載點供您參考 http://goo.gl/XlHRTg
Serial.print(“input size = “);這邊在編譯的時候會有錯 ” ” 我改這樣就好了
Serial.println(insize);
for (int i=0; i<insize; i++)
Serial.print(cmmd[i]=char(I2CBT.read()));
Serial.println(" “); //這邊在編譯的時候會有錯 " " 我改這樣就好了
APP 端也用好 可是 Arduino端 都沒字元顯示
你好
我兩邊程式都用好,也都接好後
用手機測試 藍牙有連上
但很奇怪都不會顯示值
請問有解決方法嗎??
您好, 可否再描述清楚一點呢? 請問各項腳位設定是否正確?
腳位也正確 但是按 send a word 時
在 Arduino IDE 的 Serial Monitor 裡面不會顯示 “a”
I2CBT.begin(57600); (我的藍芽鮑率9600有改成9600)
是否這邊有錯誤?(57600跟9600都已試過)
Serial.begin(9600); 這裡是否要改
謝謝回復!
問題解決了 是 Arduino IDE 的 Serial Monitor 開啟後要等幾秒鐘才會顯示值
這很正常啊,建立藍牙連線本來就要一些時間
我也需要學習如何將 Arduino 得到的數值轉到手機上,期待PART3,感謝
您好,part3已經有囉 http://wp.me/p3T9Qk-2xY
請問下次範例能將右側的”Components”也照進去嗎?
因為剛剛哈了很長的時間才發現原來BTList是List而不是按鈕
謝謝
lab.cavedu.com 都有原始碼可以下載喲,這樣截圖的話,反而會看不清楚。謝啦
請問我想要控制鐵捲門,是否可以多支手機配對一藍芽?(網路上說主從配對可1對7,因我買uno和hc-05,沒法做AT,所以沒法試驗)
您好,以這樣的專題來說Arduino是被控端,所以一個時間內只能被一個外部裝置來控制(例如手機)。配對則數量多少都沒問題。手機要能夠一次控制多少個藍牙 client 就要看該手機了。
請參考這隻影片 http://www.youtube.com/watch?v=Tqgql1FrJ-c
您好,我想用手機取代鐵捲門遙控器,但我目前發生A手機連上HC-05,B手機想連結HC-05卻無法連結,也就是說只要有人連結上,他人就無法連上
這樣會發生如果一人忘了登出,他人想要進家門,就無法控制鐵捲門了,
請問我該如何克服此問題?
您好,Arduino 作為藍牙 client 本來就是這樣。不過手機端的程式過一段時間就會斷開連結(不是登出的概念),或是自己在手機裡面寫app 移到背景之後就自動斷開藍牙連線(Android 或 app inventor 都簡單做到)
或者要一勞永逸的話就是用 Xbee 讓 Arduino有無線網路功能,但是 Xbee 不便宜。不然就是改用 Raspberry Pi 的 GPIO腳位來控制鐵捲門囉
謝謝您的回覆,目前已經能work了
https://www.youtube.com/watch?v=4CWsKUb37bE
很棒的畫面耶,恭喜您有很好的成果!
您好,我想用APP inventor 把a值傳輸給電腦
請問用這隻程式可以嗎?還是說有哪些地方需要修改?
因為我試了,他跟電腦好像連不上
您好, 電腦端用來接收的對應程式是?
您好,如果藍芽模組改成 HC-05 這可以麻? 因為找不到文中所使用的兩種藍芽模組
可以~
您好,承上文如果藍芽模組改成 HC-05可以, HC-05好像是主機從機一體, 用的時候須設為主機嗎? 不知一般HC-05出廠時是已為主機或從機?
您好 HC-05預設為從機 若想要更改HC-05的主從機狀態可以用AT指令控制
你好,請問這個程式如果手機沒開藍芽要怎讓手機藍芽自動打開。
您好, App Inventor 只能判斷是否有藍牙服務(BluetoothClient.Available), 無法從App Inventor去啟動藍牙, 要Android (Java)才可以
你好我使用的是UN0板不是MEGA2560這樣有辦法做嗎,因為我看到圖片是UN0照上面接的卻搜尋不到藍芽
您好, 只要是 Arduino 相容板與類似規格的藍牙發射器都可以使用本範例, 只要注意鮑率即可. 請參考 Cooper Maa 大大的教學 http://coopermaa2nd.blogspot.tw/2012/07/config-bluetooth-baud-rate-w-arduino.html 就是藍牙發射器 Tx Rx 與 Arduino 的 Rx Tx 腳位對接就好了
不了解這段設定意義為何?
void setup() {
Serial.begin(9600); //Arduino起始鮑率9600
I2CBT.begin(57600); //藍牙鮑率57600
//(注意!此鮑率每個藍牙晶片不一定相同,請先確認完再填寫進去)
}
它是指板子速率是9600;藍芽是57600嗎?
我要如何知道藍芽的速率? 如何測得?
Serial.begin(9600); 是指 serial monitor 的通訊速率. I2CBT 則是藍牙. 藍牙發射器預設的速率一般來說以 9600 居多, 只是我們使用的為 58400. 購買時都會註明喔, 這很容易查得到
我買的藍牙好像沒有任何的附加文件,要如何查詢?
該到哪找資料?
因為新手上路,請多包函
您好, 型號可以告訴我們嗎? 或是附上照片?
Hi, 請問可以使用 BT 4.0 方式來傳輸嗎?
您好, 我們沒有試過耶
請問為何我從Serial Monitor收到的是ASCII碼?不是已經轉成字元了嗎?
您好請問您char函式是否有正確框主接收的變數上
另外變數的型態為數值嗎
您好,經過程式撰寫完成後,用手機輸入後,我測試過後在arduino Serial Monitor 上面所顯示如下:
input size = 2
6
158
這樣的顯示方式,是否正確?
或是有問題的,因為我沒看到有”a”這個英文字,謝謝您的幫忙。
您好 有確認藍牙的鮑率是否與您程式撰寫相符?
您好,剛剛已經解決了,其問題是藍牙出問題,剛剛在測試新的藍牙就沒有問題了
所用出來的arduino Serial Monitor 上所顯示的確實是
input size = 1
97
所使用的藍芽是PSOC教學版中的FLAG-1611A
原本設定為19200但跑出來是不正確的數字為:
input size = 2
6
158
後續接上PSOC教學上的硬體,並體重新將藍牙RESET後,鮑率為9600
所呈現的狀態就變正常了。
input size = 1
97
鮑率對通訊方面真的很重要,非常謝謝您的回覆與幫忙。
不用客氣 若還有其他問題也歡迎詢問喔^^
請問 假如以上程式 用invemtor2去做 藍牙傳送資料會有問題ㄇ
沒問題喔~ 我們辦研習都是用 App Inventor 2
請問 我線路都檢查了很多遍 程式碼也照著拉 為什麻藍牙有連接到(紅燈有停止閃爍)、可手機資料卻沒傳輸過去?
您好,請確認 Arduino 端是否有開始執行程式。藍牙發射器只要有供電就會閃爍,連上線就會恆亮。但也有可能此時並未執行任何程式。您可以打開 Serial Monitor 看看是否出現正確的訊息就知道程式有沒有在跑了
請問 可以 協助 教導 關於 arduino 用BLE4.0 達到跟 IPHONE手機通訊 傳資料的 功能嗎? 謝謝!
您好,手機端我們都是用Android,比較少用 iphone,這樣比較容易在學校推廣,因為 Xcode 只能在 OSX 系統上開發。請參閱一下這個網頁喔 http://www.instructables.com/id/Talk-to-an-Arduino-With-an-iOS-device-using-Blueto/?ALLSTEPS
你好: 請問可以給我Android那邊的原始碼嗎?? 想要看看那邊是怎麼寫的 謝謝!
您好,已經更新在每篇雙A計畫的一開始。請點我下載 但我們是用 App Inventor 不是 Java喔
請問Part0:App Inventor 透過藍牙傳送訊號給 Arduino的手機程式在哪裡下載呢 我目前只有找到part1~3的耶~
您好,連結已經全部更新囉
請問123 Circuits 線上模擬電路 要如何加入其他模組呢 比如說WIFI,紅外線等 我主要想測試藍芽HC-05的模組 謝謝~
您好,123D Circuit 無法自行加入模組,他有什麼就用什麼囉
您好 我是Arduino 的新手 目前使用的板子為Arduino UNO & 藍芽V3模組
目前遇到的問題是 V3模組上 與手機都有連結到,但在Arduino 的 Monitor無法顯示 “input size=”
簡單說就是空白..也參考上面的問題後 等了蠻久的還是沒有
SoftwareSerial I2CBT(10,11);這個腳位 是每塊 UNO都固定的嗎?
麻煩您了
是否TX RX接正確?
問答後已解決…原來是I2CBT (0,1)
請問 我要用藍牙連接做專題 只要藍牙斷開 arduino上的蜂鳴器與手機都會警告 手機方面的app要怎麼設計
您好,這兩端都要做事喔。
手機端就是使用 BluetoothClient 的 IsAvailble指令去檢查有沒有連線,沒有的話就做對應的動作。Arduino 端也是一樣的概念,透過 serial.available() 去檢查即可。
你好,请问我为什么一直找不到elements 和selection 这两个元素啊,我用的是AI2
您應該選錯元件囉,您是不是把 ListPicker 當作 Button 了呢?
這一系列的分享真的學到很多!
但現在如果我現在藍芽不使用uart port的連線方式
改由直接使用藍芽USB dongle
那我程式碼
SoftwareSerial I2CBT(10,11); 定義腳位
以及接收
if ((insize=(I2CBT.available()))>0)
{
Serial.println(insize); //顯示接收多少訊息
for (int i=0; i<insize; i++) {
Serial.print(cmmd[i]=char(I2CBT.read()));//將接收的訊息顯示出來
Serial.println(" ");
需要怎麼變化呢??
謝謝 若要用USB DONGLE那會使用到SPI 這又是另一種寫法了…
您好,我使用的藍芽是HC-05,Arduino是 UNO版
文章中的步驟有確實完成,但是Arduino 的 Monitor沒有顯示任何東西
從網頁中的範例下載使用也是相同問題
請問是什麼問題呢?
您好, 請問手機與hc05 有沒有先配對呢? Arduino 的 serial monitor 沒東西的話, 請確認程式有沒有上傳到 Arduino 或是 baudrate 是否正確
我想要請問一下!!!
我照著您的接法接完後Arduino也燒完程式了
要連接藍芽模組可是卻一直無法與手機連接不上去
通電的瞬間(藍芽模組會一直閃爍)可以連接上去(使用手機本身的藍芽連結,並不是程式上的藍芽BTLIST),但是過了幾秒之後(藍芽模組會恆亮)就會自動斷掉(藍芽模組一直亮著但連不上),然後再也連不上去了
(會一直顯示無法與XXX通訊),如果用程式連的話也是顯示發生錯誤無法連結
我的藍芽模組是4.0的,型號是(Bluetooth Module XM-10B BLE),還是因為是4.0的原因所以手機與藍芽模組連接不到嗎??
您好,App Inventor 據我所知是不支援 4.0 喔
我知道了,謝謝
不客氣,歡迎多多討論喔~
你好! 請問可以給我android端的code嗎? 我想了解你的藍芽連接怎麼寫
您好,程式檔連結在文中就有了。我們是使用App Inventor 不是 Android (偷懶)
大大你好~
我是用HC-06藍芽模組
照您的方式接,程式已寫入,但在 Arduino IDE 的 Serial Monitor 裡面不會顯示 “a”
是哪邊出問題了呢? 還是藍芽模組的關係? 求大大解題
您好 會不會是鮑率不相符?
謝大大!! 問題解決了. 出現 input size = 1
97
您好,解決了就好。小寫 a 的 ASCII code 就是 97 喔(http://zh.wikipedia.org/wiki/ASCII)
您好,我想請問一下
此APP也可以使用在PSoC裡嗎? 型號是CY8C29466
如果可以,那上面Arduino的CODE要加在PSoC專案哪裡呢?
您好,應該不行哩
了解 謝謝您!
不客氣,歡迎發問喔。一起加油
你好~請問我要如何用APP INVENTOR 2 將一個GPS座標傳送給UVA?
程式的架構大概是什麼樣子?
您好,對於 App Inventor 來說,GPS 座標就是兩筆數字(經度 / 緯度),傳送出去的方式都是一樣的。您的 UVA 是指無人飛行器嗎?
不好意思
我在案 bt list 後選了 我ardunio的連線後
他要求 我輸入 pin瑪
不管我輸入 0000 或 1234
他都會說 eror507 unable to disconnect
不知道為甚麼…
您好, 要先從手機的藍牙選單配對之後再進到 app. bluetoothclient 的 addressandname 是去抓手機”已配對” 的藍芽裝置。因此要先配對完成
不好意思補充一下 我進at模式 我按at他的回應有ok
但用從您網站下載的app就一直連不起來 led燈不停閃爍 不會恆亮
TTL 模式和傳輸模式不一樣,如果您是在 TTL 模式下要執行這個範例,當然不會動啦。您有把 GND 與 reset 的那條線拔掉嘛? 請參考投影片 http://www.slideshare.net/NissinAllelujahnissin/4-44394140
你好! 為什麼我沒有beforepacking這個選項?? 其他都有
您好,beforePicking 是 ListPicker / TimePicker / DatePicker 元件才有的事件。其他例如 Spinner , ListView 只有 AferPicking 事件。ListPicker 長得和Button 一模一樣,是否這邊搞錯了呢?
為什麼我買JY-MCU V1.06從機依照教學設定,都行不到AT指令和被android手機搜索到??
JY-MCU05 本身是否主從一體才能行到AT指令和被android手機搜索到?
您好,AT指令不能work 請問Arduino 的 reset 與 GND 有接起來嗎? 這樣才會進 AT mode。另外,不能被 Android 手機搜索到就有點奇怪,只要電源接起來就可以搜尋到喔,與AT command 無關
感謝你的回答…我找到問題所在了。原來我沒有把主機改成從機啊,在AT MODE用AT+ROLE=S指令就用到JY-MCU HC6了,希望幫跟我有一樣問題的人吧(雖然我下單買的是從機)
不過呢,我現在在serial monintor看不到a傳送過來= =…
ardrunio uno在常見問題內的AT MODE教學的設定的時候, 我能看到a傳送過來
補充一下
當我打將RX對TX的時候
SEND A WORD RESULT:
input size = 1
224
當我打將RX對RX,TX對TX的時候
serial monitor沒有反應..
我又找到問題所在了。 當我改了bluetooth baud rate調到9600時,數值是97,正常了:)
恭喜,要檢查的地方真的很多呢
AT mode 和在傳程式時接法是不一樣的喔,AT mode 是要 TX/RX 對接。我們的範例由於使用的是 SoftSerial 函式庫,因此將 RX/TX 定義在 D10 / D11
不客氣啊~ 呼呼
您好: 請問我要如何設定讓藍芽自動連線配對呢??
(想解決使用者如果常常離開藍芽接收範圍之後又回來,還能自動連線的功能)
請老師幫忙解答!! 謝謝!!
您好,也許您可以試試看用 Clock.Timer 去定期檢查對於指定裝置的連線是否存在。用 BluetoothClient 的 isDevicedPaired 與 isConnected 這兩個指令分別去檢查,這樣應該是做得到的。
你好,如何寫ardunio才以得到以下效果呢?
Appinventor我已改寫成可傳送一段text or string去
但是當我SEND 例如 “abc”
output 是
input size = 1
97
input size = 2
98
99
我希望得到的OUTPUT是
input size = 3
97
98
99
您好, 這應該是藍牙傳送資料的過程中掉封包了, 例如第一次只有1筆, 第二次只有兩筆, 也許把發送的頻率調慢一點點試試看? 例如每秒發送一次?
想請問一下 BT4.0 Inventor是不是不支援
沒錯, 目前不支援
我有買一組 MBTV4也是BLE4.0,相同目前不支援
是啊, 如果一定要用到 4.0 的話, 就無法用 App Inventor 囉
請問 JY-MCU05 哪裡買
HC05. 06 拍賣上很好找,也可以和我們買 http://goods.ruten.com.tw/item/show?21407071682592
您好 我換頁以後 藍芽就斷線了 有辦法解決嗎
換頁之後藍牙就一定要重連 (至少App Inventor 是這樣),因為不同頁面在Android中就是不同的 Activity,因此這點無法解決喔
不好意思想請問一下,我都有依照您寫的,手機有先配對完,但APP裡面就顯示503ERR等等的 錯誤,是不是ListPicker 可以設定名稱跟蜜碼?
ListPicker 在本範例中去抓手機已配對的藍牙裝置(Bluetoothclient.AddressAndNames指令),所以無法修改。請參考常見問題 http://wp.me/p3T9Qk-4b7
您好,我照著您的APP Inventor程式作,但是我先用手機的藍芽介面跟我的藍芽模組進行配對後,再進入APP裡面的BTList點藍芽裝置然後再配對一次,
結果手機顯示”Error 507:Unable to connect.Is the device turned on?” 請問這是什麼問題?
這個問題有可能來自於 App Inventor 本身在某些Android手機上無法打開藍牙的權限(但非常少見),如果您很確定所有操作都正確的話,還是出現這個錯誤訊息的話,那就只能換一支手機來交叉測試看看囉。
您好,我在手機上跟HC-05配對且輸入密碼後,再進去BTList裡面選裝置,手機卻跳出Error 507:Unable to connect,請問這個問題要怎麼解決?
延續上一個回答,請問您的 HC05的紅燈有從閃爍(啟動並等候連線)變為恆亮(已連線)嗎?也請檢查Arduino端的程式有沒有啟動喔
如我是要arduino 傳訊號到app
該怎麼做?
您好,這一篇就是啦~ http://wp.me/p3T9Qk-2xY
你好我想用HC05代替文中的藍芽,已將HC05設定為從機,但手機方面卻找不到此藍芽存在
請問是什麼問題呢? 謝謝
您好,請參閱請參考常見問題 http://wp.me/p3T9Qk-4b7。請問藍牙發射器四隻腳位是否已接好?發射器上的 LED 應該會閃爍
Arduino:1.7.3 (Windows 8.1), 板子:”Arduino Uno”
建置選項已變更,重建所有
LED____.ino:1:12: error: stray ‘#’ in program
LED____.ino:1:1: error: expected unqualified-id before ‘ 偏好設定裡啟用。
它說錯誤
您好,請用文中連結下載 source code, 程式外掛會在程式碼前後自動加入兩組標籤,這樣驗證就錯了
我每次按下連線都會跳出
error 503 the specified address is not a valid bluetooth mac address
這代表指定的藍牙位址不對,請問您有確實配對成功嗎?
用電腦連線藍芽模組傳資料給Arduino能正常收發,我在常見問題那看到”BluetoothClient不支援BLE(藍芽4.0)”,這有可能是原因嗎?
可能是原因之一,但是您的狀況非常有趣哩
我後來發現BLuetoothClient.AddressesAndNames回傳的格式為(MAC碼+名稱),多了()括號,當我單獨提取MAC碼後就能連線了……只有我這樣!?
這狀況我還真沒碰過… 如果您只有這個藍牙裝置要連的話,可以把 MAC address 直接寫死在程式裡面也可以喔
你好,想問一下,這個程式能夠透過手機藍芽連接ARDUINO,那能不能用這程式手機連手機藍芽傳輸?
我知前有看你網站的lesson6,http://www.appinventor.tw/lesson6 但已經改版成2了,有些功能找不到就卡關了(EX:definition)
能指點一下怎麼手機連手機藍芽傳輸嗎?謝謝
您好,請問只要做到兩隻手機對傳資料(文字、數值或布林)就好嗎?其實照著拉方塊也是可以完成,BluetoothClient / Server 元件的改動不大
你好,我練習了第一個範例,搜尋藍芽,做好了但,他都會出現 num502 message bluetooth is not available
但我2支手機的藍芽都正常阿,也有開,為何會這樣呢?
請問您的手機的藍牙是否有開啟 “可被搜索” 這個選項,預設是關閉的喔,這樣可以避免外部的惡意或不知名程式可以任意與您的手機來藍牙配對
對了,再請問一下,app inventor可以拿來寫arduino那也能拿來寫藍芽模組的mircochip嗎?
不懂您的意思,是直接送訊號給藍牙模組?我們已經這麼做了啊,App Inventor 本來就是送訊號給藍牙模組,Arduino 只是接著做後續的事情而已
您好,請問一下,這個程式是要先進行配對才會有藍牙裝置出現嗎?
我還未配對藍牙裝置,出現這樣的畫面是正常的嗎?
http://i.imgur.com/HbSCEL4.png
另外請問這個程式是否能連結藍牙模組後與Arduino以外的微處理器連接?
您好,要先配對。您的畫面代表該手機沒有任何已配對的藍牙裝置,所以整個 list 都是空的。當然可以與其他的微處理器連接,收發的原理都是一樣的。
請問如果手機完全沒有接收到藍芽的型號主要是哪裡有錯?
藍芽裝置只有亮左邊的綠燈(STATE)
您好,請參考本篇常見問題 http://wp.me/p3T9Qk-45F
請問arduino心跳感測透過藍芽傳送至手機的APP大概怎麼寫?謝謝
您好, 請參考雙A計畫 Part 3, 只要您可以在 serial monitor 看到正確的心跳資料, 之後透過藍芽送出的方法就都是一樣的喔
您好,想請問如何把藍芽資料寫死在APP上?
因為程式對過好幾遍,但明明有連上卻出現錯誤說,請確認藍芽裝置是否開啟
藍芽是4.0的
您好, App Inventor 目前不支援 藍牙4.0喔
如果要寫死的話, 就是 BluetoothClient.connect 裡面用一個文字常數輸入該藍牙發射器的 MAC addr 就好了
請問一下所謂手機配對藍芽是用inventor內建的虛擬手機來配對,還是用自己實體手機去配對arduino呢?
我目前也是一片漆黑的畫面..
藍牙一定要用實體手機才行喔
您好,回覆完之後我直接用手機USB連接電腦,
點進去出現98:D3:31:30:0B:3A HC-06這樣是哪邊出問題呢?
這樣很好,沒問題啊,看到 “98:D3:31:30:0B:3A HC06” 就代表您的手機有與 HC06配對,且App Inventor 也設定正確才看的到。這樣應該沒什麼問題
請問手機如果藍芽如果4.0的,而且HC06也能接收4.0
那麼APP INVENTOR不支援,手機還是不接收到嗎?
謝謝!
App Inventor 現在可以支援 BLE 了喔~ 請看最新的文章吧http://blog.cavedu.com/?s=ble
問題已解決
我已確定已經配對完成,但進去點選時出現
error 503 the specified address is not a valid bluetooth mac address
這個訊息,請問是有什麼問題呢?
您好,這訊息代表該藍牙位址無效,但您也已經配對成功… 真奇怪了?解除配對再一次看看?請問是使用哪一種藍牙模組?
請問我藍芽配對連線成功了 但是編譯上傳arduino code 的時候出現avrdude: stk500_getsync(): not in sync: resp=0x00
手機按SEND ARDUINO 也看不到 是哪裡出了問題嗎?
這個訊息代表沒有成功燒錄喔,請重新插拔USB線看看
請問”BluetoothClient1.AddressandNames”要去哪邊選取?? 謝謝老師
當然是在BluetoothClient元件裡面選啊~
您好 我想用藍芽 從手機 把數值傳輸給電腦上用C#寫的一個程式
然後電腦上的城市根據收到的數值做出相應的動作
請問用這隻程式可以嗎? 那在電腦C#接收藍芽傳值的部分該怎麼寫呢?
C# 是 Visual Studio? 如果是電腦端的話, 作法應該也是先從電腦端的藍牙管理程式去找到您的 bluetooth module, 配對之後OS會給它一個 serial port. 然後從您的電腦端程式對這個 port 去收發訊息應該就可以了
隨手找了篇文章, 您參考一下? http://www.instructables.com/id/Control-arduino-with-visual-studio-via-bluetooth/
http://gogoprivateryan.blogspot.tw/2014/08/hc-06-arduino-serial-port-bluetooth-hc.html
不好意思 可以麻煩幫我看程式哪邊有錯嗎
因為這是接手別人的東西,所以我看了老半天不知道哪邊有錯誤
顯示的錯誤是
c:\arduino-nightly-windows\arduino-nightly\hardware\tools\avr\bin\../lib/gcc/avr/4.9.2/../../../../avr/bin/ar.exe: unable to rename ‘core\core.a’; reason: Permission denied
exit status 1
開發板 Arduino/Genuino Uno 編譯錯誤。
以下是程式碼 拜託可以幫我看一下哪邊有錯嗎
#include
#include
IRsend irsend;
// the maximum received command length from an Android system (over the bluetooth)
#define MAX_BTCMDLEN 150
// 建立一個軟體模擬的序列埠; 不要接反了!
// HC-06 Arduino
// TX RX/Pin10
// RX TX/Pin11
SoftwareSerial BTSerial(10,11); // Arduino RX/TX
byte cmd[MAX_BTCMDLEN]; // received 128 bytes from an Android system
unsigned int pass[100]={0};
int RECV_PIN = 2; // 使用數位腳位2接收紅外線訊號
IRrecv irrecv(RECV_PIN); // 初始化紅外線訊號輸入
decode_results results; // 儲存訊號的結構
void setup() {
Serial.begin(9600); // Arduino起始鮑率:9600
BTSerial.begin(9600); // HC-06 出廠的鮑率:每個藍牙晶片的鮑率都不太一樣,請務必確認
irrecv.enableIRIn(); // 啟動接收
}
int code=1,reset=1,count=0;
void loop() {
if(reset==1) { //把存編碼的陣列清成65533
reset=0;
for(int i=0;i<100;i++)
pass[i]=65533;
}
if(code==1) {
BTSerial.begin(9600);
delay(100);
byte rec=char(BTSerial.read());
//用來接收手機端傳來的一個byte,依照這個byte的值去決定arduino的下一個動作
if(rec=='1' ) { //從手機收到1,arduino接收遙控器編碼並傳到手機
while(true) { //接收從遙控器傳送的紅外線編碼
Serial.println("hi");
if (irrecv.decode(&results)) {
dump(&results);
irrecv.resume(); // Receive the next value
break;
}
}
byte b=0;
BTSerial.write(b);
for(int i=0;i>8,c2=pass[i];
BTSerial.write(c1);
BTSerial.write(c2);
}
}
if(rec==’2′) { //從手機接收到2,arduino接收手機的編碼並傳送給家電
int counter=0; //用來穩定接收固定的byte
while(counter!=150) { //arduino經由藍芽從手機接收編碼
if(BTSerial.available()>0) {
cmd[counter]=char(BTSerial.read());
counter++;
}
}
for(int i=0;i<150;i+=2) { //把接收到的編碼合併成一個可傳送的陣列
unsigned short int n= cmd[i]<<8 | cmd[i+1];
pass[i/2]=n;
}
for(int i=0;i=0;i–) { //判斷編碼的長度,在傳送時使用
if(pass[i]==65533)
j_length–;
else {
j_length++;
break;
}
}
Serial.println(j_length);
irsend.sendRaw(pass,j_length,38); //傳送紅外線編碼給家電
irrecv.enableIRIn(); //再次啟動紅外線接收
reset=1; //傳送陣列清空
}
}
BTSerial.end();
}
void dump(decode_results *results) { //接收遙控器的編碼並轉成原始碼
// Dumps out the decode_results structure.
// Call this after IRrecv::decode()
Serial.println(“Ya”);
count = results->rawlen;
for (int i = 1; i rawbuf[i]*USECPERTICK;
Serial.print(pass[i-1]);
//Serial.print(results->rawbuf[i]*USECPERTICK);
}
else {
pass[i-1] = (unsigned short)results->rawbuf[i]*USECPERTICK;
Serial.print(pass[i-1], DEC);
}
Serial.print(” “);
}
Serial.println();
}
您好,請把完整程式寄到 nissin@cavedu.com 阿吉老師, 3Q
補充一下 程式一開頭的 #include 後面有 SoftwareSerial.h 和IRremote.h
請問藍芽接收器用HC-06可以嗎? 程式需不需要改呢
可以直接使用 HC06,接線請仔細檢查不要接錯喔
如何Arduino藍芽傳資料給Android
請看 part 3 就是囉
請問我藍牙跟手機有連接到了,包率也設9600,但是手機傳來接收到的字在電腦上看都是正方形框框,arduino也無法判斷是什麼字,請問該如何解決呢?謝謝
這是編碼的問題,請直接用我們的code試試看?
請問App Inventor有辦法與google map做搭配,將google map上標記的經緯度用藍牙的方式傳送到arduino嗎?
當然可以,您可以分兩次把經度與緯度送出去(請自行決定小數點要多少位數才夠準),或組合成同一筆資料發送都可以。
你好,請問方便教我使用手機app透過藍芽來控制arduino嗎
您好,這一系列文章就是了啊,先看一遍吧
你好 手機回傳藍芽給arduino是可以 可是如何要從app 經由藍芽傳給arduino發射出去給電視開關
這樣是兩段式囉,先恭喜手機與Arduino是通的,現在您要做的是透過紅外線與電視互動,請參考Cooper Maa文章 http://coopermaa2nd.blogspot.com/2011/03/irremote.html
你好,請問我的藍芽輸出永遠都是255是出了甚麼問題(如果是int則是65535)
請問Arduino端用 serial monitor看,數值也是一樣不會動嗎?請參考我們的常見問題喔
不好意思想請問一下,如果我要把pluse sensor和gps-6m的訊號透過藍芽hc-05傳至手機,那麼uno(或leo版)腳位該如何設置呢?
因為兩個組件(藍芽和gps)的腳位都有RXD跟TXD,所以變成會有兩個
SoftwareSerial Genotronex(10, 12); // RX, TX 設置藍芽腳位
SoftwareSerial mySerial(10, 9); // RX, TX GPS藍芽腳位
心跳本身的腳位只有s和+-而已,想請問這樣程式碼的腳位該如何修改呢?
這是我用到的程式碼,只是我還沒將心跳及gps結合而已: https://drive.google.com/file/d/1UIOgaLTIr0x_zAHazl52QPd7muogx1PY/view?usp=sharing
你好,你可以用SoftwareSerial指令將藍牙和GPS的RX、TX寫在不同腳位,
例如:SoftwareSerial Genotronex(10, 11); SoftwareSerial GPS(8, 9);
記得還要寫Serial.begin(9600);//序列埠監控視窗看的
Genotronex.begin(9600);//藍牙傳輸的資料量
GPS.begin(9600);//GPS傳輸的資料量
然後你的心跳感測器”+”是接5V或3.3V(沒意外的話)、”-“是接GND,然後”S”是Singnal(訊號),我看了程式的註解之後是接在Arduino的A0
您好
我手機連接藍芽時可以連到
然後到app搜尋時也可以搜到
但要點連接時就會出現 error:503 the specified address is not a valid bluetooth mac address
已經爬過許多文
但都沒有人解決相關的問題
藍牙位址應該是 XX:XX:XX:XX:XX:XX 這樣的12碼英文數字組合,您的 aia source code 與點選進入listpicker的畫面,還有BT模組的位址可否寄給我看看? nissin@cavedu.com 阿吉
您好
我後來發現是我app inventor那邊有錯誤
問題已經解決
謝謝您的回覆
OKOK,有問題再討論吧
請問藍芽的部分 我這邊有esp8266 我能改用wifi取代藍芽 跟手機傳資料嗎
可以啊,但這樣本篇教學就不適用了,App Inventor 也要改用 Web 元件來與開發板互動
你好!
想請問APP INVENTOR的藍芽,可以一次連結多個HC-05藍芽模組嗎?
就是可能按開關後,五個連接藍芽模組的Arduino上的LED燈泡同時亮
謝謝!
當然可以,但一個HC05就要新增BluetoothClient元件。就是一對一的概念
那想請問連接方法是都一樣嗎?
手動連的時候,就是一樣選表單一個一個慢慢點嗎
會不會當我連第2個的時候,地1個就斷線了?
謝謝你!
您好,請問如何讓手機不斷傳值給arduino?
用Clock元件,用 clock.timer去一直送藍牙資料即可,但timerInterval不建議太快,也許從200ms開始往下調看看。這與您實際的應用有關
你好:
請參考文章:http://blog.cavedu.com/2015/04/05/%E9%9B%99a%E8%A8%88%E7%95%ABpart6%EF%BC%9Aarduino-%E5%82%B3%E5%85%A9%E7%AD%86%E8%B3%87%E6%96%99%E5%88%B0-android-%E6%89%8B%E6%A9%9F/
請問有控制多個 slave做法可以參考嗎?
我想用一個手機控制同時控制兩個HC-05
您好,手機要先與這兩片hc05配對,app inventor 端需要使用兩個 bluetoothClient元件分別代表這兩個hc05
老師好,App Inventor 透過藍牙傳送訊號給 Arduino
範例解釋非常完整,我想問老師有透過Arduino傳送訊號給 App inventor的嗎?
後面幾篇就是啦
老師您好 請問如果uno板接藍芽端斷電 app該如何撰寫感測到斷電呢
瑋男,你好:
可以做出當藍牙斷線後會發出音效出來
在畫面編排。元件面板>多媒體>音效,音效自行上傳檔案
再到程式設計,再將音效的積木加到藍牙斷線的積木中
請問藍芽斷線的積木是哪一個呢? 我只有找到讓藍芽斷線的積木,沒看到感測藍芽斷線的積木
請問一下我想使用手機的app inventor傳送資料給hc-05要怎麼寫程式阿?
本系列的文章都在講這件事喔,請先都看一遍吧
好的謝謝
請問能把lcd換成oled嗎要怎麼寫呢?
您好,這看您使用哪一款 OLED,但做法都是差不多的。先取得一款 OLED模組接 Arduino 試試看吧
我想請問有沒有辦法因距離過長導致藍芽無法連線,在藍芽斷線時跳出通知,甚至是可以發出聲響提醒
請用 BluetoothClient. isConnected 語法去檢查即可,有連線為 True, 沒有連線為 False.
你好 我想了解要怎麼把 app inventor 內輸入的數字傳回 arduino 進行運作
我打算是做以 app inventor 輸入數字 並 arduino 給予訊號
目前遇到這個問題
這就是後面文章的內容啊