ESP32 Tutorial 49/55 - DC-Motor über das Internet mit Adafruit IoT steuern | SunFounders ESP32-Kit
In diesem Tutorial werden wir erkunden, wie man einen Gleichstrommotor über das Internet mit dem ESP32 und dem Adafruit IO MQTT-Dienst steuert. Die Geschwindigkeit und Richtung des Gleichstrommotors können aus der Ferne manipuliert werden, was eine effiziente Steuerung von überall mit einer Internetverbindung ermöglicht. Dieses Projekt demonstriert die Möglichkeiten des ESP32-Mikrocontrollers, der über integriertes Wi-Fi verfügt und somit ideal für Anwendungen im Internet der Dinge (IoT) ist.
Wir werden ein System implementieren, bei dem der Motor über eine Webschnittstelle, die mit Adafruit IO verbunden ist, gestartet, gestoppt und seine Geschwindigkeit angepasst werden kann. Benutzer können sich für spezifische Themen zur Motorsteuerung anmelden und die entsprechenden Parameter anpassen. Um den Prozess besser zu verstehen, sollten Sie sich das Video ansehen, das dieses Tutorial begleitet (im Video bei :00).
Hardware erklärt
Für dieses Projekt werden wir den ESP32-Mikrocontroller verwenden, der das Herz unseres Systems ist. Der ESP32 ist in der Lage, Wi-Fi-Kommunikation zu verarbeiten, was ihn perfekt für unsere IoT-Anwendung macht. Er verbindet sich mit der Adafruit IO-Plattform, sodass wir Nachrichten über das MQTT-Protokoll senden und empfangen können.
Darüber hinaus werden wir den L293D-Motorcontroller verwenden, der für die Steuerung des Gleichstrommotors entscheidend ist. Der L293D kann zwei Gleichstrommotoren antreiben und ermöglicht die Steuerung sowohl der Richtung als auch der Geschwindigkeit durch Pulsweitenmodulation (PWM). Er fungiert im Wesentlichen als Schnittstelle zwischen dem ESP32 und dem Motor, verwaltet den höheren Strom, der vom Motor benötigt wird, und isoliert den ESP32 von potenziell schädlichen Rückspannungs-signalen.
Datenblattdetails
| Hersteller | Texas Instruments |
|---|---|
| Teilenummer | L293D |
| Logik/IO-Spannung | 4,5 - 36 V |
| Versorgungsspannung | 4,5 - 36 V |
| Ausgangsstrom (pro Kanal) | 600 mA |
| Spitzenstrom (pro Kanal) | 1.2 A |
| PWM-Frequenzrichtlinien | 10 kHz (typ.) |
| Eingangswertgrenzen | 0,8 V (hoch), 2,0 V (niedrig) |
| Spannungsabfall / RDS(on)/ Sättigung | 1,5 V max |
| Thermische Grenzen | 150 °C |
| Paket | DIP-16 |
| Hinweise / Varianten | Quadrupler Hochstrom-Halb-H-Treiber |
- Sorgen Sie für eine angemessene Wärmeableitung für den kontinuierlichen Betrieb.
- Verwenden Sie PWM, um die Motordrehzahl effektiv zu steuern.
- Beachten Sie die Eingangs-Spannungsgrenzen, um Schäden zu vermeiden.
- Überprüfen Sie die ordnungsgemäßen Erdverbindungen zwischen allen Komponenten.
- Sei vorsichtig mit Rück-EMK; nutze bei Bedarf Dioden.
- Überprüfen Sie die Verkabelung, da die Polarität die Motorrichtung beeinflussen kann.
- Testen Sie mit einer niedrigeren Spannung, bevor Sie den vollständigen Betrieb aufnehmen.
- Achten Sie auf Überhitzung bei längerer Benutzung.
- Stellen Sie sicher, mechanische Schalter zu entprellen, wenn sie verwendet werden.
- Stellen Sie sicher, dass der ESP32 nicht durch den Strom des Motors überlastet wird.
Verdrahtungsanweisungen
Beginnen Sie mit dem Anschließen der Stromversorgung. Schließen Sie den positiven Anschluss Ihrer externen Stromquelle an den VCC-Pin des L293D (Pin 8) und den Ground an den GND-Pin (Pin 4) an. Stellen Sie sicher, dass der ESP32 separat mit Strom versorgt wird, falls erforderlich, normalerweise über eine Micro-USB-Verbindung.
Als nächstes verbinden Sie den Motor mit dem L293D. Ein Terminal des Motors sollte mit Ausgangspin 3 (Pin 2 des L293D) verbunden sein und das andere Terminal mit Ausgangspin 6 (Pin 7 des L293D). Für Steuersignale verbinden Sie Pin 13 des ESP32 mit Eingangs-Pin 2 (Pin 1 des L293D) und Pin 14 mit Eingangs-Pin 7 (Pin 2 des L293D). Der Aktivierungs-Pin (Pin 1) sollte ebenfalls mit der 5V-Stromversorgung verbunden werden, um den Treiber zu aktivieren. Stellen Sie schließlich sicher, dass die GND-Leitung des ESP32 mit der GND-Leitung des L293D verbunden ist, um einen gemeinsamen Bezug zu haben.
Codebeispiele und Anleitung
Der bereitgestellte Code initialisiert die erforderlichen Bibliotheken und richtet den Wi-Fi- und MQTT-Client ein. Wichtige Identifikatoren umfassenmotorSpeed,motorDirection, undmotorStart, die den Betrieb des Motors basierend auf den von Adafruit IO empfangenen Befehlen steuern.
bool debug = false;
#define motor1A 13
#define motor2A 14
int motorSpeed = 0;
int motorDirection = 1;
int motorStart = 1;
In diesem Auszug werden die Motorpins zusammen mit den Anfangsvariablen zur Steuerung von Geschwindigkeit, Richtung und dem Start-/Stopzustand des Motors definiert. Die VariablemotorSpeedwird basierend auf den Eingaben von Adafruit IO angepasst.
void setup() {
Serial.begin(115200);
WiFi.begin(WLAN_SSID, WLAN_PASS);
delay(2000);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
}
}
In der Setup-Funktion wird die serielle Kommunikation initiiert, und der ESP32 verbindet sich mit dem angegebenen Wi-Fi-Netzwerk. Diese Verbindung ist entscheidend für die Ermöglichung der MQTT-Kommunikation.
void loop() {
MQTT_connect();
mqtt.processPackets(500);
runMotor();
}
Diese Loop-Funktion stellt die MQTT-Verbindung her und verarbeitet eingehende Pakete, um den Motor basierend auf den zuletzt erhaltenen Befehlen zu steuern. Die FunktionrunMotor()wird aufgerufen, um die aktuellen Einstellungen auf den Motor anzuwenden.
Demonstration / Was Sie erwarten können
Wenn die Einrichtung abgeschlossen und der Code hochgeladen ist, sollten Sie in der Lage sein, den Motor über das Adafruit IO-Dashboard zu steuern. Sie können die Motorgeschwindigkeit mit einem Schieberegler anpassen und die Richtung mit einem Kippschalter ändern. Wenn alles richtig verkabelt ist, wird der Motor in Echtzeit auf diese Befehle reagieren und die niedrige Latenz des Systems demonstrieren (im Video bei 00:00).
Häufige Probleme sind eine umgekehrte Motorrichtung aufgrund einer falschen Verkabelung. Überprüfen Sie die Verbindungen daher noch einmal, wenn der Motor sich nicht wie erwartet verhält. Stellen Sie außerdem sicher, dass Ihre MQTT-Themen in Adafruit IO korrekt eingerichtet sind, um mit dem Code übereinzustimmen.
Video-Zeitstempel
- 00:00 Start
- 2:21 Einführung in das Projekt
- 4:20 Wie DC-Motoren gesteuert werden
- 6:39 L293D Motorsteuerung
- 11:42 Was ist MQTT?
- 15:03 Adafruit IO Einrichtung
- 19:17 Verdrahtung Erklärt
- 22:42 Code erklärt
- 35:28 Projektvorführung
Common Course Links
Common Course Files
Ressourcen & Referenzen
Noch keine Ressourcen vorhanden.
Dateien📁
Keine Dateien verfügbar.