Pybricks Tutorial: 42140 mit LEGO Zug-Fernbedienung aber ohne Handy steuern! Wie genial ist das denn?!

Ich liebe ja BrickController 2 um meine TECHNIC Sets mit einem Controller zu steuern – doch Pybricks kann noch mehr! Man kann eigene Python Programme auf den Control+ Hub laden und diese OHNE Handy abspielen lassen – um zum Beispiel das 42140 App-gesteuerte Transformationsfahrzeug OHNE Handy dafür aber MIT LEGO Fernbedienung (88010 – z.B. in den aktuellen City Zügen enthalten) steuern.
WIE GENIAL IST DAS DENN?

Im Tutorial lernt ihr, wie ihr die Firmware des Pybricks kinderleicht aufspielt, das Programm für den 42140 installiert und auch bei Bedarf die Original LEGO Firmware widerherstellen könnt*.

Tutorial

Die Software Pybricks ist KOSTENFREI und kann über ein Handy, Tablet oder Laptop mit Bluetooth installiert werden.
Hierzu ist nur ein Webbrowser von Nöten, der das WebBluetooth Protokoll sprechen kann. Mozilla Firefox und Google Chrome können das zum Beispiel. Beide Browser sind kostenlos. Die Installation klappt vom Bluetoothfaigen PC/Laptop aus, dem Handy oder Tablet.
Für eine Steuerung benötigt ihr die Zug-Fernbedienung – diese ist bei LEGO separat unter der Artikelnummer 88010 erhältlich!)
Die Fernbedienung gibt es auch bei amazon**:
LEGO Zug-Fernbedienung 88010: https://amzn.to/3ICxCgT
Und bei LEGO: https://www.lego.com/de-de/product/remote-control-88010

Anleitung

  1. Pybricks öffnen
  2. Pybricks Firmware auf Control+ Hub installieren
  3. Programm für 42140 einfügen
  4. Control+ Hub verbinden
  5. Programm starten + Funktionsprüfung
  6. Optional: Programm in Firmware einbetten
  7. Fernbedienungs-Belegung+
  8. Wieder Original LEGO Firmware installieren

1. Pybricks öffnen

Öffnet die Webseite Pybricks.com mit einem WebBluetooth-fähigen Browser (Firefox, Chrome – optional geht das auch auf auf dem Handy oder Tablet mit dem entsprechenden Browser!). https://pybricks.com/ und klickt hier auf „Code“.

Pybricls.com Webseite

2. Pybricks Firmware auf Control+ Hub installieren

Nun müsst ihr euch von eurer LEGO Control+ Firmware verabschieden und die Pybricks Firmware installieren.
Klickt hierzu auf den Brick mit dem Pfeil.
Es öffnet sich eine Genehmigungsanfragen, ob der Browser Bluetooth verwenden darf. Genehmigt das.
Danach schaltet ihr den Control+ Hub ein. Haltet die Taste gedrückt bis er pink wird (ca 15 sekunden) und HALTET DIE TASTE GERDRÜCKT!
Dieser erscheint dann in der Liste. Mit einem Klick auf „Pair“ wird er verbunden.
Anhand des Kreises im Logo seht ihr wie weit die Installation ist.

Euer Hub blinkt während der Installation Rot / Brün / Blau
WICHTIG! Schaltet den Control+Hub oder das Gerät auf dem ihr Pybricks offen habt nicht aus!

Button zum Installieren der Firmware
Firmware-Aktualisierung

3. Programm für 42140 einfügen

Nun könnt ihr mein Programm einfügen. Dies steht kostenlos als .py (python) Datei hier bereit und kann mit der „Open“ Schaltfläche in Pybricks geladen werden.
Optional könnt ihr den Programmcode auch einfach kopieren und einfügen.

Pybricks Programm für die 42140 (Danke an Technicmaster0): Download

Quellcode zum Kopieren:

from pybricks.tools import wait
from pybricks.hubs import TechnicHub
from pybricks.parameters import Color
from pybricks.pupdevices import Motor, Remote
from pybricks.parameters import Port, Direction, Stop, Button
from pybricks.pupdevices import *
from pybricks.parameters import *
from pybricks.tools import wait
#print(Color.RED.h, Color.RED.s, Color.RED.v)

## Initialize the hub.
hub = TechnicHub()
battstand = hub.battery.current()
battstand = str(battstand)
print("-----------------------------------------")
print("-- Profinerd Edition --")
print("-----------------------------------------")
print("19-03-2022 | Aktueller Batteriestand " + battstand + "%")
print("-----------------------------------------")
print("Credits an Technicmaster0 für die komplette Steuerung!")
print("-----------------------------------------")
print("Sein Quellcode für Steuerung per Remote Control")
print("Optimierung und Kleinigkeiten verbessert durch Profinerd")
print("-----------------------------------------")

#----------------------------------------------
#Variablen
#----------------------------------------------
#Millisekunden für Drehung um 180 grad / 600 standard
halfturnms = 550
#Profinerd-Blink-Farben in MS / 500 Standard / 0=aus
blinkstartms = 500
#----------------------------------------------

#Blinken in den Farben des Profinerd :)
for i in range(3):

    hub.light.on(Color.VIOLET)
    wait(blinkstartms)
    hub.light.on(Color.BLUE)
    wait(blinkstartms)

## ------------------------------------------
## From now on: THANKS to technicmaster0
## He wrote this incredible code:
## ------------------------------------------
#Einbinden der Hardware
hub = TechnicHub()
motor1 = Motor(Port.B)
motor2 = Motor(Port.A)
remoteControl = Remote()


#main loop
while True:
   #update pressed buttons information
    pressed = remoteControl.buttons.pressed()
    #update orientation of the hub
    hubOrientation = hub.imu.up()





    #commands to drive forwards or backwards
    #they depend on the orientation of the hub
    #for one side, motors are reversed and switched
    if hubOrientation == Side.TOP:
        hub.light.on(Color.BLUE)
        if Button.LEFT_MINUS in pressed:
            motor2.dc(100)
        elif Button.LEFT_PLUS in pressed:
            motor2.dc(-100)
        else: 
            motor2.brake()
        
        if Button.RIGHT_MINUS in pressed:
            motor1.dc(-100)
        elif Button.RIGHT_PLUS in pressed:
            motor1.dc(100)
        else:
            motor1.brake()

        if (Button.LEFT in pressed):
           hub.light.on(Color.VIOLET)
           motor1.dc(-100)
           motor2.dc(-100)
           wait(halfturnms)

## ------------------------------------------
## Small edits from profinerd for 180° turn
## ------------------------------------------
#180° Turn
        if (Button.RIGHT in pressed):
           hub.light.on(Color.VIOLET)
           motor1.dc(100)
           motor2.dc(100)
           wait(halfturnms)

#Shutdown mit Grüner Mitteltaste
        if (Button.CENTER in pressed):
           hub.light.on(Color.RED)
           wait(1000)
           hub.system.shutdown()

## ------------------------------------------
## End profinerd of small Profinerd Edits
## ------------------------------------------

    elif hubOrientation == Side.BOTTOM:
        hub.light.on(Color.ORANGE)
        if Button.LEFT_MINUS in pressed:
            motor1.dc(100)
        elif Button.LEFT_PLUS in pressed:
            motor1.dc(-100)
        else: 
            motor1.brake()
        
        if Button.RIGHT_MINUS in pressed:
            motor2.dc(-100)
        elif Button.RIGHT_PLUS in pressed:
            motor2.dc(100)
        else:
            motor2.brake()
        
        if (Button.LEFT in pressed):
           hub.light.on(Color.VIOLET)
           motor1.dc(-100)
           motor2.dc(-100)
           wait(halfturnms)

## ------------------------------------------
## Small edits from profinerd for 180° turn
## ------------------------------------------
#180° Turn
        if (Button.RIGHT in pressed):
           hub.light.on(Color.VIOLET)
           motor1.dc(100)
           motor2.dc(100)
           wait(halfturnms)

#Shutdown mit Grüner Mitteltaste
        if (Button.CENTER in pressed):
           hub.light.on(Color.RED)
           wait(1000)
           hub.system.shutdown()

## ------------------------------------------
## End profinerd of small Profinerd Edits
## ------------------------------------------

    else:
        hub.light.on(Color.BLUE)
        if (Button.LEFT_PLUS not in pressed) and (Button.LEFT_MINUS not in pressed) and (Button.RIGHT_PLUS not in pressed) and (Button.RIGHT_MINUS not in pressed):
            motor1.brake()
            motor2.brake()

        if (Button.CENTER in pressed):
           hub.light.on(Color.RED)
           wait(1000)
           hub.system.shutdown()


    wait(100)

4. Control+ Hub verbinden

Um das Script zu testen und dein App-gesteuertes Transformatiosfahrzeug 42120 fahren zu lassen müssen wir den Code auf den SmartHub laden!
Dazu müssen wir den Hub erst wieder mit dem Gerät verbinden – wir haben bis dato ja nur die Firmware aktualisiert.

Klickt hierzu auf das Bluetooth-Symbol – schaltet den Control+ Hub ein – und verbindet euch dann mit „Pair“

5. Programm starten + Funktionsprüfung

Nun könnt ihr mit dem Play Button das Script auf den Hub kopieren.
Und loslegen!
Wenn alles geklappt hat blinkt der Hub kurz in den Profinerd-Farben blau/lila – und dann stetig blau 🙂

Wichtig: Sobald ihr den Hub ausschaltet ist das Programm wieder weg! Daher Punkt 6 beachten – mit dem kann man das Script DAUERHAFT auf dem Hub hinterlegen!

Script auf Control+ Hub spielen und starten


6. Optional: Programm in Firmware einbetten

Nun solltest du noch die Einstellungen festlegen – wie zum Beispiel dein Hub heißt und – das wenn du die Firmware erneut aufspielst – das Script dauerhaft auf dem Hub gespeichert wird.
Um die Einstellungen festzulegen: Klicke RECHTS auf das Zahnrad-Symbol und wähle hier einen neuen Namen für deinen Hub – und aktiviere „Include current program“ (siehe Screensots).

Pybricks Einstellungen öffnen
Pybricks Einstellungen für Firmware

Mit einem Klick auf X kannst du die Settings wieder schließen.
Nun musst du die Firmware – samt Programm – auf den Hub laden. Das geht so wie in Punkt 2 beschrieben: Ein/Aus Taste drückenbis sie pink ist, gedrückt halten, Firmware-Install-Button drücken. Hub auswählen, Firmware drauf installieren.
Fertig!

Das Programm ist nun fest auf dem Hub drauf. Ab sofort wird der PC nicht mehr benötigt.
Gestartet werden kann das Programm auf dem Hub wie folgt:

  1. Hub einschalten
  2. Er blinkt dann blau
  3. Nochmal kurz ein/aus-Schalter drücken
  4. Er blinkt blau/lila (3x)
  5. In der Zeit dann auf der Fernbedienung den grünen Knopf drücken
  6. Nun verbindet sich die Fernbedienung mit dem Hub.
  7. Fahrbereit!

7. Fernbedienungs-Belegung / Steuerung

LEGO 42140 Fernbedienung Belegung
Controller-Tastenbelegung

8. Wieder Original LEGO Firmware installieren

Hierzu benötigt ihr ein Handy mit der LEGO Control+ App.

  1. Öffnet die Control+App und wählt euer 42140 Transformationsfahrzeug aus
  2. Verbindet euch per BT
  3. Wenn die Anzeige erscheint, dass ihr den SmartHub einschalten sollt, drückt ihr ca. 15 Sekunden auf den ein/aus-Schalter bis er pink blinkt – haltet die Taste gedrückt
  4. Auf dem Display werdet ihr aufgefordert eine neue Firmware zu installieren mit „weiter“ gehts dann los
  5. Firmware wird installiert
  6. Gerät ist wieder mit allen LEGO Apps nutzbar – Pybricks ist weg.

Links

Pybricks Website zum Installieren der Firmware und API Docs:
https://www.pybricks.com
Vielen Dank auch an die Unterstützung und Genehmigung das Logo zu verwenden!

Youtube Kanal von Technicmaster0:
https://youtube.com/technicmaster0
GitHub Repository von Technicmaster0:
https://github.com/Tcm0/PybricksRemoteLayouts/

*Ich übernehme keine Haftung für Schäden am Gerät oder an der Control+ Hardware. Alles auf eigene Verantwortung!

**Hierbei handelt es sich um Affiliate Links!!!
Ich verdiene eine prozentualen Anteil davon mit, wenn ihr klickt und irgendetwas über den Link kauft – die Produkte dort sind aber nicht von mir!
Für euch entstehen keine zusätzlichen Kosten!


8 Gedanken zu “Pybricks Tutorial: 42140 mit LEGO Zug-Fernbedienung aber ohne Handy steuern! Wie genial ist das denn?!

  1. Falls man vor hast den Code mit dem Iphone oder einem anderen Apple Produkt zu übertragen:
    Bitte den Bluefy Web BLE Browser verwenden (im App Store erhältlich)

  2. Die API Schnittstelle von Google Chrome für IOS unterstützt leider kein BLE.
    Es funktioniert derzeit nur der Bluefy Web BLE Browser, die Vorgehensweise ist dann die gleich wie unter Chrome, getestet hab ich das mit dem CAT Bulldozer.
    Ps.: Hatte das damals auch schon Technicmaster0 geschrieben bei seinem Android Tutorial

  3. Vielen Dank für die Tolle Anleitung. Leider finde ich den Button nicht mehr welcher den Code in die Firmware integriert. Kannst du hier helfen

    1. Du solltest deinen Code erst in den Hup implementieren, wenn du den Code funktional getestet hast.
      Du kannst das über das Zahnrad oben rechts machen – da unter „FIRMWARE“ den Haken „Include Currenbt Program“ wählen und den entsprechenden HUB dazu auf den es soll 🙂

        1. Stimmt! Das fehlt. Vor 2 WOchen kam eine neue Version raus – bei mir gehen einige Dinge nicht mehr.
          Aber auch das „Copy program to hub“ fehlt.
          Ich werde mal nachhaken

Schreibe einen Kommentar zu Fabian Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert