Turnigy 5x - Arduino RcLib Hacking-Mainboard

Status
Nicht offen für weitere Antworten.

nique

Legal-LongRanger
Jungs - grrrrr - wie kommt man an die Channel-Werte wieder ran?

Du machst fast am Ende ein

Code:
g_PPMOut.update();
Für den Teensy kann ich das nicht gebrauchen und muss da die Channel-Werte anders aufbereiten. Wie komme ich an diese ran? Sollte in us (Mikrosekunde) sein und ein float-type, naja, int geht zur Not auch, kann man ja konvertieren...

Danke für Retten vor der Verzweiflung
 

nique

Legal-LongRanger
Mannnnnn und der Buzzer macht mich auch ganz wild. Das geht mit dem Teensy auch nicht 1:1, aber denkste, ich krieg das gepiepse raus? Ich habe nicht nur den Buzzer raus, sondern auch beide Timer und den FlightTimer und dennoch krieg ich beim compilieren einen Fehler, weil "irgendwo" der beep aufgerufen wird.

Wo könnte das noch stecken?
 
hmm, in der Lib gibts eigentlich nebst den examples (die ja in dem Zusammenhang wurscht sind), nur Buzzer und Speaker (.h und .cpp) die die Methode beep verwenden. Ansonsten natürlich noch das Hauptprogramm t5x.ino

die globale Funktion rc::getOutputChannel im modul outputchannel macht eigentlich genau das, was Du willst:
Code:
/*! \brief Gets value of a certain output channel.
	    \param p_channel Output channel to get value of.
	    \return value of the channel in microseconds, range [750 - 2250].*/
uint16_t getOutputChannel(OutputChannel p_channel);
Habs nicht versucht, aber sieht gut aus, denke ich mal...
 

nique

Legal-LongRanger
Danke Christian

Ich denke, ich mach doch alles selbst. Hab den einen Fehler rausbekommen, indem ich die library-Files umbenannt habe. Aber das war nur der Anfang. Weiteres HW-spezifisches ist dann noch in der Debug-Lib aufgetreten und die konnte ich nicht "löschen", weil sie in der AIPin benötigt wird. Und die gesamte Lib umbauen, dazu fehlt mir das Können.

Bin mal gespannt, meines gibt wohl ein Mehrjahresprojekt. Die Menusteuerung soll über ein OSD dargestellt werden und die Konfig auf SD gespeichert. Ergibt also am Ende einen FPV-Sender ;)

Bin froh für die T5X, da hab ich dann wenigstens schnell was für die Kids (und mich) - und auch was das funktioniert. :D
 
naja, wenn die PPM-Lib am Teensy grundsätzlich mit Frsky soweit ihren Dienst verrichtet, ist das dann ja schon mal die halbe Miete.

Mittlerweile hab ich die passende microSD-Karte für das Sound-Modul bekommen und das Teil spielt mal grundsätzlich.
Nächster Schritt ist das Ding mit dem Arduino bekannt zu machen...

NACHTRAG: Das mit dem Sound-Modul wird wohl leider doch nix.
Das Teil benötigt insgesamt 4 analoge Schnittstellen des Arduino. Hab ich leider nicht so im Detail von Anfang an beachtet. Schade, aber hier kommt man dann leider an die Grenzen des Arduino Nano...

In der Zwischenzeit hab ich mal begonnen an der T5x einen sogenannten Setup-Betriebsmodus anzulegen.
Dieser aktiviert sich, sobald man die Funke an den USB anschließt aber nicht einschaltet.
In diesem Modus ist der komplette Funk-Teil nicht aktiv - wie auch, ohne Strom ;-)
Dadurch ist auch die Serielle von der Telemetrie befreit und kann somit anderweitig verwendet werden.

Derzeit ist nur mal eine Minimal-Implementierung vorhanden, die die Werte der analogen Eingänge auf die serielle schreibt.
Geplant habe ich jedoch die Serielle Schnittstelle in dem Modus zur Konfiguration des Senders zu verwenden und die Konfigurationsdaten dann direkt ins EEPROM zu schreiben, so wie man das normalerweise auch macht.
Dadurch kompiliert man dann nur einmal das ROM, lädt es in die Funke und kann ab dann das Teil über die serielle konfigurieren.

Frage ist dann noch wie die Konfigurations-Software dafür aussehen soll.
Grundsätzlich finde ich derzeit ja die Chrome-Apps recht interessant, auch wenn ich kaum Ahnung von JavaScript habe.
Aber vielleicht auch gerade deshalb, schließlich will man ja immer was dazulernen.

Falls jemand Erfahrung auf dem Gebiet hat oder sogar mithelfen möchte, bitte gerne hier melden!

Der aktuelle T5x-Commit mit dem rudimentären Setup-Mode ist jedenfalls schon mal auf github, hab allerdings mal vorerst nicht gleich wieder eine neue Version daraus gemacht, da muß schon noch etwas mehr rein.

Gruß aus Wien,
Christian
 
Zuletzt bearbeitet:

nique

Legal-LongRanger
Christian - schade, dass mit dem Soundmodul!

Ich habe bei meinem Teensy noch was komisches. Die Werte von einem Poti in us schwanken um +/- 10us ohne dass ich das Poti bewege. Wie ist das bei Dir und der RC-Lib? Muss ich das noch runden? Ich habe in der Mittelstellung Werte zwischen 1492 und 1516. Das macht, dass das Servo immer rumflippert...

Vielleicht liegt das auch an der analogen Messmethode ohne Aref. Dass die Inputgeber "nur" an 3.3V laufen, sollte eigentlich nix ausmachen, weil der Teensy nur bis 3.3V messen kann.... hmmm

EDIT: GRRRRR, der USB-Port liefert zuwenig Strom für den XJT... (auch mit StepUp). Wenn ich den separat befeuere klappt alles wunderbar.
 
Zuletzt bearbeitet:
NACHTRAG: Das mit dem Sound-Modul wird wohl leider doch nix.
Das Teil benötigt insgesamt 4 analoge Schnittstellen des Arduino. Hab ich leider nicht so im Detail von Anfang an beachtet. Schade, aber hier kommt man dann leider an die Grenzen des Arduino Nano...

Gruß aus Wien,
Christian
Ja schade mit dem Modul, welches genau hast du denn? Es gibt da ja auch welche die per i2c oder SPI angesteuert werden, das ist ja dann eher pin-schonend.
Sowas z.B: https://www.sparkfun.com/products/11125
gibte hier z.B: auch billiger:
http://www.goodluckbuy.com/cjmcu-au...rd-sound-module-game-device-audio-module.html
 
Zuletzt bearbeitet:
ich hab hier einen WTV020SD-16P clone für 3.5 EUR aus der Bucht.
Hab mich hier (wohl ähnlich wie Du) von der Beschreibug in die Irre leiten lassen. Es reichen hier leider die I2C pins alleine nicht aus um das Modul per Arduino zu steuern. Die haben hier eine etwas merkwürdige PWM-Sache über Reset und Busy mit drin, ganz kapiert hab ich's noch nicht.
Hier gibts jemanden, der das Ding zusammen mit dem Arduino basierend auf dieser Lib erklärt.
Läuft ansonsten eigentlich ganz fein.

Hab ein wenig im WWW recherchiert, hab aber leider kaum was ähnlich günstiges und kompaktes gefunden.

So schnell geb ich eh nicht auf: Eine Möglichkeit wär auch noch dem Sound-Modul einen Arduino-Pro Mini (ist kleiner als ein Nano) zu gönnen, der per I2C von der T5X Commands (Play Track 001, Mute, Volume +/-,...) entgegennimmt und dann das Handling mit dem WTV020SD-16P übernimmt. So wären dann zwischen T5X und dem Rest wirklich nur 2 Drähte nötig...
 
Mmmh laut Chipdatenblatt (Beschreibung 7.5.TWO LINE SERIAL MODE) sowie Schaltplan weiter hinten sind nur 2 Leitungen zum µProz + RESET verkabelt. Ist die Frage ob man den Reset noch weglassen kann.
Trotzdem isses wohl kein I2C sondern n eigenes Protokoll was da gefahren wird - es können ja auch beliebige IO Pins genutzt werden.

Sehe gerade, Busy brauchst bestimmt nicht, der zeigt dir nur an wann der Chip mit Abspielen fertig ist, Reset wird auch nur zum Reset des Modules genutzt - könnte man wahrscheinlich weglassen und Timer braucht die lib auch keine

Das sollte fast alles sein:
Code:
void WTV20SDBreakout::sendCommand(unsigned int command) {
  //Start bit Low level pulse.
  digitalWrite(_clockPin, LOW);
  delay(2);
  for (unsigned int mask = 0x8000; mask > 0; mask >>= 1) {
    //Clock low level pulse.
    digitalWrite(_clockPin, LOW);
    delayMicroseconds(50);
    //Write data setup.
    if (command & mask) {
      digitalWrite(_dataPin, HIGH);
    }
    else {
      digitalWrite(_dataPin, LOW);
    }
    //Write data hold.
    delayMicroseconds(50);
    //Clock high level pulse.
    digitalWrite(_clockPin, HIGH);
    delayMicroseconds(100);
    if (mask>0x0001){
      //Stop bit high level pulse.
      delay(2);      
    }
  }
  //Busy active high from last data bit latch.
  delay(20);
}
Was evtl ein Problem sein könnte ist die Zeit die es braucht ein Komando ans Modul zu senden, da hier eben mit delays fürs Timing gearbeitet wird, müsste man mal schauen wie lange das dauert und ob es den Programmfluß merklich beeinflußt.
Das PPM wird ja im Hintergrund per Interrupt generiert, is daher unkritisch, die Updaterate von Knüppel zum Ausgang ist dann evtl mal kurz etwas verzögert.

I2C wäre halt ne schicke Lösung da der eh noch frei ist und man eben auch verschiedene Gerade dran packen könnte (evtl doch noch das Oled ;_) )
 
Zuletzt bearbeitet:
schau ma mal, dann seh ma schon (wie wir hier in Wien so sagen).
Vielleicht komm ich am Wochenende mal dazu etwas mit der Lib und dem Modul zu spielen, dann wissen wir mehr.
Auf jeden Fall ist das Sprachmodul auch für andere Anwendungen auf jeden Fall ein Gewinn und daher Wert sich mehr damit zu beschäftigen.

Mit der Display-Sache gehts mir ähnlich wie beim Setup-Mode der Funke.
Der Aufwand um die Konfigurationsdaten vom User entgegenzunehmen und abzuspeichern in Relation zu dem Mehrwert an Komfort sieht hier etwas unökonomisch aus. Beim Display ist eine gewisse Art von Menüführung nötig, zusätzliche Tasten (bzw. Joystick)
Beim Konfigurieren über die Serielle ist auch einiges an Aufwand nötig für die Client-Applikation, dafür hält sich der Teil im Arduino in übersichtlichen Grenzen und somit spart man auch Speicher.
Auch die Sprachausgabe - sofern man nur ein paar I2C Commands braucht - könnte man schön schlank halten was auch im Vergleich zum Nutzwert des Funktionszuwachs sehr effizient wäre.

Und wieder wie immer das Problem: ZEIT... Ich brauche einfach mehr davon. :)
 
Jepp, richtiger Ansatz!
Ich hab oben noch einiges ergänzt, schau mal, denke das Modul sollte doch recht einfach tun.
Zum Display, ich dachte hier auch eher an die reine Anzeige werte von Telemetrie, Akku und evtl Knüppel/Schalterstellungen.
Der Config Teil wäre mir auch zu aufwendig.

P.S. das Projekt is echt sau interessant, aber mit er9x auf der 5x hab ich halt das meiste schon.
 
stimmt, gibts eh schon alles fertig. aber wie heißt es so schön:
"Modellbau ist: Mit möglichst viel Aufwand, den kleinst möglichen Nutzen erzeugen."

Das Potenzial am dazulernen ist hier immens. Und letztendlich gehts mir persönlich darum. Noch dazu ist es ein sehr geiles Gefühl mit einem selbst gebauten und programmierten Sender zu fliegen.

Aber, was will ich da einem Fricklomanen wie Dir erzählen, hahaha... :)
 

schnellmaleben

Erfahrener Benutzer
So, ich konnte heute endlich nach 2-monativer Odysee die 5X und das DIY-Modul beim Zoll abholen :) Nun ist alles beisammen und über die Ostertage kann das Gebastel los gehen, ich freu mich schon :)

kornetto, welches Sound-Modul hast Du denn besorgt?
 
ich habe mich nun mal dazu entschlossen, das WTV020-SD-16P zusammen mit einem Arduino Pro Mini (kleiner als der Nano), einem Verstärker und 3.3V Regler auf eine extra Platine zu packen. Die Idee ist, basierend auf der existierenden Arduino-Library eine vernünftige I2C-Schnittstelle für das Soundmodul zu bauen.
Auf diese Weise spart man auf der T5x oder auch anderen Projekten Pins, muß sich nicht um Timer oder sonstiges Gedanken machen und kann auch gleich noch Funktionen vorsehen wie eine Reihung (Queue) von abzuspielenden Samples, Play, Pause, Flush der Queue, Lautstärke etc. über simple Send & forget I2C commands.

Ich denke, das sollte sich mit vertretbaren Aufwand soweit generisch implementieren lassen, um die Lösung wie gesagt auch für andere Zwecke verwenden zu können.

Bei der T5x benötigt man z.B. die Möglichkeit, daß das Sound-Modul bei mehreren gleichzeitig eintretenden Telemetrie-Warnungen alles soweit hintereinander abzuspielen um auch wirklich alle Infos mitgeteilt zu bekommen.
Das wäre direkt auf der T5x in Anbetracht der Art wie die Library (unter Einsatz etlicher delays) implementiert wurde, der Anzahl an Pins und der bereits verwendeten Timer nur recht umständlich und aufwendig möglich.

Kurz gesagt, es wird bald noch eine weitere Platine geben, die dann grundsätzlich ein Soundmodul zusammen mit einem Arduino Pro Mini aufnimmt, einen 3.3V-Regler und Verstärker vorsieht und Anschlüsse für SDA & SCL (I2C), 5V, GND, SPK out, sowie FTDI ausgeführt hat.
Die Platine wird dann nur geringfügig größer als ein Arduino Nano ausfallen und eine quasi "Soundkarte" für Mikrocontroller & Elektronik-Anwendungen darstellen.

Derzeit schwirrt mir das alles nur mal soweit im Kopf rum, aber ich habe bestimmt mal die kommenden Tage Zeit um das ganze mal am Steckbrett in der Praxis zu testen.

Wenn jemand Ideen dazu hat, bitte gerne hier diskutieren.

Zusätzlich und unabhängig davon hat "schnellmalleben" in einer PN an mich ein paar sehr gute Ideen angebracht, was Sprachausgabe und Konfiguration des Senders angeht. Ich will hier nicht vorgreifen, vielleicht mag er ja selbst mehr dazu an dieser Stelle mitteilen...

Find ich richtig schön, dass langsam Bewegung in die ganze Sache kommt.

Gruß aus Wien,
Christian
 

schnellmaleben

Erfahrener Benutzer
Hey Christian,

ich habe mir die Lib des Sprachmoduls angeschaut und bin zu demselben Ergebnis gekommen, das mit den Delays auf dem Hauptprozessor wird schnell kritisch. Aber so weit bis zur "Soundkarte" hab ich noch nicht gedacht. An der Stelle der Verweis auf dieses Shield, da kann man sich in der Doku z.B. hier sehr gut anschauen wie es realisiert ist. Es ist ein Atmega168 drauf, statt i2c ist SPI die zweite Anbindungsart als Alternative zu Seriell.

> Zusätzlich und unabhängig davon hat "schnellmalleben" in einer PN an mich ein paar sehr gute Ideen angebracht, was Sprachausgabe und Konfiguration des Senders angeht. Ich will hier nicht vorgreifen, vielleicht mag er ja selbst mehr dazu an dieser Stelle mitteilen...
Klar gern, ich habe angefangen das aufzuschreiben und muss noch einen kurzen Test machen, werde es dann noch mal separat posten. Kam am WE zu nichts (am Computer) weil so tolles Wetter war, 15 Akkus verflogen ;)

Grüße,
Ruben
 
Frickler war so nett und hat mir da was maßgeschneidertes gelasert, vielen Dank dafür!
Mir gefällt der simple und übersichtliche Look...

Übrigens im Hintergrund ist hier bei mir grad wieder was für die T5x am entstehen.
Sobald es dem Versuchs-Stadium entwachsen ist, und vertetbare Formen annimmt, teile ich es gerne mit Euch!

Gruß aus Wien,
Christian
 

Anhänge

ich bastle da gerade an einem Konfigurationstool für die 5x rum.
Ist noch weit entfernt von perfekt, aber der aktuelle Stand der Entwicklung ist schon mal hier zu sehen



Realtime Daten-Anzeige der Eingänge und PPM-Kanäle funktioniert schon mal recht gut, Parameter setzen und auslesen ist fast fertig...

Fehlt jedoch noch einiges an Kleinarbeit (z.B. Anzeige der Kanal-Werte in us, Anzeige der Eingangswerte,...) und Übersichtlichkeit.
Das Proof-of-Concept als solches ist mal soweit ein Erfolg!

Läuft übrigens auf Mac, Linux, Win32 und Win64.

Gruß aus Wien,
Christian
 

Anhänge

nique

Legal-LongRanger
So, endlich alle Teile da - und siehe da, es funktioniert! Und das mit dem XJT Sender und einem V8R4-II Empfänger.

Christian, vielleicht kannst Du mir nun für die Einstellung ein paar Stunden ersparen:
Das ganze kommt in ein RC-Auto. Throttle auf Ch3 ist gut, Aileron auf Ch1 für die Steuerung passt!

Ich verwende noch SW1. Damit wird vorwärts/rückwärts gesteuert. Also bei einer Position muss Thr 0 - 100 und in der anderen von 0 - -100 gehen.

Der SW2 nutze ich für den "Lernmode". Up: Vollgas / Center: 50% Gas / Down: 25% Gas (das wird wohl über DR gehen - richtig?)

Für mich klingt das sehr nach 6 Modi, oder? Oder müsste ich 2 Profile und je 3 Modi konfigurieren? Aber meine spannendste Frage, wie richte ich dann das Gas ein, dass der Knüppel mit Vollausschlag quasi nur den halben Ausgang steuert?

Freu mich auf Deine Funke.

Hmm, ich kann übrigens nicht flashen, wenn der Nano eingesteckt ist... (jaja, Power ist dabei aus!). Ist aber nicht so tragisch und werde ich nicht weiterverfolgen, ausser Du sagst gleich: Is doch logisch...
 

nique

Legal-LongRanger
Einbau XJT in T5x

So, meine befindet sich im Short-Final. Hier noch ein paar Bilder für die, die auch ein XJT einbauen wollen. Das passt wunderbar rein!

P1050329.JPG
Hier eine kurze Übersicht, wo/wie das Modul reinkommt. Es wird schräg verbaut, ist nicht geklebt und hält trotzdem. Der Trick: habe eine gewinkelte Stiftleiste für die Anschlüsse genommen. Mit dem Stecker - der zwar etwas hoch aufragt - passt das wunderbar ins Gehäuse und scheppert auch nicht. Was natürlich so nicht mehr geht, ist die zweite Platine mit Button und LED drauf, siehe weiter unten. Das einzige was um 1mm nicht passt, ist der Nano selbst. Da ich ihn steckbar verbaut habe, liegt er eben etwas zu hoch...

P1050327.JPG
Hier ein CloseUp. Für die Buttonplatine sind nur 4 Kabel notwendig!!! Der Antennenstecker ist übrigens auch nicht geleimt. Wenn Klemmscheibe und Mutter im Gehäuseinnern bleiben, kann man die Antennenbuchse mit der Antenne festschrauben...

P1050326.JPG
Ey, da ist ja die Miniplatine vom XJT! Das hat ja schön Platz in der "alten" Button-Aussparung. Wenn man eine Abdeckung macht, sieht ja das schon fast professionell aus! Oben ist übrigens die LED rausgeführt - auch am Originalort. Was man nicht sieht: Ich habe den Original-Einschaltknopf ausgelötet und an den Originalplatz geklebt. Er kommt aber an der Platine an! Füsse biegen und mit Kunststoff vor Kurzschluss sichern.

P1050323.JPG
Und so sieht die Platine von Hinten aus. Am Rahmen ganz simpel angeklebt.

P1050324.JPG
Hier noch ein CloseUp vom XJT, wo die vier Drähte eingehen. Zum auslöten eine kleine Fummelei. Am besten so: Steckleisten mit Knipser und physischer Gewalt trennen, die Steckleisten in "Einzelstecker" trennen und dann mit dem Lötkolben Zinn erwärmen und die einzelnen Beine mit der Zange rausziehen.

So, ich brauche nur noch die Abdeckung und dann noch ein SW-Update ;)
 
Status
Nicht offen für weitere Antworten.
FPV1

Banggood

Oben Unten