Paso 1: Elegir el Chipset
** PWM/PCM para controlar servos de hobby
** Una manera de medir anchuras de pulso para la lectura del receptor rc (generalmente realizado con interrupciones)
** Adquiriendo datos IMU I2C
** SPI para lectura de tarjeta SD
** Serial comunicación GPS y Xbee
** Matemáticas y matemáticas de la matriz para el cálculo del coseno direccional del flotador
En realidad hay un montón de opciones aquí. Esto podría ser un buen momento para darse una vuelta y ver cuál es nuevo. Aquí está un artículo poco desde hackaday (2011) revisión de algunas placas de desarrollo popular:
http://HackADay.com/2011/02/01/What-Development-Board-to-use/
Obviamente, arduino tiene muy bien desarrolladas bibliotecas para todos estos paquetes. Sin embargo, para este proyecto que terminé usando una viruta de propulsor de la paralaje. Si nunca has usado una viruta de propulsor antes, aquí es el sitio web de parallax:
http://www.Parallax.com/tabid/407/default.aspx
La viruta de propulsor funciona 5 veces más rápido que el arduino (80 Mhz vs 16 Mhz) y esencialmente consiste en 8 microcontroladores de 32 bits, mientras que el arduino tiene sólo 1 microcontrolador de 8 bits (aunque, con impresionantes bibliotecas de C++ y apoyo de la comunidad). La viruta de propulsor le permite dedicar 8 "cogs" individuales para funciones específicas, pero en cambio pueden utilizar interrupciones. La velocidad y potencia de procesamiento le da un gran "fudge factor" si no se obtiene el algoritmo adecuado.
Sorprendentemente, un propulsor quickstart tablero cuesta aproximadamente lo mismo que un arduino uno.
Recientemente he comprado una placa de STM32F3 descubrimiento de digikey por $10. La Junta de descubrimiento incluye 72 Mhz base brazo microcontrolador, acelerógrafo, giroscopio y magnetómetro. Esto podría facilitar desarrollo mucho porque el chip es desarrollado en buen viejo C/C++, que permite el uso de matrices 2D (útil si vas a utilizar una matriz de rotación) y es generalmente más universal. El problema es que la suite de desarrollo de software es un software comercial (también conocido como no-libres). Hay algunas soluciones disponibles, especialmente si está linux experto. La junta puede encontrarse aquí: http://www.digikey.com/product-detail/en/STM32F3DISCOVERY/497-13192-ND/3522185
Una vez que usted ha elegido su controlador necesita recoger su unidad de medición inercial (IMU). Consiste en un magnetómetro, acelerómetro de 3 ejes y giroscopio. Lo más importante es escoger algo compatible con el controlador. Los mems (micro electro-mechanical systems) son dispositivos analógicos y requieren diferentes interfaces digitales para comunicarse con el controlador (normalmente I2C o SPI). Si usted nunca ha escrito un controlador I2C antes, ahora es un buen momento para aprender. De lo contrario tratar de encontrar algún ejemplo de código en línea que utiliza el chipset.
Personalmente me gusta una marca de chip IMU:
http://www.Pololu.com/catalog/Product/1268
Montón de ayuda en línea/ejemplos. Además, alguien ya ha escrito un controlador I2C para este chipset en Asamblea. Esto hace mucho más fácil de leer datos IMU muy rápidamente. Aquí está el github con el controlador de conjunto de hélice (pasm)
https://github.com/tdeyle/PropellerIMU
Sin embargo, recientemente encontré algunas placas baratos en 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
Este chipset parece bastante común para esta aplicación, y el intercambio de objetos de hélice (OBEX) ya tiene código de ejemplo para todos de estos chips. He modificado los códigos de ejemplo para que podemos incluirlos como una librería para nuestro archivo de centrifugado final. Su toma un poco menos.02 segundos para leer y almacenar los valores de la chipset todo. Esto está bien porque podemos dedicar el proceso en su propia cog, pero es todavía un poco lento. Estoy trabajando sobre el uso de uno de los impulsores de la Asamblea de I2C desde el OBEX para acelerar el proceso, pero tuve que dejar de trabajar en eso para poder hacer esta escritura :)