3人と1匹の日常とモノづくりブログ

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

【Wifi , Bluetooth搭載マイコン】【実装】ESP32でサーボモータを複数台動かす

f:id:bamboomush:20210123162543p:plain
 ESP32を用いて複数台のサーボモータを実装したので、そのやり方について紹介したいと思います。

 

この記事を読むことで、人気のWifi, Bluetooth搭載マイコン、ESP32で複数のサーボモータを動かせるようになります。

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

youtu.be

 

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

 

Arduino Nano版はこちら


 

◆ESP32関係の実装記事◆ 
  • DCモータ実装

www.takeshi-1222.com

  • サーボモータ実装

www.takeshi-1222.com

  • 無線書き込み実装

www.takeshi-1222.com

  • Webサーバー実装

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, サーボモータの簡単な説明

ESP32

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

サーボモータ

サーボモータはDCモータの中でも角度制御ができるモータです。

これがあることでロボットアームなど、角度を指定する必要があるロボットを作ることができるようになります。また、その他のデバイスに対しても、角度を指定して動かせるようになり、移動ロボットとの組み合わせでも有効的に使うことができるようになります。

実験構成

 今回の実験に使用する部品は以下のものです。
  • ESP32
  • サーボモータ (SG90) * 3
  • ジャンパ線多数

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

 

ジャンパ線は何を使用してもいいですが、一応リンクを張っておきます。

単体での実装はこちらです。

実験

ESP32のセットアップや自動書き込み機能の実装に関してはこちらの記事を参考にしてください。

www.takeshi-1222.com

配線

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

f:id:bamboomush:20210123173625p:plain

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

f:id:bamboomush:20210123173655j:plain

実行コード

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

#include <Servo.h>

Servo myservo1; //Servoオブジェクトを作成
Servo myservo2; //Servoオブジェクトを作成
Servo myservo3; //Servoオブジェクトを作成

void setup() {
  delay(1000);
  myservo1.attach(12); //12番ピンにサーボ制御線(オレンジ)を接続
  myservo2.attach(13); //13番ピンにサーボ制御線(オレンジ)を接続
  myservo3.attach(14); //14番ピンにサーボ制御線(オレンジ)を接続
  
  myservo1.write(90); //180度へ回転
  myservo2.write(90); //180度へ回転
  myservo3.write(90); //180度へ回転
}

void loop() {

  myservo1.write(0); //180度へ回転
  myservo2.write(0); //180度へ回転
  myservo3.write(0); //180度へ回転

  delay(1000);
  
  myservo1.write(180); //180度へ回転
  myservo2.write(180); //180度へ回転
  myservo3.write(180); //180度へ回転
  delay(1000);
}

上記のソースコードでは、モータを正負方向に180度繰り返し動かすプログラムを実装しています。これを用いてロボットアームを作ってみようと考えています。

まとめ

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