Diy Graupner OSD

Status
Nicht offen für weitere Antworten.

bruchpilot05

Erfahrener Benutzer
#63
Die Hardware habe ich schon zusammen gebastelt. ;-)
Ich hatte damals schon etwas gefunden.
http://diydrones.com/forum/topics/o...extra?id=705844:Topic:1620914&page=2#comments

Bei mir macht aber das GPS noch Probleme, da das OSD wahrscheinlich nur das GPS vom S.Port erkennt und nicht vom älteren D-Protokoll. Da müssten irgendwo die Adressen geändert werden.
Ich habe es aber noch nicht geschafft, den Script auf das D-Protokoll umzuschreiben. Habe da keinen Anhaltspunkt, da das Script doch recht umfangreich ist.
Strom, Spannung und RSSI werden schon in der Brille dargestellt.

Der Opentracker läuft bei mir auch schon, will ihn aber gern mit einem Ground-OSD ausrüsten.
 
Zuletzt bearbeitet:
#64
Hier die Instalationsreihenfolge

1.Sketch einstellen

in OSD_Config.h

//protocol used
//#define PROTOCOL_HOTT_BT //Bluetooth
#define PROTOCOL_HOTT_DATA //DATA Port

Weg aus suchen den nicht gebrauchten mit // auskommentieren (oben gehts über den DataPort)

Sketch ins Minimosd laden.

2. Update Character set (front set)

Hier eine Anleitung LINK

nur diese Datei nehmen GhettOSD_1.0.0.0.mcm

Jetzt sollten die Icons richtig sein

3. Da du nur ein Electric Air Module (EAM) und kein GAM hast mußt du die im Sketch die Zuordnung ändern

in HottDATA.cpp

Code:
                                lastpacketreceived = millis();
                                  
                                  osd_rssi = GamData.Rec_RX_S_STR;
                                  				
                                  osd_vbat_A = GamData.Battery1;
                                  osd_vbat_A = osd_vbat_A / 10;
                                  osd_vbat_B = GamData.Battery2;
                                  osd_vbat_B = osd_vbat_B / 10;                                  
                                  osd_curr_A = GamData.current;
                                  osd_curr_A *= 10;
                                  mah_used = GamData.batt_cap;
                                  mah_used *= 10;
ändern in

Code:
                                lastpacketreceived = millis();
                                  
                                  osd_rssi = EamData.Rec_RX_S_STR;
                                  				
                                  osd_vbat_A = EamData.Battery1;
                                  osd_vbat_A = osd_vbat_A / 10;
                                  osd_vbat_B = EamData.Battery2;
                                  osd_vbat_B = osd_vbat_B / 10;                                  
                                  osd_curr_A = EamData.current;
                                  osd_curr_A *= 10;
                                  mah_used = EamData.batt_cap;
                                  mah_used *= 10;
(fast ganz unten)

wobei die GPS Daten gehen sollten
Wenn ich über den Data-Port über einen Seriellen Adapter die Funke verbinde habe ich 19200 eingestellt.
Wenn ich über den Mini-USB-Port die funke driekt mit dem PC verbinde muss ich 115200 einstellen. Soweit richtig?

Mit der geänderten Software funktioniert das RSSI. Die anderen Sachen leider noch nicht. Außerdem Flackert das OSD im Bildschirm?

Hmm, glaub unsere Systeme sind schon sehr unterschiedlich :confused:

Gibts zu dem Problem schon eine Lösung?
Stehe vor dem selben Problem das RSSI angezeigt wird und Batteriespannung etc. nicht.
Ist im Stetch auf EAM umgestellt da Betaflight ein Electric-Air-Modul am Empfänger simuliert.
 
#69
So hab mich da WE mal selber hingesetzt weil ich das OSD zum laufe kriegen wollte mit meinem Electric-Air-Modul bzw. den Daten die Cleanflight/Betaflight an den Empfänger weiter gibt.

Es muss folgendes geändert werden in der:

HottBtUsb.cpp

Code:
                        lastpacketreceived = millis();
                                  
                                  osd_rssi = ReceiverData.ui8Strength; //ui8Dbm;
                                  				
                                  osd_vbat_A = GamData.Battery1;
                                  osd_vbat_A = osd_vbat_A / 10;
                                  osd_vbat_B = GamData.Battery2;
                                  osd_vbat_B = osd_vbat_B / 10;                                  
                                  osd_curr_A = GamData.current;
                                  osd_curr_A *= 10;
                                  mah_used = GamData.batt_cap;
                                  mah_used *= 10;
ändern in

Code:
                        lastpacketreceived = millis();
                                  
                                  osd_rssi = ReceiverData.ui8Strength; //ui8Dbm;
                                  				
                                  osd_vbat_A = EamData.Battery1;
                                  osd_vbat_A = osd_vbat_A / 10;
                                  osd_vbat_B = EamData.Battery2;
                                  osd_vbat_B = osd_vbat_B / 10;                                  
                                  osd_curr_A = EamData.current;
                                  osd_curr_A *= 10;
                                  mah_used = EamData.batt_cap;
                                  mah_used *= 10;
Damit klappt bei mir jetzt auch die Spannungsanzeige :)

So jetzt habe ich aber gleich das nächste Problem umzwar mit der Umschaltung der Panels, bzw. diese komplett auszuschlaten.
Ich habe einen Schalter an den Current-Pin des OSDs gelegt (A1).
Wenn ich diesen jedoch einschalte passiert nix, das Panel sollte sich ja abschalten, bzw. die OSD anzeige verschwinden und nur das Bild da bleiben ?!
Ich dreh so langsam am rad damit :)
 
#73
Also ich glaube langsam ich bin zu blöde.
Es ist alles so eingestellt wie in dem Bild was du oben gepostet hast.
An A1 (Current) des MicroMinim OSDs hängt ein schalter mit dem ich 5V schalte.
Wenn ich den Schalter betätige passiert nichts !
 
#76
Genau so habe ich es auch angeschlossen, außer das mein Schalter direkt auf 5V schaltet.
Habe jetzt auch schon über den Serial Monitor den A1 mit analogread ausgelesen, bei Schalter AUS Value=0, bei Schalter EIN Value=1023
Alles kommt also sauber an, wird aber iwie von der Software nicht verarbeitet :(
 

Ziege-One

Erfahrener Benutzer
#77
Hi

In der OSD_Panels.ino

else {
if(ch_toggle == 5) ch_raw = chan5_raw;
else if(ch_toggle == 6) ch_raw = chan6_raw;
else if(ch_toggle == 7) ch_raw = chan7_raw;
else if(ch_toggle == 8) ch_raw = chan8_raw;
ch_raw = analogRead(A1); //Curr
//Switch mode by value
if (switch_mode == 0){
//First panel
if (ch_raw < 200 && panel != 0) {
//if (ch_raw < 1200 && panel != 0) {
osd_clear = 1;
//osd.clear();
panel = 0;
}
//Second panel
else if (ch_raw >= 200 && ch_raw <= 800 && panel != 1) { //second panel
//else if (ch_raw >= 1200 && ch_raw <= 1800 && panel != 1) { //second panel
osd_clear = 1;
//osd.clear();
panel = 1;
}
//Panel off
else if (ch_raw > 800 && panel != npanels) {
//else if (ch_raw > 1800 && panel != npanels) {
osd_clear = 1;
//osd.clear();
panel = npanels; //off panel
}
}
//Rotation switch
else{
if (ch_raw > 1200)
if (osd_switch_time + 1000 < millis()){
rotatePanel = 1;
osd_switch_time = millis();
}
}
}

hier wird umgeschaltet vieleicht hat es was mit ch_toggle zu tun der muss grösser 5 sein zur not auskommentieren.
bin noch nicht zum testen gekommen
 
#78
So habe den Code jetzt zig mal durchgeguckt und Sachen ausprobiert.
Machmal ist es doch leichter als man denkt.
Mit deinem Code muss man folgendes im Config Tool einstellen damit die Umschaltung funktioniert

Jetzt funzt alles wie es soll, vielen Dank für deine Hilfe.
 

Anhänge

Status
Nicht offen für weitere Antworten.
FPV1

Banggood

Oben Unten