Pybricks für LEGO Control+ Technic Hub geht in Public BETA

Pybricks bietet eine breite LEGO Powered Up Unterstützung. Auch Spike Prime Sensoren werden bereits unterstützt.

Pybricks
Pybricks (Screenshot)

Bisher war ein großer Kritikpunkt bei den LEGO Boost Sets, dass die Programme nicht wie bei LEGO Mindstorms auf dem Hub gespeichert werden konnten. So wird sowohl zum Programmieren als auch zum Ausführen der Programme eine dauerhafte Bluetooth-Verbindung benötigt. Das gilt auch, wenn man die Programmieroptionen der LEGO Powered Up App nutzt.

Dieses Problem wird durch Pybricks, das seit kurzem in der Public Beta ist, gelöst. Es ist nun möglich, ein Programm, das in der Programmiersprache Python geschrieben wurde, auf dem Technic Hub dauerhaft zu speichern. Nur zur Entwicklung des Programms und zum einmaligen Hochladen, wenn das Programm fertig ist, wird eine Bluetooth-Verbindung (BLE) benötigt.

Pybricks Public Beta (Screenshot)
Pybricks Public Beta (Screenshot)

Programmierung über das Browser-Fenster

Die Programmierung erfolgt im Webbrowser. Dort gibt es ein Fenster, um den Code einzugeben, ein Fenster mit der Dokumentation und ein Fenster mit einer Konsole, an die man während der Entwicklung Text vom Hub aus senden kann.

Es gibt natürlich durch die Hardware einige Einschränkungen. Der Hub hat keinen Bildschirm, um etwas anzuzeigen und keine Tasten für ein Menü. Zudem kann nur jeweils ein Programm dauerhaft auf dem Hub gespeichert werden.

Pybricks Beta: Breite Powered Up Unterstützung

Da es sich um eine Betaversion handelt, funktioniert noch nicht alles. Man benötigt eine Vorabversion des Google Chrome Browsers zum Programmieren, die internen Gyrosensoren des Hubs werden noch nicht unterstützt. Man kann Bluetooth nicht im eigenen Programm nutzen und die Versionen für den Move Hub aus den Boost Sets und den „normalen“ Hub werden nachgereicht. Nichtsdestotrotz werden schon alle Powered Up Motoren, die LEDs, der Farb- und Abstandssensor und alle Sensoren, die im SPIKE Prime-Set enthalten sind, unterstützt.

  1. Also erst mal Glückwunsch zum ersten Artikel, ich wünsche euch eine produktive Zusammenarbeit 😉

    Ich finde die Entwicklung von pybricks super und habe auch schon ein wenig damit rumgespielt. Momentan fehlt mir aber vorallem irgendwie die passende, praktische Anwendung. Alles, was ich hier haben, hat irgendwie Räder und möchte „wohin fahren“, das geht autonom nicht so richtig gut.

    Für Freizeitparks, Beleuchtungen, Gleisanlagen/Schranken, Parkhäuser, Aufzüge u.Ä. sehen ich aber schon so enige Anwendungsmöglichkeiten.

    1. Danke 😀 ich bin auch gespannt ob dieser Artikel hier funktioniert.
      Mir würden spontan ein autonomes Auto oder ein Einparkassistent einfallen. Aber bei Fahrzeugen ist es natürlich lustiger sie selbst zu steuern. Das wird von pybricks ja leider nicht oder noch nicht unterstützt.
      Ich denke als nächstes werde ich einen Bahnübergang etwas verfeinern. Es ist auch praktisch, dass man nicht mehr die Begrenzung von maximal 4 Hubs pro Smartphone hat. Für eine Beleuchtung, die nur leuchten soll, wird die Technic Batteriebox aber günstiger sein vermute ich. Wobei die Preise für die normalen Hubs bei bricklink momentan ja auch im Keller sind.

    2. Naja, so ein Gefährt, dass allein ein wenig zufällig durch die Gegend düst und dank Abstandsenor nicht gegen Hindernisse fährt oder nicht vom Tisch fällt ist eigentlich immer ein nettes kleines Projekt.
      Sind die Gyros im Technic-Hub eigentlich genau und schnell genug, um selbstbalancierende Roboter zu bauen (à la Segway).

      Das ist jedenfalls eine coole Entwicklung, die für manche Basteleien einen teuren Spike Prime oder Mindstorms überflüssig machen kann.

      1. @Tcm0
        Ja, für einfache Lichter würde ich das auch nicht nehmen, ich hatte schon was dynamischeres im Sinn. Schranke + blinkende Signale, flackerndes Feuer, blinkende Werbung,… sowas.

        @tomatentheo
        Jaaaa, das kann man mal machen. Aber auch nicht immer wieder. ^^
        Vielleicht mal sowas wie einen Greifer mit Abstands-/Farbsensor in der Zange testen, der dann automatisch zugreift. Könnte man in Richtung Müllabfuhr, 8868 B-Modell, Container-Kran mit Farbsortierung oder so ausbauen…

        Ich kenne ja jetzt nicht alle Befehle auswändig, es scheint mir aber so zu sein, dass die Umsetzung von Lego für SPIKE ein wenig mehr lebenserleichternde Funktionen eingebaut hat, wait_for_new_color Event beim Sensor zum Beispiel. Sowas ist schon angenehm 😉

        1. Sowas kann man sich aber auch schnell selbst zusammen schreiben, notfalls als Funktion. Ungefähr so könnte das aussehen:
          Farbe = colorSensor.color()
          while Farbe == colorSensor.color():
          pass

          Man könnte natürlich auch eine kurze Zeit warten anstelle von pass, das dürfte etwas akkuschonender sein.

        2. Kann gut sein, das Lego bereits ein paar Komfortfunktionen eingebaut, aber wie Tcm0 schon schrieb, kann man das ja prima mit einer While-Schleife oder einem ähnlichen Konstrukt umschreiben. Die „Abkürzung“ macht im Hintergrund auch nichts anderes.
          Letztendlich ist das Projekt aber auch noch Work in Progress. Evtl. kommt dieses oder ähnliches ja noch rein.

  2. Muss man dazu die Firmware das Hubs überschreiben oder größere Änderungen vornehmen? Und falls es schief geht, bekommt man den Hub recht einfach wieder in den Ausgangszustand zurückgesetzt? Danke!

    1. Man muss einmal am Anfang eine neue Firmware draufspielen und dann immer wenn man ein Programm dauerhaft speichern möchte.
      Da die Geräte einen „Fallback“ Modus haben sollte es keinen dauerhaften Schaden geben. Um die originale Firmware wieder draufzuspielen muss man die mittlere Taste so lange drücken bis die LED in einer rot-grün-blau Sequenz leuchtet und dann den Hub mit der Powered Up App oder der Control+ App verbinden.

    2. Man muss eine alternative Firmware aufspielen. Der Ausgangszustand soll sich mit der Lego App wieder herstellen lassen.
      Aber das ist alles noch Beta und natürlich ohne Gewähr.

  3. Ich finde das Projekt spannend und verfolge es weiter.
    Mein Ziel wäre:
    – PowerUP Hub No. 4 benutzbar
    – koppeln mit PowerUP-Fernbedienung

    Ich will damit flexibler meine Züge steuern. Zb mit anderen Motoren als den Zugmotor

    Zurzeit nutze ich die App als Mittler zwischen Fernbedienung und Hub. Finde umständlich. Der direkte Weg ist mir lieber.

  4. Die Masse der Anwender wird wohl schon voll des Dankes sein, wenn sich Lego oder ein Entwickler erbarmt und eine simple Programmierung für das Zusammenspiel zwischen Motor und Fernbedienung implementiert.

    Ich würde zum Beispiel erwarten, dass die Lego-App dem Powered-Up Hub im Zusammenspiel von Fernbedienung, 10277 Krokodil und L-Motor beibringen kann, dass die Geschwindigkeit stufenweise geschaltet wird – auch ohne App.

    Wozu ist der ganze Programmierkram gut, wenn die grundlegendsten Funktionen, die jeder Laie haben will nicht geliefert werden. Das ist ja wie im richtige Leben. 😀

    Da muss eine Funktionstaste sein: „Hub für Krokodil mit L-Motor und Fernbedienung aktivieren.“
    Auf „senden“ drücken. Fertig.

    Alles Andere ist Kartoffelsalat.

    1. Man sollte dem ganzen Zeit lassen. Das ist so wie ich das verstehe ein Communityprojekt von freiwilligen Entwicklern, die nichts dafür bekommen. Fernbedienungen werden wohl (hoffentlich) in einer zukünftigen Version unterstützt aber das braucht leider Zeit.
      Ich finde allerdings, dass man damit schon eine ganze Menge machen kann

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