Paso 3: Bocetos de Arduino
GPS: TinyGPS ++ biblioteca es utilizada por dos módulos:
http://arduiniana.org/Libraries/tinygpsplus/
Utilizo maniacBugs nrf24L01 bibliotecas:
https://github.com/maniacbug/RF24
https://github.com/maniacbug/RF24Network
Estos son bocetos bastante complejos.
Dibujo de collar: ArduinoTransmitter.zip
Recuerda: Este es un Mini Pro 8 MHz 3.3V Board y procesador. También el Mini Pro tiene un pinout diferente de tipo USB-BUB. Hice un USB adaptador en este Instructable:
Dibujo de la pantalla: ArduinoDisplayStation.zip
Recuerda: Este un Pro Mini 8MHz 3, 3V y procesador. Pero estoy usando el pinout USB-BUB 'estándar'.
LSM303DLHC: Por desgracia, no recuerdo donde conseguí esta librería de Arduino. Creo que era de Pololu. De todos modos, yo he conectado la biblioteca.
Para la librería de Pololu tiene un bosquejo de calibrar a ' calibrar la LSM303DLHC. Aquí está la descripción:
Calibre: Este programa es similar de serie, pero en lugar de las lecturas más recientes de la impresión, se imprime un funcionamiento mínimo y máximo de las lecturas de cada eje de magnetómetro. Estos valores pueden utilizarse para calibrar las funciones de heading() y el ejemplo de partida después de mover el LSM303 a través de cada orientación posible.
Lo modifico para que los minutos y Maxs se mostrará en el LCD5110. Ejecutar este boceto en el módulo de la pantalla. Ejecución de croquis, lentamente, gire y gire el módulo en todas las orientaciones. Grabar los minutos y Maxs en la pantalla, luego enchúfelos en bosquejo de DisplayStation, reemplazando los valores en las siguientes líneas:
Compass.m_min = (LSM303::vector) {-433, -600,-546};
Compass.m_max = (LSM303::vector) {+570, +488, +579};
Esto debería mejorar las lecturas de la brújula.
ADVERTENCIA: Cuando me actualicé a Arduino a la 1.6.1, tuve que actualizar las bibliotecas de Adafruit_GFX y Adafruit_PCD8544:
https://Learn.Adafruit.com/Adafruit-GFX-Graphics-Library
https://github.com/Adafruit/Adafruit-PCD8544-Nokia-5110-LCD-Library
Mostrar Resumen de bosquejo:
Además setup() y loop(), escribí seis funciones:
getRadioData() utiliza nrf24L01 + para recibir los datos enviados por el módulo de collar
getGPS() obtiene datos GPS del GPS interno
Calculate() calcula distancia y rumbo entre los dos
get getHeading() de Magnetómetro de LSM303
getPosition() obtener posición mediante rumbo y brújula
displayDirection() Mostrar la información en LCD5110
Setup() inicia GPS, brújula, nrf24L01 +, instala LCD5110
Loop() obtiene datos de collar, obtiene GPS, calcula distancia y rumbo y muestra