TFT LCD für 4fach-Diversity

Fat Tony

Erfahrener Benutzer
#1
Ich möchte euch an dieser Stelle kurz mein kleines Add-On für das 4fach-Diversity nach jreise vorstellen.
Die Schaltung dient lediglich der Visualisierung so wie der Band- und Frequenzwahl, sie beeinflusst dabei nicht den Betrieb der Diversity-Schaltung.

Das Programm umfasst im Moment zwei Menüpunkte, die Übersicht und das Band/Frequenz-Menü:


Ich denke beide sind soweit selbsterklärend.
In der Übersicht werden die RSSI-Werte dargestellt (der aktive Kanal ist heller).
Zusätzlich werden die aktuelle Frequenz und das Band, so wie die LiPo-Spannung dargestellt.
Der rechte Taster ist der der Diversity-Schaltung und wird von meiner Schaltung nicht ausgewertet.
Bei betätigen des linken oder mittleren Tasters wird in das Band/Frequenz-Menü gewechselt.
Hier kann nun mit dem mittleren Taster das Band und mit dem linken die Frequenz ausgewählt werden. Diese werden, mittels Optokoppler, an allen vier RX-Modulen eingestellt.
Die LiPo-Spannung so wie die RSSI-Pegel werden direkt am ATmega der Platine abgegriffen.
Weiterhin wertet meine Schaltung die LEDs A-D aus um zu festzustellen in welchem aktuellen Modus sich die Schaltung befindet. Um Eingänge zu sparen habe ich das Originalprogramm etwas modifiziert.
LED-A und B geben jetzt Binär den aktuell aktiven Kanal aus (A=00/B=01/C=10/D=11), LED-D gibt an ob sich die Schaltung in manuellen oder automatischen Modus befindet (A=0/M=1).
Der Offsetabgleich der Diversity-Platine wird wie gewohnt, durch drücken des entsprechenden Tasters vor dem einschalten, initiiert. Um einen Offsetausgleich in meiner Schalung durchzuführen muss einer der anderen beiden Taster beim Einschalten betätigt sein. Es ist sicherlich schicker beides über einen Taster auszulösen, jedoch hatte ich an dem von mir verwendeten ArduinoBoard keinen Pin mehr frei. Die ermittelten Offsetspannungen werden kurz im Display angezeigt und gespeichert. Dieser Vorgang muss also nicht jedes Mal wiederholt werden.

Der eleganteste Weg wäre sicherlich alles auf einer Platine umzusetzen mit nur einen mC, ich hatte jedoch keine Lust mich mit dem Assemblercode des Originals auseinander zu setzen.
Vielleicht findet sich ja noch jemand dafür ;)

Nun zum Nachbauen:
Wenn das Ganze nicht zu klein auslegt wird sollte es sich auch mit mittelmäßigen Lötkenntnissen umsetzen lassen.
Die einzige Schwierigkeit ist das umrüsten der RX5808 um das Band von extern einstellen zu können.

Ich verwende:
-Arduino TFT LCD
-Arduino Micro(Andere sollten es auch tun)
-Optokoppler (3 für Frequenz / 2 für Band) ich glaube ich habe zwei TLP 281-4 benutzt
-Zwei weitere Taster
-Das Gehäuse ist Geschmackssache. Ich nutze dieses hier.

Als erstes werden mal die Module umgebaut. Alles zum Umbau der vier RX-Module findet ihr hier. Einfach die Widerstände entfernen und das Pad das zum mC zeigt nach außen führen (Bx und S). Dann werden die Dip-Schalter von der Platine gelötet.

Wie ihr das Display und den Arduino verbaut bleibt euch überlassen, aber es empfiehlt sich dieses als erstes zu erledigen. Den Arduino habe ich einfach mit Sekundenkleber auf die Innenseite des Gehäuses geklebt. Habe dazu Die Stiftleisten abgeschnitten sodass nur noch der Kunststoff bleibt (Achtung, keinen Kurzschluss über das Alugehäuse verursachen).
Das Display wird mit vier Schrauben in das Gehäuse geschraubt. Auch hier gilt es drauf zu achten das kein Kurzschluss entsteht.




Aus Platzgründen habe ich die drei Taster über dem Display angeordnet. Sind leider nicht die kleinsten, aber dafür leuchten sie schön blau :D Unter den RX-Modulen fand sich noch ausreichend Platz dafür.
Habe ein Stück Lochrasterplatine so zurecht gesägt das sie genau in das Gehäuse neben die Platine passt. Anschließend die Taster einfach drauf gelötet. Den verbleibenden Platz rechts und links habe ich zur Unterbringung der Optokoppler verwendet.

Und dann kann es auch schon an das verdrahten gehen.
Düne Drahtlitzen nehmen sicherlich weniger Platz weg, brechen mir aber zu schnell ab,
gerade wenn es ständig auf und zu geschraubt wird. Habe mich daher für kleine Kabel entschieden.

Einen Schaltplan werde ich bei Gelegenheit zeichnen, aber im Moment fehlt mir die Zeit dazu.
Aber im Anhang findet ihr eine Tabelle die einen Nachbau ebenso ermöglichen sollte.

Nun müssen eigentlich nur noch die Programme drauf.
Wie schon erwähnt habe ich die original Software etwas angepasst. Die neue 4fach_diversity_TFT.hex findet ihr ebenfalls im Anhang.
Bei dem LCD TFT gibt es leider ein kleines Problem mit den aktuellen Arduino Versionen.
In der z.Z. erhältlichen Arduino-Software (V1.0.5 und 1.5.6) ist ein kleiner Fehler enthalten, dadurch wird das Display nicht richtig initialisiert.
Um dem Abhilfe zu schaffen, einfach im Verzeichnis ...\Arduino\libraries\ den Ordner TFT durch den in der .Zip ersetzen.
Je nach Version TFT_105.zip oder TFT_154.zip und schon sollte sich das Programm Diver_Control_V2.ino einspielen lassen.
Im Programm selber lässt sich noch der Spannungsteiler für die LiPo-Spannung anpassen.
Code:
float Spannungsteiler = 5.943;
Ebenso kann noch die Startfrequenz so wie das beim Start genutzte Band vorgegeben werden
Code:
int Band = 0;          // Gewähltes Band (0=A 1=B 2=E)
int Frequenz = 7;      // Gewählte Frequenz 0-7
Es handelt sich um eine noch recht frühe Version, daher habt bitte Mitleid wenn ihr Fehler findet ;)
Warte leider immer noch auf zwei meiner RX8508 Module, konnte daher bisher leider nur mit zweien Testen.
Videos und Feldtest folgen sobald ich alle drin habe.
Das Ganze ist natürlich ohne Gewähr, ich übernehme keinerlei Verantwortung für Schäden.

Und weil ich das ja nicht alles alleine gemacht habe, an dieser Stelle auch nochmal ein Danke an jreise für das tolle Diversity, an MH74 für die Hilfe mit der Kanalumschaltung und an Overtuner für die Gehäuse Idee.
Über die Notwendigkeit einer solchen Spielerei lässt sich sicherlich streiten, aber ich hatte noch ein Display über und einfach Spaß dran ;)
Bin Gespant auf eure Testberichte, Umsetzungen und Anregungen :D


EDIT:
Ich benutze für meinen Aufbau den PIN 13 als Eingang.
Anscheinend stellt dies, durch die auf dem Board verbaute LED, bei einem Arduino UNO ein Problem da.
Abhilfe schafft ein tauschen der PINs 8 und 13.
Code:
"int Channel_In_2 = 8;"
"int Frequenz_3 = 13;"
Werde dies in zukünftigen Programmversionen berücksichtigen.
 

Anhänge

Zuletzt bearbeitet:

MH74

Erfahrener Benutzer
#3
Daumen hoch !

Ich sehe schon mein neues Winterprojekt vor meinem geistigen Auge;)

Gruß Matthias

Zitat jreise: "ich liebe diese Zusammenarbeit"
DITO!!!
 
#5
Yes sehr gute Danke dir mal gucken ob ich das noch irgendwie in mein Gehäuse bring sonst muß ich wohl ne neue Auflage Gehäuse machen. Besten Dank.
 

DasWollvieh

Testet alles kaputt
#6
@Tony: Wie geil ist das denn????? Daumen hoch auch von mir.

Deine Bemerkung:"Über die Notwendigkeit einer solchen Spielerei lässt sich sicherlich streiten...."

Pfff.. Notwendigkeit ist kein Kriterium für FPV-ler :cool:

Gruss

DasWollvieh
 

Deepflights

Erfahrener Benutzer
#7
Auch von mir ein dickes:
DANKE! :D

Mein Display sollte am Freitag ankommen, da heute abend meine beiden Platinen fertig geworden sind, kann ich es kaum erwarten :)
 

DerLange

Erfahrener Benutzer
#8
Eine ganz feine Sache! Daumen hoch!!!
 

El-dentiste

1.21 Gigawatt
Moderator
#10
sehr sehr toll umgesetzt und erklärt von euch beiden!!
hätte da auch glaub ich Bock drauf zu bauen
rob musst wohl nochn Gehäuse fräsen ;)
 

Nimrod

Erfahrener Benutzer
#11
Ich würde mich auch mit 3 Gehäusen anschließen. Super Projekt. Und da passt es ja super das in den nächsten Tagen 10 diversity Platinen bei mir eintrudeln.

Werde mich sofort ans basteln machen
 

Nimrod

Erfahrener Benutzer
#13
könnte evt mal jemand so einen tollen schaltplan basteln, der die Anschlüsse visualisiert? ich würde es ja machen aber ich kann das nicht so gut wie einige andere hier^^
 

sl6der

Erfahrener Benutzer
#14
Ich habe die Platine zwar noch nicht fertig und demnach nicht angeschlossen, jedoch auf das Arduino gerade den Sketch geladen, leider bleibt das TFT weiß.
Eigentlich müsste es zumindest die Oberfläche zeigen?

Woran kann das liegen?
 

Fat Tony

Erfahrener Benutzer
#19

Dir ist schon klar das mein Programm für das 1.77" Display ist ?
Wenn es funktioniert wird es nicht dein ganzes 3.2" Display nutzen.
Und mein Programm unterstützt auch keinen Touch-Screen

Das Problem ist das ich nicht weiß an welchem Pin "LCD CS", "D/C" und "Reset" bei deinem Board angeschlossen sind.
Das müsstest du im Programm anpassen.
Code:
// Pinbelegung für TFT
//#define sd_cs  4
#define cs   5
#define dc   3
#define rst  2  
TFT TFTscreen = TFT(cs, dc, rst);
Du könntest zu Anfang mal ein Beispielprogramm von Arduino nehmen und schauen ob es funktioniert.
Die findest du im Programm unter Datei/Beispiele/TFT/..

Oder versuch mal:
Code:
#define CS   10
#define DC   9
#define RESET  8  

TFT myScreen = TFT(CS, DC, RESET);
oder
Code:
//pin definition for the Leonardo
#define CS   7
#define DC   0
#define RESET  1 

TFT myScreen = TFT(CS, DC, RESET);
 
Zuletzt bearbeitet:
RCLogger

FPV1

Banggood

Banggood

Oben