MonkeyDogTracker (3 / 4 steg)
Steg 3: Arduino skisser
GPS: TinyGPS ++-bibliotek som används av både moduler:
http://arduiniana.org/libraries/tinygpsplus/
Jag använder maniacBugs nrf24L01 bibliotek:
https://github.com/maniacbug/RF24
https://github.com/maniacbug/RF24Network
Detta är ganska komplex skisser.
Krage skiss: ArduinoTransmitter.zip
Kom ihåg: Detta är en Pro Mini 8 MHz 3.3V styrelse och Processor. Pro Mini har också en annan USB-BUB typ pinut. Jag gjorde en USB-adapter i detta Instructable:
Display skiss: ArduinoDisplayStation.zip
Kom ihåg: Här en Pro Mini 8MHz 3.3V styrelse och Processor. Men jag använder det "standard" USB-BUB pinout.
LSM303DLHC: Tyvärr, jag minns inte var jag fick detta Arduino bibliotek. Jag tror det var från Pololu. Hur som helst, jag har bifogat biblioteket.
Så Pololu biblioteket har en kalibrera skiss till "kalibrera LSM303DLHC. Här är beskrivningen:
Kalibrera: Detta program liknar det seriella exemplet, men istället för att skriva ut den senaste behandlingen, den skriver en löpande minsta och största av avläsningarna från varje magnetometer axel. Dessa värden kan användas för att kalibrera heading() funktioner och i rubriken exempel efter att ha flyttat LSM303 genom varje möjligt orientering.
Jag ändrade det så att min och Maxs visas på LCD5110. Kör denna skiss på modulen Display. Kör skiss, långsamt, vrida och vända modulen på alla ledder. Spela in minuter och Maxs på displayen, sedan koppla in dem i DisplayStation skiss, ersätta värdena i följande rader:
Compass.m_min = (LSM303::vector) {-433,-600,-546};
Compass.m_max = (LSM303::vector) {+570, +488, +579};
Detta bör förbättra den kompass behandlingen.
Varning: När jag uppdaterade till Arduino till 1.6.1, jag var tvungen att uppdatera Adafruit_GFX och Adafruit_PCD8544 bibliotek:
https://learn.adafruit.com/adafruit-gfx-Graphics-Library
https://github.com/adafruit/Adafruit-PCD8544-Nokia-5110-LCD-Library
Visa skiss Sammanfattning:
Förutom setup() och loop() skrev jag sex funktioner:
getRadioData() använder nrf24L01 + att ta emot data som skickas av modulen krage
getGPS() får GPS-data från den interna GPS
calculate() beräknar avstånd och riktning mellan två
getHeading() få rubrik från LSM303 magnetometer
getPosition() få position med hjälp av rubriken och kompass
displayDirection() Visa information på LCD5110
Setup() startar GPS, kompass, nrf24L01 +, sätter upp LCD5110
loop() hämtar data från krage, blir GPS, beräknar avstånd och riktning och visar