Cov txheej txheem:

Arduino GPS Logger: 3 Kauj Ruam
Arduino GPS Logger: 3 Kauj Ruam

Video: Arduino GPS Logger: 3 Kauj Ruam

Video: Arduino GPS Logger: 3 Kauj Ruam
Video: LoRa GPS Tracker Project with Google Maps - Arduino ESP8266 RYLR406 2024, Cuaj hlis
Anonim
Arduino GPS Logger
Arduino GPS Logger
Arduino GPS Logger
Arduino GPS Logger

Nyob zoo cov neeg, Kuv tau txais qhov zoo tshaj plaws rau cov haujlwm me me uas tso cai rau tib neeg nkag siab ntau ntxiv ntawm cov thev naus laus zis uas peb muaj nyob ib puag ncig txhua hnub.

Txoj haujlwm no hais txog GPS tawm thiab SD txiav tawm. Kuv kawm ntau yam tsuas yog tsim cov khoom no.

Muaj ntau qhov kev xav uas koj yuav tau txais tom qab qhov kev qhia no, thiab ntau ntxiv tom qab qhov txuas Kuv muab kom nkag siab tob hauv cov ncauj lus.

Yog li, nws yog dab tsi? Yooj Yim: Puas yog GPS tracker uas teev cov haujlwm (nrog qhov siab ib yam nkaus), nrawm thiab hnub/sijhawm ntawm microSD.

Koj yuav xav tau dab tsi:

- Arduino Nano (Kuv yeej tau siv UNO los tsim cov duab kos, tab sis lawv zoo ib yam!)- Adafruit qhov kawg GPS tawm- MicroSD daim npav tawg- Cov cuab yeej soldering (txhua yam koj yuav xav tau rau cov laug)- Universal Stripboard (Kuv siv a 5x7cm)- Cov xov hlau

Tag nrho cov khoom siv no pheej yig zoo nkauj tshwj tsis yog GPS module. Qhov ntawd yog kwv yees li 30-40 daus las thiab Puas yog qhov kim tshaj plaws. Txawm tias cov txheej txheem hlau tshiab tuaj yeem raug nqi tsawg dua.

Tseem muaj daim npog Adafruit nrog GPS thiab SD daim npav ua ke. Yog tias koj xav siv nws, nco ntsoov tias tau tsim rau Arduino UNO, yog li koj yuav xav tau UNO thiab tsis yog Nano. Tsis muaj qhov sib txawv hauv daim duab txawm hais tias.

Cia peb mus ntxiv …

Kauj Ruam 1: Txuas Cov Khoom Siv

Kev Sib Txuas
Kev Sib Txuas
Kev Sib Txuas
Kev Sib Txuas
Kev Sib Txuas
Kev Sib Txuas
Kev Sib Txuas
Kev Sib Txuas

Zoo, tom qab koj tau txais cov khoom siv, koj yuav tsum txuas lawv. Ntawm no koj tuaj yeem pom qhov scitting schematics uas yog qhov zoo nkauj heev. Txawm li cas los xij, qhov no yog pinout ib yam nkaus:

MicroSD breakout

5V -> 5VGND -> GnnCLK -> D13DO -> D12DI -> D11CS -> D4 (Yog tias koj siv ntaub thaiv npog qhov no tau tsim hauv D10)

GPS tawg

Vin -> 5VGnn -> GnnRx -> D2Tx -> D3

Cov ntawv me me txog cov qauv no: Ob tug tub hluas no tau sib tham los ntawm txoj kev sib txawv nrog Arduino. GPS siv TTL Serial, tib yam peb siv thaum peb sib tham nrog Arduino ntawm Serial Monitor, uas yog vim li cas peb yuav tsum tshaj tawm los ntawm lub tsev qiv ntawv cov ntawv tshiab (Tx thiab Rx) vim tias GPS xav siv 9600 los ntawm lub neej ntawd, thiab peb xav siv nws ib yam nkaus. GPS module yog ib txwm thiab tas li tso cov ntaub ntawv, yog tias txuas. Nov yog qhov tsis yooj yim los daws nrog, vim tias yog tias peb nyeem kab lus thiab tshaj li luam tawm, peb tuaj yeem plam qhov tom ntej, uas xav tau ib yam nkaus. Peb yuav tsum khaws nws hauv siab thaum coding!

MicroSD sib tham ntawm SPI (Serial Peripheral Interface), lwm txoj hauv kev los sib tham nrog pawg thawj coj. Cov qauv ntawm cov qauv siv ib txwm CLK ntawm D13, Ua rau D12 thiab DI ntawm D11. Qee zaum cov kev sib txuas ntawd muaj lub npe sib txawv xws li CLK = SCK lossis SCLK (Serial Clock), Ua = DOUT, SIMO, SDO, SO, MTSR (tag nrho cov no qhia Master Output) thiab DI = SOMI, SDI, MISO, MRST (Master Input). Thaum kawg peb muaj CS lossis SS uas qhia tus pin uas peb xa yam peb xav sau hauv MicroSD. Yog tias koj xav siv ob tus qauv SPI sib txawv, koj tsuas yog yuav tsum sib txawv tus lej no txhawm rau siv ob qho tib si. Piv txwv, LCD npo THIAB MicroSd zoo li qhov peb siv. Nws yuav tsum ua haujlwm tseem siv ob lub LCD sib txawv sib txuas rau CSs sib txawv.

Muab cov khoom no tso ua ke hauv pawg thawj coj saib thiab koj tau teeb tsa kom rub cov duab kos!

Raws li koj tuaj yeem pom hauv daim duab, kuv tau siv qee qhov sib txuas ntawm tus poj niam dupont hloov cov khoom siv ncaj qha, uas yog vim yav tom ntej kuv yuav xav rov siv cov khoom siv lossis hloov ib qho.

Kuv kuj tau siv lub GPS module nrog cov khoom sib txuas hauv qhov tsis ncaj ncees lawm, qhov ntawd yog kuv qhov txhaum thiab kuv tsis xav tau, tab sis nws ua haujlwm thiab kuv tsis xav kom muaj kev pheej hmoo tsoo nws ua rau desolder cov me bastards! Tsuas yog solder hauv txoj kev raug thiab txhua yam yuav zoo!

Nov yog qee cov yeeb yaj kiab uas muaj txiaj ntsig zoo: Cov lus qhia Soldering rau tus pib Ib qho vis dis aus txog desolder

Adafruit Youtube channel, ntau yam ntxim nyiam nyob rau ntawd!

Thaum koj muab tshuaj txhuam, sim siv tsuas yog cov hlau uas koj xav tau, txwv tsis pub koj yuav ua qhov tsis meej pem. Tsis txhob ntshai ua nws, tej zaum pib nrog qee yam tsis kim heev, thiab dua li khaws cov khoom sib txawv. Cov khoom siv raug ua qhov sib txawv!

Kauj ruam 2: Sketch

Ua ntej, tau kawg, peb xa cov tsev qiv ntawv thiab tsim lawv cov khoom los ua haujlwm nrog: SPI.h yog rau kev sib txuas lus nrog SPI cov qauv, SD yog lub tsev qiv ntawv MicroSD thiab Adafruit_GPS yog lub tsev qiv ntawv ntawm GPS module. SoftwareSerial.h yog rau tsim chaw nres nkoj txuas ntawm software. Cov syntax yog "mySerial (TxPin, RxPin);". Cov cuab yeej GPS yuav tsum tau taw qhia rau hauv kab ntawv (hauv kab zauv). Ntawm no yog cov tsev qiv ntawv txuas rau Adafruit GPS tawg, MicroSD kev tawm (kom ua haujlwm huv koj yuav tsum tau format SD nrog no software los ntawm SD koom haum) thiab Software Serial library (nws yuav tsum suav nrog hauv IDE).

NCO TSEG: Kuv tau ntsib qee qhov teeb meem thaum sim ua cov ntaub ntawv ntau ntxiv hauv ib daim ntawv lossis siv ntau dua ob daim ntawv hauv daim duab. Kuv tsis tau format SD nrog software ntawd, tej zaum qhov uas tuaj yeem daws qhov teeb meem. Tsis tas li, kuv tau sim ntxiv lwm lub ntsuas pa hauv lub cuab yeej, BMP280 (I2C module), yam tsis muaj kev vam meej. Nws zoo li siv I2C module ua rau cov duab kos vwm! Kuv twb paub txog nws hauv Adafruit lub rooj sab laj, tab sis kuv tseem tsis tau teb.

#include "SPI.h" #include "SD.h" #include "Adafruit_GPS.h" #include "SoftwareSerial.h" SoftwareSerial mySerial (3, 2); Adafruit_GPS GPS (& mySerial);

Tam sim no peb xav tau tag nrho peb cov kev hloov pauv: Ob txoj hlua yog txhawm rau nyeem ob kab lus uas peb xav tau los suav cov pawg ntawm cov ntaub ntawv muaj txiaj ntsig los ntawm GPS. Tus lej yog rau khaws cov kab lus ua ntej cais lawv, cov ntab yog rau xam cov kev sib koom ua ke hauv qib (GPS xa siv kev sib koom ua ke hauv qib thiab feeb, peb xav tau lawv hauv qib kom cia nyeem hauv google ntiaj teb). ChipSelect yog tus pin uas peb ntsaws CS ntawm daim npav MicroSD. Hauv qhov no yog D4, tab sis yog tias koj siv daim npog SD, koj yuav tsum tau muab D10 ntawm no. Cov ntaub ntawv sib txawv yog tus uas yuav khaws cov ntaub ntawv ntawm cov ntaub ntawv peb siv thaum kos duab.

Txoj hlua NMEA1;

Txoj hlua NMEA2; caj c; float deg; ntab degWhole; ntab degDec; int chipSelect = 4; Ua ntaub ntawv mySensorData;

Tam sim no peb tab tom tshaj tawm ob peb fo kev ua haujlwm kom ua kom cov duab kos zoo nkauj me ntsis thiab tsis ntxaws:

Lawv ua haujlwm ib yam nkaus: nyeem kab lus NMEA. clearGPS () tsis quav ntsej peb kab lus thiab nyeemGPS () tau txuag ob ntawm lawv hauv qhov sib txawv.

Cia peb pom yuav ua li cas: Ib lub sijhawm voj tswj hwm yog tias muaj kab lus NMEA tshiab ntawm tus qauv thiab nyeem GPS kwj kom txog thaum muaj ib qho. Thaum muaj kab lus tshiab nyob ntawd, peb tab tom tawm lub sijhawm, qhov uas kab lus tau nyeem tiag tiag, cais tawm thiab khaws cia hauv thawj NMEA qhov hloov pauv. Peb tam sim ua tib yam rau ib qho tom ntej, vim tias GPS txuas mus tas li, nws tsis tau tos peb kom npaj tau, peb tsis muaj sijhawm sau nws tam sim ntawd

Qhov no tseem ceeb heev! Tsis txhob ua ib yam dab tsi ua ntej koj npaj ob kab lus, txwv tsis pub zaum ob yuav kawg puas los yog yuam kev xwb.

Tom qab peb tau txais ob kab lus, peb luam tawm hauv cov ntawv xov xwm kom tswj tau qhov ua tau zoo.

void readGPS () {

clearGPS (); thaum (! GPS.newNMEAreceived ()) {c = GPS.read (); } GPS.parse (GPS.lastNMEA ()); NMEA1 = GPS.lastNMEA (); thaum (! GPS.newNMEAreceived ()) {c = GPS.read (); } GPS.parse (GPS.lastNMEA ()); NMEA2 = GPS.lastNMEA (); Serial.println (NMEA1); Serial.println (NMEA2); } void clearGPS () {thaum (! GPS.newNMEAreceived ()) {c = GPS.read (); } GPS.parse (GPS.lastNMEA ()); thaum (! GPS.newNMEAreceived ()) {c = GPS.read (); } GPS.parse (GPS.lastNMEA ()); w thaum (! GPS.newNMEAreceived ()) {c = GPS.read (); } GPS.parse (GPS.lastNMEA ()); }

Zoo, tam sim no uas peb tau teeb tsa tag nrho, peb tuaj yeem dhau los ntawm teeb tsa ():

Ua ntej: peb qhib kev sib txuas lus ntawm Serial 115200 rau Arduino PC thiab ntawm 9600 rau GPS module Arduino. Qhov thib ob: peb xa peb cov lus txib mus rau GPS module: thawj zaug yog kaw lub kav hlau txais xov hloov tshiab, qhov thib ob yog thov tsuas yog RMC thiab GGA txoj hlua (peb yuav siv tsuas yog cov ntawd, uas muaj tag nrho cov ntaub ntawv koj xav tau los ntawm a GPS), qhov lus thib peb thiab zaum kawg yog teeb tsa tus nqi hloov tshiab rau 1HZ, qhia los ntawm Adafruit.

Tom qab ntawd peb teeb tus pin D10 rau OUTPUT, yog, thiab tsuas yog tias, koj tus qauv SD tus CS tus pin tsis yog D10. Tam sim ntawd tom qab, se teeb tsa CS ntawm SD module ntawm lub nti Xaiv tus pin.

Peb khiav cov haujlwm readGPS () uas suav nrog cleanGPS ().

Tam sim no nws yog lub sijhawm los sau qee yam hauv cov ntawv! Yog tias cov ntaub ntawv twb tau nyob hauv daim npav Sd, ntxiv daim ntawv teev sijhawm rau lawv. Txoj hauv kev no peb tsis tas yuav taug qab cov ntu lossis lwv cov ntaub ntawv txhua lub sijhawm. Nrog lub sijhawm sau sau ua ntu zus teeb tsa, peb paub tseeb tias tsuas yog ntxiv kev sib cais hauv cov ntaub ntawv ib zaug ib zaug.

NCO TSEG: Lub tsev qiv ntawv SD zoo nkauj heev txog kev qhib thiab kaw cov ntawv txhua lub sijhawm! Khaws nws hauv siab thiab kaw nws txhua lub sijhawm! Txhawm rau kawm paub txog lub tsev qiv ntawv ua raws qhov txuas no.

Ok, peb txhua tus tau teeb tsa kom tau txais lub hauv paus ntawm cov kwj-thiab-cav ib feem ntawm daim duab.

void teeb tsa () {

Serial.begin (115200); GPS.begin (9600); // Xa cov lus txib mus rau GPS module GPS.sendCommand ("$ PGCMD, 33, 0*6D"); GPS.sendCommand (PMTK_SET_NMEA_OUTPUT_RMCGGA); GPS.sendCommand (PMTK_SET_NMEA_UPDATE_1HZ); ncua (1000); // tsuas yog tias koj tus qauv SD tus CS tus pin tsis nyob ntawm tus pin D10

pinMode (10, NTAWV);

SD.begin (chipSelect); readGPS (); yog (SD.exists ("NMEA.txt")) {mySensorData = SD.open ("NMEA.txt", FILE_WRITE); mySensorData.println (""); mySensorData.print ("***"); mySensorData.print (GPS.day); mySensorData.print ("."); mySensorData.print (GPS.month); mySensorData.print ("."); mySensorData.print (GPS.year); mySensorData.print (" -"); mySensorData.print (GPS.hour); mySensorData.print (":"); mySensorData.print (GPS.minute); mySensorData.print (":"); mySensorData.print (GPS.seconds); mySensorData.println ("***"); mySensorData.close (); } yog (SD.exists ("GPSData.txt")) {mySensorData = SD.open ("GPSData.txt", FILE_WRITE); mySensorData.println (""); mySensorData.println (""); mySensorData.print ("***"); mySensorData.print (GPS.day); mySensorData.print ("."); mySensorData.print (GPS.month); mySensorData.print ("."); mySensorData.print (GPS.year); mySensorData.print (" -"); mySensorData.print (GPS.hour); mySensorData.print (":"); mySensorData.print (GPS.minute); mySensorData.print (":"); mySensorData.print (GPS.seconds); mySensorData.println ("***"); mySensorData.close (); }}

Tam sim no peb tau txais qhov tseem ceeb ntawm daim duab.

Nws yog super yooj yim, tseeb.

Peb yuav mus nyeem GPS kwj nrog readGPS () ua haujlwm, dua li peb tswj yog tias peb muaj kev txhim kho sib npaug rau 1, t lub kaus mom txhais tau tias peb txuas nrog lub hnub qub e. Yog tias peb tau txais nws, peb yuav sau peb cov ntaub ntawv hauv cov ntawv. Hauv thawj cov ntaub ntawv "NMEA.txt", peb sau tsuas yog cov kab lus nyoos. Hauv daim ntawv thib ob, "GPDData.txt", peb ntxiv cov kev tswj hwm (hloov pauv nrog cov haujlwm peb pom ua ntej) thiab qhov siab. Cov ntaub ntawv no txaus los ua ke.kml cov ntaub ntawv los tsim txoj hauv kev hauv Google Ntiaj Teb. Nco ntsoov tias peb kaw cov ntaub ntawv txhua lub sijhawm peb qhib nws los sau qee yam!

void voj () {

readGPS (); // Txaus siab rau yog tias tus tswj hwm lub laij lej ha segnale. Yog li, cov txheej txheem nrog kev txheeb xyuas cov ntaub ntawv. yog (GPS.fix == 1) {// Tsuas yog khaws cov ntaub ntawv yog tias peb muaj kho mySensorData = SD.open ("NMEA.txt", FILE_WRITE); // Apre il file per le frasi NMEA grezze mySensorData.println (NMEA1); // Scrive prima NMEA sul file mySensorData.println (NMEA2); // Scrive seconda NMEA sul file mySensorData.close (); // Chiv file !!

mySensorData = SD.open ("GPSData.txt", FILE_WRITE);

// Converte e scrive la longitudine convLong (); mySensorData.print (deg, 4); // Scrive le ua haujlwm hauv cov ntaub ntawv gradi sul mySensorData.print (","); // Scrive una virgola per separare i dati Serial.print (deg); Serial.print (","); // Converte e scrive la latitudine convLati (); mySensorData.print (deg, 4); // Scrive le ua haujlwm hauv cov ntaub ntawv gradi sul mySensorData.print (","); // Scrive una virgola per separare i dati Serial.print (deg); Serial.print (","); // Scrive l'altitudine mySensorData.print (GPS.altitude); mySensorData.print (""); Serial.println (GPS.altitude); mySensorData.close (); }}

Tam sim no uas peb tau ua tiav txhua yam, koj tuaj yeem xa cov duab kos, tsim lub cuab yeej thiab txaus siab rau nws!

Nco ntsoov tias koj yuav tsum tau siv nws nrog GPS borad ntsib lub ntuj txhawm rau txhawm rau txhim kho = 1, lossis koj tuaj yeem ntsaws lub kav hlau txais xov sab nraud rau nws.

Tsis tas li, nco ntsoov tias yog tias muaj kev kho, lub teeb liab ntsais ntshis txhua 15 vib nas this, yog tias koj tsis ua sai dua (ib zaug txhua 2-3 vib nas this).

Yog tias koj xav kawm qee yam ntxiv txog NMEA kab lus, tsuas yog ua raws cov kauj ruam tom ntej ntawm phau ntawv qhia no.

Kauj Ruam 3: Kab lus NMEA thiab cov ntaub ntawv.kml

Cov cuab yeej thiab kos duab tau ua tiav, lawv ua haujlwm tau zoo. Nco ntsoov tias kom tau txais kev txhim kho (kom muaj kev sib txuas nrog lub hnub qub) qhov kev tawg yuav tsum ntsib lub ntuj.

Lub teeb liab me me ntsais muag txhua 15 feeb thaum koj tau kho

Yog tias koj xav nkag siab zoo dua NMEA kab lus, koj tuaj yeem nyeem ntxiv.

Hauv daim duab peb siv tsuas yog ob kab lus, GGA thiab RMC. Lawv tsuas yog ob peb kab lus uas GPS module tau tshaj tawm.

Cia peb pom dab tsi hauv cov hlua:

$ GPRMC, 123519, A, 4807.038, N, 01131.000, E, 022.4, 084.4, 230394, 003.1, W*6A

RMC = Pom zoo kab lus tsawg kawg C 123519 = Txhim kho ntawm 12:35:19 UTC A = Status A = active lossis V = Void 4807.038, N = Latitude 48 deg 07.038 'N 01131.000, E = Longitude 11 deg 31.000' E 022.4 = Ceev hla hauv av hauv pob qhov rooj 084.4 = Khiav lub kaum sab xis hauv qhov tseeb 230394 = Hnub tim - 23rd ntawm Lub Peb Hlis 1994 003.1, W = Sib Nqus Sib Txawv *6A = Cov ntaub ntawv txheeb xyuas, ib txwm pib nrog *

$ GPGGA, 123519, 4807.038, N, 01131.000, E, 1, 08, 0.9, 545.4, M, 46.9, M,, *47

GGA Cov Txheej Txheem Thoob Ntiaj Teb Txhim Kho Cov Ntaub Ntawv 123519 Txhim Kho ntawm 12:35:19 UTC 4807.038, N Latitude 48 deg 07.038 'N 01131.000, E Longitude 11 deg 31.000' E 1 Kho qhov zoo: 0 = tsis raug; 1 = GPS kho (SPS); 2 = DGPS kho; 3 = PPS kho; 4 = Lub Sijhawm Kinematic; 5 = Ntab RTK; 6 = kwv yees (suav tuag) (2.3 qhov tshwj xeeb); 7 = Phau ntawv qhia hom; 8 = Simulation hom; 08 Tus naj npawb ntawm lub hnub qub raug taug qab 0.9 Kab rov tav ntawm txoj haujlwm 545.4, M Altitude, Meters, siab dua qib hiav txwv 46.9, M Qhov siab ntawm geoid (txhais tau tias qib hiav txwv) saum WGS84 ellipsoid (khoob qhov chaw) lub sijhawm hauv vib nas this txij li DGPS hloov tshiab kawg (thaj chaw khoob)) DGPS chaw nres tsheb tus lej ID *47 cov ntaub ntawv txheeb xyuas, ib txwm pib nrog *

Raws li koj tuaj yeem pom, muaj cov ntaub ntawv ntau ntxiv uas koj xav tau nyob ntawd. Siv Adafruit lub tsev qiv ntawv, koj tuaj yeem hu lawv qee yam, xws li GPS.latitude lossis GPS.lat (latitude thiab lat hemisphere), lossis GPS.day/month/year/hour/minute/seconds/milliseconds… Ua tibzoo saib Adafruit lub vev xaib kom paub qee yam ntxiv. Tsis yog qhov tseeb, tab sis ua raws qee cov lus qhia hauv GPS cov qauv qhia, koj tuaj yeem pom qhov koj xav tau.

Peb tuaj yeem ua dab tsi nrog cov ntawv peb tau txais? Yooj yim: sau cov ntawv kml los qhia txoj hauv kev hauv Google Ntiaj Teb. Txhawm rau ua nws, tsuas yog luam/dhau los cov cai koj yuav pom hauv qab no txuas (hauv kab lus Kab lus), muab koj cov kev tswj hwm los ntawm GPDData.txt cov ntawv ntawm cov cim npe, khaws cov ntawv nrog.kml txuas ntxiv thiab thauj nws mus Google ntiaj teb.

NCO TSEG: Cov lus.kml markup yog ib qho yooj yim, yog tias koj twb paub tias hom lus cim dab tsi, khaws koj lub sijhawm los nyeem qhov txuas yav dhau los thiab cov ntaub ntawv sab hauv, nws yog qhov txaus nyiam!

Siv kml yog txhua yam txog kev paub nws cov cim npe thiab cov lus sib cav. Kuv pom tsuas yog phau ntawv qhia los ntawm Google, ib qho uas kuv txuas ua ntej thiab qhov tseem ceeb yog txhawm rau txheeb xyuas cov qauv ntawm cov cim npe thiab hu nws nrog # kos npe thaum nws txog lub sijhawm sau cov haujlwm.

Cov ntaub ntawv kuv tau ntxiv hauv ntu no yog.kml uas koj tsuas tuaj yeem muab tshuaj txhuam koj cov ntawv tso ua ke. Nco ntsoov muab tshuaj txhuam nrog cov syntax no: longitude, latitude, altitude

Pom zoo: