hello ,i'm very new with C programing and arduino environment but i found out how to use the 2.2 soft with the locosys GPS (NMEA) so i wanted to tell you how i've done:in the Ardupilot_easystart_v22 tab change that to get nmea mode:#define GPS_PROTOCOL 0 //0 = NMEA, 1=SIRF, 2=uBlox, Choose protocol please, uBlox only for PRO's please.comment all the GPS SIRF configuration strings :/*#define SIRF_BAUD_RATE_4800 "$PSRF100,1,4800,8,1,0*0E\r\n"#define SIRF_BAUD_RATE_9600 "$PSRF100,1,9600,8,1,0*0D\r\n"#define SIRF_BAUD_RATE_19200 "$PSRF100,1,19200,8,1,0*38\r\n"#define SIRF_BAUD_RATE_38400 "$PSRF100,1,38400,8,1,0*3D\r\n"#define SIRF_BAUD_RATE_57600 "$PSRF100,1,57600,8,1,0*36\r\n"#define GSA_ON "$PSRF103,2,0,1,1*27\r\n" // enable GSA#define GSA_OFF "$PSRF103,2,0,0,1*26\r\n" // disable GSA#define GSV_ON "$PSRF103,3,0,1,1*26\r\n" // enable GSV#define GSV_OFF "$PSRF103,3,0,0,1*27\r\n" // disable GSV#define USE_WAAS 0 //1 = Enable, 0 = Disable, good in USA, slower FIX...#define WAAS_ON "$PSRF151,1*3F\r\n" // enable WAAS#define WAAS_OFF "$PSRF151,0*3E\r\n" // disable WAAS*/added that for better accuracy (not implemented yet)://GPS Locosys configuration strings...#define USE_SBAS 0#define SBAS_ON "$PMTK313,1*2E\r\n"#define SBAS_OFF "$PMTK313,0*2F\r\n"#define USE_WAAS 0 //1 = Enable, 0 = Disable, good in USA, slower FIX...#define WAAS_ON "PMTK301,2*2E\r\n" // enable WAAS#define WAAS_OFF "PMTK301,1*2B\r\n" // disable WAASall the #define NMEA_OUTPUT are wrong (it is the opposite) :#define NMEA_OUTPUT_5HZ "$PMTK314,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0*28\r\n"for example this is 5hz and not 1hz like it was written (just change NMEA_OUTPUT_1HZ by NMEA_OUTPUT_5HZ)add that line:#define LOCOSYS_BAUD_RATE_57600 "$PMTK251,57600*2C\r\n" //usart need to be @ 57600 for ground station and config tool, and yes that works at 57600and i forgot on the top part of the file there is :#define SENSOR_Z 1 // 1 enable 0 disablechange it by disable:#define SENSOR_Z 0 // 1 enable 0 disableWe're are done with this tab , we'll take care of the NMEA one to configure the gps:simply paste this in place of the "void init_gps(void)" function:void init_gps(void){pinMode(12, OUTPUT);//Status ledSerial.begin(38400); //Universal Sincronus Asyncronus Receiveing Transmitingdelay(1000);Serial.print(LOCOSYS_BAUD_RATE_57600);Serial.begin(57600);delay(1000);Serial.print(NMEA_OUTPUT_5HZ);Serial.print(LOCOSYS_REFRESH_RATE);//will see later to enable those (checksum to verify)///#if USE_WAAS ==1///Serial.print(WAAS_ON);///#else///Serial.print(WAAS_OFF);///#endif///#if USE_SBAS ==1///Serial.print(SBAS_ON);///#else///Serial.print(SBAS_OFF);///#endifWait_GPS_Fix();}same with the "void fast_init_gps(void)" function:void fast_init_gps(void){pinMode(12, OUTPUT);//Status ledSerial.begin(57600); //Universal Sincronus Asyncronus Receiveing Transmiting}now we are finished, that all works fine exept , since there is no shield board or air sensor,in the ground station the batteire level changes randomly , the airspeed doesn't work.what i want to do::i would like to plug a simple voltage divider to get the voltage for the batterie level (accurate enought for me) if you want to do that just plug the divider on an5 i suppose .makes sure you can't go over 5v oserwise you 'll burn the arduino's ADCmake a simple failsafe function that pulses in the THR channel and switch into automode when the signal goes under the minimum value (with FASST receiver you can set up the failsafe point under the mini pulses)this function will have top come back on manual mode BUT only when the pilot is ready (i have to think about that)possibility to change between turn with the rudder (GPS bearing) and stabilise the ailerons and elevator with FMA (on 4 axis) and turn and stabilise with the same channeli have some questions to make sure i did it ok:if i well understood,the software, the FMA calibration is done only when writing the GPS "home location ) into EEpromjust tell me if i'm wrong:1/ put the jumper on (or switch) + be sure to have the radio set in manual mode2/ power the board3/ wait for a fix > ardupilot stores the location + blue led + moves the rudder and elevator when done.4/remove the jumper5/point the nose of the plane down and it the autopilot switch on the radio6/put the switch back to manual mode to exit config mode7/reset the ardupilot and you're ready to flyother thing is i can't get to know if the altitude hold can work or works already???ardupilot channels out:ch1 for the rudder / aileron stabilized by FMA and GPSch2 for elevator stabilized by FMA and GPS???????????? (altitude hold)ch3 ?????????????ch4 ?????????????and last one :i'm using a video gear to transmit video to the ground and there is an audio channel , do you think with an additional little board i could transmit the datas at 57600 bds by this channel?thank you and i hope i that can help others.regards jeremy
You need to be a member of diydrones to add comments!
I would really love to see the failsafe for the FASST systems. I've wanted to make one similar to what you described, but I have neither the time nor the skill necessary to do so. Keep up the good work.
i did a maiden fly of my coroplast "pipper cub like" plane with the arduino 2.2 and the changes talked about earlier
first fly was very ggod if you like to do 3D against your will!!!!!!!! (June 1, 2009)
little mistake i forgot to check the surface control befor flying, roll was inverted
no worries after work today i did the little changes that follow:
remove that line from main loop seems like there is less jittering on roll (maybe faster loop when not sending data) //print_data(); //Function localted in "System" tab.
and of course the roll inverted:
#define REVERSE_ROLL 1 //To reverse servo roll
it did fly, sort of straight ,but was little overreacting i guess. (June 2, 2009)
it's not an easystar.
i'm not sure if it was going back to "home" because i was scared and i hit the switch back to manual before the batterie died (didn't charge it from last day)
if you have an idea how to make this device more reliable i'm listening...
Replies
first fly was very ggod if you like to do 3D against your will!!!!!!!! (June 1, 2009)
little mistake i forgot to check the surface control befor flying, roll was inverted
no worries after work today i did the little changes that follow:
remove that line from main loop seems like there is less jittering on roll (maybe faster loop when not sending data)
//print_data(); //Function localted in "System" tab.
and of course the roll inverted:
#define REVERSE_ROLL 1 //To reverse servo roll
it did fly, sort of straight ,but was little overreacting i guess. (June 2, 2009)
it's not an easystar.
i'm not sure if it was going back to "home" because i was scared and i hit the switch back to manual before the batterie died (didn't charge it from last day)
if you have an idea how to make this device more reliable i'm listening...