ついに Blynk が ESP32 のBLEに対応
Blynkアプリにバージョンアップ(v0.5.0)があり、まだβ対応ですがESP32とのBLE通信ができるようになりました。
WiFi通信は以前確認しておりまして、BLEも自由自在につかえたらなぁ。。などと思っていたのでまさに待望のソレでした♪
ここではWiFiの時と同様、ESP32開発ボードにLEDテープ(Dotstar)を接続しBLE介してBlynkで発光色を制御しました。
目次
構成
部品
- BLE、WiFi内蔵マイコンボード ESP32-DevKitC 安い!
- LEDテープ (Dotstar)
ESP32 Arduino環境準備
ここではArduino IDEでESP32のプログラミングを行います。Arduino IDEでの開発用ソースがインストール方法と共に以下にアップされています
https://github.com/espressif/arduino-esp32
Macの場合は以下の記事が参考になります。
Blynk設定
新規プロジェクトを作成します。HARDWRE MODELはESP32 Dev Boardを選択。CONNECTION TYPEはBLEを選択。AUTH TOKENはArduinoコード生成時に使用します(メールで送信されます)。
BLEとzeRGBaウィジェットを配置
zeRGBaウィジットでLEDの色を設定できるようにします。
OUTPUTはMERGEを選択。それぞれ最小値0、最大値255とします。
SEND ON RELEASEはOFFにして随時データ送信できるようにします。
ここではヴァーチャルピンV0に出力するようにしました。
Arduino IDE
BlynkのArduino用最新ライブラリは以下にございます。
https://github.com/blynkkk/blynk-library
ESP32のBLEを使用するには、更に以下のESP32用BLEライブラリも必要となります。
https://github.com/nkolban/ESP32_BLE_Arduino
LEDテープDotstarのArduino用ライブラリは以下。
https://github.com/adafruit/Adafruit_DotStar
[スケッチの例] -> [Blynk] -> [Boards_Bluetooth]-> [ESP32_BLE]を参考にコード生成しました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
#define BLYNK_PRINT Serial #define BLYNK_USE_DIRECT_CONNECT #include <BlynkSimpleEsp32_BLE.h> #include <BLEDevice.h> #include <BLEServer.h> #include <Adafruit_DotStar.h> #include <SPI.h> #define NUMPIXELS 11 // Number of LEDs in strip // Here's how to control the LEDs from any two pins: #define DATAPIN 12 #define CLOCKPIN 14 Adafruit_DotStar strip = Adafruit_DotStar(NUMPIXELS, DATAPIN, CLOCKPIN, DOTSTAR_BGR); int ledR = 0; int ledG = 0; int ledB = 0; // You should get Auth Token in the Blynk App. char auth[] = "BlynkアプリのYourAuthTokenを入力"; void setup() { // Debug console Serial.begin(9600); Serial.println("Waiting for connections..."); Blynk.begin(auth); strip.begin(); // Initialize pins for output strip.setBrightness(30); strip.show(); } //ヴァーチャルピンV0 BLYNK_WRITE(V0) { ledR = param[0].asInt(); ledG = param[1].asInt(); ledB = param[2].asInt(); Serial.print( "ledR: "); Serial.print(ledR); Serial.print( " ledG: "); Serial.print(ledG); Serial.print( " ledB: "); Serial.println(ledB); //LED点灯 for(int i=0;i<NUMPIXELS;i++){ strip.setPixelColor(i, strip.Color(ledR, ledG, ledB)); } strip.show(); } void loop() { Blynk.run(); } |
Blynk BLE接続
BlynkプロジェクトのBLEウェジットをクリックして設定します。
“Connect BLE device”をクリックして “Blynk”が表示されたら選択しOKをクリックして接続する。
動作
初めてESP32でBLE通信しました。なんかArduino環境でもESP32向けBLEライブラリ充実してるようなので
やったー!いろいろ試してみたいですね 😛 !