MobiFlight Community Support

Welcome to the forum for MobiFlight! Feel free to reach out to the community in case you have questions, issues or just want to share great ideas or details about your latest home cockpit project.

You like MobiFlight? Donate via PayPal and support the MobiFlight development. Thanks! 

05/03/2024 - This forum is read-only

The community support for MobiFlight has moved exclusively over to our Discord server. Register for free and enjoy more interactive functions like image and video upload, voice chat. More than 7,000 registered users around the world make it a great experience!

See you on our MobiFlight Community Discord server.

A HUGE Thank You to everyone who participated in the forum, especially obviously to Pizman and Stephan who did an outstanding job over so many years providing an incredible service to the MobiFlight community.

The forum is still providing a lot of good content, hence we keep this information accessible.

icon
Avatar
albeagle
Posts: 142
Hallo zusammen.

Ich hätte eine Frage und zwar, ich weiss nicht genau wie Mobiflight funktionert aber ist es möglich nachdem mann alles konfiguriert hat, ein Arduino sketch von Mobiflight heraus zu bekommen, so dass mann den sketch dann einfach in ein Arduino hochladen kann.

Danke im voraus
AlbEagle.
Regards
AlbEagle

https://flyingforfun.weebly.com/
2017-12-24 22:30
Avatar
StephanHo
From: EDDG, Germany
Posts: 1867
Supporter
Warum einfach, wenn es auch kompliziert geht...

Was bezweckst du damit?

Wenn ich dich richtig verstanden habe, möchtest du wissen, ob MF sich selbst als Sketch irgendwo hin schreiben kann, damit du diesen Sketch dann auf einen anderen Arduino laden kannst?

Meinst du so etwas wie einen Clone von einem Modul?
Grüße,
Stephan (Time: UTC+2)
2017-12-24 23:34
Avatar
pizman82
Moderator
From: ETSI, Germany
Posts: 6010
Supporter
Jein. :P

Ich hab es zwar noch nie selber probiert aber meines Wissens gilt allgemein..... DAS was auf dem Arduino ist, kann man nicht mit dem Quellcode vergleichen ( Den du z.b. siehst wenn du selber einen sketch schreibst )
Dieser sketch wird ja umgeandelt (kompiliert) bevor er drauf geschrieben wird.
Somit wäre das was du "saugst" vermutlich ein Wirrwar aus Symbolen

Im Gegenzug ist es natürlich auch kein Geheimniss das es findige Leute gibt die z.b. ein Computerspiel "cracken" um einen Kopierschutz zu entfernen ( Damals in den 2000er) .
Es gibt also Decodierer Programme bzw es gibt Leute die solche schreiben können..... und damit das Wirrwar wieder zu quellcode machen.

Nun kann ein Element natürlich auch noch besonders gegen eindringen geschützt sein wie ein Controller eines Geldspielautomaten.... Aber auch diese wurden bereits geknackt.... Und ich würde mal schwer vermuten das Sebastian bei ner OpenSource Software keinen zusätzlichen "Schutz" verarbeitet hat um ein "eindringen" zu erschweren.

*****
Fazit: Es geht bestimmt aber ist für einen Laien schwierig bzw erfordert ein Programm mit dem du den Umgang erstmal lernen musst ( Und das Programm erstmal finden musst)

FRAGE: WOFÜR eigentlich das ganze ?
Wenn du ein Board duplizieren willst dann brauchst du doch nur die DEVICE Settings speichern (*.mfmc File)
Hast ein neues Board dann flashed du die Firmware, lädst das mfmc File und schreibst es auf das Board und fertig ist der Spass.
Einmalig musst du noch das neue Modul in einer Config "Einbinden" mit dem Tool "Verwaiste Module" und dann ist es für Mobiflight wie wenn nie was gewesen wäre.

Solltest du vor haben selber im Code etwas zu ändern um z.b. eine Funktion zu haben die es in MF nicht so gibt dann würde ich empfehlen eher auf der Mobiflightseite anzugreifen !
Denn der MF Code ist ja frei verfügbar.....
Experimentiere mit dem Open Source Material und bringe dein ergebnis über Sebastian wieder in den Pool. Wenn das Ergebniss gut ist dann wird es Teil der nächsten version..... Wenn nicht bleibt es dir immer noch frei das für DICH zu nutzen ! Thats Open Source !!!

Frohe Weihnachten !
Good Luck !
2017-12-25 00:01
Avatar
albeagle
Posts: 142
Hallo Stephan und Pizman82.

Mit dem code meinte ich damit die .hex datei die mit sicherheit ertmal irgendwo inzwichen gelagert wird (vermute ich) wie zum beispiel wenn mann ein Arduino sketch kompiliert, wird die .hex datei in dem Temp ordner zwichen gespeichert.

Also da ich mir das radio und GPS für die Cessna 172 als PCB machen möchte, wäre es einfacher wenn ich zwei atmega 2560 chips in dem PCB incorporiere und den sketch hochlade, somit wäre das radio einfacher an dem PC anzuschliessen und mann bräuchte keine Arduino megas anzuschliessen.

Und der zwite Grund wäre, die Software die ich für PCB design benutze (Proteus) hat die Simulation option wo mann diese .hex datei braucht um in das virtuelle arduino hoch zu laden und zu überprüfen ob alles richtig läuft. Das wäre also sehr hilfreich wenn ich irgendwie an diese .hex datei ran kommen könnte. Es wäre auch sehr einfach etwas zu ändern, mann ändert die gewünschte optionen in mobiflight und nach der kompilierung hätte mann die geänderte .hex datei automatisch da.

Frohe Weinachten :)
AlbEagle
[Last edited by albeagle, 2017-12-25 01:39]
Regards
AlbEagle

https://flyingforfun.weebly.com/
2017-12-25 01:32
Avatar
pizman82
Moderator
From: ETSI, Germany
Posts: 6010
Supporter
Holla.... Jetzt wirds professionell :-)

An der stelle muss ich mich eigentlich ausklinken.... Vielleicht kann Stephan noch was helfen... Ansonsten würd ich eher an Sebastian verweisen.

Aber aus eigenen interesse würde ich fragen warum du so kompliziert planst.... Also das du den Chip selber auf das PCB pflanzen willst.... Ganze Elemente dann nachbilden musst usw.

Ohne mich jetzt damit genau auseinandergesetzt zu haben würde mir spontan die Idee eines Kompromisses kommen.
Grundsätzlich würden die meisten Leute hier die Elemente wie Schalter encoder usw auf dem PCB integrieren und irgendwo eine "Schnittstelle" machen.
Sozusagen ein Pinblock auf dem ein vorgeplanter stecker ( z.b.2x20 Flachband) geht.... Dieser wird am anderen Ende ins arduino verstöpselt.
Auch werden die meisten z.b. die MaxChips nicht direkt ins PCB integrieren sondern nur die Einzeldiggits ( Bei nen PCB kannst ja problemlos mit singles arbeiten) .... Dann aber auch wieder mit ner Schnittstelle arbeiten die ein 12er Block zu einen Max7219 Tube (Premade) erlaubt.

Nun beim Max7219 denke ich sollte ein verbau eines reinen Chips auf dem PCB kein problem sein....Die interne Verkabelung und Cascadierung erfolgt auf dem PCB und die eigentlichen 5 Zubringer enden dann an oben angesprochener Schnittstelle zum Mega !

*****
Jetzt ist die Frage.... Macht es Sinn den Mega selber auch noch komplett selber aufzusetzten oder behilft man sich mit einen selbstgebauten SHIELD direkt auf dem PCB ??

Ich persönlich hätte als erstes daran gedacht auf dem PCB einen Bereich in der Größe eines Megas zu planen das die Pins wie ein Shield hat ...( Das Bikld ist was anderes... Meinte nur die PINS Unter diesen Element ... Hoffe du weist was ich meine)


So das du am Ende dein Mega einfach verkehrt rum auf das PCB stecken kannst und alle Leitungen die man normal per strippe zieht jetzt dann direkt auf dem PCB laufen ( Daten und Stromverteilung)

Was ich jetzt nicht weis ist ob man den USB Ausgang auch als PIN Ausgang machen kann..... Falls ja könntest dann sogar die T Verbindung auf dem PCB realisieren so das am Ende an einer Stelle ein USB Port angelötet wird der die einzige Komunikation mit dem PC darstellt.(für beide Boards)
Falls nicht könntest du zumindest einen Stecker machen so das du das MEGA sozusagen mit 5 CM Kabel am Originalen USB Port ansteckst und das kabel endet verlötet im PCB wo die Leitung dann weiter läuft.

Bin gespannt was du davon hällst..... Bzw bin Neugierig ob du das SELBER verbauen eines Mega Chips wirklich als "einfach und machbar" siehst.
Good Luck !
2017-12-25 02:07
Avatar
albeagle
Posts: 142
Haahahah Pizman was du gerade gesagt hast ist genau was ich momentan mache. Also ich habe zusätzlich noch ein pcb gemacht um zwei megas einfach anzuschliessen, und den dieses PCB dann hinter dem haupt pcb zu befästigen und durch 40 pin ribbon kabel an das radio zu schliessen. In diesem fall braucht man zwei usb kabeln nur um die Arduinos an PC einzuschliessen. Ich dachte nur es wäre besser wenn mann einfach zwei atmel chips einsätzt und somit wäre es noch schöner und besser. Schwierig ist es nicht, aber ich werde erstmal diesen weg gehen. Den code hätte ich aber gerne gebraucht wie gesagt um das ganze zu simulieren. Unten ein paar fotos was ich geplant habe.






AlbEagle
Regards
AlbEagle

https://flyingforfun.weebly.com/
2017-12-25 03:37
Avatar
pizman82
Moderator
From: ETSI, Germany
Posts: 6010
Supporter
Zum Code....
Wie gesagt.... Bitte warte auf eine Antwort von Sebastian.... Oder besser schicke ihm eine Mail für persönlichen kontakt. Denke er kann dir da helfen.

Zum Projekt.

In meinen Gedanken war das arduino anders rum....Also nicht von hinten aufgelötet sondern das Pins auf deinen PCB sind ( Diese lötest du ein) und das Arduino wird gänzlich nur gesteckt....
Vielleicht denke ich da sehr konservativ aber wenn ich mir schon so eine Arbeit mache und es perfekt umsetzte dann sollte der Aspekt "Austauschbar" auch ne Rolle spielen.
Würde also hier mit Pins arbeiten damit du bei bedarf das Arduino wechseln kannst.

Selbes gilt für die Displays.... Anstatt die Displays zu verlöten würde ich an die Displays angepasste Buchsenleisten verbauen.... So das du die Displays Aufstekcen kannst und falls mal eins drauf geht eben einfach abziehen kannst ( Wobei die Displays vermutlich sehr lange halten)
By the way würde ich mir auch Gedanken machen ob du nicht auf SINGLE DIGGIT gehst.... Wenn du eh das PCB herstellt kannst es auch so planen..... Vorteil: ALLE Diggits haben die gleiche Pin Logik..... Sehen Gleich aus .... Du kriegst so individuell DAS Display (Farbe Größe Form) das du willst.
( 3er 4er und 5er in gleicher Optik sind schwer zu kriegen)

Womöglich findest so auch die 16 Segmenter in gleicher größe bzw du könntest komplett mit 16er arbeiten (damit alles gleich aussieht) aber per Leiterbahnen eben nur die 8 benötigten Lines anschließen.

Abschließend sehe ich auf dem Board keine Max7219.... ( Nur Schieberegister oder was das sein soll) Ich vermute aber schwer du wirst diese ebenfalls dort integrieren.
Auch würde ich mir Gedanken machen ob du "Unterhalb, Oberhalb oder Seitlich" des PCB noch platz im Cockpit hast.... Falls ja kannst du die Arduinos direkt auf dem PCB verbauen und sparst dir die 3x 40ger Leitungen.

Somit: Kompliment für diese professionelle Arbeit !
Nettes Brainstorming und gute Ideen für mein Projekt. Danke !
Good Luck !
2017-12-25 08:25
Avatar
albeagle
Posts: 142
iconpizman82:

Zum Code....
Wie gesagt.... Bitte warte auf eine Antwort von Sebastian.... Oder besser schicke ihm eine Mail für persönlichen kontakt. Denke er kann dir da helfen.

Zum Projekt.

In meinen Gedanken war das arduino anders rum....Also nicht von hinten aufgelötet sondern das Pins auf deinen PCB sind ( Diese lötest du ein) und das Arduino wird gänzlich nur gesteckt....
Vielleicht denke ich da sehr konservativ aber wenn ich mir schon so eine Arbeit mache und es perfekt umsetzte dann sollte der Aspekt "Austauschbar" auch ne Rolle spielen.
Würde also hier mit Pins arbeiten damit du bei bedarf das Arduino wechseln kannst.

Selbes gilt für die Displays.... Anstatt die Displays zu verlöten würde ich an die Displays angepasste Buchsenleisten verbauen.... So das du die Displays Aufstekcen kannst und falls mal eins drauf geht eben einfach abziehen kannst ( Wobei die Displays vermutlich sehr lange halten)
By the way würde ich mir auch Gedanken machen ob du nicht auf SINGLE DIGGIT gehst.... Wenn du eh das PCB herstellt kannst es auch so planen..... Vorteil: ALLE Diggits haben die gleiche Pin Logik..... Sehen Gleich aus .... Du kriegst so individuell DAS Display (Farbe Größe Form) das du willst.
( 3er 4er und 5er in gleicher Optik sind schwer zu kriegen)

Womöglich findest so auch die 16 Segmenter in gleicher größe bzw du könntest komplett mit 16er arbeiten (damit alles gleich aussieht) aber per Leiterbahnen eben nur die 8 benötigten Lines anschließen.

Abschließend sehe ich auf dem Board keine Max7219.... ( Nur Schieberegister oder was das sein soll) Ich vermute aber schwer du wirst diese ebenfalls dort integrieren.
Auch würde ich mir Gedanken machen ob du "Unterhalb, Oberhalb oder Seitlich" des PCB noch platz im Cockpit hast.... Falls ja kannst du die Arduinos direkt auf dem PCB verbauen und sparst dir die 3x 40ger Leitungen.

Somit: Kompliment für diese professionelle Arbeit !
Nettes Brainstorming und gute Ideen für mein Projekt. Danke !



Genau wie du gesagt hast, arduinos, max7219 chips und 7 segment displays werden austauschbar sein. Beim arduino board werden die pins gelötet damit mann das Arduino einfach rein steckt und das selbe auch mit displays und max7219 chips.

Arduinos werden im foto so angezeigt weil mann im pcb löcher haben muss um dort pins zu löten und ich konnte sie nicht umdrehen aber es ist so gedacht wie du gesagt hast.

Die auf dem foto zu sehen sind max7219 chips. Ich habe die smd version nicht benutzt weil ich wie gesagt sie austauschbar machen möchte.

Das mit einzelnen nummern werde ich vermeiden wegen der hohen zahl von verbindungen.

Ich werde Sebastian ein e-mail schicken und hoffe dass es machbar sein wird.

Und danke schön für die nette worte und deine Unterstüzung. Es ist sehr schön wenn mann weisst dass da jemand hilfsbereit ist. Danke nochmal und schöne Feiertage :)
Regards
AlbEagle

https://flyingforfun.weebly.com/
2017-12-25 11:51
Avatar
StephanHo
From: EDDG, Germany
Posts: 1867
Supporter
Hi, ihr beiden,

also erstmal Hut ab für eure Gedankenspiele und Betrachtungsweisen. Es muß einem "Schlichtdenker" erstmal gelingen, diese Sphären zu erklimmen.

Keine Mega-Boards (mehr) zu benutzen und nur die Chips in eigene PCBs zu integrieren, dazu gehört schon etwas. Neben dem zu verbratenen Gehirnschmalz bedarf es auch einer Menge Zeit für die Entwicklung und Realisation des Ganzen, von der zu investierenden Kohle mal ganz zu schweigen.

Albeagle, hast du mal durchkalkuliert, was dich so ein PCB kosten wird? Das gängige Euro-Kartenformat (100 x 160 mm) dürfte dabei überschritten werden.

Wenn ich müßte, würde ich den Weg von Pizman gehen, weil sich m.E. seine Schritte einfacher integrieren lassen und wartungsfreundlicher sind. Ob Einzeldigits oder Tubes sinnvoller sind, lasse ich mal dahingestellt, wobei bei Ersterem wiederum eine größere Flexibilität vorhanden sein dürfte. Aber auch mehr ideeller und finanzieller Aufwand.

Ich denke, der Hintergrund von MobiFlight ist, kostengünstig ein eigenes HC zu realisieren. Bei dem, was du hier initiierst, scheinst du den günstigen Kostenfaktor von MF durch Eigenentwicklung zu kompensieren und mir stellt sich die Frage, geht es noch um Cockpitbau und Fliegen oder um Hardwareentwicklung oder erweitert sich das Spektrum des eigenen Tuns um diesen Bereich? Bitte nicht falsch verstehen, für deine Intention hast du meinen vollsten Respekt und meine Anerkennung!

Doch zum eigentlichen Problem.
Die .hex-Datei. Sie entsteht, wie pizman richtig schildert, beim Kompilierungsprozeß des Sketches und ist temporärer Natur und wird nach Verlassen der Arduino IDE wieder gelöscht. Korrekt ist eigentlich, daß für jede Kompilierung in C:\USERS\<NAME>\temp (sofern es nicht geändert wird) ein Verzeichnis angelegt wird, das mit build beginnt und auf .tmp endet - also build1234567890987654321.tmp.
Wird die IDE verlassen, werden die temporären Verzeichnisse alle wieder gelöscht. Soweit zum Verhalten der Arduino-IDE selbst.

MobiFlight benutzt nun diese IDE, um die für sein Arbeiten erforderliche .hex-Datei zu erstellen. ABER, und dieses aber ist entscheidend: MF ruft die IDE auf, kompiliert den Sketch und danach wird die IDE sofort wieder verlassen. Damit sind auch alle temporären Verzeichenisse, die die IDE anlegt, unmittelbar wieder gelöscht. Ob und wie man da eingreifen kann, weiß ich nicht.

Ich sehe lediglich eine Möglichkeit, einen eigenen Copy-Prozeß im Hintergrund zu starten, der sich diese build....tmp-Verzeichnisse schnappt und wegkopiert. Eine kleine Batch im CMD-Prozeß könnte dies z.B. erledigen. Nun kommt es dabei aber darauf an, daß die Batch schneller ist, als die IDE löschen kann. Die Batch selbst killt man dann mit dem Task-Manager oder trifft Vorkehrungen, sie mit einem Tastendruck zu beenden.

Ob Sebastian die Standardverzeichnisse benutzt oder bei den Übergabeparametern eigene Verzeichnisse angibt, müßte er sagen können. Vielleicht gibt es ja hier noch jemanden, der eine bessere Idee zum mopsen der .hex-Datei hat.
Grüße,
Stephan (Time: UTC+2)
2017-12-25 12:39
Avatar
drome
Posts: 9
Hi.
Und ein gesundes und erfolgreiches Jahr 2018 wünsche ich euch erstmal.

Habe gerade das interessante Thema gelesen.

Ich habe mir das ganze nochmal im Code angeschaut. Die eigentliche Mobiflight-Firmware ist ein Sketsch der schon beim Release kompiliert wird.
Mobiflight nutzt nur die Arduino-IDE um dieses fertige .hex File auf den Arduino zu schreiben.
Die Konfiguration die man mit Mobiflight anpasst wird auf dem Arduino im ROM-Speicher abgelegt.
Sprich es wird nicht jedes mal ein neues .hex File generiert sondern nur die ROM-Daten geändert. Der Sketsch holt sich dann die Konfig beim Arduino-Start aus dem ROM.

Ich muss zu hause mal schauen wo die .hex Datei bei der installierten Variante abgelegt ist.

Ich hoffe das die Info ein wenig weiter hilft.

MFG
Danny
2018-01-02 13:41
Avatar
albeagle
Posts: 142
@drome

Es hört sich sehr gut an. Falls du noch herausfinden kannst wo die .hex datei zwichengespeichert wird wäre super.

AlbEagle.
Regards
AlbEagle

https://flyingforfun.weebly.com/
2018-01-03 20:42
icon