話說從 MIT 回來之後一樣沒閒著,今天要介紹的是還沒正式公布的秘辛 – App Inventor 的 BLE (Bluetooth Low Energy) 元件。請用 http://ble-test.apinventor.mit.edu 這個測試用伺服器來測試,當然您得先買一片 Arduino 101才行
2019/08 updatehttp://ble-test.apinventor.mit.edu 伺服器已關閉,請直接匯入 BLE extension 到 MIT AI2 正式伺服器。 請改用MIT App Inventor團隊於 2018/11/24 release 的 BLE extension,並改用 WriteIntegers 指令即可。由下圖可看到可透過 signed 欄位指定為有號數或無號數。 |
MIT App Inventor 之後會使用 Arduino 101 作為物聯網教學套件核心開發板,套件包還在規劃中,大家有沒有想要套件包裡面放那些東西呢?說不定可以美夢成真喔
Arduino 101 是 Arduino.cc (注意不是 .org) 與 Intel 合作的最新開發板,在美國以外的區域稱為 Genuino 101。
延伸閱讀:
[Make雜誌國際中文版]Arduino 101 介紹 | Arduino 101 BLE 第二課 LED呼吸燈(PWM) |
硬體架構
- Arduino 101
- Android 手機
- [非必須]LED,長腳接在 Arduino 101的D13腳位。或直接使用板載的LED也可以。
App Inventor 程式
基本上概念與咱們的[雙A計畫]完全相同,只是改用 BLE 元件而已。本範例將控制 Arduino 101 的 D13 板載 LED 燈亮滅。別忘了這樣的架構可以改成繼電器再接個檯燈或風扇,就是小小智慧家電控制囉
Designer 頁面
這個版面很熟悉吧,雙A計畫都長這樣嘛,差別就在於 BluetoothLE 這個元件。由於通訊協定的不同,您當然無法用原本的 BluetoothClient元件來與 Arduino 101 溝通。
Blocks 頁面
1. 連線與斷線
程式初始化時,要求 BluetoothLE1元件進行掃描。請注意本範例是直接對指定藍牙裝置(Arduino 101)連線。如果您日後需要從多個裝置中選擇的話,建議還是先配對再從 ListPicker 中點選是比較好的做法。請注意 BLE 元件不需要事先配對,只要指定 address 即可直接連線。
ConnectButton按下時,要求BluetoothLE1元件對指定位址的藍牙裝置(98:4F…) 進行連線。
2. 連線確認
承上一步,BluetoothLE1.connected事件會在連線成功後啟動,我們在此顯示一些確認訊息。
3. 發送訊號
在 TurnButton按下時,使用 BluetoothLE1.WriteIntValue,Arduino 101 在接收到 value 1 之後就會點亮 LED (digitalWrite)。請注意 service_uuid 與 characteristic_uuid 這兩個欄位請分別填入“19B10010-E8F2-537E-4F6C-D104768A1214″ 與 “19B10011-E8F2-537E-4F6C-D104768A1214″ ,這是一組自定義的文字數字組合,Arduino 101 會使用這個參數代表它所提供的 BLE 服務。您可以使用這個網站來幫您產生 UUID
您可以把這兩個動作寫在同一個 Button 的 TouchDown 與 TouchUp 事件中,就能做到按著按鈕時開燈,放開按鈕就關燈的效果囉,例如像這樣:
4. 斷線
Button_Disconnect按下時,要求BluetoothLE1元件對指定藍牙裝置斷線。
Arduino 101 程式碼
本草稿碼感謝 MIT App Inventor 小組提供。請注意 Arduino 101 已經具備藍牙4.0,因此不必再外接 HC05 這類的藍牙裝置
文中一樣要寫明 service_uuid 與 characteristic_uuid,在此是一組自訂的文字分別是“19B10010-E8F2-537E-4F6C-D104768A1214” 與 “19B10011-E8F2-537E-4F6C-D104768A1214”。這要與 App Inventor 中對應,您可以使用這個網站來幫您產生 UUID
想請問一下,測試用伺服器是不是不能用了?
剛剛測試正常喔
正常喔~
我也連不上測試用伺服器耶
您好,再試試看? http://ble-test.appinventor.mit.edu
請問一下, 我手邊沒有Arduino 101, 取而代之用兩台藍芽BT4.0的手機來測試 (兩台互連), 那BluetoothLE1會正常運作嗎?
我自行測試好像無法連線
您好,這要看到您的 code 才知道發生什麼事。您應該要把 Android 手機的藍牙設定成可供搜尋( visible) 才行喔
抱歉, 我之前留言好像不見了
想請問大大,
1. BLE元件, 是否只能連BT4.0裝置, 而無法向下相容BT2.0+EDR (HC-05)
2. BLE元件, 現階段是否只能連Arduino 101, 而無法連接其他BT4.0裝置? (我試過手邊支援BT4.0手機, 連線好像都無法成功)
hi, 剛剛回復您的問題了。 1. 應該是無法向下相容. 2. 要看看您的手機端程式是怎麼寫的喔
你好,請問 (CurieBLE.h) 只是對應 Arduino/Genuino 101開發板,謝謝
yes, Arduino 101 專屬的
謝謝
請問一下, AI2 程式中的 “98:4F:EE:0F:32:E3” 應該是 arduino 101 藍牙 MAC address
如何得到 ?
您好,Arduino 101 藍牙位址是用貼紙貼在板子背面
感謝.
我用DXBT05(BLE4.0) 及ARDUINO UNO 以及ANDROID手機做連接,手機可以與DXBT05配對,但是APP INVENTOR 的APP按下BT05,最後會出ERROR507 UNABLE TO CONNECT,請問如何解決><? 謝
您好,請確認在App 按下連線之前,您的裝置是沒有被連接的。我們的範例上有 Serial Monitor相關訊息,請看看是否顯示 “Connected to central: XX:00:…” 這段文字,後者代表連到 Arduion 101 的裝置(您的手機)
老師您好 請問這塊arduino 101可否跟你們買(有網址嗎)? 謝謝
您好,可在商城購買(http://shop.robotkingdom.com.tw/genuino-101.html),也可來店購買喔(台北市中正區中華路2段165號1F) 不是新北市中華路不要跑錯啦
老師你好 不好意思 我摸索了許久,還是在App Inventor裡 找不出一些指令的 , 不知是否方便像雙A計畫的範例一樣 堤供 範例程式下載嗎 感謝
您好,請由此下載即可:http://www.appinventor.tw/ble_lesson1_blink 目前總共寫了五篇喔
您好,感谢,已经可以控制灯了!
不过我这里的arduino程序if (incom == 1)这句的 1 需要改成字符 ‘1’才可以控制。
另外请问一下做出来的软件可以用,但是为何打开软件就提示“unsupported bluetooth advertisenments not supported,sorry”,谢谢!
這訊息代表您的手機可能不支援BLE, 換支手機試試看好嗎? 另一方面,MIT 提供的 BLE 元件說真的沒有寫得很好哩
打开制作好的软件就提示这个,但是制作的软件是可以用的哦,能控制灯,好奇怪的,不知道如何消除这个提示
阿吉老师能否把您制作的apk文件发给我试试(liliang_wk@163.com),感谢
我發 .aia 給您,apk 裡面已經把藍牙位址寫死了,不能改所以不能用吧
請問http://ble-test.apinventor.mit.edu是否不能用了? 都打不開!
對耶,不過在主站上都可以正確執行,請換回主站來開發吧。但是要更新為最新的BLE元件才行 (更多資訊請參考: http://iot.appinventor.mit.edu)
请问为什么连接不上bluno(支持蓝牙4.0的),手机总显示“Bluetooth Not Supportde,sorry”
這是指您的手機不支援4.0吧,換一隻手機看看?
老師您好
想請問一下
一般的藍牙與BLE藍牙的app撰寫上
主要的差異點再於哪裡
如果我想將原來用於一般藍牙的app
改寫成適用於BLE藍牙的app
需要怎麼改寫
另外如果使用ARDUINO+藍牙模組(不使用ARDUINO 101)
程式碼中需要怎麼改寫
目前測試的程式:
是雙A計畫中的PART0
http://blog.cavedu.com/programming-language/appinventor/appinventorandarduinowithbluetooth/)
謝謝
您好,可改用HM10這類的BLE模組,差別在於引用函式庫不同而已,Arduino 101使用的是 Intel Curie晶片。
請參考本篇:http://www.pondoudou.com/?p=2004
老師您好
想請問一下 如果改用HM10的BLE藍芽模組後
我ARDUINO所使用的函式庫是跟一般藍芽組的#include 函數庫一樣使用方法
還是需要如本文中所提到的需要使用其他的指令然後打上UUID才能使用?
謝謝
Hi Mr. Cavedu,
We were using the BLE-Test.appinventor.mit.edu in 2016 then stopped… Now the site is not working anymore. Error message: Server error: could not save one or more files. Please try again later!
Please help us. We hope to get the old source code to work on it again. Thank you very very much!
Joe
hi Joe: Now BLE-test server is closed since BLE extension can be imported into MIT official server.
please follow instructions here:http://iot.appinventor.mit.edu/#/teachers/howtos
老師您好!
因為我是使用Arduino和藍芽4.0 BLE模組(HC-08)有兩個問題。
請問我該引用哪個函式庫 (我有看到您上面有參考資料,但是我還是看不太懂)? 以及Arduion程式會和之前的雙A計畫有差別嗎??
侯同學你好:
本篇文章的Arduino101藍牙是內建BLE也就是低功耗藍牙,這個在Appinventor是需要額外匯入的模組。
而雙A計畫的Arduino藍牙為HC-05或HC-06傳統藍牙,在Appinventor已經是有元件使用的。
Arduino程式部分,和雙A計畫最大的不同點是BLE程式有所謂的UUID和藍牙位址MAC的部分,由於我們的部落格沒有Arduino和藍芽4.0 BLE模組的文章,因為我們的開發板已經有內建BLE了,所以你可以在跟賣家或搜尋HC-08的Arduino範例程式,再搭配本文章服用,重點是Arduino程式的藍牙UUID、MAC和Appinventor程式的藍牙UUID、MAC要一致。
你亦可在技術部落格搜尋 http://blog.cavedu.com/?s=藍牙 或 http://blog.cavedu.com/?s=BLE
請問arduino Mega+HM10能用BLE模式進行數據收發嗎?網上說4.0都要制定的APP,但我想自己寫
當然可以啊,如果您腳位使用數量沒有太多的話,建議改用LinkIt 7697吧,我們已經有很多範例了。價格也比 mega + HM10便宜多了
blog.cavedu.com/?s=7697
使用 BLE 在 AI Campanion 上驗證功能 OK , 包含取得 清單並連接與傳送收發.
但是 封裝成 APK 後,在同樣的手機上運行,卻無法取得 device list, 所以無法再連接與收發.
想請問要導出 apk 時需要做時麼設定嗎?
您好,包成apk之後無法取得 device list 我也沒碰過。如果您的app只連某一片 BLE裝置(例如Arduino101 / LinkIt 7697) 的話,先把 addr 在app 裡面寫成一個 list 如何?
您好,後來在網上找到有人有相同狀況,從回帖下載其他版本 BLE 擴充套件後就搞定了,謝謝!
#現在官網上的版本會有我遇到的問題
您好,可否提供您的載點給我們參考呢?我都是從這邊 https://mit-cml.github.io/extensions/
手上只有檔案,忘記在哪下載的了 XD
我確認了,使用 MIT 最新的 BLE extension 即可 (https://mit-cml.github.io/extensions/) 20181124 release