Quadrocopter: Difference between revisions
Created page with "{{Project|ProjectTitle=Quadrocopter|created=10/08/2011|members=~~~|qrmode=0|status=Research}} "A quadrotor, also called a quadrotor helicopter or quadrocopter, is an aircraft th..." |
mNo edit summary |
||
(26 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
{{Project|ProjectTitle=Quadrocopter|created=10/08/2011|members=[[User:Lwk|'RepRap' Matt]]| | {{Project|ProjectTitle=Quadrocopter|created=10/08/2011|members=[[User:Lwk|'RepRap' Matt]]|status=Dormant|type=member}} | ||
"A quadrotor, also called a quadrotor helicopter or quadrocopter, is an aircraft that is lifted and propelled by four rotors." | "A quadrotor, also called a quadrotor helicopter or quadrocopter, is an aircraft that is lifted and propelled by four rotors." | ||
Line 7: | Line 7: | ||
=== Parts List === | === Parts List === | ||
Quick breakdown of the parts i intend to use in my | Quick breakdown of the parts i intend to use in my build | ||
* mbed 32bit ARM Cortex-M3 96Mhz MCU 512KB FLASH, 64KB RAM | |||
* ALLINONE IMU | |||
** 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 === | === mbed pin assignment === | ||
Possible mbed pin layout and connection | Possible mbed pin layout and connection | ||
[[File:mbedPinout.png|thumb|300px]] | |||
{| class="wikitable" | |||
|- | |||
! 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 === | === Spektrum Satellite protocol === | ||
Breakdown of the serial protocol use by the Spektrum Satellite receivers | Breakdown of the serial protocol use by the Spektrum Satellite receivers. | ||
[[File:AR7100.JPG|200px|thumb]] | |||
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. | |||
[[File:OrangeRXSat.JPG|200px|thumb]] | |||
* Rcgroups threads [http://www.rcgroups.com/forums/showthread.php?t=1284843&highlight=spektrum] [http://www.rcgroups.com/forums/showthread.php?t=922566] | |||
* posible first two byte break down [http://www.rcgroups.com/forums/showpost.php?p=14521566&postcount=43] | |||
* Some useful arduino code [http://svn.mikrokopter.de/filedetails.php?repname=FlightCtrl&path=%2Ftags%2FV0.80f%2FSpektrum.c] | |||
* bind example sketch [https://gist.github.com/star/1059451] | |||
* ardupilot, spektrum to ppm [http://code.google.com/p/ardupilot-mega/source/browse/PPMEncoder/branches/spektrum_to_ppm_encoder/spektrum_to_ppm_encoder.pde] | |||
= | <br style="clear: both" /> | ||
=== Wii IMU === | |||
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. | |||
* http://snzgoo.blogspot.com/ usefull stuff in WM+ calibration | |||
=== ALLINONE IMU === | === ALLINONE IMU === | ||
Line 26: | Line 153: | ||
This boras has the following:- | This boras has the following:- | ||
* HMC5883L Triple Axis Magnetometer | * HMC5883L Triple Axis Magnetometer | ||
* BMA180 | * 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. | * Build in ultra low noise linear LDO voltage regulator. | ||
* Dimensions | * Dimensions 55x16mm | ||
* I2C all sensors connected to I2C bus. | * I2C all sensors connected to I2C bus. | ||
* Designed for 3.3V logic level | * 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 [http://stores.ebay.co.uk/Special-RF-design] | eBay store [http://stores.ebay.co.uk/Special-RF-design] | ||
RCgroups thread [http://www.rcgroups.com/forums/showthread.php?t=1413106] | RCgroups thread [http://www.rcgroups.com/forums/showthread.php?t=1413106] | ||
=== Links === | === Links === | ||
Huge unsorted list of links to random bits of useful information | Huge unsorted list of links to random bits of useful information | ||
* http://diydrones.com ArduPilot and ArduCopter UAV's (current hardware uses ATMega168 & ATMega2560) | |||
* http://aeroquad.com Open source Arduino based Quadrocopter (Arduino/Arduino Mega/Arduno Mini) | |||
* http://code.google.com/p/ardupirates/ "The ArduPirates project focuses on speeding up development on ArduCopter especially by integrating self controlling mechanisms without any commercial interests or targets." | |||
* http://ng.uavp.ch/ Next Generation . Universal Aerial Video Platform (LPC2148 ARM7 core) | |||
* http://paparazzi.enac.fr/ STM32 based autopilot with Overo 600mhz omap3 (can run linux on board) | |||
** usefully control loop diagrams [http://paparazzi.enac.fr/wiki/Control_Loops#Multi-rotor_.28Booz.29_autopilot] | |||
* http://www.mikrokopter.de/ucwiki/en/MikroKopter ATMega644 based, included custom I2C Brushless ESC's! | |||
* http://code.google.com/p/uavp-mods/source/browse/branches#branches%2Fgke-uavx-arm UAVX mbed arm port | |||
[[Category:Projects]] | [[Category:Projects]] | ||
Latest revision as of 23:04, 5 February 2019
Quadrocopter | |
---|---|
Created | 10/08/2011 |
Members | 'RepRap' Matt |
Status | Dormant |
Type | Members Project |
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
- ALLINONE IMU
- 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
![](/images/thumb/6/6e/MbedPinout.png/300px-MbedPinout.png)
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]
Wii IMU
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.
- http://snzgoo.blogspot.com/ usefull stuff in WM+ calibration
ALLINONE IMU
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]
Links
Huge unsorted list of links to random bits of useful information
- http://diydrones.com ArduPilot and ArduCopter UAV's (current hardware uses ATMega168 & ATMega2560)
- http://aeroquad.com Open source Arduino based Quadrocopter (Arduino/Arduino Mega/Arduno Mini)
- http://code.google.com/p/ardupirates/ "The ArduPirates project focuses on speeding up development on ArduCopter especially by integrating self controlling mechanisms without any commercial interests or targets."
- http://ng.uavp.ch/ Next Generation . Universal Aerial Video Platform (LPC2148 ARM7 core)
- http://paparazzi.enac.fr/ STM32 based autopilot with Overo 600mhz omap3 (can run linux on board)
- usefully control loop diagrams [9]
- http://www.mikrokopter.de/ucwiki/en/MikroKopter ATMega644 based, included custom I2C Brushless ESC's!
- http://code.google.com/p/uavp-mods/source/browse/branches#branches%2Fgke-uavx-arm UAVX mbed arm port