From Nottinghack Wiki
Revision as of 23:04, 5 February 2019 by Danspencer101 (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
Primary Contact {{{primary}}}
Created 10/08/2011
Completed {{{completeddate}}}
Dormant {{{dormantdate}}}
Version {{{version}}}
Members 'RepRap' Matt
Manufacturer {{{manufacturer}}}
Model {{{model}}}
Location [[{{{location}}}]]
GitHub / Repo {{{repo}}}
Status Dormant
Type Members Project
Live Status {{{livestatus}}}
QR code

"A quadrotor, also called a quadrotor helicopter or quadrocopter, is an aircraft that is lifted and propelled by four rotors."

I've been flying model helicopter on/off for a few years and have now started to build a Quadcopter. As this is my first quadcopter I'm going to try and detail as much as I can here, some of this is likely just to be a bunch of random notes and not make a lot of sense to any one else, but as always I'm happy to explain if you can catch me at hackspace. --'RepRap' Matt 15:33, 15 August 2011 (BST)

Parts List

Quick breakdown of the parts i intend to use in my build

  • mbed 32bit ARM Cortex-M3 96Mhz MCU 512KB FLASH, 64KB RAM
    • HMC5883L Triple Axis Magnetometer
    • BMA180 Triple Axis Accelerometer
    • BMP085 Barometric Pressure Sensor
    • ITG3200 Triple-Axis Digital-Output Gyro
  • OrangeRx R100 Satellite Receiver
  • nRF24L01+ Transceiver Module with Chip Antenna
  • hexTronik 24gram Brushless Outrunner 1300kv
  • TURNIGY Plush 10amp 9gram Speed Controller
  • APC 8x3.8 Slowfly "Pusher" (CCW) electric propeller
  • APC 8x3.8 Slowfly electric propeller
  • 3S1P 11.1V 2150mAh 25C LiPo
  • MB1200 XL-MaxSonar-EZ0 High Performance Ultrasonic Range Finder
  • Sharp GP2D12 IR Range Sensor Manual
  • MediaTek MT3329 GPS 10Hz (much later)

Electronic system components

Break down of part that need connecting to the mbed

Important bits

  • IMU (2pins) I2C
    • both wii IMU (WMP&NC) and ALLINONE IMU are I2C based
  • Spektrum satellite (1 pin) USART
    • Saves so many pins :) can also use same pin to bind
  • ESC outputs (4 pins) PWM
    • standard servo outputs
  • nRF24L01+ (6 pins) SPI
    • using for telemetry and possible command link
    • could replace with "XRF wireless module" which is USART and needs just 2 pins and a lot less code £11.88 each

Later options

  • Ultrasonic Rangefinder (1 pin) ADC
    • pointing down for altitude hold
  • IR rangefinders (4pin) ADC
    • pointing out for obstacle avoidance
  • GPS (1 pin) USART
    • UAV, nuff said
  • Pan tilt camera mount (2 pins) PWM
    • FPV, have small 1.2ghz spy camera, might not be up to much quality but way cool!
  • Battery voltage sens (1 pin) ADC
    • must protect LiPo's!!!
  • Curent sens (1 Pin ADC
    • Only have 6 ADC pins so this might not happen
  • MAX7456 OSD (6 pins) SPI
    • could share 3 SPI with nRF24 if can switch between both fast enough, both are used for telemetry mind but nRF24 might also be flight commands, OSD could be done on ground station.
  • MiniM RGB LED's (2 pins) I2C
    • these can share the I2C bus with the IMU but they are 5v devices so may need LLC
  • Data logger, SD or USB
    • SD needs SPI (3 pins & CS) could also share with nRF24 & OSD, USB needs 2 pins but they are dedicated so no cost

mbed pin assignment

Possible mbed pin layout and connection

No Functions Usage No. Functions Usage
1 GND 0v 40 Vout 3.3G Regulated Out
2 Vin 4.5v-14v in 39 Vu 5.0v USB Out
3 Vb RTC 3v Battery in 38 IF+
4 nR 37 IF-
5 MOSI nRF24L01+ 36 RD- Ethernet
6 MISO nRF24L01+ 35 RD+ Ethernet
7 SCK nRF24L01+ 34 TD- Ethernet
8 nRF24L01+ 33 TD+ Ethernet
9 TX/SDA 32 D- USB
10 RX/SCL Spektrum Satallite 31 D+ USB
11 MOSI nRF24L01+ 30 CAN rd
12 MISO nRF24L01+ 29 CAN tdt
13 TX/SCK 28 SDA/TX I2C Bus
14 RX GPS 27 SCL/RX I2C Bus
15 AnalogIn Ultrasonic Range 26 PwmOut Tilt Servo
16 AnalogIn Front IR range 25 PwmOut Pan Servo
17 AnalogIn Right IR range 24 PwmOut Motor ESC 4
18 AnalogIn/ AnalogOut Back IR Range 23 PwmOut Motor ESC 3
19 AnalogIn Left IR Range 22 PwmOut Motor ESC 2
20 AnalogIn Battery Voltage 21 PwmOut Motor ESC 1

Spektrum Satellite protocol

Breakdown of the serial protocol use by the Spektrum Satellite receivers.


I have a Spekturm DX7 transmitter which i use to fly my trex450 and my blade mSR. the Spektrum uses a 2.4ghz signal rather than the older 35mhz or 75mhz FM signals. On the tre450 i have an AR7000 receiver, one of features of this and other Spektrum receivers is the use of satellite receivers as seen in the picture to the left, theres satellite receivers are use to help maintain a solid signal between the TX/RX, usual located in a different location on the air frame in case the signal to the main antenna is disrupted. Now interestingly the data is sent between the two using a 3 wire cable using basic serial! For my quadrocopter this is great news as it means i can just plug the satellite straight into the MCU and read the serial data to get the TX data.

I found hobbyking do a range of Spektrum compatible receivers under the name OrangeRX, i have order a 6ch receiver and a satellite receiver for use in the quadcopter.

The satellite receivers run at 3.3v so if used with and arduino would requirer some protect against the normal 5v logic.

The serial link is standard 8n1 @ 115200baud (but i have seen mention of 125000 baud on some forums, need to investigate) it sends 16 bytes of data at 22ms intervals. The first 2 bytes are frame data, the following pairs of bytes contain the channel data.

It is also possible to bind the RX by pulsing the data line just after the RX powers up, need to send between 3 and 6 pulses each between 116us & 120us in length.

  • Rcgroups threads [1] [2]
  • posible first two byte break down [3]
  • Some useful arduino code [4]
  • bind example sketch [5]
  • ardupilot, spektrum to ppm [6]


First IMU will be using sensors from the motion plus and the nunchuk.

The motion plus incorporates a dual-axis tuning fork gyroscope and a single-axis gyroscope, while the Nunchuk has a three-axis accelerometer, data from all of these can be accessed via 400kHz I2C bus which the Wii remote usually use to talk to them. These can be put together to form a basic IMU for the quadrocopter.The reading from the gyro and accelerometer have to be read one after the other rather than at the same time. This slows down the sample rate as can only retrieve one set of data every 3ms (one wm+, one nunchuck, one wm+ and so on).

I already have a nunchuk which i have used to control my Arduino tank and have picked up a motion plus from ebay to try out.


Second generation IMU using all I2C sensor board for eBay

This boras has the following:-

  • HMC5883L Triple Axis Magnetometer
  • BMA180 Triple Axis Accelerometer
  • BMP085 Barometric Pressure Sensor
  • ITG3200 Triple-Axis Digital-Output Gyro
  • UBLOX Neo-6Q/M GPS with both UART and I2C
  • Build in ultra low noise linear LDO voltage regulator.
  • Dimensions 55x16mm
  • I2C all sensors connected to I2C bus.
  • Designed for 3.3V logic level

So I ended up ordering the version 2 of this IMU, which includes a GPS as well, I don't have immediate plans for the GPS but it worked out cheaper to get it built in rather than a separate module later. Someone has all ready build a NEMA GPS library for the mbed although I don't know how useful this will be for my firmware designs.

I like that this IMU comes in such a small board its no bigger that the mbed! Should go nicely along side it when mounted on the quad. I plan to make up a carrier board that this and the mbed will plug into, along with connector for all the other interfaces.

Pin out:-

I2C address:-

eBay store [7] RCgroups thread [8]


Huge unsorted list of links to random bits of useful information