甲虫王者ムシキング リモコンバトル 改
近所の野菜屋さんが 壊れてるけど。。と おもちゃをくれました 😀
ずいぶん昔のおもちゃのようでリモコンで動くクワガタですww なんかリモコンがきかないし。。コードも短いので。。BLEでスマホから遠隔操作できるように改造しました!
目次
構成
BLE搭載マイコンとモータドライバでクワガタをスマホのBlynkアプリから制御します。
部品
- BLE搭載マイコンAdafruit Feather 32u4 Bluefruit LE
詳細は以下
https://homemadegarbage.com/bluefruit01
- モータドライバDRV8835
- リチウムイオンポリマー電池400mAh
組み立て
- コードを切断
コード内には金、緑、赤、青の4本のエナメル線が入っていました。モータはクワガタ内に2個入っていました。モータ①(金-青)、モータ②(赤-緑)とすると
正転 逆転 モータ① 旋回 前進モータ② はさみ 首振りという感じで巧妙にギアが組まれて動いていました。
- マイコン、モータドライバ配線・接続
モータドライバのMODEピンはGNDに接続しています。
http://akizukidenshi.com/download/ds/akizuki/AE-DRV8835-Ss.pdf - クワがなかったのでプラ板でつくりました。
Blynk設定
- スマホにBlynkアプリをインストール
- 新規プロジェクトを作成
HARDWARE MODELはAdafruit製品がまだないのでとりあえずArduino UNOを選択。
CONNECTION TYPEはBLEを選択。
AUTH TOKENはArduinoコード生成時に使用します。メールで送信されます。
- ウィジェット配置
BLEとButton4つを配置します。
- Buttonウェジット設定
4つのButtonウェジットそれぞれOUTPUTをヴァーチャルピンV0〜3に設定します。
Arduinoプログラム
BlynkのArduino用最新ライブラリは以下にあります。
https://github.com/blynkkk/blynk-library
マイコンはAdafruit Feather 32u4 Bluefruit LEを使うので
[スケッチの例] -> [Blynk] -> [Boards_Bluetooth]-> [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 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 |
#define BLYNK_USE_DIRECT_CONNECT #define BLYNK_PRINT Serial #include <BlynkSimpleSerialBLE.h> #include <Adafruit_BLE.h> #include <Adafruit_BluefruitLE_SPI.h> #include <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); void setup() { Serial.begin(9600); pinMode(6, OUTPUT); pinMode(11, OUTPUT); pinMode(12, OUTPUT); pinMode(13, OUTPUT); ble.begin(BLUEFRUIT_VERBOSE_MODE); ble.factoryReset(); // Optional ble.setMode(BLUEFRUIT_MODE_DATA); Blynk.begin(auth, ble); } //ボタンステート ヴァーチャルピンV0 BLYNK_WRITE(V0) { if(param.asInt()){ //モータ②逆転 digitalWrite(6, HIGH); digitalWrite(11, LOW); digitalWrite(12, HIGH); digitalWrite(13, HIGH); }else{ digitalWrite(6, HIGH); digitalWrite(11, HIGH); digitalWrite(12, HIGH); digitalWrite(13, HIGH); } } //ボタンステート ヴァーチャルピンV1 BLYNK_WRITE(V1) { if(param.asInt()){ //モータ①正転 digitalWrite(6, HIGH); digitalWrite(11, HIGH); digitalWrite(12, LOW); digitalWrite(13, HIGH); }else{ digitalWrite(6, HIGH); digitalWrite(11, HIGH); digitalWrite(12, HIGH); digitalWrite(13, HIGH); } } //ボタンステート ヴァーチャルピンV2 BLYNK_WRITE(V2) { if(param.asInt()){ //モータ②正転 digitalWrite(6, LOW); digitalWrite(11, HIGH); digitalWrite(12, HIGH); digitalWrite(13, HIGH); }else{ digitalWrite(6, HIGH); digitalWrite(11, HIGH); digitalWrite(12, HIGH); digitalWrite(13, HIGH); } } //ボタンステート ヴァーチャルピンV3 BLYNK_WRITE(V3) { if(param.asInt()){ //モータ①逆転 digitalWrite(6, HIGH); digitalWrite(11, HIGH); digitalWrite(12, HIGH); digitalWrite(13, LOW); }else{ digitalWrite(6, HIGH); digitalWrite(11, HIGH); digitalWrite(12, HIGH); digitalWrite(13, HIGH); } } void loop() { Blynk.run(); } |
Blynk BLE接続
BlynkプロジェクトのBLEウェジットをクリックして設定します。
“Connect BLE device”をクリックして “Adafruit Bluefruit LE”が表示されたらOKをクリックして接続する。
動作
リモートクワガタ #blynk pic.twitter.com/JIMmqSqMey
— HomeMadeGarbage (@H0meMadeGarbage) 2017年5月23日
結構動きがリアルで気持ち悪い。。。。w