Hallo und Herzlich Willkommen im RC-DROHNEN-FORUM.
Wir sind ein unabhängiges, rein privat geführtes Forum zum Thema Multicopter (Drohnen) speziell für Luftbild-Aufnahmen und Technik für den privaten- und gewerbliche Piloten.
Ein lockerer, freundlicher Umgang gepaart mit Know-How, Hilfsbereitschaft und ein respektvolles Miteinander erwarten Dich hier.
Melde Dich kostenlos an, um alle Funktionen nutzen zu können. Wir freuen uns auf Dich!
Viel Spaß wünscht Dir das RCDF-Team.

Offizieller Partner des BVCP - Bundesverband Copter Piloten

Testtool für SR24 an Raspberry Pi

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • Testtool für SR24 an Raspberry Pi

      SR24 ist der ZigBee Receiver, der in vielen Yuneec Koptern verbaut ist. Nachdem ich schon vie dazu gelesen hatte und tolle Projekte fand, wollte ich auch mal austesten, ob ich den SR24 für etwas anders benutzen kann. Ein Modellauto hat schon jemand mit der St16 gesteuert und auch einen Konverter ZigBee zu S-Bus gebaut und eine DJI Phantom mit der ST16 gesteuert. Die Motivation war also da und ich konnte mich aufraffen, auch etwas in der Richtung zu machen.

      Als Vorarbeit ist ein Tool, lauffähig auf dem Raspberry PI, entstanden, mit dem man die Verbindung ST10/ST16 mit sonstwas ausprobieren kann. Das Tool kann auch dazu dienen, das Verhalten der ST16 (bzw. ST10, ST12, ST24) zu testen.
      Raspi3.png

      Hier ist der Versuchsaufbau:
      Raspi5.JPG


      Eine Beschreibung:

      SR24onRaspi.pdf

      Und das Tool selbst:

      SR24_decode.zip

      Gruß HE
    • Hallo HE,

      endlich mal wieder etwas, was mich interessiert!

      Das ist doch mal eine gute Idee - ich bin PixHawk/Ardupilot Fan und baue die meisten Sachen selber. Pascal (damit hast du dein Tool geschrieben?) kann ich nicht, dafür C++! Raspi's habe ich mehrere im Einsatz. Nur ein ZigBee Receiver SR24 habe ich zur Zeit nicht.

      Es ist jetzt ein wenig spät, ich habe bei den einschlägigen Händlern geschaut und habe alle möglichen ZigBee Receiver gefunden, nur keinen SR24. Eine Bezugsquelle wäre nicht schlecht.


      Aber nun werde ich mal schlafen und dann in Ruhe mal alles durchlesen.


      Ingo

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von ingo46 ()

    • C kann ich nicht. das macht es schwierig für mich, mehr in PX4 Autopilot zu machen. Für mich sieht C Quelltext aus, als ob sich ein Hund auf der Tastatur gewälzt hätte. Wie man solche Kriekelkrakel als Operatoren nehmen konnte, erschließt sich mir nicht. Wenn man OR (oder AND oder so etwas) meint, warum schreibt man nicht OR? Aber egal... Auf jeden Fall kann man das Programm hernehmen, um einiges auszuprobieren. dafür ist es gemacht. Für PX4 gibt es ja schon etwas für die ST24 (mit SR24):
      https://github.com/PX4/PX4-Autopilot/blob/master/src/lib/rc/
      Das scheint aber veraltet zu sein bzw. nur für H920 alt mit ST24.
      Beim Q500 und Typhoon H sind ein paar Änderungen drin. Ich habe das mal versucht C-gerecht aufzuschreiben:

      Quellcode

      1. typedef struct {
      2. uint8_t t; ///< packet counter or clock
      3. uint8_t ///< Unknown byte, looks like random
      4. int32_t lat; ///< lattitude (degrees) +/- 90 deg; int32 big endian, lat = int32 / 10000000
      5. int32_t lon; ///< longitude (degrees) +/- 180 deg
      6. int32_t alt; ///< 0.01m resolution, altitude (meters)
      7. int16_t vx, vy, vz; ///< velocity 0.01m res, +/-320.00 North-East- Down
      8. uint8_t nsat; ///<number of satellites + GPS fix type + GPS used
      9. uint8_t voltage; ///< 25.4V voltage = 5 + 255*0.1 = 30.5V, min=5V
      10. uint8_t current; ///< 0.5A resolution
      11. int16_t pitch, roll, yaw; ///< 0.01 degree resolution
      12. uint8_t motorStatus; ///< 1 bit per motor for status 1=good, 0= fail
      13. uint8_t imuStatus; ///< inertial measurement unit status
      14. uint8_t pressCompassStatus; ///< pressure / compass status
      15. uint9_t f_mode ///< List of flight modes see manual Q500Log2kml
      16. uint8_t Vehicle type ///< = 5 for Typhoon H, List of v_types see manual Q500Log2kml
      17. uint8_t Error flags ///< see manual Q500Log2kml
      18. uint8_t gps_accH ///< uint6 / 20
      19. } TelemetryData;
      20. typedef struct {
      21. uint16_t t; ///< packet counter or clock
      22. uint8_t rssi; ///< signal strength
      23. uint8_t packet_count; ///< Number of UART packets sent since reception of last RF frame (this tells something about age / rate)
      24. uint8_t channel[18]; ///< channel data, 12 channels (12 bit numbers)
      25. int32_t lat; ///< lattitude (degrees) +/- 90 deg; int32 big endian, lat = int32 / 10000000
      26. int32_t lon; ///< longitude (degrees) +/- 180 deg
      27. float alt; ///< 32bit 0.01m resolution, altitude (meters)
      28. int16_t accuracy; ///< Values like in RemoteGPS_xxxxx.csv, unknown measurement unit
      29. int16_t speed; ///< 0.01 m/s
      30. int16_t angle; ///< Currently I do not understand how to convert to degrees
      31. uint8_t nsat;
      32. } ChannelData_GPSdata; ///< Packet type = 3
      Alles anzeigen
      Hier hab ich mal versucht, das zu dokumentieren:
      UART_ST24_raw.ods.zip

      In den in der Beschreibung aufgeführten Quellen findest du auch SW Beispiele von @dylanfm.

      Mein Zeug findest du hier:
      GitHub - h-elsner/SR24_decode: Read and decode data from Yuneec ZigBee transmitter SR24. Test tool for Raspberry Pi.

      Im Zusammenhang mit PX4 Autopilot gibt es noch ein schönes Projekt einer PX4 Firmware für den Typhoon H. Damit kann man alles machen, was im PX4 Autopilot möglich ist. Wir suchen noch Entwickler, die da mitarbeiten wollen.
      GitHub - tonirosendahl/Thunderbird: Thunderbird Firmware, A fork of PX4 Autopilot Software for Yuneec Typhoon H


      Gruß HE
    • h-elsner schrieb:

      Such mal nach YUNQ501107.
      ...das habe ich gerade gemacht und bin fündig geworden und habe bestellt - kommt leider aus den USA und daueret ein wenig.

      Was ich unter SR24_decode gefunden habe müsste doch eine für den Raspi compilierte Versien sein, oder?

      Ich gehe mal davon aus, dass du einen Pascal-Compiler auf dem Raspi installiert hast. Ich habe Freepascal und Lazarus Pascal gefunden. Bis mein Empfänger da ist, würde ich mal schon mal Pascal zu installieren.

      Ich habe mal unter PX4-Autopilot/st24.h at master · PX4/PX4-Autopilot · GitHub geschaut. Da muss ich mir zunächst mal doch ein einfaches Pascal-Programm anschauen.

      Ingo
    • Richtig. Das ist auf und für den Raspi compiliert und sollte ohne Probleme laufen (bei mir Raspi 3). Eventuell muss man es noch ausführbar machen
      Ich habe Lazarus auf Raspian mit Hilfe von fpcupdeluxe installiert. Wenn du das machen willst, können wir ja über PN weiter diskutieren. Es ist nämlich ganz einfach, aber nur wenn man weiß, wie ;-).

      Gruß HE
    • Enrico schrieb:

      Wäre schön, was sinnvolles damit zu basteln.
      Ich bin jetzt soweit, dass ich zwei Servos oder einen Servo und einen Motor mit der ST16 (oder ST10) steuern kann. Für ein Schiff oder ein Auto reicht das schon.
      Ich schicke Fake-Telemetrie zur ST16, um vorzuspiegeln, dass alles in Ordnung ist. Das verhindert, dass komische Fehlermeldungen aufpoppen.

      Dies hier ist mein vollständiges Experimentierset. crazy

      Komplettset.JPG

      Sieht alles schon ganz gut aus, aber noch sind einige Dinge offen. Ich arbeite gerade an einem Tool, wo man die Settings für alle Kanäle einstellen kann.
      Noch viel Arbeit an der Tastatur...

      Gruß HE
    • Der derzeitige Entwicklungsstand sieht so aus, dass man 2 Analogservos auf beliebige Kanäle sowie die Schalter auf frei wählbare GPIO-Ports legen kann. Die Konfiguration erfolgt per Textdatei. Ein kleines Programm ohne GUI wird beim Booten gestartet und lauscht am SR24 bis eine Funke sich verbindet. Dann werden die 12 Kanäle abgefragt und entsprechend der Konfiguration ausgewertet.
      Auch Sticks können als Schalter konfigiriert werden. So kann man z.B. per Throttle Stick eine Seilwinde betätigen. Der Schaltpunkt liegt dann bei etwa ein Drittel Servoweg. Damit sind schon recht komplexe Modelle steuerbar.

      Gruß HE
    • Hier nun mal der vorläufige Endstand:

      Programmbausteine:
      Das Ergebnis der Programmierung des Testtools sind drei Units, die als Legobausteine für alle möglichen Anwendungen dienen, die ein Fahrzeug, ein Boot oder was auch immer steuern können.
      SR24_dec: Diese Unit stellt alle Funktionen zum Kontrollieren der Seriellen Schnittstelle und zur Auswertung der empfangenen Daten zur Verfügung. Dies ist sozusagen der Eingang des Steuersystems. >> Eingang
      SR24_chsets: Diese Unit verarbeitet die Konfiguration und vermittelt zwischen Eingang (Kanäle) und Ausgang des Systems. Es wertet die Settings-Datei aus. >> Mittler
      SR24_ctrl: Diese Unit bietet die notwendigen Funktionen zum Steuern der Ausgänge des Raspberry Pi GPIO Ports an. Das ist also der Ausgang zur Hardware des zu steuerenden Modells. >> Ausgang


      Die verfügbaren Programme:
      St16cars: Ein Beispielprogramm ohne GUI zum Steuern eines Modells, welches die oben genannten Prozeduren und Funktionen benutzt. Per Telemetrie-Rückmeldung wird der ST16 vorgespiegelt, dass alles in Ordnung ist (HW-Status, GPS-Daten).
      SR24_decode: Das im ersten teil beschriebene Testtool zum Testen der Funktionen, sowie zum Ausprobieren, auf welche Daten die ST16 (oder ST10/12/24) wie reagiert. Dies lässt zusammen mit den Flightlogs auf der Funkfernsteuerung Einblicke auf die Funktionsweise des Yuneec Flugsteuerungssystems zu.
      SR24wizard: Ein Hilfsprogramm zum Editieren der Settings (Konfigurationsdatei für die Hardware). Die Settings dienen als Mittler zwischen den empfangenen Daten aus den Kanälen der Funkfernsteuerung ST16 (oder ST24, ST10) und den Ausgängen des Raspberry Pi.

      Zu finden auf: GitHub - h-elsner/SR24_decode: Read and decode data from Yuneec ZigBee transmitter SR24. Test tool for Raspberry Pi.

      Die Hardware:
      Eine etwas wild aussehende Aufsteckplatine für den Raspberry Pi dient zum Testen der Software und als Demoprojekt. Die Platine enthält:
      - zwei PWM Servoausgänge
      - einen potenzialfreien Relaiskontakt (bis 1A)
      - einen Open-Collector Ausgang bis 4A
      - einen weiteren GPIO-Ausgang über Widerstand entkoppelt
      - zwei entprellte Tasteneingänge
      - zwei Schmitt-Trigger Eingänge für Voltage Warning 1 und 2

      Gruß HE
    • Mittlerweile gibt es auch eine Unit, um ein rudimentäres Logging zu generieren. das macht zwar nicht allzuviel Sinn, aber wer weiß...

      Mit der SW ist es nun möglich relativ einfach Steuerungen für Modellautos oder Boote zu generieren. Ich habe einen Modellbausatz 1:16 hergenommen und ihn mit einem Raspberry Pi Zero bestückt. Vorwärts/rückwärts mit den beiden PWM-Kanälen, die der Raspi bietet, sowie Licht auf dem Landegestell-Schalter, Lichthupe auf dem Aux Button, Blinker links/rechts auf den Flightmode-Schalter und Warnblinkanlage auf den Tiltmode.

      Da die Warmblinkanlage auf zwei GPIO pins (GPIO16 und GPIO17) schaltet, kann man das nicht einfach mit dem Wizard einstellen, sondern das ist hart-codiert. Außerdem gibt es noch einen Shutdown-Button, der ebenfalls hard-codiert auf GPIO27 ist. Dieser Pin muss einen Pull-up Widerstand haben. Wer das so eingestellt hat, kann einfach "st16cars" herunterladen (GitHub Link oben) und mit dem Wizard an seine HW anpassen ohne etwas prorammieren zu müssen. Ansonsten kann man sich eine Steuerung von den Sourcen bauen.

      Auf Wunsch könnte ich auch ein Steuerprogramm ohne HW-Abhängikeiten erstellen, aber ein Shutdown Button ist schon zu empfehlen. Man kann zwar den Raspi auch einfach ausschalten, aber das könnte die SD-Karte bzw. deren Filesystem zerstören, wenn er gerade schreibt. Ich habe aber schon x-mal einfach den Stecker gezogen und hatte nie Probleme.

      Gruß HE