2024年9月1日日曜日

ESP32が載ったラジコンをBLE通信で動かすAndroidアプリの紹介


背景

Googleの個人開発者アカウントに活動が無ければ2024年6月末で閉鎖するという通知を受けたので、以前取り組んでいたBLEコントローラーアプリを更新して公開しました。
何とか更新できたものの作成当時のことを記事にまとめておらず必要なプログラムが辿れず再現に時間がかかったので、遊び方紹介を兼ねて記事に情報を残します。

使ったもの

  • Androidアプリ BLE Car Controller
    作ったアプリです。
    BLE通信をするラジコンのリモコンになります。
    プログラムはgithubで公開しています。
    asukiaaa/clj-rn-shadow-ble-car-controller
  • Android端末
    アプリを入れます。
    Android10のrakuten handとAndroid14のzenfone9で動作確認しました。
  • M5StackBasic
    ESP32を搭載したプログラム書き込み対象です。
    CoreS3SEなど電池が付いていないM5Stackを利用する場合は、中間の電池をご用意ください。
  • I2cMotorsForM5Stack台車仕様
    車輪2つで移動するM5Stack向けの台車です。
  • Arduino環境を設定したPC
    ArduinoIDEかPlatformIOを利用してM5Stackにプログラムを書き込みます。

PCのAndroid環境にライブラリを設定

Arduino IDEの場合

Arduino IDEで初めてプログラムを書き込む場合は、ESP32環境を構築してください。
Installing - Arduino ESP32

ライブラリマネージャから下記2種類のライブラリをインストールしてください。
I2cMotors_asukiaaa
NimBLE-Arduino

PlatformIOの場合

platformio.iniを下記のライブラリを利用するESP32向けに設定してください。
I2cMotors_asukiaaa
NimBLE-Arduino

platformio.ini
[env:esp32dev]
platform = espressif32
board = esp32dev
framework = arduino
monitor_speed = 115200
lib_deps =
NimBle-Arduino
I2cMotors_asukiaaa

M5Stackにプログラムを書き込み

Arduino IDEの場合

下記のスケッチ例をESP32向けにビルドしてM5Stackに書き込みます。
ファイル -> スケッチ例 -> I2cMotors -> BlePeripheralCar

PlatformIOの場合

下記のコードをmain.cppにしてM5Stackに書き込みます。
https://github.com/asukiaaa/I2cMotors_asukiaaa/blob/master/examples/BlePeripheralCar/BlePeripheralCar.ino

充電

台車に繋げる電池の残量が少ないと動作停止しやすくなるので、電池を繋いだ状態でUSB給電で充電します。


スマホから操作

プログラムを書き込んで電池を充電した台車のそばでスマホを操作して、「scan」を押したら一覧に出てくるはずの「M5StackCar」を押して台車とBLE接続します。


繋がったら、ジョイスティック、スライドボタン、ボタンなどで操作可能です。




動作の様子はこちらの動画で公開しています。


おわり

BLEで接続して台車を操作するAndroidアプリを作って公開できました。
良かったら遊んでみてください。

参考

Androidアプリ BLE Car Controller
asukiaaa/clj-rn-shadow-ble-car-controller
M5StackBasic
I2cMotorsForM5Stack台車仕様
https://github.com/asukiaaa/I2cMotors_asukiaaa/blob/master/examples/BlePeripheralCar/BlePeripheralCar.ino

0 件のコメント :