|Terms of service|
|Let's keep it simple
From an Arduino quadcopter to a versatile RPAS drone
Click on a question to expand / collapse the answer.
For the flightcontroller I use 5 sensors:
Communication is done via I2C / UART and the refresh rate for the gyro, accelerometer, and compass are 250Hz. The rest of the sensors are polled as quick as possible or when needed.
This was most definitely the GPS UART communication problem that kept me busy for over 6 weeks or so.
I had made a lot of flights already with the ublox GPS module and everything worked fine and reliable. But at a sudden moment during the summer I got a communication error with the LEA-6S ublox module.
In the morning everything was working fine but in the afternoon I had communication errors. In my back garden it all worked well. This of course was really weird because it all worked fine before and I did not change anything in the code.
My first thoughts where electromagnetic interference or EMI for short. But after extensive testing this was not the problem. Maybe the higher temperature in the afternoon? But after a cold day I concluded that temperature had nothing to do with it.
Luckily I could still fly and test in the morning but this really weird problem kept bugging me. Finally I decided to build a serial logger to check the GPS data stream. And this was the breakthrough! In the serial data I found the message "txbuf alloc". After reading the data sheet of the ublox module I found out that this message means that the data cannot be send in time.
Long story short, the GPS module tries to send a specific amount of data with 57.600bit/s. In the morning there were only 9 satellites in view and the data was send like normal. In the afternoon the number of satellites was 12. The data that the 3 extra satellites produce made the amount of data to much to send in time. Resulting in a txbuf alloc message that triggered my communication error message.