はじめに
ESP32を搭載したロボットカーをMicroPythonプログラムで制御するというものを作成していきたいと思います。
ベースとなるロボットカーの作成は、こちらの記事にまとめています。
ここでは、作成したロボットカーにESP32を搭載して、MicroPythonプログラムで制御する部分をつくっていきます。
ESP32にMicroPythonをアップロードする方法は、別記事にまとめています。
準備
使用するパーツになります。
- ESP-32S
- ユニバーサルボード
- リチウムイオンバッテリー
- デュアルモータードライバーモジュール
- ジャンパーワイヤー
写真は、ミニブレッドボードも搭載していて、モーター・タイヤは、「ロボットカーをつくる」記事で紹介したものとは違いうタミヤのダブルギヤボックスとトラックタイヤを使用しています。
こちらのモーターとタイヤの方が動きが良い印象ですが、今回の実験ではどちらを使ってもできます。
ピンアサイン
ESP32とモータードライバTB6612のピンアサインです。
ESP32のブロック図に基づいて、ジャンパーワイヤーでESP32とTB6612をつなげます。
ESP32 | TB6612 |
P4 | AIN1 |
P5 | AIN2 |
P2 | STBY |
P12 | PWMA |
P14 | BIN1 |
P15 | BIN2 |
P13 | PWMB |
ピンアサイン
モータードライバの仕様はTB6612のアプリケーションノートにのっていますのでそちらを参照しました。
制御電源電圧は、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にアップロードします。
アップロードの方法は、こちらの記事に書いています。
実際に動かすときは、PCからの給電だとロボットカーを自由に動かせないので、バッテリーを用意しました。そのままでは、ブレッドボードに接続できないので、接続用にケーブルを自作しています。
プログラムの中のPWMのdutyの値によって速度を変えることができます。
また、各入力のHigh/Lowの組み合わせでロボットカーを前進、後進、右旋回、左旋回させることができます。
おわりに
ここでは、ESP32を搭載したロボットカーをMicropythonで制御してみました。
Micropythonには多くのライブラリが用意されているので、モーターのPWM制御も簡単にできます。
ライブラリについては、公式ページを参照してみてください。
今後は、このロボットカーをさらに拡張していきたいと思っています。
次のステップとしては、超音波センサーなどを使って、周囲の状況を検知しながら動くというところに進めればと思います。
そのあたりをまた書いていきます。
コメント