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
- Pybricks öffnen
- Pybricks Firmware auf Control+ Hub installieren
- Programm für 42140 einfügen
- Control+ Hub verbinden
- Programm starten + Funktionsprüfung
- Optional: Programm in Firmware einbetten
- Fernbedienungs-Belegung+
- 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“.
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!
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!
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).
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:
- Hub einschalten
- Er blinkt dann blau
- Nochmal kurz ein/aus-Schalter drücken
- Er blinkt blau/lila (3x)
- In der Zeit dann auf der Fernbedienung den grünen Knopf drücken
- Nun verbindet sich die Fernbedienung mit dem Hub.
- Fahrbereit!
7. Fernbedienungs-Belegung / Steuerung
8. Wieder Original LEGO Firmware installieren
Hierzu benötigt ihr ein Handy mit der LEGO Control+ App.
- Öffnet die Control+App und wählt euer 42140 Transformationsfahrzeug aus
- Verbindet euch per BT
- 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
- Auf dem Display werdet ihr aufgefordert eine neue Firmware zu installieren mit „weiter“ gehts dann los
- Firmware wird installiert
- 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!
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)
Oder Google Chrome für iOS. 🙂
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
Hi,
Gibt es auch ein Programmcode für die Verwendung mit einem XBox Controller?
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
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 🙂
wirklich sehr coole Anleitung. ich finde den Haken allerdings auf der Seite auch nicht mehr und kann nur die Firmware ohne Programm übertragen.
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