Stap 1: Kies uw patates frites
** PWM/PCM voor het beheersen van hobby servo 's
** Een manier van meten van puls breedte voor het lezen van de rc ontvanger (over het algemeen bereikt met interrupts)
** I2C verwervende IMU gegevens
** SPI voor SD-kaart lezen/schrijven
** Seriële voor GPS en Xbee communicatie
** Zweven math & matrix math voor directionele cosinus berekening
Er zijn echt een heleboel keuzes hier. Dit zou een goede tijd om te winkelen rond en zie whats nieuwe. Hier is een klein artikel van hackaday (2011) herziening van sommige populaire ontwikkelborden:
http://hackaday.com/2011/02/01/What-Development-Board-to-use/
Uiteraard, arduino heeft zeer goed ontwikkelde bibliotheken voor al deze pakketten. Echter, voor dit project uiteindelijk heb ik met behulp van een parallax propeller-chip. Als u nooit een propeller-chip voor gebruikt nog, is hier de parallax website:
http://www.Parallax.com/TabId/407/default.aspx
De propeller-chip loopt 5 x sneller dan de arduino (80 Mhz vs 16 Mhz) en bestaat hoofdzakelijk uit 8 32 bit microcontrollers, terwijl de arduino slechts 1 8-bit microcontroller heeft (zij, met geweldige C++ bibliotheken en steun van de Gemeenschap). De propeller-chip kunt u 8 afzonderlijke "raderen" wijden aan specifieke functies, maar in ruil kunt u niet onderbreekt. De extra snelheid en verwerkingskracht geeft u een grote "fudge factor" als je niet krijgen uw algoritme precies goed.
Verrassend, een propeller quickstart bestuur kosten ongeveer hetzelfde als een arduino uno.
Ik kocht onlangs een STM32F3 ontdekking board off van digikey voor $10. Het bord ontdekking bevat een 72 Mhz arm-core microcontroller, acceleromter gyroscoop en magnetometer. Dit kon de ontwikkeling een stuk gemakkelijker maken, omdat de chip is ontwikkeld in goede oude C/C++, waardoor het gebruik van 2D-arrays (handig als u gaat gebruiken een rotatie-matrix), en is over het algemeen meer universeel. De vangst is dat de software ontwikkeling suite commerciële software (aka onvrij is). Er zijn sommige oplossingen beschikbaar, vooral als u bent linux bedreven. De Raad van bestuur kan hier worden gevonden: http://www.digikey.com/product-detail/en/STM32F3DISCOVERY/497-13192-ND/3522185
Zodra u uw controller hebt uitgekozen die u wilt uw inertial measurement unit (IMU) halen. Dit bestaat uit een 3-axis accelerometer, gyroscoop en magnetometer. Het belangrijkste hier is te halen iets compatibel is met de controller. Alle mems (micro-electro-mechanische-systemen) zijn van analoge apparaten, en vereisen verschillende digitale interfaces om te communiceren met uw controller (meestal I2C of SPI). Als u nooit een I2C-driver voor geschreven hebt, is nu een goede tijd om te leren. Anders proberen om te vinden wat voorbeeldcode online die gebruikmaakt van uw patates frites.
Ik ben persoonlijk dol op een pololu merk IMU:
http://www.Pololu.com/Catalog/product/1268
Veel online ondersteuning/voorbeelden. Bovendien, heeft iemand al een I2C-driver voor deze chipset geschreven in vergadering. Dit maakt het een stuk makkelijker te lezen IMU gegevens zeer snel. Hier is de github met de propeller vergadering driver (pasm)
https://github.com/tdeyle/PropellerIMU
Echter, ik heb onlangs vond enkele spotgoedkoop planken op 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
Deze chipset lijkt een vrij algemeen voor deze toepassing, en de propeller object exchange (OBEX) heeft al voorbeeldcode voor al deze chips. Ik heb de codes voorbeeld aangepast zodat we hen als een bibliotheek voor onze uiteindelijke spin-bestand kunt opnemen. Het werpt een beetje onder.02 seconden om te lezen en opslaan van waarden uit de gehele chipset. Dit is OK, omdat we het proces op eigen cog kan wijden, maar het is nog steeds een beetje traag. Ik ben bezig met een van de stuurprogramma's van I2C, vergadering van de OBEX om het proces te versnellen, maar ik moest stoppen met werken op die daarvoor dit schrijven :)