Étape 1: Choisissez votre Chipset
** PWM/PCM pour contrôler des servos de passe-temps
** Un moyen de mesurer des largeurs d’impulsion pour la lecture le récepteur rc (généralement accompli avec des interruptions)
** I2C acquisition données IMU
** Le SPI pour carte SD lecture/écriture
** Série communication GPS et Xbee
** Flotter math & math matrice calcul cosinus directionnel
Il y a vraiment beaucoup de choix ici. Cela pourrait être un bon moment pour faire le tour et voir ce nouveau. Voici un petit article de hackaday (2011) examinant certains conseils de développement populaire :
http://hackaday.com/2011/02/01/What-Development-Board-to-use/
De toute évidence, arduino a très bien développés de bibliothèques pour tous ces forfaits. Toutefois, pour ce projet j’ai fini par à l’aide d’une puce d’hélice de parallaxe. Si vous n’avez jamais utilisé un morceau d’hélice avant, voici le site Web de la parallaxe :
http://www.Parallax.com/tabid/407/default.aspx
La puce de l’hélice tourne 5 x plus rapide que l’arduino (80 Mhz vs 16 Mhz) et se compose essentiellement de 8 microcontrôleurs 32 bits, tandis que l’arduino n’a 1 microcontrôleur 8 bits (quoique, avec les bibliothèques C++ génial et soutien communautaire). La puce de l’hélice vous permet de consacrer 8 individuel « CMV » à des fonctions spécifiques, mais en échange vous ne pouvez pas utiliser les interruptions. La vitesse et la puissance de traitement vous donne une grande « fudge factor » si vous ne recevez pas votre algorithme tout à fait exact.
Étonnamment, une hélice quickstart Conseil coûte environ le même qu’un arduino uno.
J’ai récemment acheté un Comité STM32F3 de découverte hors digikey pour 10 $. Le jury de la découverte comprend un microcontrôleur coeur arm 72 Mhz, acceleromter, gyroscope et magnétomètre. Cela pourrait faire du développement beaucoup plus facile parce que la puce est développée en bon vieux C/C++, qui permet l’utilisation de tableaux 2D (pratique si vous allez utiliser une matrice de rotation) et est généralement plus universel. Le hic, c’est que la suite de développement de logiciel est un logiciel commercial (aka non-libre). Il existe des solutions de contournement disponible, surtout si vous êtes compétent de linux. Le Conseil d’administration peut être trouvé ici : http://www.digikey.com/product-detail/en/STM32F3DISCOVERY/497-13192-ND/3522185
Une fois que vous avez choisi votre contrôleur vous devez ramasser votre unité de mesure inertielle (IMU). Il s’agit d’un gyroscope et accéléromètre 3 axes, magnétomètre. La chose la plus importante ici est de choisir quelque chose de compatible avec votre contrôleur. Tous les mems (micro-electro-mécanique-systèmes) sont des dispositifs analogiques et exigent différentes interfaces numériques pour communiquer avec votre contrôleur (typiquement I2C ou SPI). Si vous n’avez jamais écrit un pilote I2C avant, est maintenant un bon moment pour apprendre. Sinon essayez de trouver des exemples de code en ligne qui utilise votre chipset.
J’aime personnellement d’une marque de pololu IMU :
http://www.Pololu.com/catalog/Product/1268
Beaucoup d’exemples/prise en charge en ligne. En outre, quelqu'un a déjà écrit un pilote I2C pour ce chipset en Assemblée. Cela le rend beaucoup plus facile de lire les données de l’IMU très rapidement. Voici le github avec le pilote de l’Assemblée de l’hélice (pasm)
https://github.com/tdeyle/PropellerIMU
Cependant, j’ai récemment trouvé quelques planches à vil prix sur amazon :
http://www.Amazon.com/attitude-Indicator-L3G4200D-ADXL345-HMC5883L/DP/B00CD239UG/Ref=sr_1_cc_1?s=APS&ie=UTF8&qid=1370604682&SR=1-1-catcorr&Keywords=sunkee+DOF
http://www.Amazon.com/L3G4200D-ADXL345-HMC5883L-BMP085-Breakout-/DP/B008G7T3QQ/Ref=sr_1_2?s=Electronics&ie=UTF8&qid=1370605789&SR=1-2&Keywords=DOF
Ce chipset semble assez commun pour cette application et l’échange d’objet hélice (OBEX) a déjà l’exemple de code pour l’ensemble de ces puces. J’ai modifié les codes exemple afin que nous pouvons les inclure comme une bibliothèque pour les fichiers d’essorage final. Sa prend un peu moins de.02 secondes pour lire et stocker des valeurs de l’ensemble chipset. C’est OK parce que nous pouvons consacrer le processus sur ses propres cog, mais il est encore un peu lent. Je travaille sur l’utilisation de l’un des pilotes de l’OBEX Assemblée I2C pour accélérer le processus, mais j’ai dû arrêter de travailler là-dessus pour faire cette écriture:)