Lego Motor ESP32 mit L293D

Mit dem Lego Set 42095 Stunt Racer bekommt man u.a. zwei Power Functions Motoren. Diese kann man über einen L293D Chip sowie z.B. einem ESP32 (ESP32 WROOM-32) direkt steuern. Damit kann man z.B. eine eigene Steuerung per App entwickeln. Im Folgenden wird die grundlegende Anbindung beschrieben. Desweitern gibt es ein einfaches Code-Snippet.

Lego Stunt Racer ESP32 + L293D

In meinem Beispiel werden die zwei Motoren des Sets mit dem L293D verbunden. Dazu benötigt es noch eine 9V Batterie. Ein möglicher Schaltplan sieht wie folgt dazu aus:
l293d esp32

Der erste Pin des L293D ist mit GPIO14 (weiß) und der neunte Pin (gegenüber) mit GPIO12 (gelb) verbunden. Diese werden zum Starten/Stoppen der Motoren verwendet. Dazu wird der zweite Pin mit GPIO19 (grau) und die Pins 3 (grün/rot) und 6 (gelb) mit dem ersten Motor verbunden. Pin 7 geht an GPIO16 (blau). Damit wird Motor 1 gesteuert.
Für den zweiten Motor wird Pin 15 mit GPIO17 (weiß) und Pin 20 mit GPIO16 (orange) verbunden. Pin 14 (grün/orange) und Pin 11 (gelb/rot) gehen zum Motor.
Die Spannungsversorgung wird an Pin 8 und 16 (rot) angeschlossen. Der Rest ist GND (schwarz).

Ein knappen Beispiel-Code gibt es hier:

int motor1_19=19;
int motor1_18=18;
 
int motor2_17=17;
int motor2_16=16;

int enablePin14 = 14;
int enablePin12 = 12;
 
void setup(){
  pinMode(motor1_19,OUTPUT);
  pinMode(motor1_18,OUTPUT);
  pinMode(enablePin14,OUTPUT);

  digitalWrite(enablePin14, LOW);
 
  pinMode(motor2_17,OUTPUT);
  pinMode(motor2_16,OUTPUT);
  pinMode(ENablePin2,OUTPUT);

  digitalWrite(enablePin12, LOW);
}
 
void loop(){

    digitalWrite(motor1_19,HIGH); 
    digitalWrite(motor1_18,LOW);
  
    digitalWrite(motor2_17,HIGH);
    digitalWrite(motor2_16,LOW);
    
    digitalWrite(enablePin14, HIGH);
    digitalWrite(enablePin12, HIGH);
}

Weitere kleine Arduino Projekte findet ihr hier.