OpenTX - Multiplex MLINK Konverter

kalle123

User
Claus und Para.

Die 4 Drähte können es ja nicht sein ;)

Man sollte einen Arduino (Nano) haben und die Arduino IDE auf dem Rechner installieren und dann mal etwas mit dem Arduino 'spielen'. Gibt da xxx Anfängeranleitungen im Netz.

Bisschen Spass an so was sollte man schon haben. Dann noch mal BLINK 'flashen'

und dann diese Zeile hier (sieht schlimm aus, ich weiss ...)

C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avrdude -CC:\Program Files (x86)\Arduino\hardware\tools\avr/etc/avrdude.conf -v -patmega328p -carduino -PCOM3 -b115200 -D -Uflash:w:C:\Users\kalle\AppData\Local\Temp\arduino_build_525020/Blink.ino.hex:i ins Befehlsfenster zu kopieren und

den markierten Teil durch z.B. C:\Users\kalle\Desktop\Konverter_v1_01.hex

zu ersetzen und RETURN zu drücken. Das isses!

Ich hab das Programm von Reinhardts Konverter in dem Beispiel auf meinen WIN Desktop gelegt.

Und das Verfahren habe wir hier erfolgreich mehrfach durchgezogen.

Was mit AndreasN hier letzthin schief gelaufen ist ... nur soviel, sein HFMG3 ist wohl nicht ok.

Die Arduino IDE ist kostenfrei https://www.arduino.cc/en/software und ein Nano gibt es z.B. hier

https://www.ebay.de/itm/Nano-Modul-...269232?hash=item25d4389a30:g:v3gAAOSwzddfHJln

Wenn das zu teuer oder einem der Aufwand zu groß ist, dann lasst es bleiben :D

Soll ich jetzt noch Anleitungen wie diese hier raus suchen?

https://www.heise.de/tipps-tricks/Arduino-Tutorial-Die-allerersten-Schritte-4119814.html

Nix für ungut - KH :)

PS. Aber ich gebe Claus recht, da müsste ein Artikel in die nicht existierende Wiki rein. Der Post hier ist dermassen unübersichtlich geworden. Angefangen mit Dieters Programm Basis Teensy, dann Reinhardts Programm Basis Arduino, was momentan DER STANDARD ist und dann machen wir hier (und ich mach mich da von dem Vorwurf nicht frei, den thread hier zu überladen) jetzt auch noch mit ATTiny rum und KiCad ....
icon_ochmann.gif
 
Zuletzt bearbeitet:

Para

User
Danke KH und Claus,

...da frage ich mal jemand bei uns im Verein, der sich mit sowas auskennt. Für meine Modelle ist mir das alleine zu heiß, um da ein Risiko einzugehen.
Man muss seine Grenzen kennen und akzeptieren.
Gruß
Para
 

Claus Eckert

Moderator
Teammitglied
Ja klar. Wenn man keine Ahnung von den Dingen hat, dann sucht man sich lieber Jemanden.
Ich würde mir eine Wirtschaftsprüfung auch nicht zutrauen. ;)

@kalle 123
Das Wiki tut schon lesend und in rudimentären Style. Wir werden den Link in die Navigation erst setzen wenn die Anmeldung und das Schreiben möglich ist.

Der Link:
 
Hallo zusammen,
ein gutes neues Jahr und viel Gesundheit.

Ich konnte mir noch ein neues MPX HFMG3 Modul besorgen und werde nochmals einen Versuch starten, um M-Link auf meiner Taranis X9D zum laufen zu bringen. Bin mir nicht sicher, ob mein altes Modul defekt ist oder der verwendete Arduino Pro Mini 5V 16 Mhz nicht richtig funktioniert oder, ob die Telemetrie überhaupt bei der FrSky Taranis X9D über den Modulschacht funktioniert oder ich die Telemetrie extern über den Batterieschacht einspeisen muss? Bin, also wieder am Anfang.

Welchen Arduino ich für den neuen Versuch verwenden möchte, da bin ich mir noch unsicher... Jedenfalls 5V 16 MHZ, am liebsten den alten Arduino Mini Pro. Macht es meiner Meinung nach flexibler, wenn ich das Modul in andere Fernsteuerungen stecke und dort unterschiedliche Spannungen anliegen oder am COM-Port mal ein Telemetrie-Display angeschlossen wird und es hier nicht zu Problemen kommen kann... Aber ich habe gelesen, dass andere Probleme mit dem Bootloader hatten...

Bei meinem Arduino Pro Mini 5V 16 MHZ konnte ich mit der Arduino IDE die "Konverter_FrSky_IDs_v1_01.hex" ohne Probleme flashen. Dachte, das wars jetzt, aber leider ging es dann doch nicht. Vielleicht der Bootloader? Wie man den richtigen Bootloader mit der Arduino IDE flasht, habe ich noch nicht richtig herausfinden können. Vielleicht sollte ich einen anderen Arduino verwenden.

Schöne Grüße Andreas
 

kalle123

User
Danke KH und Claus,

...da frage ich mal jemand bei uns im Verein, der sich mit sowas auskennt. Für meine Modelle ist mir das alleine zu heiß, um da ein Risiko einzugehen.
Man muss seine Grenzen kennen und akzeptieren.
Gruß
Para
Hallo Para, dank dir für diesen post.

Deine o.a. Aussage und dein Ansatz ist vielleicht sinnvoll. Und ich werde (höffentlich ;)) in Zukunft vermeiden, jemanden, der hier aufschlagt mit der Prämisse 'keine Ahnung von', raten, sich Hilfe zu suchen. Alles weitere macht den thread hier nur weiter kaputt. Und für den, 'der sich mit so was auskennt', reicht das hex file von Reinhardt und der Plan mit den 4 Drähten.

Seh das gerade nochmal sehr deutlich in diesem thread hier 'Schwerpunkt Waage mit Arduino'. Verschiedenste sketche, verschiedene Hardware (Arduino, ESP8266 ...). Ziemliches Chaos.

Hallo Andreas.
Schön, dass du dich wieder meldest.

Das du noch ein HFMG3 bekommen hast, Glückwunsch.

Aber zwei Punkte, seh doch erst mal vom Einbau IN das HFMG3 ab und versuch es extern.

Der Arduino Pro mini 5V/16MHz kommt ohne Probleme mit den 7.2V der Taranis klar.

Und vielleicht, wie Reinhardt das vorgesehen hat, ein LED dem Arduino Pro mini hinzufügen, da sieht man doch, ob und ev. was sich da tut.

https://www.rc-network.de/threads/opentx-multiplex-mlink-konverter.581603/page-58#post-11894317

Musst einen Widerstand zwischen hängen bei 5V je nach LED

https://www.elektronik-kompendium.de/sites/bau/1109111.htm

Achtung! Die Buchse im Batteriefach der Taranis hat 2! mm pitch.

Gruß KH
 

kalle123

User
Bezüglich der LED Funktion setze ich den Teil aus Reinhardts Doku hier nochmal ein.

Status-LED:
Wenn das Programm auf einem Arduino Pro Mini läuft, wird der Status der Telemetrie-
Übertragung über die darauf vorhandene LED angezeigt.
Der Start bzw. Reset des Konverters wird durch eine spezielle Blinksequenz signalisiert
(3-mal lang/kurz/kurz).
Die LED ist aus, wenn der Konverter überhaupt keine Telemetrie-Daten vom M-Link
Modul empfängt (z.B. weil ein Modellspeicher angewählt ist, für den das M-Link Modul
nicht benutzt wird).
Dauerleuchten zeigt an, dass der Konverter in der Startschleife ist, während der er
empfangene Telemetrie-Daten ignoriert. Dieser Zustand dauert normalerweise nur
einige Sekunden.
Die LED blinkt schnell, wenn Datenpakete vom M-Link Modul empfangen und
ausgewertet werden, diese aber keine gültigen Telemetrie-Daten enthalten (z.B. vor
dem Einschalten des Empfängers, oder nach dessen Ausschalten). Der Konverter gibt in
diesem Fall keine Daten aus.
Langsames Blinken signalisiert, dass der Konverter gültige M-Link Telemetrie-Daten
verarbeitet und entsprechende Daten zum FrSky Sender schickt (normaler Betrieb).
Am Port B0 liegt ein identisches Ansteuerungs-Signal für eine externe Status-LED an. Diese
kann in der Taranis X9E z.B. in einem freien Schalterloch platziert und über einen passenden
Vorwiderstand mit dem Port B0 und Masse verbunden werden. Die externe Status-LED arbeitet
dann synchron mit der LED auf dem Arduino Board.
 
Hallo zusammen,

ich bin gerade mit der Planung der Verkabelung des Arduino mit dem HFMG3-Modul beschäftigt. Diesmal werde ich den Arduio extern anbringen. Verwendet wird der Arduino Pro Mini mit 3V und 8 Mhz.

Aus diesem Grund werde den Arduino über den COM-Port des Moduls mit Strom versorgen, dort liegen 3.3V an.

Vom COM-Port des Moduls (Daten, Plus, Minus) gehe ich mit einem Servo-Stecker zum Arduino. Also Daten auf Pin D2, Plus auf RAW und Minus auf GRND darunter.

Meine Frage ist: Muss ich vom Arduino, sprich vom TX0, nur noch mit einem Kabel zum Seriellen Signal-Eingang im Batteriefach (Pin ganz rechts) in meiner Taranis X9D Plus oder muss ich die Masse von dort auch am GND am Arduino anschließen?

Gruß Andreas
 
Hi,

zwischen RAW und dem µC sitz noch ein Spannungsregler. Wenn amModul stabile 3,3V anliegen ist es besser direkt auf die 3,3V am Arduino zu gehen.

Masse von der Taranis muß auch mit GND am Arduino verbunden werden - sonst finden die Electronen nicht heim ...

Gruß
 
Masse ist bereits durchverbunden über das M-Link Modul.
Die 8 MHz Variante läuft ab 2,7 V, ich würde daher nicht direkt auf den Mikrocontroller auf dem Arduino gehen.
Außer, es gibt Probleme mit dem Pegel des Ausgangssignals, was ich aber nicht erwarte.
 
Zuletzt bearbeitet:

kalle123

User
Schön Andreas, das es weiter geht
ok.gif


Aber ich hab da mal (wiedermal) ein paar Punkte ...

1.- https://www.rc-network.de/threads/opentx-multiplex-mlink-konverter.581603/page-42#post-6861990

Patman hatte hier doch schon mal im HFMG3 den Konverter und gibt das Signal vom Konverter über den Steckkontakt im Modulschacht weiter?! FrSky X10 wohl? Lässt sich der Kontakt bei der X10 auf Telemetrie konfigurieren und bei der X9D nicht, weswegen man bei der X9D ins Batteriefach muss? Bin verwirrt ...

2.- Warte immer noch auf die PCBs für den ATTiny und auch auf den Progadapter, Aber eine LED am Konverter (auch beim ATTiny) ist sicher sinnvoll. Also mal nach nem Editor für C gesucht (hab Bluefish installiert) und mal in Reinhardt Code (converter_main_v1_01.c) reingeschaut. ;)
Da findet sich der Part

Bildschirmfoto_2021-01-06_16-08-42.png

Nix von ATTiny, also mal so getestet und bin bei pin #10 'anscheinend' fündig geworden.

Um mich beim ATTiny zurechtzufinden, nehm ich das hier

ATTiny 441-841 pinout.jpg

Nur wie der Rückschluss von B5 (Arduino) auf diesen pin #10 geht?? Danke für nen kleinen Hinweis :cool:

3.- Wie ich die blinkende LED am ATTiny (facehugger) hier sah, hab ich natürlich direkt Lust bekommen, meine KiCad 'Fähigkeiten' zu üben. (Bitte keine Frage nach dem 'SINN' :D)

Bildschirmfoto_2021-01-06_16-06-18.png

Aber ich warte erst mal auf die Version 1.0.

4.- Jetzt kommt noch eine unverschämte Frage vielleicht an Reinhardt und Ralf. Wie baut man so einen C Code von Atmel auf ATTiny um? Was ich da in Bluefish so sehe, lesbar und dokumentiert!! Nur mal so die Richtung ......

Mir ist schon klar, dass ich nur Einklick in den 'master' hab, da kommt noch Einiges dazu.

Bildschirmfoto_2021-01-06_17-25-19.png



Danke und Gruß - KH

PS. Muss mich beschäftigen, das Wetter am Niederrhein im Winter (nass, kalt, grau) und dazu noch Corona in den Medien 24/7
 
Zuletzt bearbeitet:
Patman hat es intern verbaut, aber nur in seiner Horus X10S verwendet. Sein Modul mit Arduino hat er verkauft, aber er hatte für mich noch eines ohne Konverter. So bin ich zu meinem zweiten gekommen.
 
Er greift



ab.

Vcc, GND und S-Port und legt Vcc auf RAW vom Arduino.

Hatten wir hier schon .... https://www.rc-network.de/threads/opentx-multiplex-mlink-konverter.581603/page-55

cu KH

@Andreas. Lötungen sehen gut aus!
Bei der Taranis sieht Modulschacht-Pinbelegung wie oben aus.

Kann es sein, dass ich mit den Telemetriedaten vom Arduino (TX0) im Schacht bei "2 Heartbeat Eingang für S-Bus-Signal oder CPPM-Signale" rein muss?

Weil dann hätte ich was falsch gemacht. Fahre bei Pin 5 rein.
 

elral

User
Hallo zusammen,

Andreas,
ich habe die 3,3V des HF-Moduls an den VCC des proMini angeschlossen. Der Spannungsabfall über den Spannungsregler auf dem Arduino war mir zu kritisch (es gibt da sehr unterschiedliche Angaben). Ich wüsste auch nichts, was dagegen sprechen sollte da die 3,3V vom HF-Modul ja stabilisiert sind.

Kalle,
was meinst Du mit Pin "#10"?
Tja, Arduino, Fluch oder Segen ;) Für mich mittlerweile irgendwo dazwischen. Der Vorteil ist das übergreifend programmiert werden kann und viele Libraries genutzt werden können. Der Nachteil kommt aber genau dann, wenn man Ein-/Ausgänge bezeichnen möchte. Innerhalb Arduino "immer" gleich, aber bei reinem C bzw. bei eigenen Boards muss man dann immer ein Anschlussbild suchen aus dem die Zuordnung hervor geht. Ein weiterer Nachteil ist die IDE, deshalb benutze ich mittlerweile PlatformIO (statt Atmel Studio wie früher, das nur noch für die Fuses). Beim ATTiny sind 2 Ausgänge für LED's vorgesehen, der auf dem Nanite vorhandene an Pin B2 und eine weitere an Pin A3.
Das erklären was alles geändert werden muss wenn der Prozessor gewechselt wird (z.Bsp. vom ATmega328P zum ATTiny) würde den Thread hier wohl sprengen. Also nur ganz kurz, es müssen ggf. die EIn-/Ausgänge angepasst werden (nicht alle Ports müssen übereinstimmen), alle internen Register müssen geprüft werden ob diese vorhanden sind und ggf. angepasst werden. Und dann können noch so Überraschungen kommen das externe Interrupts nicht verwendbar sind da der Pin anders genutzt ist und auf PinChange Interrupts umgeschrieben werden muss (das ist dann schon aufwändiger).

VIele Grüße

Ralf
 

kalle123

User
Hi Ralf, den hier (also wohl A3)


Bildschirmfoto_2021-01-07_09-04-12.png


Aber noch mal nachgefragt.

Was ich vom Code sehe, ist die 'master' 'main' routine (converter_main_v1_01.c), oder wie man das nennt?
Hinzu kommen ja noch

#include <avr/io.h>
#include <avr/interrupt.h>
#include <stdint.h>
#include <stdbool.h>
#include <avr/wdt.h>

#include "../include/mlink_data.h"
#include "../include/mlink_interface.h"
#include "../include/frsky_data.h"
#include "../include/frsky_interface.h"
libs, subroutines oder wie die genannt werden?

Die ersten 5 davon sind wohl standard- und die 4 weiteren von Reinhardt geschriebene- Routinen?

Deine Anpassungen betreffen 'nur' den master oder auch die 4 Routinen? Dann hast du das unter PlatformIO zusammengefasst und den hex Code generiert? Den Code dann mit Atmel Studio auf den ATTiny + Fuses gesetzt. Verstehe ich das richtig?

Hatte mir hier schon mal PlatformIO drauf gepackt, aber für das, was ich so mache, ist das ein ziemlicher 'over kill'. ;)

Gruß KH
 
Hallo zusammen,

hier mal ein paar Fakten, was die Portierung des Konverters auf eine andere Hardware angeht.

Das Programm ist unter anderem deshalb modular aufgebaut, damit die hardwareunabhängigen Anteile separiert sind.
Hardwareabhängig sind nur die Module frsky_interface.c, mlink_interface.c und das Hauptprogramm, die anderen Code-Module müssen für eine Portierung nicht geändert werden. Der Aufwand hierzu hängt stark davon ab, auf welchen Controller man portiert und kann auch ein völliges Neuschreiben mancher Code-Anteile bedeuten, wie von Ralf schon angedeutet.

Ich verwende die Arduino IDE auch deswegen nicht, weil ein optimierter Code mit den Arduino Bibliotheken oft nicht möglich ist.
Daher programmiere ich lieber direkt in C, da weiss ich genau, was im Controller passiert.
Die Erstellung eines SW UART mit 115,2 kB ist mit der Arduino IDE schlichtweg gar nicht möglich, weder bei 8 noch bei 16 MHz Clock.

Auch mit dem Atmel Studio und direkter C-Programmierung muss man genau wissen, was man in der Interrupt Service Routine des SW UART macht. Ein Unterprogrammaufruf in der ISR, und schon dauert das Sichern und Wiederherstellen des Controller-Status länger als ein Bit lang ist. Nur mal so als Beispiel, wobei Unterprogrammaufrufe in einer ISR ohnehin tabu sein sollten. Bei 8 MHz Clock entspricht ein Bit der M-Link Telemetriedaten halt nur ca. 70 Taktzyklen. Wenn man durchschnittlich zwei Zyklen pro Befehl annimmt, sind das also etwa 35 (Maschinen-)Befehle. Das ist nicht viel, und der Compiler genehmigt sich einen grossen Anteil davon, um den Status zu sichern und wiederherzustellen.

Nur mal so am Rande.
 
Oben Unten