Lok24
26.08.2020, 15:53

Editiert von
Lok24
27.08.2020, 08:42

+16Powered Up mit M5Stack Atom

Hallo zusammen,

heute möchte ich mal eine weitere Lösung für die bekannten Probleme mit Powered Up zeigen:

- kein Smartphone nötig
- Krokodil o.ä. lässt sich mit der FB regeln
- Zwei Motoren gegenläufig mit derselben Taste der FB
- Wenn es heute geht, geht es auch in 10 Jahren noch
- Plug and play (s.u.)

Das „Geheimnis“ ist ein kleiner Microprozessor, nur 3x3 Noppen groß.

Die Hardware

Es ist ein ESP32 „M5Stack ATOM Matrix“. Das Schöne daran: er hat oben eine 5x5 LED Matrix, und diese Fläche ist auch ein Taster.
Außerdem ist er genau 3x3 Noppen groß und grau ...

[image]



[image]



Das Testprogramm

Es handelt sich um ein c++ - Programm und nutzt die legoino-Bibliotheken von Cornelius Munz.
Ich habe das so gestaltet, dass der ATOM das Programm fest eingebaut hat, dennoch aber aus mehreren Optionen (Profilen) gewählt werden kann.



Die Idee

- Man überlegt sich eine Anwendung (z.B. FB mit Regelung für alle Motoren)
- Schreibt das Programm dazu (das gibt es als Beispiel auch zum Download)
- schreibt das fest in den Controller
- fertig

Ab dann macht dieser Prozessor nach dem Einschalten (1 sec) immer genau das und nur das.
(Bis jemand was neues reibschreibt, aber das muss man ja nicht….)

Dazu braucht er nur noch 5V, mehr nicht. Kein PC, kein SmartDevice, nichts von alledem. Vor allem: keine Ahnung was der überhaupt wie macht.

Und erweitert…

Im Video zeige ich wie man auch mehrere „Profile“ anlegen kann, also wie Remote und Hub agieren sollen, bei welchen Tastendrücken was wie passieren soll. Aber man könnte auch ein Profil „Haunted House“ oder „Karussell“ oder irgendwas anderes hinzufügen, in denselben Baustein.

Die Kosten

Die ATOM starten bei ca 6 $ beim Chinamann, der Matrix kostet da um 8$, meiner hat 16 € bei Bezug in D gekostet. Das war‘ schon.

In 10 Jahren …

… läuft das immer noch genauso, wenn nichts kaputtgeht (und man es sich verkneift, das LEGO Hub upzudaten….)

Für Entwickler

Man braucht
- die Arduino IDE
- die legoino-Bibliothek
- die ESP32-Bibliotheken
- einen PC

Das hat man in einer Viertelstunde zusammengesammelt, wenn man sich mittel bis wenig auskennt. Es gibt etliche Tutorials im Netz, da hab ich mein Weisheiten auch her. (habe aber länger gebraucht, da ich gar kein c++ kannte)

Plug and Play

Doch, schon.
Irgendwer (mit Ahnung)
- schreibt ein Programm („2 beliebige Motoren gegenläufig“)
- kauft den ATOM für x €
- schafft das Programm drauf (max. 5 Minuten Arbeit)
- und verkauft das Ganze für x +y € weiter

Der Empfänger steckt es an sein USB-Ladeteil, fertig.

Oder man hat in der Bekanntschaft jemanden der das kann. Wenn die Programme irgendwo vorliegen braucht man das nur zuammenzuklicken.

Ausblick

Was fehlt sind also Ideen, was man überhaupt programmieren kann und will und braucht, und Leute die des Ganzen mächtig sind.

Grüße

Werner

Ps:
Hier als Teaser mal das "Profil1", das ist schon sehr überschaubar....

void control1() {

int sstep = 10;
int sdelay = 400;
int vmax = 75;

if (FB.isLeftRemoteUpButtonPressed()) Speed = min(vmax, oldSpeed + sstep);
if (FB.isLeftRemoteDownButtonPressed()) Speed = max(vmax * -1, oldSpeed - sstep);
if (FB.isLeftRemoteStopButtonPressed()) Speed = 0;

if ( Speed != oldSpeed) {
TrainHub.setMotorSpeed(portA, Speed * 1);
TrainHub.setMotorSpeed(portB, Speed * -1);
oldSpeed = Speed;
disSpeed(Speed);
delay(sdelay);
}
}



Dirk1313 , RobbyRay , asper , hassel62 , cubo , MTM , Legoben4559 , aap134 , AdmiralStein , Ben® , Xris , Garbage Collector , tastenmann , freakwave , SirJoghurt , UncleTom gefällt das (16 Mitglieder)


39 vorhergehende Beiträge sind ausgeblendet

Alle anzeigen Immer alle anzeigen Beitragsbaum

Lok24
04.09.2020, 10:44

Als Antwort auf den Beitrag von ElTentakel

+1Re: Powered Up mit M5Stack Atom

Hallo,

ja, verstehe. Ich habe vielleicht keine glücklichen Begriffe gewählt.

Die "Profile" weisen auf bestimmte Sets, z.B. CityTrain, Krokodil, Haunted House, Karussell, Achterbahn etc.
Die "Konfiguration" weist auf die Art wie es zu bedienen ist, also z.B. mit oder ohne FB, bei Tastendruck etwas tun, oder Toggle etc.
Und die "Parameter" legen individuelle Einstellungen fest, also z.B. wie schnell sich das Karussell drehen soll. Oder wie lange.

Aber erstmal müsste man klären wie man das Sensor-Problem und das Verbindungsproblem mit legoino löst.



Phlox gefällt das


Phlox
05.09.2020, 11:23

Als Antwort auf den Beitrag von Lok24

Re: Powered Up mit M5Stack Atom

Hallo,
ich bin neu im Sektor powered up/ boost.
Den Personenzug gab es Weihnachten 2019 und jetzt gehts es mal ans Programmieren, bevor ein Boost ins Haus kommt. Leider muss dann immer die App laufen.

Ich suche nach einer Möglichkeit nur mit der Bluetooth Fernbedienung (also ohne App) neben dem Zugmotor (der auf Kanal A bereits mit + , - und Stop zu bedienen ist)
1. einen Farbsensor auf Kanal B auszuwerten und farbspezifisch Befehle auszuführen.
2. Weiter möchte ich die noch freie rechte Seite der Fernbedienung verwenden (3 Tasten, also + - und Stop), um 3 Weichen mit jeweils einem HUB 88009 per
Tastendruck umzuschalten.

Es wären also 4 HUBs (1 HUB im Zug, wobei Kanal B den Farbsensor erhält; und die 3 anderen bei den Weichen) anzusprechen.

Ist sowas möglich mit dem M5Stack Atom und entsprechender Programmierung? Oder verlange ich da zuviel von so einem Atömchen, oder von den verfügbaren Bibliotheken? Lautsprecher wären natürlich auch noch super....

Danke für jede Antwort, auch für vernichtende

Schöne Grüße

Phlox



Lok24
05.09.2020, 11:49

Als Antwort auf den Beitrag von Phlox

Editiert von
Lok24
05.09.2020, 12:26

Re: Powered Up mit M5Stack Atom

Hallo,

schöne Idee. Im Prinzip geht das alles.
Und ich weiß es nicht, bin mir aber sehr sicher: das geht auch mit dem Atom.

Aber:
Ich hatte im anderen Post (den Du ja gelesen hast) darauf hingewiesen, dass man das mit der derzeitigen legoino - Bibliothek nicht so einfach lösen kann.

Hier müsste man nochmal ein wenig "Jugend forscht" betreiben.
Mit andern Worten: es müsste mal jemand, der gut C++ kann, da drauf schauen.

Evtl fehlen da nur eine Handvoll Programmzeilen.



Ruppie
11.09.2020, 09:41

Als Antwort auf den Beitrag von Lok24

Re: Powered Up mit M5Stack Atom

Lok24 hat geschrieben:

Hallo zusammen,
- Plug and play (s.u.)
b]Plug and Play[/b]

/ZITAT]


Hallo Werner,
in Bezug auf "Plug and play" ist "OTA - Over The Air" . vieleicht auch einen Blick wert.
Einstieg findest du hier: https://www.youtube.com/watch?v=NNyTjNQBxTE

Die Idee: Nach kleiner Vorbereitung, kann man deinen ATom fest m Model verbaut lassen und macht Programmupdates über WLAN.
Das läßt sich sogar soweit automatisieren, das der Atom selbstätig auf einem Github nach updates sucht.

Im prinzip ist auch, wie beim LEGO Hub ein Update per BLE denkbar, meines wissens aber nicht mit Arduino , sondern hierfür nur über die ESpressif-Umgebung,

Für den Begin ist die Lösung per WLAN sicher ausreichend.
Der "Tick" ist, das der Programmierport in Arduino, dann nicht mehr ein COM Port, sondern die IP Adresse des ESP ist.
Einfach mal in den Link sehen wenn du magst.


Marc



Lok24
11.09.2020, 09:46

Als Antwort auf den Beitrag von Ruppie

Re: Powered Up mit M5Stack Atom

Hallo Marc,

vielen Dank, das ist mir bekannt, geht aber leider am Zweck vorbei.

Denn für WLAN brauchst Du die IDE und die serielle Verbindung, um einmalig SSID und Key einzurichten.
Also nichts für Plug & Play.

Grüße

Werner



ElTentakel
21.09.2020, 08:46

Als Antwort auf den Beitrag von Lok24

Re: Powered Up mit M5Stack Atom

Lok24 hat geschrieben:

Hallo,

ja, verstehe. Ich habe vielleicht keine glücklichen Begriffe gewählt.

Die "Profile" weisen auf bestimmte Sets, z.B. CityTrain, Krokodil, Haunted House, Karussell, Achterbahn etc.
Die "Konfiguration" weist auf die Art wie es zu bedienen ist, also z.B. mit oder ohne FB, bei Tastendruck etwas tun, oder Toggle etc.
Und die "Parameter" legen individuelle Einstellungen fest, also z.B. wie schnell sich das Karussell drehen soll. Oder wie lange.

Aber erstmal müsste man klären wie man das Sensor-Problem und das Verbindungsproblem mit legoino löst.


Ja, mir ist auch schon aufgefallen, das keine Callbacks unterstützt werden. Da ich insbesondere den Tacho Motor als Servo konfigurierbar hätte, ist das natürlich ein Deal Breaker. Auch ist ein ständiges Abfragen sehr ungenau.

Aber dennoch kann ich es ja mal bei Gelegenheit umsetzen, denn für mich wäre der Nutzen sehr groß endlich mal meine schweren Loks mit zwei Motoren auszustatten oder einen Tracked Racer ordentlich steuern zu können, ohne das beim Lenken gleich die 2. Kette blockiert. Auch Anfahrkurven zum schonen von Zahnrädern wären echt angenehm. Mir gehts halt eher um Mocs und RC Nachrüstungen als um bestehende Lego Sets.



Lok24
24.09.2020, 12:03

Als Antwort auf den Beitrag von ElTentakel

Re: Powered Up mit M5Stack Atom

Hallo,

ElTentakel hat geschrieben:

Ja, mir ist auch schon aufgefallen, das keine Callbacks unterstützt werden.

Bist Du als Stefx im legoino-chat unterwegs?

ElTentakel hat geschrieben:
Da ich insbesondere den Tacho Motor als Servo konfigurierbar hätte, ist das natürlich ein Deal Breaker. Auch ist ein ständiges Abfragen sehr ungenau.

Ist mir nicht klar, Du brauchst doch den Motor nur um x Grad nach links und recht bewegen, warum benötigst Du da eine Rückmeldung, was habe ich übersehen?

ElTentakel hat geschrieben:
Aber dennoch kann ich es ja mal bei Gelegenheit umsetzen, denn für mich wäre der Nutzen sehr groß endlich mal meine schweren Loks mit zwei Motoren auszustatten

Das habe ich gerade programmiert. Mal schauen was sich da ergibt.



ElTentakel
27.09.2020, 21:45

Als Antwort auf den Beitrag von Lok24

+1Re: Powered Up mit M5Stack Atom

Lok24 hat geschrieben:

ElTentakel hat geschrieben:
Ja, mir ist auch schon aufgefallen, das keine Callbacks unterstützt werden.

Bist Du als Stefx im legoino-chat unterwegs?


Nein - aber ich hab die Dokumentation gelesen

Lok24 hat geschrieben:
ElTentakel hat geschrieben:
Da ich insbesondere den Tacho Motor als Servo konfigurierbar hätte, ist das natürlich ein Deal Breaker. Auch ist ein ständiges Abfragen sehr ungenau.

Ist mir nicht klar, Du brauchst doch den Motor nur um x Grad nach links und recht bewegen, warum benötigst Du da eine Rückmeldung, was habe ich übersehen?


Ich weiß nicht, wann der Motor das Ziel erreicht habe - Für Schalter bzw. Prozesse ist das aber relevant. Servos sind nicht nur zum lenken da. Aber ich denke das Projekt würde vielen auch ohne garantierten Servoeinschlag sehr nützen - ggf. kommte es ja noch später.

Lok24 hat geschrieben:
ElTentakel hat geschrieben:
Aber dennoch kann ich es ja mal bei Gelegenheit umsetzen, denn für mich wäre der Nutzen sehr groß endlich mal meine schweren Loks mit zwei Motoren auszustatten

Das habe ich gerade programmiert. Mal schauen was sich da ergibt.


Ich habe die GUI zum einstellen fertig. Ich muss jetzt noch den Anmeldevorgang vollenden und die Motorfunktionen implementieren - und die passende GUI im Statusmodus. Ich finds sehr benutzar - sobald ein minimales Funktionsset fertig ist, melde ich mich noch mal. Das kann aber wieder ein wenig dauern .



Lok24 gefällt das


ElTentakel
30.09.2020, 15:52

Als Antwort auf den Beitrag von ElTentakel

Editiert von
ElTentakel
30.09.2020, 16:03

+4Re: Powered Up mit M5Stack Atom

So, ich habe jetzt ein erstes funtkionsfähiges Proof of Conzept:



OpenPowerBrick bei Github

Es ist alles andere als fertig oder schick, aber schon recht vielversprechend.

Mir ist beim drehen des Videos auch aufgefallen, dass die Status-Anzeigematrix gedreht ist .

Geplant sind noch die Unterstützung vom Control+ Hub. Wenn möglich sollen auch zwei PoweredUp! Hubs gleichzeitig gehen, aber ich hab so schon Probleme mit dem Pairing. Das muss erstmal stabilisiert werden. Der Versuch zwei Fernbedienungen anzuschließen ist jedenfalls grandios gescheitert - aber das probiere ich später noch mal.

Aber erstmal möchte ich den Code aufräumen (Modularisierung) und ggf. ein paar Motorfunktionen hinzufügen.

/Edit: Als grundlegende Erklärung:

Oben sind die Eingänge (Fernbedienung) und links die Aktoren (Motoren) - mit dem M5 Schalter drückt man die Statusfenster und die Eingänge durch. Mit der linken PU Controllerseite wählt man die Aktoren aus und dann kann man mit der rechten PU Controllerseite eine der bisher vier Funktionen wählen. Mit Hilfe des Stop Knopfes soll man später auch einen weiteren Parameter (z.B. Maximum, Winkel, Farbe, je nach Aktor/Eingang etc) steuern können.



Lok24 , Tad16o , Beobachter74 , Thomas52xxx gefällt das (4 Mitglieder)


ElTentakel
03.10.2020, 14:35

Als Antwort auf den Beitrag von ElTentakel

Editiert von
ElTentakel
03.10.2020, 14:40

Re: Powered Up mit M5Stack Atom

So, ich habe jetzt noch einen 8-Stufen Motor modus hinzugefügt und ein Release für alle erstellt, die einfach nur das fertige Binary flashen wollen:

https://github.com/ElTent...rick/releases/tag/v0.2

Ich habe das ganze mit einer Lok mit zwei Motoren getestet - die eine hat Stufenwahl Vorwärz, die andere Rückwärts: es funktioniert einwandfrei.



Gesamter Thread: