ESP32チュートリアル 49/55 - Adafruit IoTを使用してインターネット経由でDCモーターを制御する | SunFounderのESP32キット
このチュートリアルでは、ESP32とAdafruit IO MQTTサービスを使用して、インターネット経由でDCモーターを制御する方法を探索します。DCモーターの速度と方向はリモートで操作可能であり、インターネット接続があればどこからでも効率的に制御できます。このプロジェクトは、Wi-Fiを内蔵したESP32マイクロコントローラーの機能を示しており、モノのインターネット(IoT)アプリケーションに最適です。
esp32-49-DCモーター-mqtt-main
モーターを起動、停止し、Adafruit IOに接続されたウェブインターフェースを介して速度を調整できるシステムを導入します。ユーザーはモーター制御のための特定のトピックにサブスクリプションを行い、パラメータを適宜調整できます。このプロセスをより良く理解するために、このチュートリアルに付随するビデオをぜひご覧ください(ビデオの00:00にて)。
ハードウェアの解説
このプロジェクトでは、システムの中心となるESP32マイクロコントローラーを利用します。ESP32はWi-Fi通信を処理することができ、IoTアプリケーションに最適です。これはAdafruit IOプラットフォームに接続され、MQTTプロトコルを介してメッセージの送受信が可能になります。
さらに、DCモーターを制御するために不可欠なL293Dモータードライバーを使用します。L293Dは2つのDCモーターを駆動でき、パルス幅変調(PWM)を通じて方向と速度の両方を制御できます。基本的に、ESP32とモーターの間のインターフェースとして機能し、モーターが必要とする高い電流を管理する一方で、ESP32を潜在的に損傷を与えるバックEMF信号から絶縁します。
データシートの詳細
| 製造業者 |
テキサス・インスツルメンツ |
| 部品番号 |
L293D |
| ロジック/入出力電圧 |
4.5 - 36 V |
| 供給電圧 |
4.5 - 36 V |
| 出力電流(チャネルごと) |
600 mA |
| ピーク電流(チャンネルごと) |
1.2 A |
| PWM周波数ガイダンス |
10 kHz(典型) |
| 入力論理しきい値 |
0.8 V (高), 2.0 V (低) |
| 電圧降下 / RDS(オン)/飽和度 |
1.5 V 最大 |
| 熱的限界 |
150 °C |
| パッケージ |
DIP-16 |
| ノート / バリアント |
四倍高電流ハーフHドライバー |
- 連続運転のために適切なヒートシンクを確保してください。
- PWMを使用してモーターの速度を効果的に制御します。
- 入力電圧の制限に注意して、損傷を防いでください。
- すべてのコンポーネント間で適切な接地接続が行われているか確認してください。
- バックEMFに注意し、必要に応じてダイオードを使用してください。
- 配線を再確認してください。極性がモーターの方向に影響を与える可能性があります。
- フル運転の前に低電圧でテストしてください。
- 長時間の使用中に過熱に注意してください。
- 機械スイッチを使用する場合は、デバウンスすることを確認してください。
- ESP32がモーターの電流で過負荷にならないようにしてください。
配線指示
ESP32-15_L293Dモーター回路図
電源を接続することから始めます。外部電源の正端子をL293DのVCCピン(ピン8)に、接地をGNDピン(ピン4)に接続します。必要に応じてESP32に別途電源を供給することを確認してください。通常はマイクロUSB接続を通じて行います。
次に、モーターをL293Dに接続します。モーターの一端は出力ピン3(L293Dのピン2)に接続し、もう一端は出力ピン6(L293Dのピン7)に接続する必要があります。制御信号のために、ESP32のピン13を入力ピン2(L293Dのピン1)に接続し、ピン14を入力ピン7(L293Dのピン2)に接続します。有効ピン(ピン1)はドライバーをアクティブにするために5V電源にも接続する必要があります。最後に、ESP32のグラウンドがL293Dのグラウンドに接続されていることを確認し、共通のリファレンスを作成します。
コード例とウォークスルー
提供されたコードは、必要なライブラリを初期化し、Wi-FiおよびMQTTクライアントを設定します。キー識別子には含まれますmotorSpeed,motorDirection, とmotorStartAdafruit IOから受信したコマンドに基づいてモーターの操作を管理します。
bool debug = false;
#define motor1A 13
#define motor2A 14
int motorSpeed = 0;
int motorDirection = 1;
int motorStart = 1;
この抜粋では、モーターピンが定義され、速度、方向、モーターの開始/停止状態を制御するための初期変数が示されています。変数motorSpeedAdafruit IOからの入力に基づいて調整されます。
void setup() {
Serial.begin(115200);
WiFi.begin(WLAN_SSID, WLAN_PASS);
delay(2000);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
}
}
セットアップ関数では、シリアル通信が初期化され、ESP32が指定されたWi-Fiネットワークに接続します。この接続はMQTT通信を有効にするために重要です。
void loop() {
MQTT_connect();
mqtt.processPackets(500);
runMotor();
}
このループ関数はMQTT接続を確立し、最新のコマンドに基づいてモーターを制御するために受信したパケットを処理します。関数runMotor()モーターに現在の設定を適用するよう呼び出されます。
デモンストレーション / 期待すること
セッティングが完了し、コードがアップロードされると、Adafruit IO ダッシュボードを通じてモーターを制御できるようになります。スライダーを使ってモーターの速度を調整し、トグルスイッチで方向を変更できます。すべてが正しく配線されていれば、モーターはリアルタイムでこれらのコマンドに反応し、システムの低遅延を示します(動画の00:00で)。
一般的な問題には、配線が不正確なためにモーターの方向が逆になることが含まれますので、モーターが期待通りに動作しない場合は接続を再確認してください。さらに、コードに合わせてAdafruit IOでMQTTトピックが正しく設定されていることを確認してください。
動画のタイムスタンプ
- 00:00 開始
- 2:21 プロジェクトの紹介
- 4:20 DCモーターの制御方法
- 6:39 L293D モータードライバー
- 11:42 MQTTとは何ですか?
- 15:03 Adafruit IO セットアップ
- 19:17 配線の説明
- 22:42 コードの説明
- 35:28 プロジェクトデモンストレーション
画像
ESP32-15_L293D_motor_schematic
esp32-49-DC-motor-mqtt-main
ESP32-15_L293D_motor_schematic
esp32-49-DC-motor-mqtt-main
851-ESP32 Tutorial 49/55- Arduino code using ESP32 to DC Motor using MQTT service of Adafruit
言語: C++