Blynk で BLE 制御ラジコン!
BlynkがBLE対応(まだベータ版)したので、今回はBLE制御ラジコンしてみました♪
- Blynk制御BLEトレインについてはこちら
https://homemadegarbage.com/blynk-ble-train01 - Blynk制御LED目ん玉についてはこちら
https://homemadegarbage.com/blynk-eye-ball01
目次
構成
BLE搭載マイコンAdafruit Feather 32u4 Bluefruit LEとモータドライバDRV8835を使用して、スマホアプリBlynkで2個のモータの回転をコントロールします。
部品
- BLE搭載マイコンAdafruit Feather 32u4 Bluefruit LE
Adafruit Feather 32u4 Bluefruit LEに関する記事はこちら
https://homemadegarbage.com/bluefruit01 - モータドライバDRV8835
- リチウムイオンポリマー電池400mAh
- ダブルギヤボックス
ギア比は344.2 : 1で使用しています。 - ユニバーサルプレート
- オフロードタイヤセット
- ボールキャスター
Blynk Arduino用ライブラリ
最新ライブラリは以下にあります。
https://github.com/blynkkk/blynk-library
今回はAdafruit Feather 32u4 Bluefruit LEを使うので
[スケッチの例] -> [Blynk] -> [Boards_BLE]-> [Adafruit_Feather_32u4_BLE]を参考にコード生成しました。
Blynk設定
新規プロジェクトを作成します。ハードウェアではAdafruit製品がまだないのでとりあえずArduino UNOを選択。
AUTH TOKENはArduinoコード生成時に使用しますので控えときます(もしくはメール送信します)。
ウィジェットとしてBLEとジョイスティックを配置します。
ジョイスティックの設定はヴァーチャルピンV0に2軸の数値を出力します。
x, yの値はそれぞれ最小-255 最大255としました。
Arduino IDE
[スケッチの例] -> [Blynk] -> [Boards_BLE]-> [Adafruit_Feather_32u4_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 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
#define BLYNK_PRINT Serial #define BLYNK_USE_DIRECT_CONNECT #include <BlynkSimpleSerialBLE.h> #include <SPI.h> #include <Adafruit_BLE.h> #include <Adafruit_BluefruitLE_SPI.h> // You should get Auth Token in the Blynk App. // Go to the Project Settings (nut icon). char auth[] = "BlynkアプリのYourAuthTokenを入力"; // SHARED SPI SETTINGS (see adafruit webpages for details) #define BLUEFRUIT_SPI_CS 8 #define BLUEFRUIT_SPI_IRQ 7 #define BLUEFRUIT_SPI_RST 4 // Optional but recommended, set to -1 if unused #define BLUEFRUIT_VERBOSE_MODE true // Create ble instance, see pinouts above Adafruit_BluefruitLE_SPI ble(BLUEFRUIT_SPI_CS, BLUEFRUIT_SPI_IRQ, BLUEFRUIT_SPI_RST); //pin name const int forwardL = 11; const int rearL = 10; const int forwardR = 5; const int rearR = 6; long Speed; long SpeedL, SpeedR; BLYNK_WRITE(V0) { long x = param[0].asInt(); long y = param[1].asInt(); Serial.print("x: "); Serial.print(x); Serial.print(" y: "); Serial.print(y); Speed = sqrt(x*x+y*y); if(Speed > 255){ Speed = 255; } Serial.print(" Speed: "); Serial.println(Speed); if(y >= 0){ if(x >= 0){ SpeedL = 0; SpeedR = abs(x); }else{ SpeedL = abs(x); SpeedR = 0; } analogWrite(forwardL, Speed - SpeedL); analogWrite(rearL, 0); analogWrite(forwardR, Speed - SpeedR); analogWrite(rearR, 0); }else{ if(x >= 0){ SpeedL = 0; SpeedR = abs(x); }else{ SpeedL = abs(x); SpeedR = 0; } analogWrite(forwardL, 0); analogWrite(rearL, Speed - SpeedL); analogWrite(forwardR, 0); analogWrite(rearR, Speed - SpeedR); } } void setup() { Serial.begin(9600); Blynk.begin(auth, ble); ble.begin(BLUEFRUIT_VERBOSE_MODE); ble.factoryReset(); // Optional ble.setMode(BLUEFRUIT_MODE_DATA); } void loop() { Blynk.run(); } |
これでBlynkのジョイスティックの2値を受けて2個のモータをコントロールし、前後左右に移動させることができます!
Blynk BLE接続
BlynkプロジェクトのBLEウェジットをクリックして設定します。
“Connect BLE device”をクリックして “Adafruit Bluefruit LE”が表示されたらOKをクリックして接続する。
動作
将来的にはこれにカメラ搭載して画像をヘッドマウントディスプレイ(スマホ)に飛ばしたいんです 🙄
「Blynk で BLE 制御ラジコン!」への1件のフィードバック