Datalogging en dataanalyse zijn waardevolle hulpmiddelen bij het verbeteren van je rijvaardigheden. Er zijn verschillende oplossingen te koop, maar ik heb mijn eigen logger op Arduino basis gebouwd. Het project is volledig Open Source en daarom makkelijk zelf na te bouwen.
Ik heb de volgende componenten van Adafruit gebruikt:
- Arduino Uno, een starter pack is aan te bevelen als je ook andere projecten wilt proberen. Anders heb je minimaal een passende USB kabel nodig voor het programmeren en de stroomvoorziening.
- Ultimate GPS logger shield, deze combineert GPS module en SD kaart interface.
- Stacking headers (als je de LCD of een andere shield wilt gebruiken).
- Externe GPS antenne en de bijbehorende kabel.
- Een LCD is optioneel, ik heb de RGB LCD shield with buttons gebruikt.
- Ook optioneel is een IMU (om versnelling en koers te meten), ik heb de LSM9DS1 gebruikt.
Ook is een Micro SD kaart vereist. Het in elkaar zetten gaat helaas niet zonder solderen. Ik heb de IMU op de GPS logger shield gesoldeerd. Stroom komt van een USB aansluiting, of ingebouwd, of een adapter voor een 12V stopcontact/aansteker.
Ik heb een simpele 3D geprinte behuizing voor de versie met LCD ontworpen. STL bestand en OpenSCAD broncode kunnen gedownload worden. Het STL bestand bevat behuizing en deksel, deze dienen voor het printen gesplit en de behuizing omgedraaid worden.
De Arduino broncode kan hier gedownload worden. Ik heb de volgende libraries gebruikt gezien de Adafruit libraries vrij inefficiënt zijn:
Met de RGB LCD geeft de kleur de GPS status weer (rood = geen fix, groen = fix). Met de links/rechts knoppen kan tussen weergave van positie en snelheid/koers geschakeld worden. Positie/snelheid/koers en de IMU waarnemingen worden in een CSV bestand op de SD kaart opgeslagen. Deze kunnen met Excel/een andere spreadsheet bekeken of in QGIS gevisualiseerd worden. Impoteren on MoTeC i2 zou ook mogelijk moeten zijn, ik heb het echter niet geprobeerd.
Import in QGIS gaat via Layer – Add Layer – Add Delimited Text Layer. “Trim Fields” kiezen. Kies field_4 als X field (lengtegraad) en field_3 als Y field (breedtegraad). Het Geometry CRS is EPSG:4326 (WGS84). Het project CRS op het gewenste coördinatenstelsel instellen, bijv. EPSG:28992 voor het Nederlandse RD stelsel. Daarna kun je OpenStreetMap toevoegen en bijv. de snelheid visualiseren.
10 gedachten over “Arduino GPS datalogger”
mooi! Is het mogelijk dat ik de nederlandse rd coordinaten op de lcd krijg?
Ja, als je het programma daarvoor aanpast is het mogelijk.
Weet jij toevallig ook hoe ik dat moet doen?
Ja, maar dat is niet zomaar uit te leggen en heb ik op dit moment geen tijd om de code zelf aan te passen.
Kan je wel vertellen waar het mee te maken heeft? Als ik dat weet kan ik zelf de rest voor uitvinden
Ben je bekend met de Arduino IDE? Je moet in de code op zoek gaan naar de plek waar de lengte/breedte naar het display geschreven worden. Hier deze met de benaderde transformatieformules naar RD X/Y omrekenen en naar het display schrijven, i.p.v. lengte/breedte.
Ja, was daar ook mee bezig. Heb converters gevonden op github, maar zijn in python en javascript, maar niet in arduino ide/c++. Ik denk dat ik het moet gaan vertalen naar arduino ide.
Je moet in dit stukje code zijn:
if(mode==1)
{
lcd.setCursor(0,0);
lcd.print("lat ");
lcd.setCursor(4,0);
lcd.print(fix.latitude(), 8);
lcd.setCursor(0,1);
lcd.print("lon ");
lcd.setCursor(4,1);
lcd.print(fix.longitude(), 8);
}
En dan formule 7 uit dit artikel gebruiken: https://media.thomasv.nl/2015/07/Transformatieformules.pdf
Dankjewel! Ik denk net het stukje daarvoor en dan data naar de converter sturen, die berekent het, en stuurt het weer terug als x en y. En dan kan je dat gewoon printen.
Kan ik toevallig ook op de display rd coordinaten weergeven en kan ik ook een normale 16×2 i2c lcd gebruiken?