RP2040 Zero Grundkurs für das SequencerX Projekt.

  • Um Berührungsängste abzubauen möchte ich hier eine kleine Anleitung zum Bau und zur Inbetriebnahme eines Moduls starten. Das Modul erlaubt viele Funktionen und ist dadurch natürlich auch etwas komplex. Gedacht ist es zunächst als Ersatz für ein klassisches Multiswitch Modul.
    Basis ist hier das kleine RP2040Zero Board. Es gibt auch größere Boards mit mehr Anschlüssen.

  • Grundkurs Teil2 - wie kommt die Software auf den Chip?

    Der gelieferte RP2040 ist zunächst unbespielt, es muss eine Basissoftware oXs aufgespielt werden.

    dafür sind nur der Chip und ein USB-C Kabel notwendig

    Das Prozessorboard hat 2 Tasten. Das Board muss mit dem USB-Kabel verbunden werden und dann mit gedrückter "Boot" Taste an den Computer angeschlossen werden (also nicht erst anschließen!). Eine Extra Stromversorgung für das Board ist nicht erforderlich.

    Dann öffnet sich am PC ein neues Laufwerk mit der Bezeichnung "RPI-RP2":

    Die oXs Basissoftware hat Torsten veröffentlicht. Ich hänge sie hier oXs V1_5143+5144.zip noch mal an. Es gibt verschiedene Versionen, u.a. auch für die Parallelinstallation von 2 Modulen. Leider tragen alle Versionen den gleichen Namen, hier ist etwas Sorgfalt bei der Archivierung erforderlich...
    Die Software heißt oXs.uf2 und darf nicht umbenannt werden.

    Diese Datei muss jetzt einfach in das neue Laufwerk RPI-RP2 kopiert werden.

    dann rödelt der PC etwas und das Board wird installiert. Anschließend verschwindet das Laufwerk und das RP2040 Board fängt an zu blinken.
    Damit ist der Chip fertig zur Konfiguration.


    -wird fortgesetzt

    Viele Grüße Uwe

    22642153hl.jpg

    2 Mal editiert, zuletzt von ujessen (25. März 2024 um 19:16)

  • Grundkurs Teil3 - Konfiguration

    allein mit der Basissoftware ist das Board noch nicht funktionsfähig. Dem Chip muss noch erklärt werden, wo das Eingangssignal ankommt, welchen Typ das Signal hat, wie viele Ausgänge gesteuert werden sollen und was an den Ausgängen hängt (Servo oder LED). Dafür ist keine Programmiersprache erforderlich, das sind einfache kurze Zuweisungen. Allerdings muss ein sogenanntes Terminalprogramm auf den PC um dem RP2040 diese Befehle zuzusenden. Mit Terminalprogrammen werden die meisten hier keine Erfahrungen haben und auch ich sehne mich nicht zu ten Tagen mit Akustikmodem, Terminalprogramm und Compuserve zurück. Da gab es noch keinen Browser. Die Terminalprogramme sind auch alle etwas nerdy.
    Ich schlage hier als Programm die Arduino IDE vor. Da braucht man zwar mit dem "Serial Monitor" nur einen Bruchteil, es muss aber nicht viel eingestellt werden:

    Dafür das Programm Arduino IDE 2.32 herunterladen und installieren. Ich habe hier extra die Windows Variante genommen, läuft aber auch auf dem Mac :)

    Es werden dabei weitere Treiber installiert, dieses bitte bestätigen.
    Wenn alles installiert ist, das Programm bitte starten. Es läuft zunächst mit der englischen Oberfläche.

    dann auf "File" -> "Preferences" gehen:

    da kann dann die Sprache auf Deutsch geändert werden.

    jetzt kommt ein wichtiger Teil. Das Programm kennt die RP2040 Boards von Hause aus nicht. Dafür muss in den markierten Bereich für zusätzliche Boards ein Link eingefügt werden.
    Dieser ist es: https://github.com/earlephilhower…2040_index.json
    Da darf kein Komma fehlen....
    Wenn der Link kopiert ist, auf oK klicken

    Dann auf Werkzeuge -> Board -> und Boardverwaltung gehen:

    dann öffnet sich eine Auswahl für Zusatzboards:

    dort auf den gezeigten Eintrag gehen / Raspberry Pi Pico/RP2040 von Earle Philhower und auf "installieren" klicken.

    dann werden die zusätzlichen Boards installiert und die größte Hürde ist geschafft.

    Jetzt kann der RP2040 verbunden werden.


    -- Fortsetzung folgt

  • :moin::moin: Uwe,


    auch, wenn ich von Eurem Kaudawelsch nur die Hälfte verstehe, bin ich voll begeistert, was Du und Torsten da programmiert habt.

    Eine Anleitung (wie du sie hier machst)= ist wirklich super.

    Ich bleibe am Ball und wünsche Euch weiterhin viel Erfolg beim Programmieren, schreiben und basteln.


    Gruß und ein schönes Wochenende


    Markus

    Geht nicht, gibt`s nicht

    Gruß Markus



  • Grundkurs Teil 4 - Verbinden und Serieller Monitor

    Jetzt kann der RP2040Zero mit dem USB-Kabel an den PC angeschlossen werden. Eine zusätzliche Stromversorgung ist auch hier nicht erforderlich. Das folgende Konfigurationsbeispiel ist für mein Zero Board gedacht, andere Boards benötigen da andere Werte - das Prinzip ist aber immer gleich. Die Konfiguration kann auch jederzeit geändert werden.

    Wenn das Board verbunden ist, das Arduino IDE Programm starten.

    Dem Programm muss jetzt noch ein passender "Port" für die Kommunikation angegeben werden. Über "Ports" kommuniziert ein PC mit der Peripherie.

    Dafür "Werkzeuge" -> "Port" anklicken, unter serielle Ports steht ein COMx Port. Das kann COM3 aber auch COM11 sein. Diesen auswählen, er bekommt dann einen Haken. Wenn mehrere RP2040 im Bestand sind, können die alle unterschiedliche Ports haben.

    Dann muss noch das passende Board ausgewählt werden, das funktioniert meist nicht automatisch.

    Dafür wie in der Abbildung "Werkzeuge" -> "Board" -> "Pico/RP2040" -> "Waveshare RP2040Zero" auswählen

    jetzt muss nur noch kurz der serielle Monitor (das eigentliche Terminalprogramm) konfiguriert werden.

    Dafür den Monitor mit dem Klick auf die Lupe aufrufen

    in dem Monitor müssen nur 2 Parameter eingestellt werden (Pfeile!!)

    links auf sowohl NL als auch CR (new line und carriage return) und rechts auf 115200 Baud

    so muss das dann aussehen:

    dann kann man in die Eingabezeile des Monitors klicken und ENTER drücken, dann wird die Konfiguration des RP2040 angezeigt.


    Das Fenster des Seriellen Monitors kann einfach nach oben größer gezogen werden, das obere Fenster wird nicht benötigt.


    -- wird fortgesetzt

  • Grundkurs Teil5 - Grundkonfiguration

    nachdem bislang alles um den Verbindungsaufbau ging, geht es jetzt endlich an die Konfiguration des Boards. Es sind hierfür nur kurze Statements erforderlich wie "Eingang Tür1" und "Ausgang Tür2".
    Das Zero Board hat 23 Pins, davon sind 3 für die Spannungsversorgung zuständig. Von den restlichen 20 können 16 als Ausgänge konfiguriert werden und 4 (oder mehr, wenn man nicht so viele Ausgänge benötigt) als Eingänge. Nicht jeder Pin kann aber für jede Funktion genutzt werden.

    Bei einem neu konfigurierten RP2040 sind erst einmal alle Pins auf "255" gesetzt, das bedeutet abgeschaltet

    Zunächst muß ein Eingang für das Signal vom Empfänger definiert werden. Das oXs System kennt zwei Eingänge PRImär und SECundär, für S-Bus können beide genutzt werden. Für den moderneren F-Bus nur der PRImäre Eingang. Dieser passt aber nicht zu meinem Boarddesign daher habe ich S-Bus an dem SECundären Eingang gewählt. Der korrekte Eingangspin ist bei meinem Board die 29 der Befehl lautet also ganz einfach: SEC=29. Also Eingang sekundär an Pin29 . Damit ist der Eingang definiert.

    Im Eingabefenster des Seriellen Monitors muss man einfach diesen Befehl eingeben und mit ENTER bestätigen. Leider ist jede Zuweisung immer nur einzeln möglich, es geht also keine Gesamtkonfiguration.

    als nächstes wir der Ausgang für die Telemetrie (wenn gewünscht) eingegeben. Bei meinem Board Pin 28. Befehl ist TLM=28 (TLM für Telemetrie)

    um die Befehle endgültig in den Chip zu speichern muss abschließend noch der Befehl SAVE eingegeben werden:

    danach bootet der RP2040 neu. Wenn ich jetzt erneut ENTER drücke, wird die Konfiguration wieder geladen - aber nicht die neue. Dafür muss ich den seriellen Monitor schließen:

    und anschließend wieder öffnen:

    wenn dann in der Eingabezeile die ENTER Taste gedrückt wird, kommt die aktuelle Konfiguration

    und Eingang und Telemetrieausgang sind korrekt konfiguriert.

    wenn in der Eingabezeile ein Fragezeichen eingetippt und mit ENTER abgeschlossen wird, werden alle möglichen Befehle angezeigt. Also eine eingebaute Anleitung. Da ist auch ersichtlich, welche Pins z.B. für den Eingang genutzt werden können.


    -- wird fortgesetzt

  • Hallo Uwe,

    super Anleitung, da viele wahrscheinlich nicht so viele Erfahrungen im Umgang mit Prozessorboards haben. Mit Deiner Anleitung ist das für jeden machbar.:thumbup:

    Ich brauche bei mir den seriellen Monitor zwischendurch nicht schließen. Ich kann mir aber gut vorstellen, dass dies auf verschiedenen Rechnern unterschiedlich gehandhabt werden muss. Gelegentlich benötige ich nur einen Druck auf die Reset-Taste des RP2040, wenn die Verbindung zwischen Rechner und RP2040 Board nicht wieder automatisch nach Save zu Stande kommt. Was auf jeden Fall nach Save von Vorteil ist, ist es den Bildschirminhalt des seriellen Monitors zu löschen, damit man sich nicht die alten Ausgaben/Anzeigen ansieht.

    Gruß Holger

  • Grundkurs Teil6 - Telemetrie

    der RP2040 erlaubt umfangreiche Telemetrieaufgaben. Möglich sind mit dem oXs mehrere Spannungen, Strom, Temperatur, Lage, Gps, Druck und mehr. Bei meinem Board ist aber nur die Telemetrie von 2 Parametern vorgesehen, meist Bordspannung und Strom, möglich ist aber auch Bordspannung und Hydraulikdruck.
    Es gibt 4 mögliche Eingänge V(olt) 1 bis V(olt) 4 an die Pins 26-29. 28 und 29 sind ja schon belegt, bleiben also 2 übrig. V1 ist nur für die Bordspannung möglich und wird über den Sensor "VFAS" an den FrSky Sender übertragen. Den gleichen Namen hätte auch ein Original FrSky Sensor. Den Aufbau des erforderlichen Spannungsteilers habe ich ja schon beschrieben. Auf meiner Platine ist der Spannungsteiler für die Bordspannung an Pin 26 angeschlossen. Erforderlich ist also der Befehl V1=26 und ENTER

    Hier im Bild:

    Der RP2040 verdaut nur Spannungen bis 3,3Volt. Mit dem Spannungsteiler ist es ja kein Problem, höhere Spannungen anzulegen, übermittelt wird aber immer nur die Teilspannung. Dafür kann im Prozessor die Spannung wieder hochgerechnet und dann die echte Bordspannung übermittelt werden. Alternativ könnte die Spannung auch im Sender verrechnet werden. Bei einem Spannungsteiler von 4:1 wie in der Hardwaresektion beschrieben muß die Spannung mit dem Faktor 4 multipliziert werden. Dafür gibt es den Befehl "SCALE", für V1 dann SCALE1
    also für den Faktor 4 dann SCALE1=4. Für nicht ganzzahlige Werte ist z.B. 1.5 und nicht 1,5 einzugeben !!

    Die Telemetriespannung V2 ist fest für eine Stromtelemetrie vorgesehen (V3 und 4 sind da etwas flexibler) Die Stromsensoren geben ja auch eine Messpannung aus, diese wird dann für die Telemetrie verwendet.

    mit V2=27 wird die Stromtelemetrie an V2 aktiviert

    Details zum Stromsensor und den genauen Einstellungen folgen noch.

    Eine Besonderheit hat noch die verbaute LED. Die soll bei angelegter Spannung und fehlendem Signal rot blinken. Manche RP2040 blinken dann schon grün (das ist eigentlich für ein erkanntes Eingangssignal vorgesehen). Dann kann das Verhalten der LED invertiert werden,
    hierfür muss LED=I eingegeben werden (Wenn das wieder zurückgestellt werden soll LED=N)

    dann SAVE nicht vergessen und die Telemetrieeinstellungen sind fast komplett:

    Wichtig ist noch, dass das korrekte Protokoll für die Übertragung der Signale an den RP2040 gewählt ist. Möglich ist ja ein Betrieb mit verschiedenen Fernsteuersystemen.
    Für FrSky gilt für den Anschluss über S-Bus das Protokoll "S". Das ist auch die Voreinstellung

    hier zu erkennen. SPort ist der Name für den Telemetrieeingang bei FrSky.

    Sollte da etwas anderes stehen, muss PROTOCOL=S eingegeben werden. Natürlich mit SAVE abschließen.


    -- wird fortgesetzt

  • Grundkurs Teil6 - Telemetrie Fortsetzung

    zur Überprüfung der Telemetriewerte ist auch gar kein Einbau in das Modell und keine Fernsteueranlage notwendig.
    Es genügt ein kleiner Testaufbau.

    Hier wird einfach ein Akku mit 2S oder 3S an V1 und GND (z.B. von einem Servoanschluss) geklemmt. Die Spannung ist hier im Beispiel gemessen 7,79V
    Dann wird das Modul mit dem USB Kabel mit dem Rechner verbunden und das Arduino Programm gestartet.

    Im Serial Monitor wird dann der Befehl "FV" eingegeben und mit ENTER bestätigt. Hier ist kein SAVE erforderlich.

    Nach Ausführen des Befehls gibt der RP2040 am Bildschirm die angeschlossenen und aktivierten Telemetriewerte aus:

    Hier also die Spannung von 7,791 Volt. Das ist sehr genau und der Scale-Faktor von 4.00 passt gut.
    An den Eingang V2 ist ja noch nichts angeschlossen

    -- wird fortgesetzt

  • Grundkurs Teil6 - Telemetrie Fortsetzung

    jetzt geht es an den zweiten Teil der Telemetrie, die Messung des Stromverbrauches.
    Dafür werden preisgünstige ACS 712 Module verwendet. Die Module gibt es für 5A, 20A und 30A.
    Hier eine Symbolabbildung des Moduls :

    Das Modul benötigt eine Versorgungsspannung an GND und VCC und liefert je nach fließendem Strom eine Ausgangsspannung an OUT.

    Vorgesehen ist eine Versorgungsspannung von 5V, die Ausgangsspannung würde dann bis max. 4,5V betragen und das benötigt dann einen zweiten Spannungsteiler.
    Nach diversen Tests von Torsten laufen viele Module (aber leider nicht alle) auch mit 3,3V - und dafür gibt es die zwei Aufbauvarianten bei meiner Platine.

    Anschluss bei 5V Versorgung:

    die Platine wird mit 2 Spannungsteilern und dem 2poligen Stecker gebaut.
    Out kommt an V2, die 5V Spannung kommt z.B. von einem Servoanschluss oder dem S-Port Anschluss (bei dem wird eigentlich nur die Signalleitung benötigt)

    Anschluss bei 3,3V Versorgung:

    die Platine wird mit einem Spannungsteiler und dem 4poligen Stecker gebaut, der Anschluss des Sensors erfolgt komplett an diesen Stecker. Die Verbindung kann mit einem Servo-Patchkabel erfolgen - aber Vorsicht, der Anschluss an dem Sensor ist anders als bei einem Servo, die Signal und die Plusleitung (rot und orange) müssen am Stecker für den Sensor getauscht werden !!

    Hier sind die theoretischen Ausgangswerte der Sensoren.

    und das macht die Sache schwieriger. Bei 0 Ampere liefert der Sensor nicht 0mV - sondern die Hälfte der Versorgungsspannung also bei 5V dann 2500mV. Da ist es mit einem einfachen SCALE Faktor nicht getan. Grund für das Verhalten ist die Möglichkeit auch die Stromrichtung anzeigen zu können. Von 2,5V bis 4,5V ist die Richtung positiv, von 2,5V bis 0,5V negativ. Das benötigen wir zwar nicht, lässt sich aber nicht ändern.
    Aber auch hierfür hat der RP2040 eine Lösung, den Befehl "OFFSET". Hiermit wird der Versatz angegeben, also, das bei 2,5V 0A angezeigt werden und nicht bei 0V.

    Leider sind die SCALE und OFFSET Werte abhängig von dem Sensortyp und der Versorgungsspannung. Also kein Plug&Play.
    Für 3,3V hat Torsten schon eine Tabelle erstellt, für 5V muss ich noch messen, mir fehlt aber noch das Lastmodul.

    Die errechneten Werte für den ACS 712 5Ampere bei Anschluss an 5V sind SCALE2= 8.37520938 und OFFSET2=14882.7471

    Die gemessenen Werte für die Module mreiche ich dann nach


    -- wird fortgesetzt

  • Grundkurs Teil 7 - Ausgänge

    so, jetzt geht es endlich an die Ausgänge, das ist ja die Voraussetzung etwas zu schalten und zu bewegen. Der RP2040 hat insgesamt 16 Ausgänge. Diese können unabhängig voneinander als Schalt- oder Servo (PWM) Ausgänge festgelegt werden.

    hier im Bild ist das einmal dargestellt:

    in der dargestellten Musterplatine ist hier ein Treiber-IC eingebaut. Damit sind die Ausgänge 1-8 als Schaltausgänge nutzbar. Die Ausgänge 9-16 können mit weiteren Treibern auch als Schaltfunktionen, sonst aber auch für Servos genutzt werden. Auch die Ausgänge 1-8 sind natürlich alternativ auch für Servos nutzbar, dann muss die Platine nur anders aufgebaut werden. Diese Umschaltung von Ausgängen ist sonst nur bei Blauzahn und Brixl möglich.
    Die entsprechenden Pins des Chips sind leider von 0-15 nummeriert und nicht von 1-16. Und leider müssen die Ausgänge in der Konfiguration mit der Pin-Nummer eingegeben werden. Da muss aufgepasst werden. Der Ausgang 3 wird also mit der Nummer 2 konfiguriert.....

    Das Board wird ja über einen S-Bus Anschluss mit dem Empfänger verbunden. Das FrSky System kann 24 Kanäle übertragen. Davon werden die Kanäle 1-16 als Summensignal zusätzlich zu den 4-12 Einzelanschlüssen über ein Kabel übertragen. Der RP2040 kann also auf 16 Kanäle des Senders zurückgreifen.

    Im Normalfall wird immer eine Funktion über einen Kanal übertragen: so also z.B. Regler auf Kanal 1, Lenkung auf Kanal 2 usw. Bei vielen Schaltfunktionen für Licht etc. kommt man dann schnell an die Grenzen. Daher wurden verschiedene Schaltmodule entwickelt, die über einen Kanal mehrere Funktionen übertragen. Ein Klassiker sind die bekannten CTI Module, die mit unterschiedlichen Tastfolgen arbeiten. Eleganter sind die "Coder" Module wie Pistenking, Kraftwerk, Benedini und auch RCUni. Diese funktionieren mit einer Tastenmatrix, die an einem Kanal feste Werte ausgeben. In Ruhe Mittelstellung 0%, dann z.B. Taste 1 100%, Taste 2 90% etc. Ein am Empfänger angeschlossenes Modul weiß dann, dass z.B. bei dem Wert 90% (Taste 2) der linke Blinker zu betätigen ist.
    Mit dieser Variante können viele Funktionen über einen Kanal geschaltet werden, Nachteil ist: man kann immer nur eine Funktion gleichzeitig bedienen und im Sender ist nicht erkennbar, ob die Funktion geschaltet ist oder nicht. Für FrSky gibt es auch verschiedene virtuelle Tastenpads für nahezu alle Module.

    Der RP2040 funktioniert auch nach diesem Coder Prinzip, erlaubt aber für jeden Kanal eine echte Rückmeldung.
    Die Kanalwerte sind in Intervalle von 5% geteilt (100%, 95%, 90% ... -95%, -100%) Somit sind 40 Schaltmöglichkeiten vorhanden. Für jeden Ausgang benötigt man aber auch mindestens 2 Schaltfunktionen ( ein und aus ).

    Die 16 Ausgänge können prinzipiell alle über einen einzelnen Kanal geschaltet werden.
    Aber es ist auch möglich, einen Ausgang exklusiv einem Kanal der Fernsteuerung zuzuweisen. So kann z.B. Ausgang 16 dem Kanal 1 für einen Regler und Anschluss 15 dem Kanal 2 für die Lenkung zugewiesen werden. So kann auch ein Empfänger mit wenigen Ausgangskanälen oder sogar ein Empfänger nur mit einem S-Bus Ausgang verwendet werden. Solche Empfänger sind sehr preiswert zu haben. Der RP2040 fungiert dann praktisch als ein sogenannter S-Bus Dekoder.

    Wenn Kanal 1 an Ausgang 16 (Pin 15 Achtung!) ausgegeben werden soll ist der Konfigurationsbefehl dafür
    C1=15 und ENTER. C1 steht dabei für Canal 1 und 15 für Pin15 (entspricht Ausgang 16)

    Analog dann für die Lenkung

    C2=14 und ENTER. damit liegt dann an Ausgang 14 der Senderkanal 2 an.
    Mit SAVE wird dann diese Konfiguration gespeichert

    nach Abrufen der Parameter sind dann die Kanalzuweisungen hier zu sehen:

    Wenn ein Ausgang wieder für etwas anderes genutzt werden soll, muss der Wert auf 255 gesetzt werden (also dann C1=255 und C2=255). 255 bedeutet "aus"


    -- wird fortgesetzt

  • Zitat

    Aber es ist auch möglich, einen Ausgang exklusiv einem Kanal der Fernsteuerung zuzuweisen. So kann z.B. Ausgang 16 dem Kanal 1 für einen Regler und Anschluss 15 dem Kanal 2 für die Lenkung zugewiesen werden. So kann auch ein Empfänger mit wenigen Ausgangskanälen oder sogar ein Empfänger nur mit einem S-Bus Ausgang verwendet werden. Solche Empfänger sind sehr preiswert zu haben. Der RP2040 fungiert dann praktisch als ein sogenannter S-Bus Dekoder.

    Wenn Kanal 1 an Ausgang 16 (Pin 15 Achtung!) ausgegeben werden soll ist der Konfigurationsbefehl dafür
    C1=15 und ENTER. C1 steht dabei für Canal 1 und 15 für Pin15 (entspricht Ausgang 16)

    Analog dann für die Lenkung

    C2=14 und ENTER. damit liegt dann an Ausgang 14 der Senderkanal 2 an.
    Mit SAVE wird dann diese Konfiguration gespeichert

    Das ist spannend. Das war mir nicht bewusst. Dies erhöht die Möglichkeit noch einmal erheblich.

    Um mal noch etwas die Grenzen auszuloten
    Bei meiner Tandem XE kann ich 3 Empfänger gleichzeitig binden. Wenn ich nun 3x einen 12 Kanal Empfänger nehme und bei zweien je ein SequencerX anschliesse, dann müsste ich damit auf folgende Funktionen kommen:
    Empfänger 1: 11 Servo direkt angeschlossen, 4 Servo über SequencerX angeschlossen, welche direkt über einen Kanal gesteuert werden. Plus 12 Schaltfunktionen.
    Empfänger 2: 11 Servo direkt angeschlossen, 4 Servo über SequencerX angeschlossen, welche direkt über einen Kanal gesteuert werden. Plus 12 Schaltfunktionen.
    Empfänger 3: 12 Servo direkt angeschlossen

    Macht total 42 Servo welche direkt angesprochen werden, plus 24 Schaltfunktionen
    oder 34 Servo plus 32 Schaltfunktionen.


    Was meines Wissens nicht geht, ist die Telemetrie von mehreren Empfänger / SequencerX zu empfangen.

  • Hallo Uwe,

    super Anleitung, da viele wahrscheinlich nicht so viele Erfahrungen im Umgang mit Prozessorboards haben. Mit Deiner Anleitung ist das für jeden machbar.:thumbup:

    Ich brauche bei mir den seriellen Monitor zwischendurch nicht schließen. Ich kann mir aber gut vorstellen, dass dies auf verschiedenen Rechnern unterschiedlich gehandhabt werden muss. Gelegentlich benötige ich nur einen Druck auf die Reset-Taste des RP2040, wenn die Verbindung zwischen Rechner und RP2040 Board nicht wieder automatisch nach Save zu Stande kommt. Was auf jeden Fall nach Save von Vorteil ist, ist es den Bildschirminhalt des seriellen Monitors zu löschen, damit man sich nicht die alten Ausgaben/Anzeigen ansieht.

    Gruß Holger

    Mit der Arduino Version 1.xx musste ich immer trennen > verbinden

    Mit der Arduino Version 2.xx funktioniert es meistens ohne trennen, aber nicht immer.

  • Hallo Daniel,

    mit dem Access Protokoll können "nur" 24 Kanäle übertragen werden. 2x SequenzerX parallel geht aber, dafür gibt es verschiedene Firmware und auch zwei verschiedene Software Pads.

    Das sind dann 2x 16 Schalter/Servos über jeweils einen Kanal, ein dritter Sequenzer X ohne Telemetrie als S-Bus Dekoder für 14 Servos und dann 8 Servos für die Kanäle 17-24 direkt am Empfänger.
    Das sind 22 Servos und 32 Schaltfunktionen mit einem 8 Kanal Empfänger.

    Wenn das nicht reicht, geht noch ein zweites HF-Modul für weitere 24 Kanäle....

    Das ist aber etwas für den Fortgeschrittenenkurs :)
    Hier kommen als nächstes die Sequenzer

  • Hallo Uwe,

    ich nutze auf meiner XEs ja schon 4 Instanzen Deines Pad, mit Deiner Hilfe. Und mit Torstens Hilfe habe ich ja auch schon 3 SequencerX Boards mit insgesamt 48 Funktionen/Servos gleichzeitig am Laufen. Eventuell werden sogar 64 Funktionen über 4 SequncerX Boards gleichzeitig möglich sein. Das bedarf aber noch einiger Zeit, Entwicklungsarbeit, Tests und bleibt daher erst einmal "Zukunftsmusik". Ich hoffe, dass die 64 gleichzeitigen Funktionen mit 4 Boards möglich sind. Ob das dann möglich ist, vor allem auch mit jedem Sender (die verschiedenen Sender haben unterschiedlich große Speicher), ist im Moment noch fraglich. Wieviel Zeit dafür für die Umsetzung vergehen wird, bleibt offen und ist im Moment auch nicht wirklich relevant. Im Moment soll ja erst einmal der Einsatz von 2 Boards mit insgesamt 32 Funktionen und die entsprechende Hardware etabliert und entwickelt werden. Für die meisten Anwender werden 32 (Zusatz)Funktionen auch ausreichend sein.:)

  • Grundkurs Teil 8 - Sequenzer

    Jetzt geht es endlich an die Multiswitch Funktion, also die Möglichkeit, über einen Kanal bis zu 16 Funktionen zu schalten. Dafür gibt es die sogenannten "Sequenzer". Der Name kommt wohl von der Möglichleit, eine Abfolge von bis zu 20 Befehlen für einen Kanal zu nutzen, um damit eine Ablaufsteuerung also eine "Sequenz" zu erzielen. Meist werden sicher deutlich weniger Befehle, z.B. "ein" uns "aus" verwendet.
    Zur Steuerung wird das o.a. Coder Prinzip verwendet, also über einen Kanal Werte mit einem Intervall von 5% gesendet. Dies lässt sich am einfachsten mit einem Tastenscript realisieren - und das gibt es natürlich. Das Script hat 3 Seiten mit jeweils 12 Tasten, jede Taste ist genau einem Prozentwert zugeordnet:

    hier Seite 1:

    die jeweiligen Prozentwerte habe ich für die Abbildungen in die Tastenbezeichnung geschrieben. Die Tastenseiten werden mit dem Drehregler vor und zurückgeschaltet.

    Hier die Seite 2 mit den Tasten 13 - 24:

    und die Seite 3 mit den Tasten 25 - 36:

    Die Werte 5%, 10%, -5% und -10% sind durch Tasten nicht belegt und können anderweitig mit Gebern des Senders genutzt werden. Ich nutze damit bei meiner Lichtanlage die Blinkerrückstellung über die Lenkung.

    Die Ausgangskanäle des RP2040 können völlig frei diesen Tasten zugeordnet werden. Diese Flexibilität bedeutet aber auch, das im Ursprungszustand das Gedächtnis des Chips leer ist und jeder Ausgang einzeln programmiert werden muss. Das sieht anfangs kompliziert aus, wenn man das Prinzip aber einmal verstanden hat, ist das gut nachzuvollziehen und erlaubt viele Möglichkeiten.

    Die Programmierung jedes Ausgangs hat 3 Schritte:

    als erstes die Definition des Ausgangs: hier wird festgelegt, ob ein Servo oder eine LED etc. angeschlossen ist, eine Taktdauer definiert, um z.B. ein langsames Aufblenden zu ermöglichen, der Kanal von dem alles gesteuert wird und die Minimal und Maximalwerte des Ausgangs (bei Leuchten meist 0% bis 100%).

    Als zweites wird definiert, auf welche Tasten (bzw. Werte) der Ausgang reagieren soll

    und zuletzt, was bei einem Tastendruck passieren soll (z.B. Einschalten der RKL)

    Also "welcher Ausgang" -> "durch welche Taste" -> "welche Funktion"

    Ein erstes Beispiel soll das deutlicher machen:

    Wir haben eine LED an Ausgang 6 des RP2040 angeschlossen. Diese soll über Kanal 9 (an diesen ist das Pad angeschlossen) geschaltet werden. Bei LED aus sollen 0% ausgegeben werden, bei ein volle Helligkeit, also 100% Die LED soll mit Taste 1 eingeschaltet und mit Taste 7 ausgeschaltet werden. Ein klassisches Szenario für einen Schaltbaustein.

    Die Programmierung der Sequenzer beginnt immer mit dem Befehl: SEQ=
    das sagt dem RP2040, dass jetzt Sequenzer folgen. Der Befehl ist für alle Sequenzer nur einmal erforderlich.

    Dann muss zunächst der Ausgangskanal 6 zugewiesen werden. Das geschieht mit dem folgenden Befehl:

    Alle Befehle für die Programmierung der Ausgänge sind einfache Zahlen oder Buchstaben. Jede Zeile wird mit einer Klammer begonnen und beendet, die einzelnen Wert sind durch ein Leerzeichen getrennt. Kein Komma.
    Die Ausgangsdefinition erfolgt mit eckigen Klammern, die Zuweisung der Tastenwerte mit einer normalen Klammer, die einzelnen Schritte zuletzt mit einer geschweiften Klammer.

    Der Ausgang wird mit 7 Werten definiert:
    Aus unserem Beispiel eine 5 für Ausgang 6 (Pin5 !), dann eine 1 für eine LED (oder Relais etc - ein Servo bekäme eine 0), dann eine 20 für einen Zeittakt von 20ms (das erkläre ich später noch genauer), eine 9 für Kanal 9 auf den die Tasten wirken, eine 0 für den Einschaltwert des Ausgangs (0 für LED ausgeschaltet), 0 für Minimalwert und 100 für Maximalwert des Ausgangs. Dann wieder eine eckige Klammer

    Als nächstes kommt dann ein Tastenwert. Unsere LED soll auf die Tasten 1 und 7 hören. Taste 1 hat den Wert 100%, Taste 7 den Wert -15% Und hier kommt etwas wichtiges. Die Tastenwerte müssen immer in aufsteigender Reihenfolge eingegeben werden - sonst gibt es eine Fehlermeldung. Also hier erst Taste 7 mit -15% dann Taste 1 mit 100%.

    hier die Definition eines Tastenwertes. Leider passt die Grafik nicht zum Beispiel...

    dafür ist eigentlich nur der Tastenwert zwingend erforderlich. Zusätzlich sind Buchstaben möglich, die z.B. eine Wiederholung vorgeben (R für Repeat)
    Dieser Teil der Anweisung wird "Sequenz" genannt

    alls letztes kommt jetzt noch die Definition, was beim Tastenwert dann passieren soll.

    das nennt sich Step, wird mit geschweiften Klammern eingeschlossen und besteht aus 3 Zahlenwerten. Die zweite Zahl ist die wichtigste und gibt den Ausgangswert des Kanals an, der bei Tastendruck erreicht werden soll. Hier also 100%. Die erste Zahl gibt die Anzahl an Zeittakten an, nach denen mach Tastendruck der Ausgangswert erreicht wird. Hier 0, also hartes Einschalten. Wenn die LED über 1sec langsam aufblenden soll müsste da eine 50 hin (50x20ms). Die dritte Zahl gibt die Anzahl von Zeittakten an, die der Wert gehalten wird bis ein evtl. nächster Step bearbeitet wird. Da es hier nur einen Step gibt. spielt das hier keine Rolle.

    Komplett sieht das dann so aus:

    und das ist doch ganz logisch:
    erste Zeile Definition des Ausgangs,
    zweite Zeile erster Tastenwert
    dritte Zeile Ergebnis des ersten Tastenwertes
    vierte Zeile zweiter Tastenwert
    fünfte Zeile Ergebnis des zweiten Tastenwertes.

    Die ist die kürzest mögliche Definition für einen Ausgang, ein Ausgang kann ja auch auf mehr als 2 Tasten reagieren und jede Taste kann auch mehrere Steps auslösen (z.B. für eine Blitzerfunktion.

    ganz wichtig ist die korrekte Reihenfolge der Sequenzen (Kanalwerte) und die korrekten Klammern!!

    Diese Definitionen können ganz einfach in einem einfachen Texteditor erstellt werden. Als erste Zeile vor allen Sequenzern muss immer der Befehl SEQ= stehen also:

    SEQ=
    [5 1 20 9 0 0 100]
    (-15)
    {0 0 0}
    (100)
    {0 100 0}


    Es müssen immer alle Sequenzen zusammen eingegeben werden. Also auch, wenn nur ein Step geändert werden soll, müssen ggf. alle 16 Sequenzer neu in den RP2040 programmiert werden. Dafür sollte die Textdatei immer passend auf dem Rechner gespeichert sein. Nach Änderung wird dann der ganze Text kopiert und in das Eingabefeld der Arduino IDE eingefügt. Dann ENTER und anschließend SAVE. Am Anfang vielleicht erst nur mit ein oder 2 Sequenzern testen.

    Nach Speichern dann:

    und damit lässt sich die erste LED schalten.

    Mit dem Befehl SEQ= lassen sich alle Sequenzer löschen....

    Das wirkt jetzt alles für eine LED komplex, weitere Beispiele werden aber die Möglichkeiten zeigen und dafür sind eben einige Befehle erforderlich.


    -- wird fortgesetzt

  • Hallo Uwe,

    Jetzt habe ich den Zahlencode endlich verstanden. Wenn man dann die LEDs an den Ausgängen nach und nach programmiert, sollte man eigentlich keine Probleme haben, die Übersicht zu behalten.

    Könntest du bitte noch deinen Lua Script mit den 3x12 Tasten hochladen? Dann hat man alles in einem Beitrag und muss nicht ständig suchen. Vielleicht könnte Martin auch einen extra Ordner im Download Bereich erstellen. Dann wäre es noch übersichtlicher.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!