LEGO Stunt Racer mit Power Functions mit ESP32 und L293D Chip – Ein detaillierter Leitfaden

Ein faszinierendes Projekt für Technikenthusiasten ist die Erstellung einer eigenen App-basierten Steuerung für das Lego Set 42095 Stunt Racer.  Zentral in diesem Projekt ist die Nutzung der beiden Power Functions Motoren, die im Set enthalten sind, und ihre Ansteuerung mithilfe eines L293D Chips und eines ESP32 (ESP32 WROOM-32)

Lego Stunt Racer ESP32 + L293D

Der Schaltplan für diese Anordnung ist relativ einfach. Die beiden Motoren im Set werden an den L293D Chip angeschlossen, welcher durch eine 9V Batterie mit Strom versorgt wird. Die Steuersignale werden direkt vom ESP32 gesendet.


l293d esp32

Im Detail ist der erste Pin des L293D mit GPIO14 (weiß) und der gegenüberliegende, neunte Pin mit GPIO12 (gelb) verbunden. Der zweite Pin des Chips ist an GPIO19 (grau) angeschlossen, während die Pins 3 (grün/rot) und 6 (gelb) mit dem ersten Motor verbunden sind. Pin 7 wird an GPIO16 (blau) angeschlossen, um Motor 1 zu steuern.

Die Anschlüsse für den zweiten Motor sind etwas anders. Hier wird Pin 15 mit GPIO17 (weiß) und Pin 20 mit GPIO16 (orange) verbunden. Pin 14 (grün/orange) und Pin 11 (gelb/rot) werden direkt zum Motor geführt.

Die Stromversorgung wird sicher über Pin 8 und 16 (beide rot) hergestellt. Alle übrigen Pins sind mit GND (schwarz) verbunden.

In den folgenden Abschnitten liefern wir Ihnen auch einen einfachen Beispielcode, den Sie auf Ihrem ESP32 Flashen können, um sofort mit der Fernsteuerung Ihres LEGO 42095 Stunt Racers zu beginnen.

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.