机上の空論主義者

-♰- 有言不実行の自身をブログ名で戒めろ -♰-

【ESP32】Blynkでラジコンカーを作った

こんにちは。

今回は1か月前くらいにBlynkyラジコンを作った報告です。 Blynky自体は難しくない(他記事の方が明らかに上手く説明できている)ので、自分はどういうものを動かしたかについて書いていこうと思います。

使用したのは写真のマシンです。

f:id:ume-boshi:20200710032743j:plain:w400
かっちょいいが、写真の機体は既にマイコンが死んで引退しているのである。

車系の制御の勉強をしたくて、自作した基板です。今まで車系の製作ではLPC1114FDHを使っていたのですが、色々と機能が貧弱だったのでESPにアップグレードしました。  

 

搭載機能

  • マイコン内蔵フルカラーLED 4連(なぜか1つしか点灯しない)
  • モータ 4つ
  • 9軸センサ
  • ESP-WROOM-32で使える機能(Wi−FiやBluetooth
  • ラインセンサ 8個分のアナログ入力
  • スピーカー(マイクロマウス勢がピピピピっと鳴らしているのが羨ましかった)

デフォで9軸センサを搭載できるようにしており、倒立振子もできるスグレモノです。あと、これは次の記事で紹介しようと思うのですが、4輪のメカナムホイールにも対応させました。

 

使用部品

ハード

こちらが回路図。GPIしかできないピンを間違ってDRV8835用に用いてしまっていたので、回路の状態では基板右側のモタドラで2つ分のモータしか使えません。。。

f:id:ume-boshi:20200710002224j:plain:w400
汚いとか言わないで

そしてこちらが基板です。

f:id:ume-boshi:20200710002230j:plain:w250
ESP-WROOM-32をセンターに持ってくるアホ仕様
  いつもと回路は変えていないのですが、なぜか今回初めて自動書き込み機能が動作するようになりました。Through−Holeのトランジスタを使うようになったからかな?

Blynkyの実装

こんな感じで実装しました。一部定義部分や初期化部分を省略しています。なんだかんだはじめてブログにソースコードを載せました。

#define BLYNK_PRINT Serial
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>

/* GPIO definition */
#include <Adafruit_NeoPixel.h>
#include <Wire.h>

//色々な定義 (省略)

char auth[] = "アプリからコピーしてきたやつ";
char ssid[] = "yourSSID";
char pass[] = "yourPassword";

BLYNK_WRITE(V1) { //アプリ側でV1ピンを指定
  int x = param[0].asInt();
  int y = param[1].asInt();

  int r = (y*2-1023);
  int l = (y*2-1023);
  if(x-512>=0){ //右向き
    l = l * (1023 - x)/512;
  }else{ //左向き    
    r = r * (x)/512;
  }
  actMotorFB(BACK, l, r);
}

void setup() {
  Serial.begin(115200);

  init(); //オリジナル基板の各種初期化
  Blynk.begin(auth, ssid, pass);

  ledcWrite(LEDC_CHANNEL_0,0);
  ledcWrite(LEDC_CHANNEL_1,0);
  ledcWrite(LEDC_CHANNEL_2,0);
  ledcWrite(LEDC_CHANNEL_3,0);

  pixels.clear();
  pixels.show();
}

void loop() {
  Blynk.run();
}

完成形

動いているところの動画です。ちょっと操作しずらいプログラムなのと、即応性が高くないので動きが悪いです。すみません。


【ESP32】Blynkyでラジコンカーを作製

この動画に移っている chessmenというクッキーが最高においしい。

おわりに

 Blynkyが簡単すぎて引きました。ここまで簡単だと、有料で使う人がいるっていうのに納得できますね。通信がぷつぷつ切れて暴れてしまうのが難点でしたね。web socket実装してみたいな。

あまりに簡単にできてしまったので、書くことなかったです



本記事の机上の空論:ちゃんと作り直したらM6-stackCarとして売れないかなぁ