• Herzlich willkommen!

    Das Team von »Doctor Brick« heißt Euch herzlich willkommen und wünscht Euch viel Spaß hier!
    »Doctor Brick« ist eine anerkannte Community (RLOC) für erwachsene LEGO Enthusiasten, auch AFOLs (= Adult Fans Of LEGO) genannt.
    Wir können uns hier über alle Belange des LEGO Hobbys austauschen wie z.B. Set- und Teilefragen, Vorstellung und Rezensionen von Legobauten.
    Bitte beachtet die Nutzungsbedingungen und den Verhaltensleitfaden.

Raspberry Pi Build HAT in Zusammenarbeit mit LEGO

GBCPeter

Herr der Bälle
Teammitglied
Registriert
21 Apr. 2012
Beiträge
3.405
Ort
Wuppertal
Zur Info. Der Prozessor, der auf dem Hat Board ist, ist der gleiche der auch in der Raspberry Pi Pico Platine werkelt.
Aber Interessanter wäre zu wissen welche Motortreiber verbaut sind ( Aber das werden wir erst erfahren, wenn man eine Platine in den Händen hatte.)
 
Zuletzt bearbeitet:

Lok24

Elektronikbahner
Registriert
11 Sep. 2019
Beiträge
1.451
Zur Erweiterbarkeit:
Wenn ich die Doku zum seriellen Protokoll richtig überblicke kommuniziert die Platine über den Seriellen Port ,it dem PI.
In der Aufsteckvariante kann man daher auch nur einen Seriellen Port verwenden (Hat der PI mehrere ?)
Einerlei, die Frage wäre auch ob die Bibliothek mit anderen serielle Ports des PI arbeitet, sofern vorhanden.
Eben, ein völlig anderes Thema. Das interessante an der Lösung ist ja, dass man null HW-Kenntnisse, Kabel oder Lötklben braucht (in der LEGO-Welt gerne als "Gefrickel" bezeichnet)
Und die SW (Bibliotheken) ist offenbar auch genau darauf ausgerichtet.
Wer mehr will muss das - wie schon lange möglich, Du gibst ja immer wieder Tipps dazu - einfach alles selber machen.
 

Gimmick

Stammuser
Registriert
1 Okt. 2018
Beiträge
358
6 Ports, 10 Ports.... 14+ ports, höre ich mehr? 14+ zum Ersten... :D
14*~1A bei 9V -> 126 W? :oops: Kauft euch 3 bis 4 Buwizz. Oder direkt 6 bis 8 zum Tauschen und Laden :D

Der HAT für den Raspb. ist denke ich nur für diejenigen interessant, die sowieso Gefallen am Raspb. finden. Momentan fallen mir auch mehr Anwendungsfälle ein, bei denen die Lego-Komponenten den Raspb. erweitern und nicht umgekehrt. Selbst für Gamepads wurden ja, meine ich, schon einfachere Lösungen gezeigt, mit kleineren Boards.

Was mir spontan einfallen würde:
Balldurchsatz-Zähler mit einer Kamera für GBC
Werbung/Party-LKW mit Display + Lautsprecher :D
Lego "Schlitten" mit Kamera, um Lego-Städte in unzugänglichen Bereichen anschauen zu können
...

Einen Vorteil, wenn es nur um einfaches Steuern/Bauen geht, sehe ich da nicht.
 

Lok24

Elektronikbahner
Registriert
11 Sep. 2019
Beiträge
1.451
Der Vorteil ist nur gegeben, wenn man, wie Du schriebst, auch andere Dinge wie Kamera oder Lautsprecher nutzen will oder die Stromversorgung anders lösen. Oder eine andere Steuerung wie Gamepads oder Fernsteuerungen einsetzen oder das ganze via App konfigurieren will, oder spezielle Displays etc anbaut.
Ansonsten liegt ein technic-Hub derzeit in D bei 45 €, billiger wirds mit dem HAT auch nicht.
 
Zuletzt bearbeitet:

HUWI

Papa Schlumpf
Registriert
8 Jan. 2018
Beiträge
5.472
Ort
Bochum
Im meinem Roadtrain habe ich ja einen Pi drin, über den ich auf zwei Monitoren die Schlümpfe abspiele. Seinen Strom bekommt er von einem Lipo mit Stepdownmodul.

Mit entsprechenden Motortreibern wäre das auch mit PF schon gegangen, wenn der Pi in die Zugmaschine gekommen wäre. Ein weiterer Vorteil wäre die höhere Reichweite gegenüber BT.

In Verbindung mit einer Kamera könnte ich so mit dem Truck durch die Halle fahren und dabei am Platz sitzen bleiben, wie ein Drohnenpilot...

FPV heißt das glaube ich.
 

tsi

ThomaS, Tech-Admin
Teammitglied
Registriert
11 Mai 2013
Beiträge
2.651
Hi,

es gibt jetzt für 25$ eine Platine zum Aufsetzen auf den Raspberry, sodaß man 4 Motoren oder Sensoren betreiben kann - mit den Original-LEGO-Buchsen
Die Auslieferung beginnt ja erst Ende des Monats.

habe mir jetzt so einen "Build HAT" besorgt und möchte mal so nach und nach meine Erfahrungen schildern:

Zuerst einmal zu meiner Ausstattung:

* Raspberry Pi 4 Model B 4GB RAM mit 1.5GHz 64-bit Quad-core CPU

1639934111727.png

Das ist im Prinzip nichts anderes als ein Mini-PC mit allen Anschlüssen für externe Geräte via USB, Monitore und Zusatzkarten.
Dieser wird bei mit von einer 32 GB Micro SD Karte mit Raspbian Linux 10 gebootet.

Aufgestockt wird dieser Computer jetzt durch ein Raspberry Pi Build HAT Modul. Die Karte laesst sich einfach aufstecken.

1639934626062.png

Für die gesamte Einheit wird ein spezielles kräftigeres Netzteil benötigt, welches an die Zusatzplatine angeschlossen wird und auch die Stromversorgung des eigentlichen Raspberry 4 mit übernimmt. Auch an die Ports angeschlossene LEGO Geräte (z.B. Sensoren und Motoren) werden hierüber mit Strom versorgt. Bei mir leistet die Raspberry Pi Build HAT Power Supply diesen Dienst:

1639934979241.png

Bei mir ist desweiteren ein normaler Monitor mit Micro HDMI-Kabel und eine normale Tastatur/Maus via USB angeschlossen.
Ein passendes Gehäuse für Raspberry und Build HAT mit passenden Öffnungen für alle Anschlüsse scheint es leider noch nicht zu geben.

Soweit alles relativ unproblematisch.

Spätestens jetzt ist man jedoch auf weiterführende Dokumentation angewiesen.
Hier ist folgende URL erste Anlaufadresse: https://buildhat.readthedocs.io/en/latest/ und zeigt auch schon das erste Problem:
Das "Build HAT" ist neu, die benötigten Python-Bibliotheken und die Dokumentation dafür gefühlt noch in der Entstehung bzw. Weiterentwicklung. Letztes Update war gerade vor ein paar Tagen. Die Doku sagt dazu:

1639937164139.png

Zuerst gilt es die aktuellen Python-Bibliotheken für den "Build Hat" auf dem Raspberry zu installieren und die Schnittstelle zwischen dem "Build Hat" und dem Raspberry PI zu konfigurieren: Beides ist sehr gut im "Getting stated"-Guide dokumentiert und funktionierte bei mir auf Anhieb.

Ich habe das Glück dass ich (bzw. meine Frau) gerade testweise einen "Spike Prime" Baukasten zur Verfügung habe und damit u.a. Motoren und Sensoren zum Testen bereit liegen. Die Doku gibt aber auch Auskunft über weiteres kompatibles LEGO-Zubehör.

Für die Programmierung kann "Thonny" genutzt werden, das ist eine einsteigerorientierte Python-Programmierumgebung, in der sich zahlreiche Programmierbeispiele direkt ausprobieren lassen.

Die Library gibt Auskunft über zahlreiche Befehle zum Auslesen und Steuern von u.a. Sensoren und Motoren, ist aber m.E. noch weit davon entfernt vollständig zu sein. Aber: Schnelle Erfolge sind damit machbar. Meine Tochter konnte damit nach kurzer Zeit mittels Farbsensor verschiedene Motoren ansteuern. Ich auch.

Dazu aber zu einem späteren Zeitpunkt mehr, Fortsetzung folgt.

:cool1:

Gruß
ThomaS
 
Zuletzt bearbeitet:

tsi

ThomaS, Tech-Admin
Teammitglied
Registriert
11 Mai 2013
Beiträge
2.651
Hi,

kommen wir zum ersten Test:

Medium Motor 45603 mit Anschluss an "Port A"

45603_prod_TECHNIC_Medium_Angular_Motor_01_200.png


Folgender Code zeigt eine kurze Demonstration welche Möglichkeiten es aktuell zur Ansteurung dieses Motors mittels vordefinierter Befehle gibt:

Python:
from signal import pause
from buildhat import Motor
import time

motor = Motor('A')

def handle_motor(speed, pos, apos):
    print("Motor", speed, pos, apos)

motor.when_rotated = handle_motor
motor.set_default_speed(50)

print("Run for degrees 360")
motor.run_for_degrees(360)
time.sleep(3)

print("Run for degrees -360")
motor.run_for_degrees(-360)
time.sleep(3)

print("Start motor")
motor.start()
time.sleep(3)
print("Stop motor")
motor.stop()
time.sleep(1)

print("Run for degrees - 180")
motor.run_for_degrees(180)
time.sleep(3)

print("Run for degrees - 90")
motor.run_for_degrees(90)
time.sleep(3)

print("Run for rotations - 2")
motor.run_for_rotations(2)
time.sleep(3)

print("Run for seconds - 5")
motor.run_for_seconds(5)
time.sleep(3)

print("Run to position -90")
motor.run_to_position(-90)
time.sleep(3)

print("Run to position 90")
motor.run_to_position(90)
time.sleep(3)

print("Run to position 180")
motor.run_to_position(180)
time.sleep(3)

print("Run for 5 Seconds with speed -50")
motor.run_for_seconds(5, speed=-50)

print("Run for 5 Seconds with speed 50")
motor.run_for_seconds(5, speed=50)


Eingefügt in Thonny ...

1640028595000.png

... lässt er sich mittels grünem Pfeil direkt starten und der Motor zeigt was er kann.
Beim ersten Start dauert es noch einige Sekunden bis das Programm anfängt, da die Firmware noch geschaufelt werden muss.
Beim zweiten geht's aber direkt los.

Ein Test mit Boost Motor 26913 war auch erfolgreich
(EDIT: Jedes Gerät hat eine eindeutige Gerätekennung die ausgelesen werden kann, klappt bei diesem Motor nicht)

1640029656237.png

Jetzt schließe ich beide Motoren gleichzeitig an Port A und B an.
Mit folgenden Befehlen kann ich sie jetzt synchron ansteuern:

Python:
from buildhat import MotorPair

pair = MotorPair('A', 'B')
pair.set_default_speed(20)

print("Run both motors 2 rotations")
pair.run_for_rotations(2)

print("Run both motors 1 rotation, left motor with speed 100, right one with speed 20")
pair.run_for_rotations(1, speedl=100, speedr=20)

print("Run left motor to position 20, run right motor to position100, both with speed 20")
pair.run_to_position(20, 100, speed=20)

(EDIT: hier sieht man ein Beispiel, welches in meinen Augen für unnötige Komplexität sorgt: Die Parameter speedl/speedr. Die Ports sind eindeutig mit Buchstaben A/B/C/D bezeichnet und werden mit anderen Befehlen auch damit angesprochen. Hier kommt jetzt auf einmal left/right zum Einsatz ...)

Soweit doch ganz einfach, oder?

Fortsetzung folgt.
Wenn weitere Befehle zur Motorsteurung bekannt werden, versuche ich sie oben zu ergänzen.

Gruß
ThomaS
 
Zuletzt bearbeitet:

tsi

ThomaS, Tech-Admin
Teammitglied
Registriert
11 Mai 2013
Beiträge
2.651
Hi,

neuer Tag, neuer Versuch. Heute mit dem Farbsensor #45605.

45605_prod_TECHNIC_Color_Sensor_01_200.png

Solange man nur Sensoren an das "Build HAT" anschliesst würde auch das normale Raspi-Netzteil reichen, sagt die Doku.
Habe ich jetzt nicht getestet, aber lass ich mal so stehen.


Die Doku sagt, dass der Farbsensor acht verschiedene Farbtöne erkennen kann.
Nur welche?

Schauen wir uns mal ein Programmbeispiel an:
Python:
from buildhat import ColorSensor

color = ColorSensor('C')

print("Color", color.get_color())

In meinem Fall liegt der Sensor (an Port C angeschlossen) vor meiner schwarzen Tastatur und spuckt "black" aus.
Prima, aber welche Farben erkennt er? Darüber steht zumindest an dieser Stelle nichts in der Doku.

Das ist doof. Denn ich kann auch bestimmte Farben abfragen und z.B. auf "black" und danach auf "white" warten:

Python:
from buildhat import ColorSensor

color = ColorSensor('C')

print("Waiting for color black")
color.wait_until_color("black")
print("Found color black")

print("Waiting for color white")
color.wait_until_color("white")
print("Found color white")

"black" und "white" tauchen als Programmierbeispiel auch in der Doku auf. Aber keine anderen.
Welche anderen sind möglich? Versuch macht kluch:

Python:
from buildhat import ColorSensor

color = ColorSensor('C')

while True:
    c = color.wait_for_new_color()
    print("Found new color", c)


Ein kleiner Test mit verschiedenen LEGO-Steinen ergibt bisher folgende Rückgabewerte:
cyan. black, red, white, green, yellow, violet, blue (EDIT: violet & blue ergänzt)

Fehlen also noch zwei, die bisher bei mir nicht erkannt wurden.
Ohne Kenntnis dieser Werte kann ich die auch nicht abfragen.


Die Doku wurde mit Stichtag 21.12.2021 aber wieder überarbeitet.
Es passiert also was und ich bin guter Dinge.


Von Conrad-Elektronik ist ein schönes anschließbares Gerät zu mir im Anmarsch auf das ich mich schon freue.

:)

Es geht also weiter.

cu
ThomaS

Python:
# abschalten geht natürlich auch  ;-)
color.off()
 
Zuletzt bearbeitet:

Blechtaler

Urgestein
Registriert
29 Apr. 2017
Beiträge
1.433
hast du eine Lego-Farbtabelle? hat doch mal einer ne Platte aus 2x4er Steinen in allen Farben gehabt...
aus dem RGB-Farbwürfel fehlen noch blau und magenta (lila).

erkennt er z.B. auch Helligkeit oder ist es möglich auch (grob) den RGB-Wert direkt auszulesen?
 
  • Like
Reaktionen: tsi

gatewalker

Urgestein
Registriert
7 Okt. 2018
Beiträge
1.765
Ort
Niederösterreich Bezirk Zwettl
In Lego Spike werden Magenta, Blau,Cyan, grün, Gelb, Rot, weiß, schwarz und "keine Farbe" erkannt
"Keine Farbe" wird teilweise an Grenzflächen zweier benachbarter Stein in den zuvor genannten Farben erkannt
1640119848189.png

Edit:
in meinen Versuchen hat sich herausgestellt dass bei bei lime-Steinen grün erkannt wird und orange Steine hab ich benutzt um "keine Farbe" zu erzeugen
 
Zuletzt bearbeitet:

Lok24

Elektronikbahner
Registriert
11 Sep. 2019
Beiträge
1.451
Kannst Du in die importierte Datei "ColorSensor" schauen, da müssten die drinstehen.
 
  • Like
Reaktionen: tsi

tsi

ThomaS, Tech-Admin
Teammitglied
Registriert
11 Mai 2013
Beiträge
2.651
Hi,

Kannst Du in die importierte Datei "ColorSensor" schauen, da müssten die drinstehen.

:facepalm: natürlich ein Volltreffer (pi@raspberrypi:~/.local/lib/python3.7/site-packages/buildhat/color.py).
Habe "blue" und "violet" oben im Sensorartikel ergänzt.


erkennt er z.B. auch Helligkeit oder ist es möglich auch (grob) den RGB-Wert direkt auszulesen?

Ja. Mal ein wenig mit dem Sensor herumgewuselt:

1640277595437.png

Von Conrad-Elektronik ist ein schönes anschließbares Gerät zu mir im Anmarsch auf das ich mich schon freue.

Ist heute eingetroffen und nehme ich mir als nächstes vor :cool1:

Passend zur gerade erschienenen Buildhat-Bibliothek 0.5.7 wurde auch wieder an der offiziellen Doku herumgeschraubt, es passiert also laufend was & das ist gut.


Gruß
ThomaS
 
Zuletzt bearbeitet:

Blechtaler

Urgestein
Registriert
29 Apr. 2017
Beiträge
1.433
Sorry dass ich diesen alten Thread nochmal ausgrabe, aber ich hab letztens den Pi mit HAT für Ldraw gebaut, hat den noch wer und kann das kontrollieren?
rpihat.jpg
 
Oben