Projets:Perso:2013:BotCopter

= Présentation =
 * Objectif principal : Fabriquer un quadcoptère pour les vols en intérieur, en utilisant toutes les ressources open source existante en commande manuelle.
 * Objectif secondaire : Faire du vol en groupe, en commande automatique par une station de base (ordinateur)

Caractéristiques/Whishlist
Un quadcoptère se compose de quatre élément principaux :
 * le châssis : le corps de l'engin comportant la mécanique et les moteurs et supportant l'électronique embarquée
 * l’électronique : les sens de l'engin pour le vol (capteurs), le calcul (micro-contrôleur) et la commande des moteurs (commande de puissance)
 * la commande : on utilise une radio-commande RF avec plusieurs voix (4 minimum pour un appareil volant)
 * l'informatique : le cerveau du quadcoptère, qui permet de définir le comportement de l'engin en vol et de le contrôler

Le projet :
 * Mécanique : utilisation de design du commerce, basé sur les jouets pas cher
 * Électronique : design des toutes les cartes électronique
 * Récepteur : commande des moteurs, gestion RF, gestion des capteurs et micro-contrôleur
 * Émetteur : gestion de la radio-commande, gestion RF, port USB et micro-contrôleur
 * Commande : utilisation d'un radio-commande du commerce et/ou d'un ordinateur pour contrôler le vol
 * Informatique : utilisation du code AeroQuad pour le vol et la commande (code compatible Arduino)

Le châssis
Le but étant de ne pas refaire tout "from scratch", on utilise ici la facilité, car c'est un design du commerce. En cas de casse, il est très aisé de trouver des pièces détachées et le prix est relativement accessible. Il s'agit du modèle Walkera Ladybird QR Series. Les pièces sont achetées à l'unité, car je n'ai pas besoin de télécommande et ni de l'électronique. On se retrouve donc avec ces pièces pour l'achat d'un châssis complet : Pour environ 43$ (hors frais de port), on a notre châssis ready to fly !
 * 2 x moteur rotatif : QR Ladybird-Z-06 (prix indicatif : 2 x 7$)
 * 2 x moteur contre-rotatif : QR Ladybird-Z-05 (prix indicatif : 2 x 7$)
 * 1 x châssis principal : QR Ladybird-Z-03 (prix indicatif : 3$)
 * 1 x pack de 4 hélices : QR Ladybird-Z-01 (prix indicatif : 2$)
 * 1 x chargeur batterie : HM-Mini CP-Z-18 (prix indicatif : 4$)
 * 2 x batterie LiPo 1S : Turnigy Nano-Tech 260mAh 1S 35C (prix indicatif : 2x3$)

Ces articles peuvent se trouver beaucoup de site, les moins chers étant les chinois (par exemple sur www.hobbyking.com). Prendre des pièce de rechange ne fait pas de mal, on casse quand même un peu (sur une centaine de crash, j'ai dû changer 1 moteur, 1 châssis principal et au moins 5 hélices). Cela reste quand même très solide au vu du nombre d'obstacle divers et variés que mes premiers essais de vol ont rencontrés !

Les premiers tests de ce châssis mène à la conclusion suivante :
 * L’électronique qui se loge au centre doit avoir un diamètre maximum de 60mm
 * Les fixations des bras (vis) permettent la fixation de la carte électronique et forment un carré de 20mm de côté
 * Chaque moteur/hélice peut soulever environ 12gr : le poids de toute l'électronique ne peut dépasser les 19gr

L'électronique
Pour le contrôleur, on part sur une base Arduino, parce que c'est facile et que l'on trouve beaucoup de source sur cette plateforme. Une carte Arduino toute faite n'est pas adaptée à notre châssis de base, les contraintes étant d'avoir toute l'électronique sur une surface de 4x4cm. Mon choix s'est porté pour la première version sur l'utilisation d'un AtMega128RFA1, pour plusieurs raison : Conclusion : au vu de la difficulté de la partie RF et après des recherches sur le net, il existe des composants qui intègrent toute la partie RF et le micro-contrôleur. Cette solution permet de s'affranchir de pas mal de problème de design et gagner du temps.
 * Compatible Arduino : il existe une Arduino like basée sur ce composant : la ZigDuino. On utilise donc le bootloader de cette carte et les sources disponibles pour l'IDE Arduino.
 * Partie RF intégrée : ce composant est capable de gérer une liaison sans fil ZigBee avec un débit maximal de 2Mb/s.
 * Inconvénient : ce composant nécessitant l'ajout de composants externes haute fréquence (Antenne 2.4GHz et Balast), et donc d'avoir un design de la carte très rigoureux

Concernant les capteurs, on a besoin au minimum pour le vol d'un accéléromètre 3 axes et d'un gyroscope 3 axes. Il existe plusieurs composants permettant d'avoir ces fonctions dans un seul package électronique (IMU). On peux ajouter d'autres capteurs optionnels pour l'amélioration du vol : accéléromètre 3 axes, baromètre, GPS, ... Des cartes toute faite comprenant ces composants de base existent et on va pas s'en priver :
 * Carte IMU 10DOF
 * Accéléromètre 3 axes
 * Gyroscope 3 axes
 * Magnétomètre 3 axes
 * Baromètre
 * Données disponibles sur bus I2C

Pour le reste de l'électronique, les caractéristiques suivantes doivent être mises en place sur les cartes
 * Carte émettrice : principales fonctionnalités
 * Interface avec le récepteur RF de la radio-commande
 * Interface USB avec un ordinateur
 * Interface avec un (ou plusieurs) récepteur(s) de quadcoptère (protocole ZigBee à 2Mb/s)
 * Carte réceptrice : principales fonctionnalités
 * Taille inférieure à 60mm de diamètre
 * Trous de fixation compatibles avec le châssis (carré de 20mm de côté)
 * Interface avec carte émettrice (protocole ZigBee à 2Mb/s)
 * Contrôleur moteur de puissance (4 moteurs Coreless)
 * Interface avec les capteurs (I2C)

La commande
Pour contrôler manuellement le quadcoptère, il faut une radio-télécommande avec au minimum 5 voies (Tangage, Roulis, Lacet, Élévation et Mode de pilotage). Le choix s'est porté sur une radio-commande pas trop chère : la WFly WFT07A (environ 100€)
 * Caractéristiques techniques :
 * Radiocommande 7 voies
 * Technologies 2.4 GHz
 * Ecran LCD
 * Trim numérique
 * Fale safe

Le récepteur radio étant d'une taille et d'un poids trop important pour le châssis, il est nécessaire de faire une carte électronique intermédiaire pour basculer de la liaison radio-commandée à une liaison ZigBee.

Pour contrôler automatiquement le quadcoptère à partir d'une station de base, un port USB doit être ajouter sur la carte électronique intermédiaire.

L'informatique
Le code utilisé pour le contrôle du quadcoptère est basé sur Aeroquad.

Présentation de Aeroquad
AeroQuad est un projet open-source dédié à la construction de multicoptères télécommandés, aussi connu comme quadcoptères ou quadricoptères. La dernière version du logiciel supporte également des configurations multicoptères supplémentaires!

AeroQuad supporte un micro contrôleur Arduino (Mega 2560 ou Uno) avec différents capteurs, tels qu'un accéléromètre, gyroscope, magnétomètre, baromètre, GPS et des capteurs à ultrasons.Ci-dessous on trouve un aperçu des caractéristiques qu'AeroQuad propose :
 * Configurations de vol prises en charge:
 * Quad X, Quad +, Quad Y4
 * Tri, Hex, Hex X +, Hex Y6
 * Octo X, Octo + et Octo X8
 * Options de vols :
 * Tenue de cap avec magnétomètre ou gyroscope
 * Maintien d'altitude avec baromètre
 * Maintien d'altitude avec capteur à ultrasons (meilleur pour la maintien en altitude basse et suivi de terrain)
 * Options de surveillance de la batterie :
 * Active la descente automatique
 * Prise en charge du nombre de cellules
 * Intégration avec affichage sur écran (OSD)
 * Options du récepteur :
 * Jusqu'à 10 voies prises en charge
 * Récepteurs PWM
 * Récepteurs PPM
 * Récepteur Futaba sbus
 * Options de télémétrie :
 * Télémétrie sans fil sur un port série dédié
 * Canal télémétrie Audio
 * utilisation du protocole de base MavLink
 * Prise en charge de la stabilisation :
 * Chaînes d'asservissement dédiées pour roulis, tangage, lacet
 * Possibilité de stabilisation automatique ou manuelle via un voie de l'émetteur
 * Prise en charge d'un OSD pour MAX7456

Aeroquad Configurator
Aeroquad Configurator est un outil permettant à l'utilisateur de configurer AeroQuad avant son premier vol et d'ajuster rapidement les paramètres pour les caractéristiques de vol souhaitées.

L'utilisateur est en mesure d'observer graphiquement le bon fonctionnement des capteurs, des commandes de l'émetteur et le contrôle moteur du multicoptère. En outre, il ya des valeurs programmables par l'utilisateur tels que les valeurs de la boucle de régulation PID et le facteur d'émetteurs qui peuvent être réglés et mémorisés dans l'EEPROM de l'AeroQuad.

Adaptation pour le projet
Le code Aeroquad étant optimisé pour l'utilisation de matériels compatibles Aeroquad, il est nécessaire d'adapter certaines parties du code pour faire fonctionner le BotCopter :
 * Déclaration d'une plateforme matérielle pour le BotCopter
 * Codage de la partie ZigBee (émission et réception)
 * Codage des capteurs non supportés de base
 * Codage de la commande moteur pour des moteurs Coreless (sur Aeroquad, les moteurs supportés sont des Brushless)
 * Séparation du code entre la carte émettrice et réceptrice (sur Aeroquad, le récepteur de la radio-commande est inclus dans le quadcoptère)
 * Ajout de la télémétrie sur la liaison ZigBee

= Prototype alpha =

Choix des composants
Le micro-contrôleur suivant est utilisé : Dresden Elektronik deRFmega128-22C00
 * Caractéristiques techniques :
 * 30 x 20.5 x 6 mm
 * Puce unique micro-contrôleur ATmega128RFA1 8bit-AVR
 * Transceiver intégré
 * 2.4 GHz
 * Antenne céramique intégrée
 * Portée maximale jusqu'à 200m (vue dégagée)
 * Interfaces disponibles telles que I2C, SPI, UART, ADC
 * Applications: ZigBee, 6LoWPAN et RF4CE
 * Mémoire EEPROM de 1Mb I2C

La carte capteurs suivante est utilisée : IMU 10DOF
 * Caractéristiques techniques :
 * 22 x 17 mm
 * Accéléromètre 3 axes et Gyroscope 3 axes : MPU-6050
 * Magnétomètre 3 axes : HMC5883L
 * Baromètre : MS5611
 * Tension : 3.3-5V
 * Protocole : I2C (support 3.3-5V)

Carte émettrice
Caractérisques principales :
 * PCB double face 1.8mm
 * Micro-contrôleur soudé sur le PCB
 * Port USB intégré au PCB
 * Port AVR-ISP pour programmer le micro-contrôleur
 * E/S micro-contrôleur accessibles part des pins au pas 2.54mm

Schéma électronique
TODO

Programme
TODO

Carte réceptrice
Caractérisques principales :
 * Taille du PCB principal : 34 x 34mm
 * PCB principal double face 1.8mm
 * Carte 10DOF soudée au dessus du PCB principal
 * Micro-contrôleur relié par des fils (non soudé sur le PCB principal)
 * Port USB intégré au PCB

Schéma électronique
TODO

Programme
TODO

Configuration
Paramètres des PID dans Aeroquad Configurator :
 * Rate Mode
 * Roll P : 100
 * Roll I : 25
 * Roll D : -350
 * Pitch P : 100
 * Pitch I : 25
 * Pitch D : -350
 * Rotation Speed : 1
 * Attitude Mode
 * Roll Accel P : 3.5
 * Roll Accel I : 0
 * Roll Accel D : 0
 * Picth Accel P : 3.5
 * Picth Accel I : 0
 * Picth Accel D : 0
 * Roll Gyro P :	60
 * Roll Gyro I :	15
 * Roll Gyro D :	-150
 * Pitch Gyro P : 60
 * Pitch Gyro I : 15
 * Pitch Gyro D : -150
 * Windup guard : 1000
 * Yaw Configuration
 * Yaw P : 200
 * Yaw I : 5
 * Yaw D : 0
 * Heading P : 3
 * Heading I : 0.1
 * Heading D : 0
 * Heading C : 1

Tests
TODO

Retours d'expérience
Avantages :
 * Le quadricoptère vole
 * La carte émettrice fonctionne parfaitement
 * Le programme Aeroquad marche parfaitement sur un AtMega128RFA1
 * La commande de puissance des moteurs fonctionne sans chauffer

Inconvénients :
 * Le poids total de l'électronique est de 13gr; peu de puissance disponible pour les manoeuvres
 * Temps de vol d'environ 4 minutes (poids trop grand)
 * La liaison ZigBee n'est pas fiable (perte de trames en cas de pertubations RF)
 * Pas de debug possible sans connection en USB à l'ordinateur
 * Difficulté de connaître le statut du quadcopter
 * Les fils pour relier le micro-contrôleur au PCB principal du quacoptère se cassent lors de crash violent
 * Les connecteurs soudés en double face cassent les pistes en cas de choc
 * La carte IMU n'est pas située au centre des hélices et n'est pas protégée des chocs

Budget
TODO

= Prototype beta =

Améliorations principales à apporter :
 * Diminution du poids de l'électronique
 * Micro-contrôleur soudé sur PCB
 * Fiabilisation de la liaison ZigBee
 * Télémétrie sans fil
 * LED de statut

Choix des composants
Le micro-contrôleur suivant est utilisé : Dresden Elektronik deRFmega128-22C00
 * Caractéristiques techniques :
 * 30 x 20.5 x 6 mm
 * Puce unique micro-contrôleur ATmega128RFA1 8bit-AVR
 * Transceiver intégré
 * 2.4 GHz
 * Antenne céramique intégrée
 * Portée maximale jusqu'à 200m (vue dégagée)
 * Interfaces disponibles telles que I2C, SPI, UART, ADC
 * Applications: ZigBee, 6LoWPAN et RF4CE
 * Mémoire EEPROM de 1Mb I2C

La carte capteurs suivante est utilisée : IMU 10DOF
 * Caractéristiques techniques :
 * 22 x 17 mm
 * Accéléromètre 3 axes et Gyroscope 3 axes : MPU-6050
 * Magnétomètre 3 axes : HMC5883L
 * Baromètre : MS5611
 * Tension : 3.3-5V
 * Protocole : I2C (support 3.3-5V)

Schéma électronique
La carte est la même que le prototype alpha.

Programme
TODO

Carte réceptrice
Caractérisques principales :
 * Taille du PCB principal : 40 x 40mm
 * PCB principal simple face 0.5mm
 * Carte 10DOF collée en dessous du PCB principal
 * Micro-contrôleur soudé sur le PCB principal
 * Connecteur pour liaison série
 * 3 LEDs de statut
 * PCB de programmation USB-Série séparé

Schéma électronique
TODO

Carte UART
Caractérisques principales :
 * Interface USB-TTL 3.3V
 * Bouton de Reset
 * Connecteur pour carte réceptrice

Schéma électronique
TODO

Configuration
Paramètres des PID dans Aeroquad Configurator :
 * Rate Mode
 * Roll P : 100
 * Roll I : 25
 * Roll D : -350
 * Pitch P : 100
 * Pitch I : 25
 * Pitch D : -350
 * Rotation Speed : 1
 * Attitude Mode
 * Roll Accel P : 3.5
 * Roll Accel I : 0
 * Roll Accel D : 0
 * Picth Accel P : 3.5
 * Picth Accel I : 0
 * Picth Accel D : 0
 * Roll Gyro P :	60
 * Roll Gyro I :	15
 * Roll Gyro D :	-150
 * Pitch Gyro P : 60
 * Pitch Gyro I : 15
 * Pitch Gyro D : -150
 * Windup guard : 1000
 * Yaw Configuration
 * Yaw P : 200
 * Yaw I : 5
 * Yaw D : 0
 * Heading P : 3
 * Heading I : 0.1
 * Heading D : 0
 * Heading C : 1

Tests
TODO

Retours d'expérience
Améliorations par rapport à la version Alpha :
 * Poids de l'électronique diminué de 50%
 * Temps de vol d'environ 7 minutes
 * Réactivité en vol radicalement augmentée
 * Liaison ZigBee fiabilisée
 * LEDs de statut pratique
 * Télémétrie sans fil fonctionnelle
 * Plus de casse de la carte réceptrice

Inconvénients constatés :
 * Le baromètre ne fonctionne pas bien à cause des turbulences
 * En cas de perte de la liaison ZigBee, le quadricoptère reste sur la dernière commande reçue
 * Pas de mode debug de la liaison ZigBee
 * Un seul quadricoptère peut être commandé par la carte émettrice
 * Pas d'utilisation constatée du baromètre et du magnétomètre
 * Le câble reliant la batterie à la carte réceptrice se casse souvent au niveau de la soudure

Budget
TODO

= Prototype gamma =

Améliorations principales à apporter :
 * Soudage de l'IMU sur le PCB Principal
 * Ajout d'un micro-contrôleur dédié à la gestion de vol
 * Séparation du programme en 2 parties : un programme dédié au vol et un dédié à la liaison ZigBee
 * Possibilité de mettre à jour le code en OTA (Over The Air)
 * Diminution du poids de l'électronique
 * Commande de plusieurs quadcoptères en même temps (utilisation du ZigBee en réseau mesh)

Choix des composants
Le micro-contrôleur suivant est utilisé pour la partie ZigBee : @ANY2400SC-1
 * Caractéristiques techniques :
 * 24 x 13.5 x 3.0 mm
 * Puce unique micro-contrôleur ATmega128RFA1 8bit-AVR
 * Transceiver intégré
 * 2.4 GHz
 * Antenne céramique intégrée
 * Portée maximale jusqu'à 500m (vue dégagée)
 * Interfaces disponibles telles que I2C, SPI, UART, ADC, 30GPIO
 * Applications: ZigBee, 6LoWPAN et RF4CE

Le micro-contrôleur suivant est utilisé pour la partie vol : ATMega328P
 * Caractéristiques techniques :
 * Package TQFP-32 (9 x 9 x 1.2 mm)
 * 8bit-AVR
 * Overclocké à 16Mhz sous 3.3V
 * 32Ko Flash
 * 2Ko RAM
 * 1Ko EEPROM
 * 6 PWM
 * 8 ADC (10 bits)
 * Interfaces disponibles telles que I2C, SPI, UART, ADC, 23GPIO
 * Applications: ZigBee, 6LoWPAN et RF4CE

L'IMU suivant est utilisé : MPU-6050
 * Caractéristiques techniques :
 * 4 x 4 x 0.9 mm
 * Accéléromètre 3 axes
 * Gyroscope 3 axes
 * Tension : 3.3V
 * Package : QFN
 * Protocole : I2C (supporte 1.8-3.3V)