趣味開発、実装をまとめるブログ

興味のあるものをとりあえず動かしてみた、実装してみたシリーズをガンガン上げていきたいと思います。あくまでも自身の備忘録としてですが、誰かの助けになったらうれしいです。

【Wifi、Bluetooth搭載マイコン】【実装】ESP32でDCモータを動かす

f:id:bamboomush:20210103224750p:plain

 ESP32を用いてDCモータを実装したので、そのやり方について紹介したいと思います。

この記事を読むことで、Wifi搭載、話題のマイコンであるESP32でDCモータが動かせるようになります。

ーーーーーーーーーーーーーー

追記

今回使用しているモータドライバL298NとモータFA-130RAは相性が悪く、動作が不安定です。(下手したら壊れる可能性もあります)

なので、正常に動作するバージョンの記事を急ぎ作成しますので、そちらを参考にしていただければと思います。

おまけ

L298N:駆動電圧5V-

FA-130RA:駆動電圧1.5V-3.0V

駆動電圧が一致しないので問題ありと判断しました。

ーーーーーーーーーーーーーーー

動かしている動画が以下のものです。

youtu.be

DCモータを動かせることで、ロボット、IoT、DIYなど幅広い分野を自作できるようになり、趣味でも業務でも自由度が広がること間違いなしです!

 

Arduino Nanoでの実装版はこちらを参考にしてください。

www.takeshi-1222.com

 

◆ESP32関係の実装記事◆ 
  • 無線書き込み、OTA実装

www.takeshi-1222.com

  • Webサーバー実装

www.takeshi-1222.com

  • サーボモータ実装

www.takeshi-1222.com

  • OLED実装

www.takeshi-1222.com

  • 超音波センサ

www.takeshi-1222.com

  • LCDディスプレイ

www.takeshi-1222.com

  • 温湿度センサ (安価)

www.takeshi-1222.com

  • 温湿度センサ (ハイスペック)

www.takeshi-1222.com

  • 温湿度センサ (複数)

www.takeshi-1222.com

  • CO2センサ

www.takeshi-1222.com

 

ESP32, DCモータの簡単な説明

ESP32

ESP32の大きな特徴はWifi, Bluetoothを搭載しているところです。そのうえでArduinoよりも安価に購入でき、ArduinoコードやC++などいくつかの言語の互換性があります。そのため、1つのマイコンでいろいろなことを試したい方には大変おすすめなマイコンです。

DCモータ

Arduinoの時と同様のモータを使用します。

 

www.takeshi-1222.com 

これがあることでルンバのような移動ロボットや、扇風機のような家電機器なども自作可能になります。また、移動ロボットを作る場合には、ギアボックスというものを併用することで、モータの回転速度を下げてトルク (力)を強くするといったことも重要になります。ギアボックスも一緒に紹介しておきます。

上記であればDCモータも付属しているので、すぐにロボット開発に取り組めます。

実験構成

 今回の実験に使用する部品は以下のものです。
ESP32以外はArduinoの時と同様です。
  • ESP32
  • DCモータ (FA-130RA)
  • モータドライバ (L298N)
  • DC/DCコンバータ (LM2596)
  • 電池ボックス (1.5V × 4本)
  • ジャンパ線多数

ESP32、DCモータは上記のものを使用しています。

モータドライバ、DC/DCコンバータ、電池ボックス、ジャンパ線は以下のものを使用しています。

DC/DCコンバータはモータドライバを駆動させるために使用します。12Vの入力電圧が必要であるため、今回の入力電圧4.8Vを昇圧する必要があります。

今回の入力電圧4.8Vは将来これでESP32も動作させたいと思ったため、こちらを使用しました。

また、4.8Vである理由はエネループを使用しているからです。通常は電池4本で6Vです。

ジャンパ線は何を使用してもいいですが、一応リンクを張っておきます。(オスメス、メスメスが必要なので両方張っておきます) 

 

実験

Arduino IDEでESP32を使うためのセットアップ

Arduino IDEでESP32を使用する場合、以下の手順でボードのボードマネージャーにインストールしなければいけません。

  • Arduino IDEを立ち上げて、メニューから「ファイル」→「環境設定」を開き、「追加のボードマネージャのURL」にhttps://dl.espressif.com/dl/package_esp32_index.jsonと入力し「OK」をクリックします。

  • 「ツール」→「ボード」→「ボードマネージャ」を開きます。「esp32」と入力し、「esp32 by Espressif Systems」をインストールします。

  • 「ツール」→「ボード」で、「ESP32 Dev Module」を選択します。

ESP32自動書き込みの準備

私が購入したESP32は、プログラムを書き込む時にENスイッチやbootスイッチを操作しなければ、書き込みができない仕様になっていました。 (ものによっては無痛に書き込めますので要確認)

そのため、自動書き込みをするために、ENとGNDの間に0.22uF~2.2uFのコンデンサを追加する必要がありました。

私の場合、1.0uFの抵抗をはんだ付けしました。 (少々強引ですが無事動作しています。)

f:id:bamboomush:20210103222603j:plain

配線

ESP32のピンアサインは以下の通りです。

f:id:bamboomush:20210104122004p:plain

@【ESP32】analogReadする方法 - ソースに絡まるエスカルゴ


配線は以下のようにします。

f:id:bamboomush:20210103222815p:plain

配線ができると以下の画像のようになります。

 f:id:bamboomush:20210103222651j:plain

実行コード

ここまで出来たら以下のコードを実行することで動作確認ができます。

 #define PIN_IN1  26
    #define PIN_IN2  27
    #define PIN_VREF 14 // PWM
     
    void setup(){
      pinMode(PIN_IN1,OUTPUT); 
      pinMode(PIN_IN2,OUTPUT); 
    }
     
    void loop(){
          
        // モーターの回転速度を中間にする
        dacWrite(PIN_VREF,125); 
     
        // 回転
        digitalWrite(PIN_IN1,HIGH);
        digitalWrite(PIN_IN2,LOW);
        delay(5000);
        // ブレーキ
        digitalWrite(PIN_IN1,HIGH);
        digitalWrite(PIN_IN2,HIGH);
        delay(2000);
        // 逆回転
          dacWrite(PIN_VREF,250); 
        digitalWrite(PIN_IN1,LOW);
        digitalWrite(PIN_IN2,HIGH);    
        delay(5000);
     
        // ブレーキ
        digitalWrite(PIN_IN1,HIGH);
        digitalWrite(PIN_IN2,HIGH);
        delay(2000);
        
    }

上記のソースコードでは、モータの正転と逆転を繰り返すプログラムを実装しています。実際には、ここにエンコーダ等をつけて回転数を計測し、移動量を計算したりして、ロボットの制御をしたりします。

まとめ

今回は、ESP32でDCモータを動かすために必要なものの紹介と、サンプルプログラムの紹介をしました。

参考資料

esp32-wroomDevkitCをarduino IDEでセットアップからサーボ駆動まで(Windows) - Qiita

ESP32 Arduino IDEのセットアップからLチカまで - JH7UBCブログ

esp32_tips – スイッチサイエンス