Tartalomjegyzék:
Videó: Arduino GPS naplózó: 3 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:43
Sziasztok srácok, Nagyon izgatott vagyok az olyan kis projektek miatt, amelyek lehetővé teszik az emberek számára, hogy valójában sokkal többet megértsenek a mindennapi technológiánkból.
Ez a projekt GPS kitörésről és SD naplózásról szól. Sokat tanultam, csak építeni ezeket a dolgokat.
Sok olyan elképzelés fog felmerülni, amelyet ez az oktatóanyag követ, és még sok más követi az általam megadott linket, hogy elmélyüljön a témákban.
Szóval, mi ez? Egyszerű: GPS nyomkövető, amely naplózza a pozíciókat (magassággal együtt), a sebességet és a dátumot/időt egy microSD -n.
Amire szüksége lesz:
- Arduino Nano (valójában egy UNO-t használtam a vázlat elkészítéséhez, de ezek ugyanazok!)- Adafruit végső GPS-kitörés- MicroSD-kártya-kitörés- Forrasztóeszközök (minden, amire szüksége van a forrasztáshoz)- Univerzális Stripboard (én használtam a 5x7cm)- Vezetékek
Mindezek az alkatrészek nagyon olcsók, kivéve a GPS modult. Ez körülbelül 30-40 dollár, és ez a legdrágább rész. Még egy új forrasztópáka is kevesebbe kerülhet.
Adafruit pajzs is létezik, GPS és SD kártya modulokkal együtt. Ha használni szeretné, ne feledje, hogy az Arduino UNO -hoz készült, ezért UNO -ra lesz szüksége, nem pedig Nano -ra. A vázlatban azonban nincs különbség.
Menjünk tovább…
1. lépés: Alkatrészek csatlakoztatása
Nos, miután megszerezte az alkatrészeket, csatlakoztatnia kell őket. Itt megtalálja a frizurázási rajzokat, amelyek elég egyértelműek. Itt van azonban a tipp is:
MicroSD kitörés
5V -> 5VGND -> GnnCLK -> D13DO -> D12DI -> D11CS -> D4 (Ha a pajzsot használja, ez a D10 beépített)
GPS kitörés
Vin -> 5VGnn -> GnnRx -> D2Tx -> D3
Apró megjegyzések ezekről a modulokról: Ez a két kisfiú különböző utakon kommunikál az Arduino -val. A GPS egy TTL sorozatot használ, ugyanazt a módszert, amelyet akkor használunk, amikor az Arduino -val kommunikálunk a soros monitoron keresztül, ezért egy könyvtáron keresztül új sorozatot kell bejelentenünk (Tx és Rx), mert a GPS alapértelmezés szerint a 9600 -at akarja használni. használni is szeretné. A GPS modul mindig és folyamatosan adatfolyamot továbbít, ha csatlakoztatva van. Ez a trükkös rész, amellyel foglalkozni kell, mert ha elolvasunk egy mondatot és kinyomtatjuk, elveszíthetjük a következőt, erre is szükség van. Ezt kódoláskor szem előtt kell tartanunk!
A MicroSD az SPI -n (Serial Peripheral Interface) keresztül kommunikál, ami egy másik módja a táblával való kommunikációnak. Az ilyen típusú modulok mindig CLK -t használnak a D13 -on, DO -t a D12 -en és DI -t a D11 -en. Néha ezeknek a kapcsolatoknak más a neve, például CLK = SCK vagy SCLK (soros óra), DO = DOUT, SIMO, SDO, SO, MTSR (mindezek a Master kimenetet jelzik) és DI = SOMI, SDI, MISO, MRST (Master Input). Végül megvan a CS vagy az SS, amely jelzi a PIN -kódot, ahová elküldjük, amit írni szeretnénk a MicroSD -re. Ha két különböző SPI modult szeretne használni, akkor csak meg kell különböztetnie ezt a tűt, hogy mindkettőt használhassa. Például az LCD képernyő ÉS egy olyan MicroSd, mint amilyen nálunk van. Két különböző LCD -hez csatlakoztatva is működnie kell.
Forrasztja össze ezeket a részeket a táblán, és készen áll a vázlat feltöltésére!
Amint a vázlaton látható, néhány dupont hüvelyes csatlakozót forrasztok a közvetlen komponens helyett, mert a jövőben lehet, hogy újra akarom használni az elemet, vagy cserélni kell.
A GPS -modult is rossz irányba forrasztottam a csatlakozókkal, ez az én hibám volt, és nem akartam, de működik, és nem akarom kockáztatni, hogy megtörjem, és megpróbálom forrasztani azokat a kis köcsögöket! Csak forrasztani a megfelelő módon, és minden rendben lesz!
Íme néhány hasznos forrasztási videó: Forrasztási útmutató kezdőknek Videó a forrasztóról
Adafruit Youtube csatorna, sok érdekes dolog van ott!
Forrasztáskor próbálja meg használni a szükséges mennyiségű fémet, különben rendetlenséget okoz. Ne féljen megtenni, talán kezdjen valami nem túl drága dologgal, és tartsa forrasztva a különböző dolgokat. A megfelelő anyag is különbséget tesz!
2. lépés: A vázlat
Először természetesen importáljuk a könyvtárat, és építjük fel az objektumaikat, hogy működjenek együtt: Az SPI.h az SPI modulokkal való kommunikációhoz, az SD a MicroSD könyvtár és az Adafruit_GPS a GPS modul könyvtára. A SoftwareSerial.h egy soros port létrehozására szolgál szoftveren keresztül. A szintaxis "mySerial (TxPin, RxPin);". A GPS -objektumot egy sorozatra kell mutatni (zárójelben). Itt találhatók a könyvtárak linkjei az Adafruit GPS -kitöréshez, a MicroSD -kitöréshez (a tiszta munka elvégzéséhez formázni kell az SD -t ezzel a szoftverrel az SD -társításból) és Szoftver soros könyvtár (szerepelnie kell az IDE -ben).
MEGJEGYZÉS: Némi problémával szembesültem, amikor sok információt próbáltam hozzáfűzni egy fájlhoz, vagy kettőnél több fájlt használtam a vázlatban. Nem formattáltam az SD -t ezzel a szoftverrel, talán ez megoldhatja a problémát. Ezenkívül megpróbáltam hozzáadni egy másik érzékelőt a készülékhez, egy BMP280 -at (I2C modul), sikertelenül. Úgy tűnik, hogy az I2C modul használata megőrjíti a vázlatot! Már az Adafruit fórumán is érdeklődtem erről, de még mindig nem kaptam választ.
#include "SPI.h" #include "SD.h" #include "Adafruit_GPS.h" #include "SoftwareSerial.h" SoftwareSerial mySerial (3, 2); Adafruit_GPS GPS (& mySerial);
Most minden változónkra szükségünk van: A két karakterlánc arra a két mondatra vonatkozik, amelyekből ki kell számolnunk egy csomó hasznos információt a GPS -ből. A karakter a mondatok tárolására szolgál az elemzés előtt, az úszók a koordináták fokban történő kiszámítására szolgálnak (a GPS elküldi a használati koordinátákat fokban és percben, szükségünk van rájuk fokokban, hogy a Google Earth -ben olvassuk). A chipSelect az a tű, amelyhez csatlakoztatjuk a MicroSD kártya CS -jét. Ebben az esetben a D4, de ha SD pajzsot használ, akkor ide kell tennie a D10 -et. A fájlváltozó az, aki tárolja a vázlat során használt fájl adatait.
String NMEA1;
String NMEA2; char c; float deg; float degWhole; float degDec; int chipSelect = 4; Fájl mySensorData;
Most néhány funkciót jelentünk be, hogy a vázlat egy kicsit elegánsabb és kevésbé rendetlen legyen:
Alapvetően ugyanazt teszik: olvassák az NMEA mondatokat. A clearGPS () figyelmen kívül hagy három mondatot, és a readGPS () kettőt elment a változókba.
Lássuk, hogyan: Egy while ciklus vezérli, hogy vannak -e új NMEA mondatok a modulon, és addig olvassa a GPS adatfolyamot, amíg van. Ha új mondat van, akkor a while cikluson kívül vagyunk, ahol a mondatot ténylegesen olvassuk, elemezzük és tároljuk az első NMEA változókban. Azonnal ezt tesszük a következőre is, mert a GPS folyamatosan folyik, nem várja, hogy készen álljunk, nincs időnk azonnal kinyomtatni
Ez nagyon fontos! Ne tegyen semmit, mielőtt összegyűjti mindkét mondatot, különben a második végül megsérül, vagy csak rossz.
Miután két mondatot kaptunk, kinyomtatjuk őket a sorozatban, hogy ellenőrizzék, hogy jól megy -e.
void readGPS () {
clearGPS (); while (! GPS.newNMEAreceived ()) {c = GPS.read (); } GPS.parse (GPS.lastNMEA ()); NMEA1 = GPS.lastNMEA (); while (! GPS.newNMEAreceived ()) {c = GPS.read (); } GPS.parse (GPS.lastNMEA ()); NMEA2 = GPS.lastNMEA (); Serial.println (NMEA1); Serial.println (NMEA2); } void clearGPS () {while (! GPS.newNMEAreceived ()) {c = GPS.read (); } GPS.parse (GPS.lastNMEA ()); while (! GPS.newNMEAreceived ()) {c = GPS.read (); } GPS.parse (GPS.lastNMEA ()); w while (! GPS.newNMEAreceived ()) {c = GPS.read (); } GPS.parse (GPS.lastNMEA ()); }
Nos, most, hogy mindennel készen állunk, végezhetjük a beállítást ():
Először: megnyitjuk a kommunikációt a 115200 -as sorozaton az Arduino PC -n és a 9600 -on a Arduino GPS -modulon. Másodszor: három parancsot küldünk a GPS modulnak: az első az antenna frissítésének leállítása, a második az RMC és a GGA karakterlánc kérése (csak azokat fogjuk használni, amelyek minden szükséges információval rendelkeznek GPS), a harmadik és utolsó parancs az Adafruit által javasolt frissítési arány 1 Hz -re állítása.
Ezt követően a D10 tűt OUTPUT -ra állítjuk, ha és csak akkor, ha az SD -modell CS -tűje nem D10. Közvetlenül ezután állítsa be a CS -t a chipSelect csap SD -modulján.
Futtatjuk a readGPS () függvényeket, amelyek tartalmazzák a cleanGPS () funkciót.
Most itt az ideje, hogy írjon valamit a fájlokba! Ha a fájl már az Sd -kártyán van, csatoljon hozzájuk időbélyeget. Ily módon nem kell minden alkalommal nyomon követni a munkameneteket, vagy törölni a fájlokat. A beállítási funkcióba írt időbélyegzővel biztosak vagyunk abban, hogy munkamenetenként egyszer csak elválasztást adunk a fájlokhoz.
MEGJEGYZÉS: Az SD könyvtár komolyan gondolja, hogy minden alkalommal megnyitja és bezárja a fájlt! Tartsa észben, és zárja be minden alkalommal! A könyvtár megismeréséhez kövesse ezt a linket.
Rendben, valójában készen állunk arra, hogy megkapjuk a vázlat adatfolyam-napló részének magját.
void setup () {
Sorozat.kezdet (115200); GPS.begin (9600); // Parancsok küldése a GPS modulhoz GPS.sendCommand ("$ PGCMD, 33, 0*6D"); GPS.sendCommand (PMTK_SET_NMEA_OUTPUT_RMCGGA); GPS.sendCommand (PMTK_SET_NMEA_UPDATE_1HZ); késleltetés (1000); // csak akkor, ha az SD -modul CS -tűje nincs a D10 -es tűn
pinMode (10, KIMENET);
SD.begin (chipSelect); readGPS (); if (SD.exists ("NMEA.txt")) {mySensorData = SD.open ("NMEA.txt", FILE_WRITE); mySensorData.println (""); mySensorData.print ("***"); mySensorData.print (GPS.nap); mySensorData.print ("."); mySensorData.print (GPS.hónap); mySensorData.print ("."); mySensorData.print (GPS.év); mySensorData.print (" -"); mySensorData.print (GPS.óra); mySensorData.print (":"); mySensorData.print (GPS.perc); mySensorData.print (":"); mySensorData.print (GPS.seconds); mySensorData.println ("***"); mySensorData.close (); } if (SD.exists ("GPSData.txt")) {mySensorData = SD.open ("GPSData.txt", FILE_WRITE); mySensorData.println (""); mySensorData.println (""); mySensorData.print ("***"); mySensorData.print (GPS.nap); mySensorData.print ("."); mySensorData.print (GPS.hónap); mySensorData.print ("."); mySensorData.print (GPS.év); mySensorData.print (" -"); mySensorData.print (GPS.óra); mySensorData.print (":"); mySensorData.print (GPS.perc); mySensorData.print (":"); mySensorData.print (GPS.seconds); mySensorData.println ("***"); mySensorData.close (); }}
Most megkapjuk a vázlat magját.
Ez szuper egyszerű, valóban.
A GPS adatfolyamot a readGPS () függvénnyel fogjuk olvasni, mint amit mi irányítunk, ha a javítás értéke 1, t azt jelenti, hogy műholddal vagyunk összekapcsolva. Ha megkaptuk, akkor a fájlokba írjuk az infóinkat. Az első "NMEA.txt" fájlba csak a nyers mondatokat írjuk. A második, "GPDData.txt" fájlban hozzáfűzzük a koordinátákat (a korábban látott függvényekkel konvertálva) és a magasságot. Ezek az információk elegendőek egy.kml fájl összeállításához, hogy útvonalat hozzanak létre a Google Földön. Ne feledje, hogy minden alkalommal, amikor megnyitottuk, bezárjuk a fájlokat, hogy írjunk valamit!
void loop () {
readGPS (); // Feltétel, ha che controlla se l'antenna ha segnale. Lásd: adatok feldolgozása. if (GPS.fix == 1) {// Csak akkor mentse az adatokat, ha javítással rendelkezünk mySensorData = SD.open ("NMEA.txt", FILE_WRITE); // Fájl megjelenítése a frasi NMEA grezze mySensorData.println (NMEA1); // Scrive prima NMEA sul fájl mySensorData.println (NMEA2); // Scrive seconda NMEA sul fájl mySensorData.close (); // Chiude fájl !!
mySensorData = SD.open ("GPSData.txt", FILE_WRITE);
// Converte e scrive la longitudine convLong (); mySensorData.print (fok, 4); // Keresse meg a koordinátát a MySensorData.print gradi sul fájlban (","); // Scrive una virgola per separare i data Serial.print (deg); Serial.print (","); // Converte e scrive la latitudine convLati (); mySensorData.print (fok, 4); // Keresse meg a koordinátát a MySensorData.print gradi sul fájlban (","); // Scrive una virgola per separare i data Serial.print (deg); Serial.print (","); // Scrive l'altitudine mySensorData.print (GPS.altitude); mySensorData.print (""); Serial.println (GPS.altitude); mySensorData.close (); }}
Most, hogy készen vagyunk, feltöltheti a vázlatot, megépítheti a készüléket és élvezheti!
Ne feledje, hogy a javításhoz 1 -el kell használni, ha a GPS borad az ég felé néz, vagy külső antennát csatlakoztathat hozzá.
Emellett ne feledje, hogy ha van javítás, a piros fény 15 másodpercenként villog, ha nem, sokkal gyorsabban (2-3 másodpercenként).
Ha többet szeretne megtudni az NMEA mondatokról, kövesse az útmutató következő lépését.
3. lépés: Az NMEA mondatok és a.kml fájl
A készülék és a vázlat kész, jól működnek. Ne feledje, hogy a javításhoz (a műholdakkal való kapcsolathoz) a kitörésnek az ég felé kell néznie.
A kis piros lámpa 15 másodpercenként villog, ha javítást kapott
Ha jobban szeretné megérteni az NMEA mondatokat, olvasson tovább.
A vázlatban csak két mondatot használunk, a GGA -t és az RMC -t. Ez csak néhány mondat, amit a GPS modul közvetít.
Lássuk, mi van a karakterláncban:
$ GPRMC, 123519, A, 4807.038, N, 01131.000, E, 022.4, 084.4, 230394, 003.1, W*6A
RMC = ajánlott minimális mondat a talaj felett csomókban 084.4 = Vágásszög fokban Igaz 230394 = Dátum - 1994. március 23. 003.1, W = Mágneses eltérés *6A = Az ellenőrző összeg adatai mindig *-al kezdődnek
$ GPGGA, 123519, 4807.038, N, 01131.000, E, 1, 08, 0.9, 545.4, M, 46.9, M,, *47
GGA globális helymeghatározó rendszer javítási adatai 123519 Javítás 12:35:19 UTC 4807.038, N Szélesség 48 fok 07.038 'N 01131.000, E Hosszúság 11 fok 31.000' E 1 Javítási minőség: 0 = érvénytelen; 1 = GPS javítás (SPS); 2 = DGPS javítás; 3 = PPS javítás; 4 = Valós idejű kinematika; 5 = Úszó RTK; 6 = becsült (halott számítás) (2.3 jellemző); 7 = Kézi beviteli mód; 8 = Szimulációs mód; 08 A nyomon követett műholdak száma 0,9 Az 545,4 pozíció vízszintes hígítása, M magasság, méter, átlagos tengerszint feletti szint 46,9, M A geoid magassága (átlagos tengerszint) a WGS84 ellipszoid (üres mező) fölött eltelt idő másodpercben az utolsó DGPS frissítés óta (üres mező) DGPS állomás azonosító száma *47 az ellenőrző összeg adatai, mindig *-al kezdődnek
Amint látja, ott sokkal több információ található, amire szüksége van. Az Adafruit könyvtárával hívhat néhányat, például a GPS.latitude vagy GPS.lat (szélességi és szélességi félgömb) vagy a GPS.day/month/year/hour/minute/seconds/milliseconds… Nézze meg az Adafruitot honlapon, hogy többet tudjon. Nem olyan egyértelmű, de a GPS -modulok útmutatójának néhány tippje után megtalálhatja a szükségeset.
Mit tehetünk a meglévő fájlokkal? Egyszerű: fordítson le kml fájlt, hogy megjelenítse az útvonalat a Google Earth alkalmazásban. Ennek érdekében csak másolja/mentse el az ezen a linken található kódot (az Útvonal bekezdés alatt), helyezze a koordinátákat a GPDData.txt fájlból a címkék közé, mentse a fájlt.kml kiterjesztéssel és töltse fel Google Föld.
MEGJEGYZÉS: A.kml jelölőnyelv egyszerű, ha már tudja, mi a jelölőnyelv, szánjon időt arra, hogy elolvassa az előző linket és dokumentációt, ez valóban érdekes!
A kml használata a címkék és érvek ismerete. Csak a Google útmutatót találtam, amelyet korábban linkeltem, és a lényeg az, hogy határozzuk meg a stílust a címkék között, és hívjuk el # jellel, amikor el kell írni a koordinátákat.
Az ebben a részben hozzáadott fájl egy.kml, amelybe beillesztheti a koordinátákat. ne feledje, hogy illessze be ezt a szintaxist: hosszúság, szélesség, magasság
Ajánlott:
Adatgyűjtő - naplózó számítógépes modul: 5 lépés
Adatgyűjtő - Naplózó számítógépes modul: Ethernet adatgyűjtő a HTTP -alapú adatgyűjtéshez az érzékelőhidakról, amelyek átalakítják az I2C interfészű érzékelőt Ethernet érzékelővé
DIY pulzusmérő (naplózó): 4 lépés
DIY pulzusmérő (naplózó): Ebben a projektben megmutatom, hogy egy kereskedelmi okosóra hogyan méri és figyeli a pulzusát, majd megmutatom, hogyan lehet létrehozni egy DIY áramkört, amely alapvetően ugyanazt teszi, azzal a kiegészítéssel, hogy tárolja a pulzusadatokat
Arduino GPS naplózó: 6 lépés
Arduino GPS naplózó: Szerette valaha naplózni a koordinátáit, és ellenőrizni az útvonalat a térképen? Ellenőrizze egy autó vagy teherautó útvonalát? Látod a kerékpár nyomkövetését egy hosszú utazás után? (Vagy kémkedj valaki után, aki az autódat használja? :)) Mindez lehetséges a kis segítséggel
Raspberry Pi GPS naplózó: 10 lépés (képekkel)
Raspberry Pi GPS naplózó: Ez az utasítás elmagyarázza, hogyan lehet kompakt GPS naplózót készíteni málna pi nullával. Ennek a rendszernek a fő előnye, hogy akkumulátort tartalmaz, és ezért nagyon kompakt. Az eszköz a.nmea fájlban tárolja az adatokat. A következő adatok kb
GPS naplózó Arduino OLed SD: 6 lépés (képekkel)
GPS naplózó Arduino OLed SD: GPS naplózó az aktuális és átlagos sebesség megjelenítéséhez, valamint az útvonalak nyomon követéséhez. Az átlagsebesség olyan területekre vonatkozik, ahol a pálya sebességszabályozója van. Az Arduino néhány szép funkcióval rendelkezik, amelyeket másolhat:- A koordinátákat egy napi fájl tárolja, a fájlnév alap