A project for a simple fixed wing UAV using off the shelf modules and an Arduino Mega 2650. As a remainder, this is not a beginner’s project and has a lot of work and difficulties involved in its implementation.
This project uses two breakout modules from ADAFRUIT: the ultimate GPS V.3 and an AHRS with a 9 axis orientation module. This later module uses the BNO055 chip from BOSCH sensortech which has 3 gyroscopes, 3 accelerometers and 3 magnetometers and an integrated fusion filter. Some of the established techniques to reduce noise from the signal are Kalman,Mahoney or Madgwick filters. The spatial position of the plane, its yaw, roll, and pitch angles are supplied by this great chip.The internal filter reduces the actual error integrating data from the accelerometers, gyroscopes and magnetometers.
The GPS module gives the geographical coordinates of the plane as well as its velocity and altitude, if required. That data is extracted with the help of the TinyGPS++ Arduino library. The BNO055 utilizes an Adafruit library and quaternions to avoid gimbal lock.
The Arduino Mega 2650 provides the overall management of the system, and directs the available sensor data to the servos which drive the plane mobile surfaces. The radio link utilizes a FUTABA T6J R/C transmitter and a six channel receiver. There is a dedicated printed circuit board available which sits on top of the Arduino Mega which, in the core, has an 74HC157.This is a two input quad line multiplexer that commutes the control of the plane from manual to autonomous mode. The autonomous mode also provides two states: stabilization only, or autonomous navigation using predetermined waypoints. This is accomplished with the help of two auxiliary R/C channels, in our case, FUTABA CH5 and CH6.
The overall system is rather crude and has no Ground Control System - GCS, and no telemetry.
The mounted set is rather bulky and has a lot of wiring, but that's the price to pay for using a commercial board and a simple system. A future development will search for a receiver utilizing a PPM frame output instead of six PWM outputs reducing the number of connections and wiring. For the time being, the geographical coordinates must be inserted manually in the software, and for that matter is advised to use Google Earth. The Arduino Mega has limitations in computational power for the task, but was chosen for its number of output ports, availability and small price.