AdmiralStein
08.08.2019, 22:16

+442099: Zum Bluetooth-Koppeln des Hubs Motoren anschließen nicht vergessen...

Ganz schlau dachte ich mir: Bevor ich den 42099 aufbaue und dann frustriert feststelle, dass mein Smartphone (Samsung, 2017 auf den Markt gekommen, aber eher ein Low-Cost-Modell) damit nicht klar kommt, teste ich die Elektrik erstmal ohne Auto.

Und hätte den Krempel beinahe wieder eingepackt und frustriert zurückgeschickt.

Control+-App läuft auf dem Phone, habe ich vor dem Kauf schon mal runtergeladen und gestartet. Mein Phone erfüllt alle technischen Voraussetzungen, die TLC auf seiner Website nennt. Insbesondere das wichtige Bluetooth 4.1. Die Kompatibilitätsliste ist natürlich ein Witz. Ein Milliardenkonzern stellt sein neues Technic-Flaggschiff vor (ok, Flaggschiff wird der Liebherr, aber für den gelten dieselben Anforderungen!) und die Liste der kompatiblen Smartphones enthält genau 13 Einträge. Da könnte man schon erwarten, dass die ein paar mehr Phones mal kurz testen. Wie wäre es mit den 50 aktuell gängigsten Modellen? Jeder Mitarbeiter hat ja eines in der Tasche und das sind bestimmt nicht nur diese 13 Modelle...

Los geht's! 6 Akkus in den Hub, Hub angeschaltet, am Smartphone Bluetooth angeschaltet und den "Technic Hub" versucht zu koppeln. Problem: Geht nicht. Noch ein paar Mal versucht. Geht immer noch nicht.

Hmm, vielleicht läuft das irgendwie anders. Also einfach mal die Control+-App starten.

So so, die App fordert fürs Funktionieren den Zugriff auf meinen Standort. Ähhhh. Why? Was soll der Mist jetzt? Aber was tut man nicht alles für ein bisschen Spaß. Zugriff erlaubt.

Hub nochmal eingeschaltet (wenn der nach dem Einschalten keine Kopplung bekommt, schaltet der sich ganz schnell wieder aus). Und siehe da: Ein Balken erscheint, der den Fortschritt des Verbindungsaufbaus anzeigt.

Ernüchterung: Der Balken füllt sich zwar ziemlich schnell grün - aber nur bis zur Hälfte. Denn wird er wieder geleert. Und nochmal bis zu Hälfte. Und wieder geleert.

Und dann macht die App gar nichts mehr. Man kann sie nur schließen, neu starten und das Ganze noch einmal probieren. Geht aber wieder nicht.

Geht mein Phone also doch nicht oder wie? Eine Fehlermeldung wäre nett. Was genau ist das Problem?

Zugegeben: Wenn man auf das Fragezeichen tippt, bekommt man Tipps: "Sind Batterien im Batteriekasten? Überprüfe die Verbindungen des Antriebskastens. Entferne dich nicht zu weit von deinem Modell."

Dass das Koppeln des Hubs (ohne eine Fehlermeldung...) letztendlich deshalb kommentarlos abgebrochen wird, weil man nicht die für das Modell vorgesehenen Motoren in der richtigen Reihenfolge angeschlossen hat, ist einfach nur dämlich. Wer hat denn diese App entwickelt? Mein Gott...

Läuft jetzt.

Also TLC, das üben wir nochmal:
1. Die Kompatibilitätsliste ist ein Witz.
2. Warum benötigt die App Zugriff auf den Standort?
3. Bei Problem -> Fehlermeldungen ausgeben, die das Problem benennt. Und nicht einfach nichts machen.

[image]



Gute Nacht.

Matthias



Thomas52xxx , , , schaeng gefällt das (4 Mitglieder)


40 vorhergehende Beiträge sind ausgeblendet

Alle anzeigen Immer alle anzeigen Beitragsbaum

Ruppie
17.11.2019, 16:32

Als Antwort auf den Beitrag von Lok24

Re: 42099: Zum Bluetooth-Koppeln des Hubs Motoren anschließen nicht vergessen...

Hallo,
die vollständige Geschichte, insbesondere für Anfänger ist ein klein wenig komplexer ?!
https://www.jaredwolff.co...luetooth-low-energy/#!

Oder bilde ich mir dies nur ein ?!

Gruß Marc



Lok24
17.11.2019, 16:46

Als Antwort auf den Beitrag von Ruppie

Editiert von
Lok24
17.11.2019, 16:46

Re: 42099: Zum Bluetooth-Koppeln des Hubs Motoren anschließen nicht vergessen...

Hallo,

da wird ja noch die Installation von bluez erläutert....

Ungefähr in der Mitte des Artikel findest Du den CONNECT Command, die UUIDs brauchst Du nicht und auch keine Notfication handles und auch kein hcitool.

Einfach einen Befehl mit "char-write-cmd" schicken,
"char-write-cmd 0x0e 0800810100510015"
Das rote ist der Port am Hub, das grüne die Geschwindigkeit.
Schon dreht der Motor.

Aber wie schon geschrieben, wenn DU eine Programmiersprache hast gibt es dafür Bibliotheken.
Dann schreibst Du einfach im Programm Hub1.motor("A",15)

Bitte bedenken: das hat mit BLE wenig zu tun, denn die Zeichenkette die Du da schickst ist das LEGO-Protokoll.

Aber wie schon geschrieben, wenn DU eine Programmiersprache hast gibt es dafür Bibliotheken.
Dann schreibst Du einfach im Programm Hub1.motor("A",15)


Grüße

Werner



Lok24
17.11.2019, 16:47

Als Antwort auf den Beitrag von Lok24

Editiert von
Lok24
17.11.2019, 16:47

--- (ohne Text)



Ruppie
01.01.2020, 18:19

Als Antwort auf den Beitrag von James1987

Re: 42099: Zum Bluetooth-Koppeln des Hubs Motoren anschließen nicht vergessen...

James1987 hat geschrieben:

Ich rede von einer Technic-Fernbedienung. Da nützt mir die Eisenbahn-FB wenig.


Hallo,
der Artikel ist schon älter, wie man sich mit wenig Aufwand eine Technik Fernbedienung bauen kann, kann ich dir erklären.
Voraussetzung wäre jedoch etwas Interesse an Elektronik und Mikrocontroller Programmierung.
Es genügen einsteiger Kenntnisse in C/C++ auf dem Level welches für Arduoino Programmierung genügend ist.
Beim Rest kann ich helfen.

frohes Neujahr , Marc



Lok24
01.01.2020, 18:54

Als Antwort auf den Beitrag von Ruppie

Re: 42099: Zum Bluetooth-Koppeln des Hubs Motoren anschließen nicht vergessen...

Hallo Marc,

Ruppie hat geschrieben:

der Artikel ist schon älter, wie man sich mit wenig Aufwand eine Technik Fernbedienung bauen kann, kann ich dir erklären.
Voraussetzung wäre jedoch etwas Interesse an Elektronik und Mikrocontroller Programmierung.
Es genügen einsteiger Kenntnisse in C/C++ auf dem Level welches für Arduoino Programmierung genügend ist.
Beim Rest kann ich helfen.


Schön mal wieder von Dir zu lesen, wie ist denn Dein Projektstand?
Welche der von Dir ins Auge gefassten Komponenten hast Du denn jetzt als sinnvoll herausgesucht?

Gutes Neues!

Werner



Ruppie
01.01.2020, 19:00

Als Antwort auf den Beitrag von Lok24

Editiert von
Ruppie
01.01.2020, 19:01

Re: 42099: Zum Bluetooth-Koppeln des Hubs Motoren anschließen nicht vergessen...

Hallo,

AdmiralStein hat geschrieben:



Dass das Koppeln des Hubs (ohne eine Fehlermeldung...) letztendlich deshalb kommentarlos abgebrochen wird, weil man nicht die für das Modell vorgesehenen Motoren in der richtigen Reihenfolge angeschlossen hat, ist einfach nur dämlich. Wer hat denn diese App entwickelt? Mein Gott...


Gebe ich dir Recht, mangelnde Bedienführung seitens LEGO in Bezug auf Usability, gleiches gilt für fehlende Wegbegrenzung / Trimmungen, welche vom Bediener justiert werden können , wie von RC Fernbedienungen gewohnt.

Lok24 hat geschrieben:
...
Ungefähr in der Mitte des Artikel findest Du den CONNECT Command, die UUIDs brauchst Du nicht und auch keine Notfication handles und auch kein hcitool.
Werner


Aber:
Zumindest in meinem Fall (Adafruit NnRf52840 Feather express/ Arduino) ist die Verwendung der UUID hilfreich, diese verwende ich als Filter beim SCANNEN nach dem Hub.
Die Verwendung der Notification auf der Characteristic bringt den Vorteil, nach dem Connect event automatisch eine Anschlussinformation zu erhalten:
Wenn auch derzeit schlecht dokumentiert :https://github.com/LEGO/lego-ble-wireless-protocol-docs/issues/10

Lok24 hat geschrieben:
...
Einfach einen Befehl mit "char-write-cmd" schicken,
"char-write-cmd 0x0e 0800810100510015"
Das rote ist der Port am Hub, das grüne die Geschwindigkeit.
Schon dreht der Motor.


Was ich nun auch gemerkt habe, aber:
Sofern du nicht Technic Hub sprichst, sind die Befehle offenbar für alle gleich, was vieles vereinfachen könnte.

Könnte, weil:
Wenn man Pech hat, verwendet LEGO auch beim BLE Binding der Fernbedienung eine ähnliche Anschlusskennung wie mit den Apps.
Interessant wäre, wenn jemand einmal eine Wireshark Protokollierung des BLE Datenverkehrs zwischen Fernbedienung und Hub hätte :-)

Lok24 hat geschrieben:
...

Aber wie schon geschrieben, wenn DU eine Programmiersprache hast gibt es dafür Bibliotheken.
Dann schreibst Du einfach im Programm Hub1.motor("A",15)


Ich habe mal gehöht, solche Bibliotheken fallen nicht vom Himmel, sondern werden erstellt.
Wenn du jemanden kennst der eine solche Bibliothek schon erstellt hat (Du?) wäre ein Link hilfreich
Ansonsten gebe ich dir recht:
Wenn ich meinem Sourcecode anderen übermitteln wollte, wäre es zweckmäßig hierfür die wesentichsten Dinge in Libs zu kapseln.Für den aktuellen Bastelstatus / Debugging ist das aber nicht praktisch ;-=



Grüße

Marc



Ruppie
01.01.2020, 19:31

Als Antwort auf den Beitrag von Lok24

Re: 42099: Zum Bluetooth-Koppeln des Hubs Motoren anschließen nicht vergessen...

Lok24 hat geschrieben:
Ah, verstehe.

Aber noch ist ja nur der 42099 am Markt, und da gibt es nur Vorwärts und Lenken.
(ob der allerdings schon auf die FB reagiert weiß ich nicht, und wenn bedient sich das vermutlich nicht gut)

Befürchte ich auch, weil:
Ich habe die App zum Rally Car mal mit Wireshark angesehen:
Die Lenkung wird Kalibriert, der Antrieb für die Lenkung wird mit einem Positionierbefehl gefahren, beispielsweise: 090081031107ee6400
Ich befürchte die Fernbedienung implementiert nur den "einfachen" Fahrbefehl.
Lok24 hat geschrieben:
...
Der Vorteil einer App ist die Konfigurierbarkeit. Wenn auch nicht immer bnötigt.


Es fehlen aber aktuell weiterhin Einstellmöglichkeiten, wie im RC Bereich meißt vorhanden:
- manuelle Feinjustierung der Mitten , oder 0 Stellung
- Servowegsbegrenzung:
...



Lok24
01.01.2020, 19:31

Als Antwort auf den Beitrag von Ruppie

Editiert von
Lok24
01.01.2020, 19:54

+1Re: 42099: Zum Bluetooth-Koppeln des Hubs Motoren anschließen nicht vergessen...

Hallo,

Ruppie hat geschrieben:

Aber:
Zumindest in meinem Fall (Adafruit NnRf52840 Feather express/ Arduino) ist die Verwendung der UUID hilfreich, diese verwende ich als Filter beim SCANNEN nach dem Hub.

Ich habe jetzt schon zwei Entwickler überzeugen können, auf das Scannen zu verzichten
Auf Ausstellungen hast Du Dutzende von Hubs auf wenigen Quadratmetern, da ist es sinnvoll, die MAC-Adresse des eigenen HUBs direkt zu adressieren.

Ruppie hat geschrieben:
Die Verwendung der Notification auf der Characteristic bringt den Vorteil, nach dem Connect event automatisch eine Anschlussinformation zu erhalten:
Wenn auch derzeit schlecht dokumentiert :https://github.com/LEGO/lego-ble-wireless-protocol-docs/issues/10

Aber auch dazu brauchst Du keine UUID, meine selbstgeschriebenen Python-Programme nutzen natürlich auch Notifications, sonst bekäme ich ja keine Daten vom Hub zurück eingelesen.

Ruppie hat geschrieben:

Was ich nun auch gemerkt habe, aber:
Sofern du nicht Technic Hub sprichst, sind die Befehle offenbar für alle gleich, was vieles vereinfachen könnte.

Sie sind auch für das Technic Hub gleich. Ich habe das alles ja schon im Mai und im September auf Ausstellungen vorgeführt, auch in Kombination mit dem technic-Hub, technic Motoren, SBrick, Fernbedienung, Move Hub usw.
So sieht das aus, es steuert sich entweder über den Game Controller oder über die LEGO Fernbedienung.

[image]



Ruppie hat geschrieben:
Könnte, weil:
Wenn man Pech hat, verwendet LEGO auch beim BLE Binding der Fernbedienung eine ähnliche Anschlusskennung wie mit den Apps.
Interessant wäre, wenn jemand einmal eine Wireshark Protokollierung des BLE Datenverkehrs zwischen Fernbedienung und Hub hätte :-)

Das geht auch über die Notifications, Du schickst
v.sendline("char-write-req 0x0c 0100") # enable notify
v.sendline("char-write-req 000b 0a004101000000000001") # notify on Port

Und wartest dann auf
"value: 05 00 45 " oder "value: 05 00 08 "

Ruppie hat geschrieben:
Wenn du jemanden kennst der eine solche Bibliothek schon erstellt hat (Du?) wäre ein Link hilfreich

Das habe ich hier schon öfter gepostet:
Für ESP-32 / Ardino
https://github.com/virantha/bricknil
Für js
https://github.com/nathankellenicki/node-poweredup

Ansonsten gibt es natürlich Brick Controller 2, und das macht eigentlich alles wunderbar.
Grüße

Werner



jopiek gefällt das


Ruppie
01.01.2020, 20:52

Als Antwort auf den Beitrag von Lok24

+1Re: 42099: Zum Bluetooth-Koppeln des Hubs Motoren anschließen nicht vergessen...

Lok24 hat geschrieben:

Hallo Marc,

Schön mal wieder von Dir zu lesen, wie ist denn Dein Projektstand?
Welche der von Dir ins Auge gefassten Komponenten hast Du denn jetzt als sinnvoll herausgesucht?

Gutes Neues!

Werner


Tag Werner,dir auch ein feines neues:

Projektstand ist 0.1:
Ich habe mich in die grundlegende Funktionsweise von:

-LEGO Wireless Protokoll
-Wireshark
- BLE Spezifikation

eingearbeitet und mir eine entsprechende Entwicklungsumgebung eingerichtet.
Ich verfolge momentan das Prinzip: "Keep it simple, if possible ."

[image]




Das Board auf dem großen 3,7V Lipo ist ein "Adafruit nrf52840 feather express" Board.
Im ersten Schritt brauche ich nur eine Basis als Gateway: "Andere Sachen" <---> BLE <--> LEGO HUB
Trick wäre, erst einmal alles weglassen was ich nicht zwingend brauche, und Räder nicht neu zu erfinden, es sei denn das "Rad" wäre für Hobby zu teuer im Einkauf.

Die vorhandenen Pins wären schon ausreichend um das Board als unmittelbare Basis für eine FB zu verwenden, kommt später
Es geht noch kompakter, aber dann können die fehlenden Resourcen auch einschlechter Kompromiss sein:Arduino NANO 33 BLE und ähnlich.

Das Board hat den Vorteil:
- Einen LIPO Bat Anschluss zu haben, nebst Ladefähigkeit über USB
- Sowohl einen Arduino Bootloader zu haben, Programmierung über Arduino, VS-Code, Plattform IO
- Auch einen "richtigen" J-TAG Debug Port zu haben, wenn man eine "professioneller" Umgebung braucht, etwa weil man unmittelbar das Nordic SDK verwenden will, oder muss.
Und: Debugging nur mit COM Port Text Nachrichten, ohne Unterstützung von "Breakpoints" kann mühsam sein, dafür braucht man jedoch auch einen Hardware Debugger und Anschlussmöglichkeit auf dem Board.

Das erste Projekt, Ziel wäre innerhalb des 1.Quartals .
"Man nehme das Top Gear Rally Car und steuere dieses, ohne bauliche Veränderung,mittels einer herkömmlichen RC-Fernsteuerung"

Das Grundkonzept ist fertig, die Kurzfassung ist:
Der RC - Empfänger wird an "meinem" Board angeschlossen.
Im Zweifel brauche ich noch einen "Step/UP oder Step/Down" Spannungsregler um beides mit einem Akku zu versorgen.

Warum ist das Konzept lohnenswert für mich:
- ich brauche kein Smartphone / Tablet
- alle notwendigen Justierungen werden unmittelbar an der FB vorgenommen
- Firmwareupdates am Gateway sind für Betrieb nicht zwingend , jedoch möglich

Das Ziel soll eine Lösung so nahe an "Plug and play" wie möglich sein.

Später:

- Bibliotheken bereitstellen
- Profile für unterschiedliche Fälle / Modell implementieren
- eine Oberfläche in Form eines Displays, bevorzugt von hier: https://4dsystems.com.au
auf Webserver oder Apps möchte ich zunächst verzichten, wir wollen diese ja hierfür nicht zwingend haben müssen
Ich würde Webserver aber stets einer Mobile app vorziehen , da Zielsystem unabhängig.
Oder: Bei Anwendung des Prinzips "KISS" auch beim Webserver, ist die Wahrscheinlichkeit gering, das dieser auf einem Endgerät in der Wahl des Anwenders nicht
funktioniert, zumindest wären die hierfür nötigen updatezyklen seltener. Ist aber Zukunft.

------> Open End und Vorschläge später willkommen.

Also:

Im Prinzip fertig bis auf:

- Modell bauen
- RC Steuerung anschließen
- bloß etwas programmieren

--- melde mich später, wenn haben fertig


Marc



gefällt das


Ruppie
01.01.2020, 21:50

Als Antwort auf den Beitrag von Lok24

+1Re: 42099: Zum Bluetooth-Koppeln des Hubs Motoren anschließen nicht vergessen...

Tag nochmal, wer die richtigen fragen stellt dem wird geholfen, fein das du hilfst

Lok24 hat geschrieben:

Hallo,

Das geht auch über die Notifications, Du schickst
v.sendline("char-write-req 0x0c 0100") # enable notify
v.sendline("char-write-req 000b 0a004101000000000001") # notify on Port

Und wartest dann auf
"value: 05 00 45 " oder "value: 05 00 08 "

1. Wo findet man die Doku dazu (habe ich in der Lego wireless spec was überlesen ?)
2. Was meint die Antwort: "value: 05 00 45 " oder "value: 05 00 08 "

Gesehen habe ich den Transfer auch im Wireshark der Lego app, konnte die mir aber nicht erklären

Lok24 hat geschrieben:
Hallo,
Für ESP-32 / Ardino
https://github.com/virantha/bricknil

Ich bin wieder dumm: Da steht was von Phyton und LINUX nicht von ESP32?!.
Gefunden habe ich auf die schnelle dies:https://github.com/corneliusmunz/legoino

Bezüglich Brik controller: Eine prima Referenz aber: Am Ende würde ich auf "gatewys" verzichten wo möglich.

Das mache ich dann beispielsweise wie folgt:

1: Einen open frei programmierbarer Gamecintroller mit "COM SLOT",etwa https://www.dfrobot.com/product-858.html

2: Als Kommunikationsmodul, nehmen wir:https://www.crowdsupply.com/macchina/superb
nicht billig: Aber einen vorhandenen Gamecontroller zu entkerrnen und neu aufzubauen ist mir zu fummelig
als Entwicklungsbasis für "nur ein Gerät" finde ich das nicht verkehrt.


PS:

Wie wäre dies für deine Projekte:https://www.amazon.de/Aerosoft-Eisenbahnsimulator-Controller-Raildriver-Desktop-Grau/dp/B006YTOGD8
--> Über USB an den Rasberry und mit BLE die Anlage und Züge steuern

Danke nochmals bis dann



gefällt das


13 nachfolgende Beiträge sind ausgeblendet

Alle anzeigen Immer alle anzeigen

Gesamter Thread: