ESP32搭載のロボットカーをMicroPythonで制御する

ESP-WROOM32

はじめに

ESP32を搭載したロボットカーをMicroPythonプログラムで制御するというものを作成していきたいと思います。

ベースとなるロボットカーの作成は、こちらの記事にまとめています。

ロボットカーをつくる
ESP32を搭載したロボットカーをMicroPythonプログラムで制御するというものをつくります。ここでは、ベースとなるロボットカーをつくる手順を書いていきます。

ここでは、作成したロボットカーにESP32を搭載して、MicroPythonプログラムで制御する部分をつくっていきます。

ESP32にMicroPythonをアップロードする方法は、別記事にまとめています。

ESP32でMicroPythonを動作させる方法
ESP32にMicroPython実行環境をロードして動作させる方法を書きます。REPL環境を構築し、ESP32にMicroPythonプログラムファイルを転送して実行します。

準備

使用するパーツになります。

  1. ESP-32S
  2. ユニバーサルボード
  3. リチウムイオンバッテリー
  4. デュアルモータードライバーモジュール
  5. ジャンパーワイヤー
https://www.amazon.co.jp/gp/product/B07QC4WSTY/
ご迷惑をおかけしています!
https://www.amazon.co.jp/gp/product/B08689FZGT/
https://www.amazon.co.jp/gp/product/B088FLWGYQ/
https://www.amazon.co.jp/gp/product/B0713S9M4M/

写真は、ミニブレッドボードも搭載していて、モーター・タイヤは、「ロボットカーをつくる」記事で紹介したものとは違いうタミヤのダブルギヤボックスとトラックタイヤを使用しています。

こちらのモーターとタイヤの方が動きが良い印象ですが、今回の実験ではどちらを使ってもできます。

Amazon.co.jp
https://www.amazon.co.jp/gp/product/B001Q13BIU/
https://www.amazon.co.jp/gp/product/B001VZNA96/

ピンアサイン

ESP32とモータードライバTB6612のピンアサインです。

ESP32のブロック図に基づいて、ジャンパーワイヤーでESP32とTB6612をつなげます。

ESP32 TB6612
P4AIN1
P5AIN2
P2STBY
P12PWMA
P14BIN1
P15BIN2
P13PWMB

ピンアサイン

モータードライバの仕様はTB6612のアプリケーションノートにのっていますのでそちらを参照しました。

Not Found | TOSHIBA Semiconductor & Storage Products

制御電源電圧は、2.7V~5.5V、モーターの電源電圧は、2.5V~13.5V、出力電流の絶対最大定格3.2Aとなっています。ドライバはA・Bの2チャンネルあり、使い方としては、両チャンネル共通のSTBY信号をHighにして各チャンネルの入力IN1及びIN2をHigh/Low又は、Low/Highにした状態でPWMにパルスを入力すると正回転、逆回転します。

プログラム

左右のタイヤを両方4秒間回転し、その後、各タイヤをそれぞれ4秒間回転するプログラムをMicropythonで作成してみます。

from machine import Pin
ain1 = Pin(4,Pin.OUT)
ain2 = Pin(5,Pin.OUT)
bin1 = Pin(14,Pin.OUT)
bin2 = Pin(15,Pin.OUT)
stby = Pin(2,Pin.OUT)
from machine import PWM
pwmA = PWM(Pin(12))
pwmB = PWM(Pin(13))
pwmA.freq(1000)
pwmB.freq(1000)
pwmA.duty(680)
pwmB.duty(680)
import utime
utime.sleep(3)
stby.off()
ain1.off()
ain2.off()
bin1.off()
bin2.off()
stby.on()
ain1.on()
bin1.on()
utime.sleep_ms(4000)
ain1.off()
ain2.off()
bin1.off()
bin2.off()
ain1.on()
utime.sleep_ms(4000)
ain1.off()
ain2.off()
bin1.on()
utime.sleep_ms(4000)
bin1.off()
bin2.off()
stby.off()

ESP32に組み込んだMicropythonモジュールは、「boot.py」実行後「main.py」を実行するようになっています。ですので、作成したファイル名は、「main.py」とします。

「main.py」ファイルをESP32にアップロードします。

アップロードの方法は、こちらの記事に書いています。

ESP32でMicroPythonを動作させる方法
ESP32にMicroPython実行環境をロードして動作させる方法を書きます。REPL環境を構築し、ESP32にMicroPythonプログラムファイルを転送して実行します。

実際に動かすときは、PCからの給電だとロボットカーを自由に動かせないので、バッテリーを用意しました。そのままでは、ブレッドボードに接続できないので、接続用にケーブルを自作しています。

プログラムの中のPWMのdutyの値によって速度を変えることができます。

また、各入力のHigh/Lowの組み合わせでロボットカーを前進、後進、右旋回、左旋回させることができます。

おわりに

ここでは、ESP32を搭載したロボットカーをMicropythonで制御してみました。

Micropythonには多くのライブラリが用意されているので、モーターのPWM制御も簡単にできます。

ライブラリについては、公式ページを参照してみてください。

MicroPython ライブラリ — MicroPython latest ドキュメント

今後は、このロボットカーをさらに拡張していきたいと思っています。

次のステップとしては、超音波センサーなどを使って、周囲の状況を検知しながら動くというところに進めればと思います。

そのあたりをまた書いていきます。

コメント

タイトルとURLをコピーしました