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 dem GPIO14 (weiß) und der neunte Pin (entgegengesetzt gegenüber) ist mit dem GPIO12 (gelb) verbunden. Diese dienen zum Starten/Stoppen der Motoren. Dazu ist der zweite Pin mit GPIO19 (grau) verbunden und Pin 3 (grün/rot) sowie 6 (gelb) mit dem ersten Motor. Pin 7 geht an GPIO16 (blau). Damit wird Motor 1 gesteuert.
Für den zweiten Motor wird der Pin 15 mit GPIO17 (weiß) und Pin 20 mit GPIO16 (orange) verbunden. Die Pins 14 (grün/orange) und 11 (gelb/rot) gehen zum Motor.
Die Spannungsversorgung wird an Pin 8 und 16 (rot) angelegt. Der Rest dient als 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.