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. ジャンパーワイヤー
KeeYees ESP32 ESP-32S 開発ボード デュアルコア 2.4 GHz WiFi + Bluetoothデュアルモード対応 ESP-WROOM-32モジュール内臓 マイクロコントローラ (2個入れ)
KeeYees ESP32 ESP-32S 開発ボード デュアルコア 2.4 GHz WiFi + Bluetoothデュアルモード対応 ESP-WROOM-32モジュール内臓 マイクロコントローラ (2個入れ)
タミヤ 楽しい工作シリーズ No.157 ユニバーサルプレート 2枚セット (70157)
各種のギヤボックスなどを自由に固定でき、自動車工作のシャーシやロボット工作のフレームなどに幅広く使えるセットです。 ユニバーサルプレートは160×60mmで厚さ3mmのABS樹脂製。 直径3mmの穴が5mm間隔で開けられ、取り付け個所を自由に選べます。 またアングル材とシャフト固定用の軸受けが各4個、3×8mmプッシュ...
4個 リチウムイオンバッテリ 1100mAh Vivan-Star A r d ui n o Nodemcu ESP32開発ボード用保護ボード 絶縁ゴムテープ マイクロJST 1.25プラグ付き3.7V 1100mAhリチウム充電式バッテリー1S 1Cリポバッテリー
4個 リチウムイオンバッテリ 1100mAh Vivan-Star A r d ui n o Nodemcu ESP32開発ボード用保護ボード 絶縁ゴムテープ マイクロJST 1.25プラグ付き3.7V 1100mAhリチウム充電式バッテリー1S 1Cリポバッテリー
KKHMF 2個 デュアル モーター ドライバー モジュール 1A TB6612FNG Arduino マイクロコントローラー対応
KKHMF 2個 デュアル モーター ドライバー モジュール 1A TB6612FNG Arduino マイクロコントローラー対応
ELEGOO Arduino用 鉛フリー フレキシブル ジャンパーワイヤ130pcs オス-オス forブレッドボード
Elegooは自分の製造工場があり 自分から商品を生産や販売しますので 商品の品質を控えることができます。 ご意見とアドバイスを頂ければ幸いです。 内容物: 多色、異なるサイズのジャンパーワイヤ130pcs

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

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

KKHMF 6個 SY-170 ミニブレッドボード カラフルブレッドボード はんだ原型 テスト170タイポイント Arduino用 「国内配送」
KKHMF 6個 SY-170 ミニブレッドボード カラフルブレッドボード はんだ原型 テスト170タイポイント Arduino用 「国内配送」
タミヤ 楽しい工作シリーズ No.168 ダブルギヤボックス 左右独立4速タイプ (70168)
2つのモーターのパワーを別々に取り出すことができる組み立て式のギヤボックスです。 低速から高速まで4種類のギヤ比が選べ、左右でギヤ比が変えられる独立構造を採用しました。 ケースやギヤはプラスチック製、シャフトは丈夫な金属製。はめ込みやネジ止めでやさしく組み立てられ、なめらかな動きを生み出します。 タミヤのリモコンボック...
タミヤ 楽しい工作シリーズ No.101 トラックタイヤ 36mm (70101)
トラックやトレーラーなどの自動車工作に幅広く使えるホイール付きのタイヤを4本セットしました。 ホイールは3速クランクギヤボックスやツインモーターギヤボックスと同じ六角シャフトタイプに対応。 はめ込み式で手軽に取り付けられます。 3×100mmシャフトも2本付いています。 タイヤサイズ:直径36mm、幅16mm。 (Am...

ピンアサイン

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 1.19.1 ドキュメント

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

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

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

コメント

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