open360tracker - Der Community Antennentracker Made in Germany

MarenB

Runter kommen sie immer!
Mal ne Frage, kann man das GPS zwischen FrSky + APM sharen und ich somit die Daten aus der FrSky auf den Tracker schicke
Du kannst die Tx-Leitung vom GPS auch an einen Arduino-ProMini führen und damit auf S-Port umsetzen, s. DIY-FrSky-GPS von Rangarid.
Mache ich in zwei-drei Modellen selber so.
 

MarenB

Runter kommen sie immer!
Bin ich noch nicht zu gekommen. Hatte mir letztens extra was auf einen Stick kopiert, um während einer Dienstreise abends daran arbeiten zu können, musste dann aber feststellen, dass ich nur die Projektdatei kopiert hatte, die wichtigen .ipt aber nicht :/
 

pjk

Neuer Benutzer
Hi!
I think you can only ,,listen,, to the protocol(Tx only- MSP stream) if the system is connected with OSD,many users multiwii and NAZE32 ...would be interested.
 

pjk

Neuer Benutzer
See it, may be useful:



static uint8_t dataSize;
static uint8_t cmdMSP;

int p=0;
int i=0;

uint32_t read32() {
uint32_t t = read16();
t+= (uint32_t)read16()<<16;
return t;
}
uint16_t read16() {
uint16_t t = read8();
t+= (uint16_t)read8()<<8;
return t;
}
uint8_t read8() {
return SerialBuffer[p++]&0xff;
}
/*
static int32_t read32()
{
int32_t xx=0;
xx = (SerialBuffer[p]&0xff)+((SerialBuffer[1+p]&0xff)<<8)+((SerialBuffer[2+p]&0xff)<<16)+(SerialBuffer[3+p]<<24);
//xx = (SerialBuffer[p++]&0xff)+((SerialBuffer[p++]&0xff)<<8)+((SerialBuffer[p++]&0xff)<<16)+((SerialBuffer[p++]&0xff)<<24);
p=p+4;
//xx = read16() + read16()<<16;
return xx;
}

//int read16() {return (inBuf[p++]&0xff) + ((inBuf[p++])<<8); }
static int16_t read16()
{
int xx=0;
xx = (SerialBuffer[p]&0xff)+(SerialBuffer[1+p]<<8);
p=p+2;
return xx;
}

static int8_t read8() {
return SerialBuffer[p++];
}
*/

// --------------------------------------------------------------------------------------
// Here are decoded received commands from MultiWii
void SerialMSPCheck()
{
p=0;

if ((cmdMSP==MSP_IDENT) && (dataSize==7))
{
MwVersion=read8(); // MultiWii Firmware version
}

if ((cmdMSP==MSP_STATUS) && (dataSize==10))
{
CycleTime=read16();
I2CError=read16();
MwSensorPresent = read16();
MwSensorActive = read32(); // serialize8(nunchuk|ACC<<1|BARO<<2|MAG<<3);

// Doit être corrigé <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
// serialize32(f.ACC_MODE<<BOXACC|f.BARO_MODE<<BOXBARO|f.MAG_MODE<<BOXMAG|f.ARMED<<BOXARM|
// rcOptions[BOXCAMSTAB]<<BOXCAMSTAB | rcOptions[BOXCAMTRIG]<<BOXCAMTRIG |
// f.GPS_HOME_MODE<<BOXGPSHOME|f.GPS_HOLD_MODE<<BOXGPSHOLD|f.HEADFREE_MODE<<BOXHEADFREE|
// f.PASSTHRU_MODE<<BOXPASSTHRU|rcOptions[BOXBEEPERON]<<BOXBEEPERON|rcOptions[BOXLEDMAX]<<BOXLEDMAX|rcOptions[BOXLLIGHTS]<<BOXLLIGHTS|rcOptions[BOXHEADADJ]<<BOXHEADADJ);

// MwSensorActive = read8(); // Ancien = serialize8(accMode|baroMode<<1|magMode<<2);
// Armed=read8(); // Ancien... maintenant un bit à extraire
}

if ((cmdMSP==MSP_RAW_IMU) && (dataSize==18))
{
for(i=0;i<3;i++) MwAccSmooth = read16(); // for(i=0;i<3;i++) serialize16(accSmooth);
}

if ((cmdMSP==MSP_RC) && (dataSize==16))
{
for(i=0;i<8;i++) MwRcData = read16();
}

if ((cmdMSP==MSP_MOTOR) && (dataSize==16))
{
for(i=0;i<8;i++) MwMotData = read16();
}

if ((cmdMSP==MSP_RAW_GPS) && (dataSize==14))
{
GPS_fix=read8();
GPS_numSat=read8();
GPS_latitude = read32();
GPS_longitude = read32();
GPS_altitude = read16();
GPS_speed = read16();
}

if ((cmdMSP==MSP_COMP_GPS) && (dataSize==5))
{
GPS_distanceToHome=read16();
GPS_directionToHome=read16();
GPS_update=read8();
}

if ((cmdMSP==MSP_ATTITUDE) && (dataSize==8))
{
for(i=0;i<2;i++) MwAngle = read16();
MwHeading = read16();
read16();
}

if ((cmdMSP==MSP_ALTITUDE) && (dataSize==4))
{
MwAltitude = (read32()/EstAltValue);
}

if ((cmdMSP==MSP_BAT) && (dataSize==3))
{
read8();
PowerMeterSum=read16();
}

if ((cmdMSP==MSP_RC_TUNING) && (dataSize==7))
{
debug1=dataSize;

rcRate8 = read8()*2;
rcExpo8 = read8();
rollPitchRate = read8();
yawRate = read8();
dynThrPID = read8();
read8(); // conf.thrMid8 Pas sûr... <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
read8(); // conf.thrExpo8 Pas sûr... <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
}

if ((cmdMSP==MSP_PID) && (dataSize==30))
{
debug2=dataSize;

PID_RollP=read8();
PID_RollI=read8();
PID_RollD=read8();

PID_PitchP=read8();
PID_PitchI=read8();
PID_PitchD=read8();

PID_YawP=read8();
PID_YawI=read8();
PID_YawD=read8();

PID_AltP=read8();
PID_AltI=read8();
PID_AltD=read8();

read8(); // VEL DATA, NOT USED IN GUI
read8(); // VEL DATA, NOT USED IN GUI
read8(); // VEL DATA, NOT USED IN GUI

PID_GpsP=read8();
PID_GpsI=read8();
PID_GpsD=read8();

PID_LevelP=read8();
PID_LevelI=read8();
PID_LevelD=read8();

PID_MagP=read8();
read8(); //Mag I not used in GUI
read8(); //Mag D not used in GUI
}



/*
for(i=0;i<3;i++) MwAccSmooth = read16(); // for(i=0;i<3;i++) serialize16(accSmooth);
MwAltitude = read16()/EstAltValue; // serialize16(EstAlt*10.0f);
MwHeading = read16(); // serialize16(heading); // compass - 16 bytes
for(i=0;i<2;i++) MwAngle = read16(); // for(i=0;i<2;i++) serialize16(angle); //20
for(i=0;i<6;i++) MwRcData = read16(); // for(i=0;i<6;i++) {serialize16(rcData);} //44
MwSensorPresent = read8(); // serialize8(nunchuk|ACC<<1|BARO<<2|MAG<<3);
MwSensorActive = read8(); // serialize8(accMode|baroMode<<1|magMode<<2);
MwVersion=read16(); //version // serialize8(VERSION); // MultiWii Firmware version
Armed=read8();
GPS_distanceToHome=read16();
GPS_directionToHome=read16();
GPS_numSat=read8();
GPS_fix=read8();
GPS_update=read8();
I2CError=read16();
CycleTime=read16();
PowerMeterSum=read16();
*/

SerialMSPStringOK=0;

if (ConfigMode)
AskPID=2;
else
AskPID=0;


debug3 = MwRcData[PITCHSTICK];
debug4 = MwRcData[YAWSTICK];
debug5 = MwRcData[THROTTLESTICK];

if((MwRcData[PITCHSTICK]>MAXSTICK)&&(MwRcData[YAWSTICK]>MAXSTICK)&&(MwRcData[THROTTLESTICK]>MINSTICK)&&!ConfigMode&&!WaitStick&&(AllSec>5)&&!Armed)
{
WaitStick =1;
//ConfigMode = 1;
AskPID=2;
//
}
if(ConfigMode&&!WaitStick&&(MwRcData[ROLLSTICK]>MAXSTICK)) // MOVE RIGHT
{
WaitStick =1;
COL++;
}

if(ConfigMode&&!WaitStick&&(MwRcData[ROLLSTICK]<MINSTICK)) // MOVE LEFT
{
WaitStick =1;
COL--;
}

if(ConfigMode&&!WaitStick&&(MwRcData[PITCHSTICK]>MAXSTICK)) // MOVE UP
{
WaitStick =1;
ROW--;
}

if(ConfigMode&&!WaitStick&&(MwRcData[PITCHSTICK]<MINSTICK)) // MOVE DOWN
{
WaitStick =1;
ROW++;
}

if(ConfigMode&&!WaitStick&&(MwRcData[YAWSTICK]<MINSTICK)) // DECREASE
{
WaitStick =1;
if((ROW==1)&&(COL==1)&&(ConfigPage==1)) PID_RollP--;
if((ROW==1)&&(COL==2)&&(ConfigPage==1)) PID_RollI--;
if((ROW==1)&&(COL==3)&&(ConfigPage==1)) PID_RollD--;

if((ROW==2)&&(COL==1)&&(ConfigPage==1)) PID_PitchP--;
if((ROW==2)&&(COL==2)&&(ConfigPage==1)) PID_PitchI--;
if((ROW==2)&&(COL==3)&&(ConfigPage==1)) PID_PitchD--;

if((ROW==3)&&(COL==1)&&(ConfigPage==1)) PID_YawP--;
if((ROW==3)&&(COL==2)&&(ConfigPage==1)) PID_YawI--;
if((ROW==3)&&(COL==3)&&(ConfigPage==1)) PID_YawD--;

if((ROW==4)&&(COL==1)&&(ConfigPage==1)) PID_AltP--;
if((ROW==4)&&(COL==2)&&(ConfigPage==1)) PID_AltI--;
if((ROW==4)&&(COL==3)&&(ConfigPage==1)) PID_AltD--;

if((ROW==5)&&(COL==1)&&(ConfigPage==1)) PID_GpsP--;
if((ROW==5)&&(COL==2)&&(ConfigPage==1)) PID_GpsI--;
if((ROW==5)&&(COL==3)&&(ConfigPage==1)) PID_GpsD--;

if((ROW==6)&&(COL==1)&&(ConfigPage==1)) PID_LevelP--;
if((ROW==6)&&(COL==2)&&(ConfigPage==1)) PID_LevelI--;
if((ROW==6)&&(COL==3)&&(ConfigPage==1)) PID_LevelD--;

if((ROW==7)&&(COL==1)&&(ConfigPage==1)) PID_MagP--;

if((ROW==1)&&(COL==3)&&(ConfigPage==2)) rcRate8--;
if((ROW==2)&&(COL==3)&&(ConfigPage==2)) rcExpo8--;
if((ROW==3)&&(COL==3)&&(ConfigPage==2)) rollPitchRate--;
if((ROW==4)&&(COL==3)&&(ConfigPage==2)) yawRate--;
if((ROW==5)&&(COL==3)&&(ConfigPage==2)) dynThrPID--;
if((ROW==3)&&(COL==3)&&(ConfigPage==4)) RssiTimer=15;
if((ROW==4)&&(COL==3)&&(ConfigPage==4)) RssiMax=RssiADC;
if((ROW==5)&&(COL==3)&&(ConfigPage==4)) EnableRSSI=!EnableRSSI;
if((ROW==6)&&(COL==3)&&(ConfigPage==4)) EnableVoltage=!EnableVoltage;
if((ROW==7)&&(COL==3)&&(ConfigPage==4)) ScreenType=!ScreenType;

if((ROW==1)&&(COL==3)&&(ConfigPage==6)) AccCalibrationTimer=10;

if((ROW==8)&&(COL==3)) ConfigPage--;
if(ConfigPage<MINPAGE) ConfigPage = MAXPAGE;
if((ROW==8)&&(COL==1)) ConfigExit();
if((ROW==8)&&(COL==2)) SaveExit();
}

if(ConfigMode&&!WaitStick&&(MwRcData[YAWSTICK]>MAXSTICK)) // DECREASE
{
WaitStick =1;
if((ROW==1)&&(COL==1)&&(ConfigPage==1)) PID_RollP++;
if((ROW==1)&&(COL==2)&&(ConfigPage==1)) PID_RollI++;
if((ROW==1)&&(COL==3)&&(ConfigPage==1)) PID_RollD++;

if((ROW==2)&&(COL==1)&&(ConfigPage==1)) PID_PitchP++;
if((ROW==2)&&(COL==2)&&(ConfigPage==1)) PID_PitchI++;
if((ROW==2)&&(COL==3)&&(ConfigPage==1)) PID_PitchD++;

if((ROW==3)&&(COL==1)&&(ConfigPage==1)) PID_YawP++;
if((ROW==3)&&(COL==2)&&(ConfigPage==1)) PID_YawI++;
if((ROW==3)&&(COL==3)&&(ConfigPage==1)) PID_YawD++;

if((ROW==4)&&(COL==1)&&(ConfigPage==1)) PID_AltP++;
if((ROW==4)&&(COL==2)&&(ConfigPage==1)) PID_AltI++;
if((ROW==4)&&(COL==3)&&(ConfigPage==1)) PID_AltD++;

if((ROW==5)&&(COL==1)&&(ConfigPage==1)) PID_GpsP++;
if((ROW==5)&&(COL==2)&&(ConfigPage==1)) PID_GpsI++;
if((ROW==5)&&(COL==3)&&(ConfigPage==1)) PID_GpsD++;

if((ROW==6)&&(COL==1)&&(ConfigPage==1)) PID_LevelP++;
if((ROW==6)&&(COL==2)&&(ConfigPage==1)) PID_LevelI++;
if((ROW==6)&&(COL==3)&&(ConfigPage==1)) PID_LevelD++;

if((ROW==7)&&(COL==1)&&(ConfigPage==1)) PID_MagP++;

if((ROW==1)&&(COL==3)&&(ConfigPage==2)) rcRate8++;
if((ROW==2)&&(COL==3)&&(ConfigPage==2)) rcExpo8++;
if((ROW==3)&&(COL==3)&&(ConfigPage==2)) rollPitchRate++;
if((ROW==4)&&(COL==3)&&(ConfigPage==2)) yawRate++;
if((ROW==5)&&(COL==3)&&(ConfigPage==2)) dynThrPID++;


if((ROW==3)&&(COL==3)&&(ConfigPage==4)) RssiTimer=15;
if((ROW==4)&&(COL==3)&&(ConfigPage==4)) RssiMax=RssiADC;
if((ROW==5)&&(COL==3)&&(ConfigPage==4)) EnableRSSI=!EnableRSSI;
if((ROW==6)&&(COL==3)&&(ConfigPage==4)) EnableVoltage=!EnableVoltage;
if((ROW==7)&&(COL==3)&&(ConfigPage==4)) ScreenType=!ScreenType;

if((ROW==1)&&(COL==3)&&(ConfigPage==6)) AccCalibrationTimer=10;

if((ROW==8)&&(COL==3)) ConfigPage++;
if(ConfigPage>MAXPAGE) ConfigPage = MINPAGE;
if((ROW==8)&&(COL==1)) ConfigExit();
if((ROW==8)&&(COL==2)) SaveExit();
}


}
// End of decoded received commands from MultiWii
// --------------------------------------------------------------------------------------





/*
void SerialOReceive()
{
char data=0;
if(Serial.available())
{
data=Serial.read();
if(((data=='O')&&(!SerialOStringOK))||(SerialOReceiving))
{
SerialBuffer[ReceiverIndex++]=data;
SerialOReceiving=1;
if(ReceiverIndex>=(58))
{
ReceiverIndex=0;
SerialOStringOK=1;
SerialOReceiving=0;
}
}
}
if(SerialOStringOK) SerialMSPCheck();
}
*/


void SerialMSPreceive()
{
uint8_t c;

static enum _serial_state {
IDLE,
HEADER_START,
HEADER_M,
HEADER_ARROW,
HEADER_SIZE,
HEADER_CMD,
} c_state = IDLE;

if(Serial.available())
{
c = Serial.read();

if (c_state == IDLE)
{
c_state = (c=='$') ? HEADER_START : IDLE;
}
else if (c_state == HEADER_START)
{
c_state = (c=='M') ? HEADER_M : IDLE;
}
else if (c_state == HEADER_M)
{
c_state = (c=='>') ? HEADER_ARROW : IDLE;
}
else if (c_state == HEADER_ARROW)
{
if (c > SERIALBUFFERSIZE)
{ // now we are expecting the payload size
c_state = IDLE;
}
else
{
dataSize = c;
c_state = HEADER_SIZE;
}
}
else if (c_state == HEADER_SIZE)
{
c_state = HEADER_CMD;
cmdMSP = c;
}
else if (c_state == HEADER_CMD)
{
SerialBuffer[ReceiverIndex++]=c;
if(ReceiverIndex>=dataSize)
{
ReceiverIndex=0;
SerialMSPStringOK=1;
c_state = IDLE;
}
if(SerialMSPStringOK) SerialMSPCheck();
}
}
}



/*
void SerialYReceive()
{
char data=0;
if(Serial.available())
{
data=Serial.read();
if(((data=='Y')&&(!SerialYStringOK))||(SerialYReceiving))
{
SerialBuffer[ReceiverIndex++]=data;
SerialYReceiving=1;
if(ReceiverIndex>=31)
{
ReceiverIndex=0;
SerialYStringOK=1;
SerialYReceiving=0;
AskPID=0;
}
}
}
if(SerialYStringOK) SerialYCheck();
}
*/


/*
void SerialYCheck()
{
p=0;
read8();
PID_RollP=read8();
PID_RollI=read8();
PID_RollD=read8();

PID_PitchP=read8();
PID_PitchI=read8();
PID_PitchD=read8();

PID_YawP=read8();
PID_YawI=read8();
PID_YawD=read8();

PID_AltP=read8();
PID_AltI=read8();
PID_AltD=read8();

read8(); // VEL DATA, NOT USED IN GUI
read8(); // VEL DATA, NOT USED IN GUI
read8(); // VEL DATA, NOT USED IN GUI

PID_GpsP=read8();
PID_GpsI=read8();
PID_GpsD=read8();

PID_LevelP=read8();
PID_LevelI=read8();
PID_LevelD=read8();

PID_MagP=read8();
read8(); //Mag I not used in GUI
read8(); //Mag D not used in GUI

rcRate8 = read8()*2;
rcExpo8 = read8();
; //20
rollPitchRate = read8();
yawRate = read8(); //22
dynThrPID = read8(); //23

read8(); // to read the dummy last letter serialize8('O');
SerialYStringOK =0;
AskPID =0;
}
*/



void ConfigExit()
{
ConfigPage=1;
ROW=0;
COL=0;
ConfigMode=0;
WaitStick=3;
}


void SaveExit()
{
WaitStick=3;
SerialWait=1;
Serial.write('Z');
Serial.write(PID_RollP);
Serial.write(PID_RollI);
Serial.write(PID_RollD);

Serial.write(PID_PitchP);
Serial.write(PID_PitchI);
Serial.write(PID_PitchD);

Serial.write(PID_YawP);
Serial.write(PID_YawI);
Serial.write(PID_YawD);

Serial.write(PID_AltP);
Serial.write(PID_AltI);
Serial.write(PID_AltD);

Serial.write(1); // VEL DATA, NOT USED IN GUI
Serial.write(1); // VEL DATA, NOT USED IN GUI
Serial.write(1); // VEL DATA, NOT USED IN GUI

Serial.write(PID_GpsP);
Serial.write(PID_GpsI);
Serial.write(PID_GpsD);

Serial.write(PID_LevelP);
Serial.write(PID_LevelI);
Serial.write(PID_LevelD);

Serial.write(PID_MagP);
Serial.write(1); //Mag I not used in GUI
Serial.write(1); //Mag D not used in GUI

Serial.write(rcRate8/2);
Serial.write(rcExpo8);
Serial.write(rollPitchRate);
Serial.write(yawRate);
Serial.write(dynThrPID); //23
SerialWait=0;
ConfigExit();
WriteEEPROM();
}
/* MULTIWII CODE
case 'Y': // RUSHDUINO OSD TO Arduino - contribution from JohnyGab (rushduino.com)
serialize8('Y');
for(i=0;i<8;i++)
{
serialize8(P8);
serialize8(I8);
serialize8(D8);
}
serialize8(rcRate8);
serialize8(rcExpo8);
serialize8(rollPitchRate);
serialize8(yawRate);
serialize8(dynThrPID);
serialize8('Y');
UartSendData();
break;

case 'Z': // arduino to OSD data - contribution from JohnyGab (rushduino.com)
while (SerialAvailable(0)<30) {}
for(i=0;i<8;i++)
{
P8=SerialRead(0);
I8=SerialRead(0);
D8=SerialRead(0);
}
rcRate8 = SerialRead(0);
rcExpo8 = SerialRead(0); //20
rollPitchRate = SerialRead(0);
yawRate = SerialRead(0); //22
dynThrPID = SerialRead(0); //23
writeParams();
break;
case 'O': // OSD to arduino data - contribution from JohnyGab (rushduino.com)
serialize8('O');
for(i=0;i<3;i++) serialize16(accSmooth);
serialize16(EstAlt*10.0);
serialize16(heading); // compass - 16 bytes
for(i=0;i<2;i++) serialize16(angle); //20
for(i=0;i<6;i++) serialize16(motor); //32
for(i=0;i<6;i++) {serialize16(rcData);} //44
serialize8(nunchuk|ACC<<1|BARO<<2|MAG<<3|GPS<<4);
serialize8(accMode|baroMode<<1|magMode<<2|GPSModeHome<<3|GPSModeHold<<4);
serialize16(VERSION); // MultiWii Firmware version
serialize8(armed);
serialize16(GPS_distanceToHome);
serialize16(GPS_directionToHome);
serialize8(GPS_numSat);
serialize8(GPS_fix);
serialize8(GPS_update);
serialize16(i2c_errors_count);
serialize16(cycleTime);
serialize16(intPowerMeterSum);
serialize8('O'); //49
UartSendData();
break;

*/
 

MarenB

Runter kommen sie immer!
So, hier nun die Inventor-Files für die Bodenstation im Beauty-Case.
Achtung: da sind noch Fehler drin! Ich hab das erste Mal recht intensiv mit referenzierten Geometrien gearbeitet, was aber leider trotzdem bei einer leichten Verkleinerung der oberen Platte nicht dazu führte, dass die davon abhängigen Komponenten korrekt angepasst wurden.
Ich habe das erst nach dem Fräsen bemerkt und mit einer Feile korrigiert, aber wer das nachbauen möchte, muss den/die Fehler natürlich nicht übernehmen.

Also, nutzt es als Basis, korrigiert es, passt es euren Bedürfnissen an, macht damit, was ihr wollt - aber meckert nicht, wenn's am Ende krumm und schief ist :D

Anhang anzeigen Bodenstation.zip
 

berlinmille

.: fpv addicted :.
Ist das eigentlich immer so, dass man den Kalibier-Button 10 Sekunden drücken muss, damit der Tanz losgeht? Hab die Crius-Multiwii. Oder kann man das anpassen?
 

Rangarid

Erfahrener Benutzer
Es sind auf jedenfall 4s, das ist fest einprogrammiert, kannst du aber wenn du willst anpassen. Wenn die Buttons schlecht sind, kann es sein, dass er zwischendrin von vorne anfängt weil er den Kontakt verliert.
 

MarenB

Runter kommen sie immer!
Hallo zusammen :)

nachdem der Tracker bei mir jetzt schon so einige Flugstunden seine Zuverlässigkeit unter Beweis gestellt hat, könnte ich eigentlich zufrieden sein. Eigentlich!

Was mich jedoch zusehends mehr störte, waren Auf- und Abbau. Stativ ausfahren, FPV-Transport-Koffer aufmachen, Tracker herausfummeln, aufschrauben, Kabel abrollen und anstecken, Akkuhalter und DVR ans Stativ clipsen, etc. und das am Ende alles rückwärts. NERVIG!!!

Einmal habe ich das Stativ mit montiertem Tracker ins Auto gelegt, weil es anfing zu regnen. Ende vom Lied war erwartungsgemäß ein fast herausgebrochenes Stativgewinde.

Also habe ich mir überlegt, wie ich das Ganze optimieren kann. Schneller betriebsbereit, robust, kompakt, klein, tragbar.
Herausgekommen ist mal wieder eine Lösung im Alukoffer - aber anders, als man es schon etliche Male gesehen hat:

Anhang anzeigen 141851

Das Ganze ist noch nicht fertig, aber man sieht schon, worauf es hinauslaufen soll.
Geplant sind ein Spigot-Adapter im Boden, so dass man den ganzen Koffer einfach auf das Stativ stecken kann, eine integrierte Stromversorgung mit Li-Ion-Akku, eingebauter Videosplitter und DVR und LCD am Kabel, was einfach entnommen und auf jeweiliger Augenhöhe an das Stativrohr geclipst wird.

Mehr dazu auf meiner Seite:
https://tueftelliese.wordpress.com/2015/11/22/neue-bodenstation-2/
Frohe Weihnachten zusammen!

Anfang der Woche hatte ich schon Urlaub und konnte ein wenig weitermachen:




Mehr unter https://tueftelliese.wordpress.com/tag/bodenstation/


Jetzt fehlt nur noch ein von außen zugängliches Schalter- und Steckerterminal und die integrierte Stromversorgung mit Li-Ion-Akkus, dann kann ich endlich wieder vernünftig FPVen :)
 
Zuletzt bearbeitet:
Möglicher Weise habe ich was überlesen..
Wird der Buzzer im System genutzt?
Wenn nicht könnte er als "Akku-Warner" in Verbindung mit der Spannungsmessung, einstellbar auf 2 oder 3 Lipos verwendet werden. Verhindert mögliche Tiefentladung.

Gruß Hans
 
Hallo,
ich würde gerne eure Tracker Firmware mit meiner Tracker Mechanik verwenden. Ich habe bisher nicht den ganzen Thread gelesen.
Im Moment verwende ich den APM Tracker auf einem APM2.5.
Leider sieht es so aus, das zukünftige Versionen nur noch auf dem Pixhawk laufen und eigentlich war ich es ohnehin leid, immer einen kompletten Autopiloten in jedes FPV Flugzeug einbauen zu müssen, damit der Tracker funktioniert.

Im Moment habe ich die Elektronik vor mir liegen:
Der Sketch ist auf ein Crius AIO Pro 1.1 und auf einem APM2.5 aufgespielt (Ich hab mich noch nicht entschieden welches Board den Job kriegt).
LCD (20x4), Buttons, LED sind im Moment am Crius angeschlossen.
LCD funzt,
LED auch,
sowie die Buttons.

Ein paar Dinge sind mir aufgefallen:

Ich glaube in der Wiki sind für den Arduino MEGA die Servo Pins vertauscht.
Ich habe jetzt das PAN Servo an D11 und das Servo reagiert, wenn ich das Board drehe.

Die LED leuchtet nur an D8, an keinem anderen Pin auch nicht an D6.

In der Wiki ist für den APM kein GPS erwähnt. Wird für den APM kein lokales GPS unterstützt, oder schließe ich das einfach an den vorhandenen GPS Anschluss an?

Wie sieht die Hardware aus die in/an die Taranis (X9D) muss? Gibt es einen Link dazu?

Ich hoffe, ich habe nicht zu viele Fragen gestellt, die im Thread schon beantwortet sind...

Ein frohes neues Jahr,

Sebastian
 
FPV1

Banggood

Oben Unten