Urob si sám GPS sledovač založený na GY-NEO6M je jednoduchý. Stručný popis Arduino GPS trackeru Okno nastavení Hatire Arduino

Po niekoľkých experimentoch s Arduinom som sa rozhodol vyrobiť jednoduchý a nie veľmi drahý GPS tracker so súradnicami odosielanými cez GPRS na server.
Použité Arduino Mega 2560 ( Arduino Uno), SIM900 - GSM/GPRS modul (na odosielanie informácií na server), GPS prijímač SKM53 GPS.

Všetko bolo zakúpené na ebay.com, spolu asi 1500 rubľov (asi 500 rubľov za arduino, o niečo menej za modul GSM, trochu viac za GPS).

GPS prijímač

Najprv musíte pochopiť, ako pracovať s GPS. Vybraný modul je jedným z najlacnejších a najjednoduchších. Výrobca však sľubuje batériu na šetrenie satelitných dát. Studený štart by mal podľa datasheetu trvať 36 sekúnd, avšak v mojich podmienkach (10. poschodie od parapetu, žiadne budovy v blízkosti) to trvalo až 20 minút. Ďalší štart je však už o 2 minúty.

Dôležitým parametrom zariadení pripojených k Arduinu je spotreba energie. Ak preťažíte konvertor Arduino, môže sa vypáliť. Pre použitý prijímač je maximálna spotreba energie 45 mA @ 3,3 V. Prečo by mala špecifikácia uvádzať silu prúdu pri inom napätí ako je požadované (5V) je mi záhadou. Arduino prevodník však vydrží 45 mA.

Pripojenie
GPS sa neovláda, aj keď má RX pin. Za akým účelom nie je známe. Hlavná vec, ktorú môžete s týmto prijímačom urobiť, je čítať dáta cez protokol NMEA z TX pinu. Úrovne - 5V, len pre Arduino, rýchlosť - 9600 baudov. Pripojím VIN k VCC arduina, GND k GND, TX k RX zodpovedajúceho seriálu. Údaje som načítal najskôr ručne, potom pomocou knižnice TinyGPS. Prekvapivo je všetko čitateľné. Po prechode na Uno som musel použiť SoftwareSerial a potom začali problémy – niektoré znaky správ sa stratili. Toto nie je veľmi kritické, pretože TinyGPS odreže neplatné správy, ale je to dosť nepríjemné: na frekvenciu 1 Hz môžete zabudnúť.

Rýchla poznámka o SoftwareSerial: Na Uno nie sú žiadne hardvérové ​​porty (okrem toho, ktorý je pripojený k USB Serial), takže musíte použiť softvér. Môže teda prijímať dáta len na pine, na ktorom doska podporuje prerušenia. V prípade Uno sú to 2 a 3. Navyše iba jeden takýto port môže prijímať dáta súčasne.

Takto vyzerá „testovací stánok“.

GSM prijímač/vysielač


Teraz prichádza tá zaujímavejšia časť. GSM modul - SIM900. Podporuje GSM a GPRS. Podporované nie sú ani EDGE a najmä 3G. Na prenos súradnicových údajov je to asi dobré – pri prepínaní medzi režimami nebudú žiadne oneskorenia ani problémy, navyše GPRS je teraz dostupné takmer všade. Pre niektoré zložitejšie aplikácie to však nemusí stačiť.

Pripojenie
Modul je tiež riadený cez sériový port, s rovnakou úrovňou - 5V. A tu budeme potrebovať RX aj TX. Modul je štít, to znamená, že je nainštalovaný na Arduino. Navyše je kompatibilný s mega aj uno. Predvolená rýchlosť je 115200.

Montujeme ho na Mega a tu nás čaká prvé nepríjemné prekvapenie: TX pin modulu padá na 7. pin Mega. Prerušenia nie sú dostupné na 7. kolíku mega, čo znamená, že budete musieť pripojiť 7. kolík, povedzme, k šiestemu kolíku, na ktorom sú možné prerušenia. Takto stratíme jeden Arduino pin. No, pre mega to nie je veľmi desivé - koniec koncov, kolíkov je dosť. Ale pre Uno je to už zložitejšie (pripomínam, že existujú iba 2 piny, ktoré podporujú prerušenia - 2 a 3). Ako riešenie tohto problému môžeme navrhnúť neinštalovať modul na Arduino, ale pripojiť ho pomocou vodičov. Potom môžete použiť Serial1.

Po pripojení sa pokúsime „hovoriť“ s modulom (nezabudnite ho zapnúť). Vyberáme rýchlosť portu - 115200 a je dobré, ak všetky vstavané sériové porty (4 na mega, 1 na uno) a všetky softvérové ​​porty fungujú rovnakou rýchlosťou. Týmto spôsobom môžete dosiahnuť stabilnejší prenos dát. Neviem prečo, aj keď tuším.

Takže píšeme primitívny kód na preposielanie údajov medzi sériovými portami, odosielame atz a prijímame ticho ako odpoveď. Čo sa stalo? Rozlišujú sa malé a veľké písmená. ATZ, sme v poriadku. Hurá, modul nás počuje. Mali by ste nám zavolať zo zvedavosti? ATD +7499... Zvoní telefón pevnej linky, z arduina ide dym, notebook sa vypína. Arduino prevodník vyhorel. Bol to zlý nápad napájať ho 19 voltami, aj keď sa píše, že môže fungovať od 6 do 20 V, odporúča sa 7-12V. Datasheet ku GSM modulu nikde nehovorí o spotrebe energie pri záťaži. No, Mega ide do skladu náhradných dielov. So zatajeným dychom zapínam notebook, ktorý dostal +19V cez +5V linku z USB. Funguje a ani USB nevyhorelo. Ďakujeme spoločnosti Lenovo, že nás chráni.

Po vyhorení meniča som hľadal aktuálnu spotrebu. Takže vrchol - 2A, typický - 0,5A. To je jednoznačne nad možnosti Arduino prevodníka. Vyžaduje samostatné jedlo.

Programovanie
Modul poskytuje rozsiahle možnosti prenosu dát. Počnúc hlasovými hovormi a SMS a končiac samotným GPRS. Navyše, pre posledné je možné vykonať HTTP požiadavka pomocou AT príkazov. Budete musieť poslať niekoľko, ale stojí to za to: v skutočnosti nechcete vytvárať žiadosť ručne. Otvorenie kanála prenosu dát cez GPRS má niekoľko nuancií - pamätáte si klasické AT+CGDCONT=1, „IP“, „apn“? Takže tu je potrebné to isté, ale trochu prefíkanejšie.

Ak chcete získať stránku na konkrétnej adrese URL, musíte odoslať nasledujúce príkazy:
AT+SAPBR=1,1 //Otvorený operátor (Carrier) AT+SAPBR=3,1,"CONTYPE","GPRS" //typ pripojenia - GPRS AT+SAPBR=3,1,"APN","internet" //APN, pre Megafon - internet AT+HTTPINIT //Inicializácia HTTP AT+HTTPPARA="CID",1 //ID operátora na použitie. AT+HTTPPARA="URL","http://www.example.com/GpsTracking/record.php?Lat=%ld&Lng=%ld" //Skutočná adresa URL po sprintf so súradnicami AT+HTTPACTION=0 // Požiadajte o údaje pomocou metódy GET //čakajte na odpoveď AT+HTTPTERM //zastavte HTTP

V dôsledku toho, ak existuje spojenie, dostaneme odpoveď zo servera. To znamená, že už vieme, ako odoslať súradnicové údaje, ak ich server prijme cez GET.

Výživa
Keďže napájanie GSM modulu z Arduino prevodníka, ako som zistil, je zlý nápad, bolo rozhodnuté kúpiť na tom istom ebayi prevodník 12v->5v, 3A. Modulu sa však nepáči 5V napájanie. Poďme na hack: pripojte 5V na pin, z ktorého ide 5V z arduina. Potom vstavaný prevodník modulu (oveľa výkonnejší ako prevodník Arduino, MIC 29302WU) urobí z 5V to, čo modul potrebuje.

Server

Server napísal primitívny - ukladanie súradníc a kreslenie na Yandex.maps. V budúcnosti je možné pridať rôzne funkcie vrátane podpory mnohých používateľov, stavu „zastrešené/nestrážené“, stavu systémov vozidla (zapaľovanie, svetlomety atď.), prípadne aj ovládanie systémov vozidla. Samozrejme, s vhodnou podporou pre tracker, ktorý sa plynule zmení na plnohodnotný poplašný systém.

Skúšky v teréne

Takto vyzerá zostavené zariadenie bez puzdra:

Po nainštalovaní konvertora napájania a jeho umiestnení do puzdra z mŕtveho modemu DSL vyzerá systém takto:

Spájkoval som drôty a odstránil niekoľko kontaktov z blokov Arduino. Vyzerajú takto:

Pripojil som 12V do auta, jazdil som po Moskve a dostal som trať:


Traťové body sú od seba dosť vzdialené. Dôvodom je, že odosielanie údajov cez GPRS trvá pomerne dlho a počas tejto doby sa súradnice nenačítajú. Toto je jednoznačne chyba programovania. Ošetruje sa po prvé okamžitým odoslaním paketu súradníc v priebehu času a po druhé asynchrónnou prácou s modulom GPRS.

Čas vyhľadávania satelitov na sedadle spolujazdca v aute je niekoľko minút.

závery

Vytvorenie GPS trackera na Arduino vlastnými rukami je možné, aj keď to nie je triviálna úloha. Hlavnou otázkou teraz je, ako schovať zariadenie v aute, aby nebolo vystavené škodlivým faktorom (voda, teplota), nebolo pokryté kovom (GPS a GPRS budú tienené) a nebolo zvlášť nápadné. Zatiaľ len leží v kabíne a pripája sa do zásuvky zapaľovača cigariet.

Musíme tiež opraviť kód pre hladšiu stopu, hoci sledovač už vykonáva hlavnú úlohu.

Použité zariadenia

  • Arduino Mega 2560
  • Arduino Uno
  • GPS SkyLab SKM53
  • GSM/GPRS štít založený na SIM900
  • Prevodník DC-DC 12v->5v 3A

Osobné GPS vysielače

Pokrok dnes napreduje takým tempom, že zariadenia, ktoré boli predtým objemné, drahé a vysoko špecializované, rýchlo strácajú na veľkosti, hmotnosti a cene, no získavajú mnoho nových funkcií.

Takto sa zariadenia založené na technológii GPS dostali k vreckovým prístrojom a pevne sa tam usadili, čím poskytli ľuďom nové príležitosti. Zvlášť stojí za to vyzdvihnúť jednotlivé GPS vysielače.

V podstate ide o rovnaké sledovače GPS, ktoré sú určené len na použitie nie vo vozidle, ale pre osobu v každodennom živote.

V závislosti od modelu niekoľko rôzne zariadenia. Vo svojej najjednoduchšej podobe je to jednoducho malá krabička bez displeja, ktorá umožňuje ovládať pohyby detí, zvierat alebo niektorých iných predmetov, na ktorom je upevnený.

Vo vnútri sa nachádza GPS modul, ktorý určuje súradnice na zemi, modul GSM/GPRS, ktorý prenáša informácie a prijíma riadiace príkazy, ako aj zdroj energie, ktorý zabezpečuje autonómnu prevádzku na dlhú dobu.

Funkčnosť GPS vysielačov

Ako sa funkčnosť zvyšuje, objavujú sa nasledujúce možnosti zariadenia:


Možnosti pre GPS vysielače

V závislosti od konfigurácie sa kryty vysielača môžu výrazne líšiť. Rôzne modely mať exekúcie vo formulári mobilné telefóny, klasické navigátory, či dokonca náramkové hodinky.

Farebný dizajn špeciálnych verzií a užitočné doplnky umožňujú deťom zaobchádzať s týmito zariadeniami nie ako s „rodičovskými špiónmi“, ale ako s módnymi a praktickými vychytávkami.

Ako výhodu stojí za zmienku fakt, že mnohé verzie zariadenia sa zaobídu aj bez poplatok za odber za služby špecializovaných operátorov a všetky potrebné informácie sú klientovi zasielané priamo cez internet alebo SMS správy, čo umožňuje výrazné úspory na údržbe takýchto zariadení.

Články o GPS sledovačoch

V tomto článku ukážem, ako používať modul gsm s arduino pomocou sim800L ako príkladu. Rovnaké pokyny sú celkom vhodné na použitie akýchkoľvek iných modulov gsm, napríklad sim900 atď., Pretože všetky moduly fungujú približne rovnakým spôsobom - ide o výmenu AT príkazov cez port.

Využitie modulu s arduinom ukážem na príklade SMS relé, ktorým je možné zariadenie ovládať na diaľku pomocou SMS príkazov. Toto je možné použiť v spojení s autoalarmmi atď.

Modul je pripojený k Arduinu cez rozhranie UART softvérového sériového portu fungujúceho na 2 a 3 digitálnych pinoch Arduino nano.

Práca s Arduino s modulmi GSM

Na napájanie modulu je potrebné napätie v rozsahu od 3,6V do 4,2V, to znamená, že budete musieť použiť dodatočný stabilizátor napätia, keďže Arduino má nainštalovaný 3,3V stabilizátor, ktorý nie je vhodný na napájanie modulu. , druhým dôvodom na inštaláciu dodatočného stabilizátora je, že modul GSM je vážne zaťažený, pretože má slabý vysielač, ktorý poskytuje stabilné pripojenie s mobilnou stanicou. Napájanie pre Arduino nano sa dodáva na pin VIN - ide o stabilizátor zabudovaný do Arduina, ktorý zabezpečuje, že modul pracuje v širokom rozsahu napätia (6-10V). Reléový modul sa pripája podľa zadaného textu programu na pin 10 Arduino nano a dá sa jednoducho zmeniť na akýkoľvek iný, ktorý funguje ako digitálny výstup.

Funguje to takto: nainštalujte SIM kartu do GSM modulu, zapnite napájanie a pošlite SMS s textom „1“ na číslo SIM karty aby sme zapli naše relé, aby sme ho vypli, pošleme SMS s textom „0“.

#include
SoftwareSerial gprsSerial(2, 3); // nastavenie pinov 2 a 3 pre softvérový port
int LedPin = 10; // pre relé

void setup()
{
gprsSerial.begin(4800);
pinMode(LedPin, OUTPUT);

// nastavenie príjmu správ

gprsSerial.print("AT+CMGF=1\r");
gprsSerial.print("AT+IFC=1, 1\r");
oneskorenie(500);
gprsSerial.print("AT+CPBS=\"SM\"\r");
oneskorenie(500); // oneskorenie spracovania príkazu
gprsSerial.print("AT+CNMI=1,2,2,1,0\r");
oneskorenie(700);
}

String currStr = "";
// ak je tento riadok správou, potom premenná nadobudne hodnotu True
boolean isStringMessage = false;

void loop()
{
if (!gprsSerial.available())
návrat;

char currSymb = gprsSerial.read();
if ('\r' == currSymb) (
if (isStringMessage) (
// ak je aktuálny riadok správa, potom...
if (!currStr.compareTo("1")) (
digitalWrite(LedPin, HIGH);
) else if (!currStr.compareTo("0")) (
digitalWrite(LedPin, LOW);
}
isStringMessage = false;
) inak (
if (currStr.startsWith("+CMT")) (
// ak aktuálny riadok začína „+CMT“, potom nasledujúca správa
isStringMessage = true;
}
}
currStr = "";
) else if ('\n' != currSymb) (
currStr += String(currSymb);
}
}

Video verzia článku:

Tagy: #Arduino, #SIM800L

Vaša známka:

Produkty použité v tomto článku:

← GPS záznamník na arduino | Ovládanie relé cez COM port →

GSM skener na RTL-SDR

| Domov| angličtina | Vývoj | FAQ |

Hlavné vlastnosti skenera

GSM skener skenuje kanály GSM downlink a zobrazuje informácie o sile signálu a vlastníctve kanála jedného z troch hlavných operátorov celulárna komunikácia MTS, Beeline a Megafon. Na základe výsledkov svojej práce vám skener umožňuje uložiť zoznam identifikátorov základňové stanice MCC, MNC, LAC a CI pre všetky skenované kanály.
Na vyhodnotenie úrovne GSM signálu a porovnanie kvality signálu je možné použiť GSM skener rôznych operátorov, hodnotenia rádiového pokrytia, pri rozhodovaní o inštalácii zosilňovačov mobilného signálu a úprave ich parametrov, na vzdelávacie účely a pod.
Skener beží pod Windows a využíva jednoduchý a lacný prijímač – RTL-SDR. O RTL-SDR si môžete prečítať na:
RTL-SDR (RTL2832U) a softvérovo definované rozhlasové správy a projekty,
RTL-SDR – OsmoSDR,
RTL-SDR v ruštine.
Parametre RTL-SDR určujú hlavné charakteristiky skenera. Samozrejme, GSM skener nie je náhradou za bežné meracie zariadenie.
Skener je distribuovaný bezplatne, bez akýchkoľvek obmedzení používania.
Aktuálna verzia podporuje pásmo GSM 900 a nepodporuje GSM 1800. Je to dané tým, že prevádzková frekvencia RTL-SDR s tunerom R820T je obmedzená na 1760 MHz. Existuje nádej, že použitie experimentálneho ovládača RTL-SDR umožní prevádzku aspoň v časti rozsahu 1800 MHz.

Spustenie skenera

Najnovšiu verziu skenera si môžete stiahnuť z tohto odkazu. Stačí rozbaliť súbor na vhodné miesto a spustiť gsmscan.exe.
Predchádzajúce verzie skener, odkaz na úložisko so zdrojmi a ďalšie informácie súvisiace s vývojom sú na stránke vývoja.
Aby skener fungoval, je potrebná inštalácia ovládačov RTL-SDR, ak ešte nie sú nainštalované, môžete to pohodlne vykonať pomocou programu Zadig, ktorý popisuje postup inštalácie.

Používanie skenera

Nižšie je pohľad na okno programu skenera:

Vodorovná os zobrazuje číslo GSM kanálu vo forme ARFCN alebo v MHz a zvislá os zobrazuje úroveň signálu v dBm. Výška čiary ukazuje silu signálu.

GSM modul NEOWAY M590 komunikácia s Arduino

Ak boli identifikátory BS úspešne dekódované a zodpovedajú identifikátorom troch hlavných telekomunikačných operátorov, čiary sa vyfarbia zodpovedajúcimi farbami.
Rozbaľovacie zoznamy v hornej časti obrazovky vám umožňujú vybrať rozsah prijímača SDR, ak je pripojených niekoľko GSM práca 900 alebo GSM 1800 a horizontálne osové jednotky ARFCN alebo MHz.
Tlačidlá umožňujú uložiť správu o činnosti skenera vo forme zoznamu dekódovaných základňových staníc, vymazať výsledky dekódovania BS a získať informácie o programe.

Princípy a vlastnosti práce.

Počas prevádzky program skenuje prevádzkový frekvenčný rozsah s krokom 2,0 MHz (10 GSM kanálov) a digitalizuje signál so vzorkovacou frekvenciou 2,4 MHz. Proces skenovania pozostáva z rýchleho prechodu celým rozsahom na meranie sily signálu a pomalého prechodu na dekódovanie identifikátorov BS.

Jeden krok dekódovania sa vykoná po prejdení celého rozsahu na meranie výkonu. V rozsahu GSM 900 sa teda úroveň signálu aktualizuje približne každé 2 s a úplný dekódovací prechod trvá približne 1 minútu.
V dôsledku zlej kvality signálu prijímaného z RTL-SDR nie je pravdepodobnosť správneho dekódovania systémových informácií (SI) riadiaceho kanála BS vysielania (BCCH) vysoká. Kolísanie úrovne signálu v dôsledku viaccestného šírenia tiež znižuje pravdepodobnosť dekódovania systémových informácií. Z týchto dôvodov je na získanie identifikátorov BS potrebné, aby skener nazbieral informácie počas približne 10 minút. Ale ani v tomto prípade nie všetky kanály poskytujú toto miesto dostatočná úroveň a kvalita signálu na dekódovanie aj tým najideálnejším prijímačom. Okrem toho nie všetky kanály GSM sa používajú na prepínanie GSM štandard, ako je možné vidieť na obrázku vyššie, kanály 975 - 1000 sú obsadené Megafonom, aby na nich mohol pracovať štandard UMTS.
Počas prevádzky skener pridáva systémové informácie o nových dekódovaných kanáloch do všeobecného poľa informácií o kanáloch. Ale informácie o predtým dekódovaných kanáloch sa nevymažú, keď sa systémové informácie v tomto kroku nedekódujú, a zostanú v poli. Ak chcete tieto informácie vymazať, použite tlačidlo na vymazanie výsledkov dekódovania BS.
Keď kliknete na tlačidlo uložiť správu, nazhromaždené výsledky sa uložia do textový súbor s názvom tvoreným názvom programu, dátumom a časom uloženia údajov. Nižšie je uvedený príklad časti súboru správy:
Skener je navrhnutý pre prácu pod Windows 7, 8.1 a 10. Práca bola testovaná s tromi kópiami RTL-SDR s tunerom R820T, iné typy tunerov neboli testované.
Pre prácu v systéme Windows XP bola zostavená špeciálna verzia programu, ktorá je niekoľkonásobne pomalšia ako štandardná verzia.

rozvoj.

Program skenera sa dodáva tak, ako je, bez akýchkoľvek záruk alebo zodpovednosti. Ak máte rozumné nápady, ako rozšíriť funkcionalitu alebo zlepšiť výkon skenera, sme pripravení diskutovať o možnosti ich implementácie.
Môžete sa podieľať na vývoji skenera, ak to chcete urobiť, navštívte stránku vývoja.
Plánuje sa ďalší vývoj GSM skenera, prípadne aj s vašou účasťou.

Po niekoľkých experimentoch s Arduinom som sa rozhodol vyrobiť jednoduchý a nie veľmi drahý GPS tracker so súradnicami odosielanými cez GPRS na server.
Použité Arduino Mega 2560 (Arduino Uno), SIM900 - GSM/GPRS modul (pre odosielanie informácií na server), GPS prijímač SKM53 GPS.

Všetko bolo zakúpené na ebay.com, spolu asi 1500 rubľov (asi 500 rubľov za arduino, o niečo menej za modul GSM, trochu viac za GPS).

GPS prijímač

Najprv musíte pochopiť, ako pracovať s GPS. Vybraný modul je jedným z najlacnejších a najjednoduchších. Výrobca však sľubuje batériu na šetrenie satelitných dát. Studený štart by mal podľa datasheetu trvať 36 sekúnd, avšak v mojich podmienkach (10. poschodie od parapetu, žiadne budovy v blízkosti) to trvalo až 20 minút. Ďalší štart je však už o 2 minúty.

Dôležitým parametrom zariadení pripojených k Arduinu je spotreba energie. Ak preťažíte konvertor Arduino, môže sa vypáliť. Pre použitý prijímač je maximálna spotreba energie 45 mA @ 3,3 V. Prečo by mala špecifikácia uvádzať silu prúdu pri inom napätí ako je požadované (5V) je mi záhadou. Arduino prevodník však vydrží 45 mA.

Pripojenie

GPS sa neovláda, aj keď má RX pin. Za akým účelom nie je známe. Hlavná vec, ktorú môžete s týmto prijímačom urobiť, je čítať dáta cez protokol NMEA z TX pinu. Úrovne - 5V, len pre Arduino, rýchlosť - 9600 baudov. Pripojím VIN k VCC arduina, GND k GND, TX k RX zodpovedajúceho seriálu. Údaje som načítal najskôr ručne, potom pomocou knižnice TinyGPS. Prekvapivo je všetko čitateľné. Po prechode na Uno som musel použiť SoftwareSerial a potom začali problémy – niektoré znaky správ sa stratili. Toto nie je veľmi kritické, pretože TinyGPS odreže neplatné správy, ale je to dosť nepríjemné: na frekvenciu 1 Hz môžete zabudnúť.

Rýchla poznámka o SoftwareSerial: Na Uno nie sú žiadne hardvérové ​​porty, takže musíte použiť softvérový. Môže teda prijímať dáta len na pine, na ktorom doska podporuje prerušenia. V prípade Uno sú to 2 a 3. Navyše iba jeden takýto port môže prijímať dáta súčasne.

Takto vyzerá „testovací stánok“.


GSM prijímač/vysielač


Teraz prichádza tá zaujímavejšia časť. GSM modul - SIM900. Podporuje GSM a GPRS. Podporované nie sú ani EDGE a najmä 3G. Na prenos súradnicových údajov je to asi dobré – pri prepínaní medzi režimami nebudú žiadne oneskorenia ani problémy, navyše GPRS je teraz dostupné takmer všade. Pre niektoré zložitejšie aplikácie to však nemusí stačiť.

Pripojenie

Modul je tiež riadený cez sériový port, s rovnakou úrovňou - 5V. A tu budeme potrebovať RX aj TX. Modul je štít, to znamená, že je nainštalovaný na Arduino. Navyše je kompatibilný s mega aj uno. Predvolená rýchlosť je 115200.

Montujeme ho na Mega a tu nás čaká prvé nepríjemné prekvapenie: TX pin modulu padá na 7. pin Mega. Prerušenia nie sú dostupné na 7. kolíku mega, čo znamená, že budete musieť pripojiť 7. kolík, povedzme, k šiestemu kolíku, na ktorom sú možné prerušenia. Takto stratíme jeden Arduino pin. No, pre mega to nie je veľmi desivé - koniec koncov, kolíkov je dosť. Ale pre Uno je to už zložitejšie (pripomínam, že existujú iba 2 piny, ktoré podporujú prerušenia - 2 a 3). Ako riešenie tohto problému môžeme navrhnúť neinštalovať modul na Arduino, ale pripojiť ho pomocou vodičov. Potom môžete použiť Serial1.

Po pripojení sa pokúsime „hovoriť“ s modulom (nezabudnite ho zapnúť). Vyberáme rýchlosť portu - 115200 a je dobré, ak všetky vstavané sériové porty (4 na mega, 1 na uno) a všetky softvérové ​​porty fungujú rovnakou rýchlosťou. Týmto spôsobom môžete dosiahnuť stabilnejší prenos dát. Neviem prečo, aj keď tuším.

Takže píšeme primitívny kód na preposielanie údajov medzi sériovými portami, odosielame atz a prijímame ticho ako odpoveď. Čo sa stalo? Rozlišujú sa malé a veľké písmená. ATZ, sme v poriadku. Hurá, modul nás počuje. Mali by ste nám zavolať zo zvedavosti? ATD +7499... Zvoní telefón pevnej linky, z arduina ide dym, notebook sa vypína. Arduino prevodník vyhorel. Bol to zlý nápad napájať ho 19 voltami, aj keď sa píše, že môže fungovať od 6 do 20 V, odporúča sa 7-12V. Datasheet ku GSM modulu nikde nehovorí o spotrebe energie pri záťaži. No, Mega ide do skladu náhradných dielov. So zatajeným dychom zapínam notebook, ktorý dostal +19V cez +5V linku z USB. Funguje a ani USB nevyhorelo. Ďakujeme spoločnosti Lenovo, že nás chráni.


Po vyhorení meniča som hľadal aktuálnu spotrebu. Takže vrchol - 2A, typický - 0,5A. To je jednoznačne nad možnosti Arduino prevodníka. Vyžaduje samostatné jedlo.

Programovanie

Modul poskytuje rozsiahle možnosti prenosu dát. Počnúc hlasovými hovormi a SMS a končiac samotným GPRS. Okrem toho je možné vykonať požiadavku HTTP pomocou AT príkazov. Budete musieť poslať niekoľko, ale stojí to za to: v skutočnosti nechcete vytvárať žiadosť ručne. Otvorenie kanála prenosu dát cez GPRS má niekoľko nuancií - pamätáte si klasické AT+CGDCONT=1, „IP“, „apn“? Takže tu je potrebné to isté, ale trochu prefíkanejšie.

Ak chcete získať stránku na konkrétnej adrese URL, musíte odoslať nasledujúce príkazy:

AT+SAPBR=1,1 //Otvorený operátor (Carrier) AT+SAPBR=3,1,"CONTYPE","GPRS" //typ pripojenia - GPRS AT+SAPBR=3,1,"APN","internet" //APN, pre Megafon - internet AT+HTTPINIT //Inicializácia HTTP AT+HTTPPARA="CID",1 //ID operátora na použitie. AT+HTTPPARA="URL","http://www.example.com/GpsTracking/record.php?Lat=%ld&Lng=%ld" //Skutočná adresa URL po sprintf so súradnicami AT+HTTPACTION=0 // Požiadajte o údaje pomocou metódy GET //čakajte na odpoveď AT+HTTPTERM //zastavte HTTP

V dôsledku toho, ak existuje spojenie, dostaneme odpoveď zo servera. To znamená, že už vieme, ako odoslať súradnicové údaje, ak ich server prijme cez GET.

Výživa

Keďže napájanie GSM modulu z Arduino prevodníka, ako som zistil, je zlý nápad, bolo rozhodnuté kúpiť na tom istom ebayi prevodník 12v->5v, 3A. Modulu sa však nepáči 5V napájanie. Poďme na hack: pripojte 5V na pin, z ktorého ide 5V z Arduina. Potom vstavaný prevodník modulu (oveľa výkonnejší ako prevodník Arduino, MIC 29302WU) urobí z 5V to, čo modul potrebuje.

Server

Server napísal primitívny - ukladanie súradníc a kreslenie na Yandex.maps. V budúcnosti je možné pridať rôzne funkcie vrátane podpory mnohých používateľov, stavu „zastrešené/nestrážené“, stavu systémov vozidla (zapaľovanie, svetlomety atď.), prípadne aj ovládanie systémov vozidla. Samozrejme, s vhodnou podporou pre tracker, ktorý sa plynule zmení na plnohodnotný poplašný systém.

Skúšky v teréne

Takto vyzerá zostavené zariadenie bez puzdra:


Po nainštalovaní konvertora napájania a jeho umiestnení do puzdra z mŕtveho modemu DSL vyzerá systém takto:

Spájkoval som drôty a odstránil niekoľko kontaktov z blokov Arduino. Vyzerajú takto:

Pripojil som 12V do auta, jazdil som po Moskve a dostal som trať:


Trať sa ukáže ako roztrhaná. Dôvodom je, že odosielanie údajov cez GPRS trvá pomerne dlho a počas tejto doby sa súradnice nenačítajú. Toto je jednoznačne chyba programovania. Ošetruje sa po prvé okamžitým odoslaním paketu súradníc v priebehu času a po druhé asynchrónnou prácou s modulom GPRS.

Schéma projektu:

Ahojte priatelia, nad našimi hlavami nám lieta veľké množstvo rôznych kozmických lodí. Je medzi nimi približne 90 mimoriadne užitočných navigačných satelitov amerického systému GPS, ruského GLONASS, európskeho Galileo a čínskeho BeiDou. A dnes od nich zachytíme signál.

Najprv trocha teórie: Satelitný navigačný systém je sieť kozmických lodí, ktoré lietajú po predtým známych trasách, pričom presne sledujú svoju dráhu a trajektóriu, alebo sa nachádzajú v známom stacionárnom bode na geostacionárnej alebo geosynchrónnej dráhe. Satelity lietajú v priemere vo výške okolo 20-tisíc kilometrov a každý z nich sú ultra presné atómové hodiny, ktoré nepretržite vysielajú svoj čas na celú planétu. aktuálny čas.

Rádiový signál šíriaci sa rýchlosťou svetla dorazí na Zem s oneskorením 60 až 90 milisekúnd, závisí to od vzdialenosti satelitu. Ak poznáte presnú polohu zdroja rádiového signálu podľa časového oneskorenia jeho šírenia, môžete zistiť presnú vzdialenosť k satelitu. A potom pomocou triangulácie vzdialeností k niekoľkým známym objektom môžete zistiť, kde sa vo vesmíre nachádzate.

Predstavte si, že táto modrá guľa je naša planéta. Nad ním lietajú tri satelity vo výške 20-tisíc kilometrov. Pri meraní vzdialenosti k prvému dostanete informáciu, že ste niekde na tomto kruhu - zatiaľ to nie je veľmi informatívne. Signál z druhého satelitu objasní vašu polohu do dvoch priesečníkov bez ohľadu na nadmorskú výšku. Signál z tretieho navigačného satelitu bude indikovať výšku týchto bodov nad povrchom a formálne vyrieši navigačnú rovnicu, čím zníži vašu polohu na dve možné miesta. V skutočnosti má jedna z týchto súradníc neuveriteľné vlastnosti a je vyradená, čím sa problém úplne vyrieši. Signál zo štvrtého satelitu robí to isté - už jednoznačne presne rieši navigačnú rovnicu.

Meranie vzdialeností ku každému nasledujúcemu satelitu zvyšuje presnosť určenia polohy a dnes sa pohybuje od 1 do 3 metrov pri štandardnej viditeľnosti cca 10 navigačných satelitov.

Teóriu sme si utriedili, prejdime k praxi. V súčasnosti sa rôzne navigačné moduly predávajú samostatne. Tie najjednoduchšie a najstaršie podporujú len signály z amerického pozorovacieho systému GPS, v priemere 5-7 satelitov. Pokročilejšie moduly môžu tiež prijímať signály z ruskej konštelácie GLONASS, čím sa zvyšuje celkový počet pozorovaných satelitov v priemere dvojnásobne. V predaji sú aj moduly kombinované s kompasom, slúžia na presnú navigáciu a udržiavanie kurzu.

Na obrazovke môjho telefónu sú viditeľné satelity rôznych navigačných systémov. Kruhy sú GPS, trojuholníky sú GLONASS a hviezdy sú čínske BeiDou. Takže môj telefón podporuje tri rôzne navigačné systémy a kombinovanie signálov z nich zvyšuje presnosť určenia polohy. Teraz je nad mojou hlavou 28 satelitov a signál je dostupný len zo 7. To znamená. môj telefón už vopred vie, kde sa ktorý satelit nachádza. A chýbajúci signál z 21 satelitov znamená, že sú mimo zorného poľa. Navigačný signál je veľmi slabý, od slova VASCHE sa takmer neodráža, blokuje ho terén, budovy, strecha auta - akýkoľvek kov nad hlavou alebo na boku. Dokonca aj sneh padajúci za oknom narúša dobrý príjem.

Na realizáciu projektu budete potrebovať množstvo elektronických modulov: programovateľnú platformu Arduino Nano, OLED obrazovku 128 x 32 bodov (pripája sa cez I2C zbernicu), GPS modul pre pripojenie cez UART, ľubovoľný lítiová batéria s kapacitou nad 200 miliampérov, ochranným nabíjacím modulom pre lítium a zosilňovacím meničom na získanie 5 voltov. Mám tu tri rôzne typy, zvládne každý. Plánoval som tiež použiť farebnú RGB LED na indikáciu stavu, ale v priebehu projektu som od toho upustil.

Pripojíme obrazovku k Arduinu a narazíme na prvý problém. Štandardná knižnica OLED obrazovka zaberá 20 kB, čo je 70 % pamäte mikrokontroléra a nenecháva prakticky žiadne miesto pre program. Predtým som montoval výškomer a čelil som skutočnosti, že každý nový riadok kódu vedie k preplneniu pamäte a mikrokontrolér počas prevádzky zamrzne. Preto využijem oveľa viac svetelná knižnica. Nepracuje s grafikou a zobrazuje len text na OLED obrazovke a zaberá len 1 KB pamäte.

Samostatne pripájam GPS modul k breadboardu a vidím prvé navigačné údaje – signál z vesmíru bol zachytený a spracovaný. Teraz zobrazujem informácie na obrazovke. Trieda! Vidí 4 satelity, teraz 3, a znova 4, už 5! Pre lepší príjem GPS modul visí za oknom na drôte.

Pri vývoji projektu som použil GPS moduly odlišné typy. Jednoduché GPS a kombinované GPS s Glonass. Museli sme vykonať sériu mnohohodinových experimentov, aby sme skontrolovali stabilitu prevádzky. Ukázalo sa, že moduly fungujú, ale s softvérové ​​knižnice Musel som makať. Vyskúšali niekoľko rôznych knižníc a TinyGPS+ bol jediný, ktorý fungoval so všetkými modulmi GPS naraz.

Vo všeobecnosti knižnica analyzuje protokol NMEA; jednoducho analyzuje údaje, ktoré modul GPS vypľuje dvakrát za sekundu. Takto vyzerá nespracovaný dátový tok.

Výsledkom je, že môj firmvér umožňuje pripojiť takmer akýkoľvek modul GPS cez UART s protokolom prenosu údajov NMEA. V skutočnosti ide o väčšinu modulov, ktoré majú kolíky RX a TX. Odporúčam zobrať GPS modul od Glonass, vidí viac satelitov, takže jeho presnosť je vyššia. Odkazy na všetky komponenty a moduly sú v popise tohto videa.

Doska na krájanie ukázala plnú funkčnosť systému, teraz môžete všetko zostaviť hardvérovo. Ako napájanie použijem lítiovú batériu, ktorá bude pripojená k ochrannej doske s nabíjaním. Na tejto doske spodný odpor R3 nastavuje nabíjací prúd batérie, predvolená hodnota je 1 ampér, to je veľa pre malé batérie, takže je potrebné vymeniť odpor. Na obrazovke vidíte štítok s hodnotami odporov pre rôzne nabíjacie prúdy. Ak má vaša batéria kapacitu 500 miliampér hodín, potom musíte nastaviť nabíjací prúd nie vyšší ako táto hodnota. Tie. môžete nastaviť 200 alebo 300 miliampérov a nepresiahnuť 500.

Ďalej je potrebné zvýšiť napätie; obrazovka a modul GPS sú napájané 5 voltmi. Urobíme to pomocou zosilňovača napätia. Tie sa zvyčajne inštalujú do energetických bánk, aby zvýšili napätie z 3,7 na 5 voltov. Budem používať malý zelený modul, môže mať výstup až 300 mA a je viac ako dosť pre tento projekt.

Firmvér som aktualizoval, teraz pri načítaní hlavnej obrazovky zobrazuje aktuálny presný čas zo satelitov, počet viditeľných satelitov a aktuálnu rýchlosť trackera, skáče, pretože je chyba v určení polohy. Keď stlačíte tlačidlo, obrazovka sa zmení. Zobrazuje sa tu aktuálna hodnota rýchlosti a maximálna hodnota za obdobie pozorovania. Na ďalšej obrazovke je aktuálna vzdialenosť k nulovému bodu, maximálna zaznamenaná vzdialenosť od neho a počítadlo kilometrov.

Meriam veľkosti všetkých modulov a snažím sa ich usporiadať čo najkompaktnejšie. Ale nech som sa snažil akokoľvek, tenká obrazovka sa so širokouhlou nezmestila. GPS prijímač ohm Preto som sa rozhodol vymeniť obrazovku za iný OLED 128x64 pixelov. Vďaka tomu je ergonomickejší a umožňuje väčšie tlačidlo. OLED obrazovky sú plne kompatibilné a vyžadujú minimálnu korekciu kódu, takže firmvér bude dostupný pre obe verzie zariadenia s malou obrazovkou aj s veľkou.

Schéma montáže je jednoduchá. Obrazovku je potrebné pripojiť na zbernicu I2C, sú to piny A4 a A5, modul gps je pripojený k sériovému portu softvéru na pinoch D3 a D4. Tlačidlo na kolíku D7. Napájanie z batérie cez ochranný modul potiahnite ho k prepínaču, potom k zosilňovaču a pripojte Arduino na 5 voltov.

Pre pohodlné umiestnenie komponentov použijem zelenú doštičku 7 x 3 centimetre. Aby obrazovka nevisela na konektore, inštalujem ju na plastové stojany s 5 mm rozperami. Medzi obrazovkou a tlačidlom bude prijímač GPS. Na zadnej strane dosky bude Arduino ovládač, batéria a ochranná doska. Batéria bude používať tenké lítiové 350 miliampérov, ak sa nemýlim, tieto sa používajú v elektronických cigaretách, ale ako som povedal, môžete použiť akúkoľvek lítiovú batériu.

Všetko ešte raz premeriam, premeriam a pripravím návrh puzdra pre tlač na 3D tlačiarni. Doslova 15 minút na webovej stránke TinkerCAD a projekt je pripravený na tlač. Prenesiem súbor na flash disk, spustím ho a ideme. Čas tlače je cca 40 minút, ide o prvé zameriavacie teleso na vyskúšanie umiestnenia modulov.

Doska a tlačidlo zapadli na svoje miesto, ale obrazovka bola doslova o milimeter krátka a vnútorný stojan prekážal. A tak všetko sedí a je nainštalované na svojom mieste. Super, upravím projekt a vytlačím finálna verzia oranžové bývanie. Po dokončení tlače musíte dať stolu čas na vychladnutie a až potom časť odtrhnúť, potom bude predná strana hladká a nebude sa pohybovať.

Odlomím a očistím upevňovaciu hranu plastu. Keďže som použil ABS plast, podlieha následnému spracovaniu acetónom. Nanášam štetcom, vrstvy sa navyše zlepia a telo sa spevní a získa lesk.

Doska dokonale zapadá do puzdra, upevňovacie prvky sú zarovnané, gombík sa nelepí. Na jednom konci je otvor pre Arduino Nano konektor a na druhej strane pre nabíjanie batérie. Ukázalo sa, že je trochu užší, tak ho rozširujem skalpelom.

Nabíjacia doska má po okrajoch výstupky, bránia prehĺbeniu konektora, preto ich obrúsim ihlovým pilníkom. Teraz je doska dobre na svojom mieste.

IN všeobecný pohľad zariadenie bude vyzerať takto. Puzdro je umiestnené na vrchu. Pod ním bude mikrospínač, doska na chlieb s obrazovkou, modul GPS a tlačidlo. Na bočnej strane sa nachádza aj stupňovitý menič výkonu.

Samostatne pre vypínač som skalpelom vyrezal otvor do puzdra nad tlačidlom. Je zapustený do tela a nebude prekážať.

Je čas spájkovať. Prvý kontakt obrazovky prispájkujem k doske, vyskúšam - všetko je správne a zvyšné tri kontakty môžete prispájkovať. Teraz tlačidlo. A nezabudnite vyčistiť tavidlo štetcom. Drôty prispájkujem k ochrannému modulu batérie.

Pri pripájaní nezabudnite venovať pozornosť farbe vodičov. Nesprávne farby občas pochádzajú z Číny. V tomto prípade som sa rozhodol odspájkovať konektor a prispájkovať vodiče priamo pre lepší kontakt. Postup je zložitý a vyžaduje presnosť a starostlivosť pri spájkovaní. Okrem toho naplním kontakty horúcim lepidlom, čo ochráni dráhy a drôt pred náhodným vytiahnutím. A hneď celý GPS modul vložíme do zmršťovacej fólie, nie je to potrebné, ale dodatočne to ochráni mechanickému poškodeniu a skraty pri montáži na doštičku.

Zosilňovací menič tiež zabalíme do zmršťovacej fólie. Na upevnenie modulov používam obojstrannú pásku. Pri inštalácii dosky sa ukázalo, že nie je dostatok miesta pre vodiče, tak som vyvŕtal otvory v strede a pretiahol tam napájacie vodiče.

Mimochodom, odporúčam chladnú aku vŕtačku. Beží na jednu batériu 18650 a umožňuje rýchle vyvŕtanie podobných otvorov na doskách a v puzdrách. Predtým som pre takúto prácu musel Dremel vybrať z puzdra a zapojiť ho do elektrickej zásuvky, ale teraz mám vždy túto vŕtačku po ruke.

Horná časť dosky je zostavená, drôty sú navlečené a teraz musíte nainštalovať spínač. Aby sme to urobili, odhryzneme na ňom nadbytočné nohy, na napájanie a prerušenie napájania sú potrebné iba dve. Drôt na nich prispájkujeme a ako obvykle všetko tepelne zmrštíme. Ďalej môžete prepínač nainštalovať na svoje miesto a naplniť ho horúcim lepidlom. Teraz bude vhodné zapnúť a vypnúť sledovač.

Inštalujem dosku do puzdra a zaisťujem ju štyrmi malými skrutkami. Zodpovedajúce otvory sú už na nosičoch krytu. Keď som z obrazovky odstránil ochrannú fóliu, všimol som si veľkú medzeru medzi displejom a telom. Zobral som preto kus priehľadného obalu z nejakej elektroniky a vyrezal z neho sklo na veľkosť okna. A prilepil acetónom na plast puzdra.

Montáž vykonávame podľa schémy, nie sú tu žiadne ťažkosti ani nuansy. Len pozor, plus na plus, mínus na mínus. Vypínač pripájame priamo na výstup nabíjacieho modulu. Tým sa vypne celý napájací obvod a zabráni sa vybitiu batérie.

Po prispájkovaní všetkých vodičov k modulom zakryte spodnú dosku modrou elektrickou páskou. Arduino ovládač s nabíjaním bude navrchu a bez izolácie je možnosť niečoho skratovať.

Spájkujem ochranný modul a zaisťujem ho na mieste horúcim lepidlom.

Pustil som kontakty batérie a rýchlo k nim prispájkoval drôt, aby som batériu neprehrial. Na jednej a na druhej strane. Potom sa musíte pripojiť micro USB kábel a napájajte ochranný modul, tým sa aktivuje jeho činnosť.

Hotovo, teraz musíte nahrať firmvér. Pripojíme Arduino k počítaču, prejdeme na stránku projektu, odkaz naň je v popise videa. Stiahnite si archív, rozbaľte súbory, nainštalujte knižnice, otvorte požadovanú verziu firmvéru pre 32 alebo 64 bodovú obrazovku a nahrajte ju do ovládača. Všetko fungovalo na prvýkrát! Údaje z GPS tyče. Super!

Inštalujem ovládač na jeho miesto, zapnem autonómne napájanie... iiiiiiiii... nič. LED napájania na Arduine svieti, ale obrazovka sa nezapne. A tak sa stalo tryndets, dôvod, pre ktorý stále neviem. Trvalo mi niekoľko hodín práce, kým som prinútil sledovač pracovať autonómne zo vstavanej batérie.

Najprv som si myslel, že vinníkom je malý zvyšovací menič. Ale kontrola pomocou multimetra ukázala stabilných 5 voltov. Ďalej som pripojil autonómny napájací modul, ktorý mi zostal z iného projektu, je postavený na veľkom boost konvertore – a hľa, sledovač sa rozbehol, no po pár sekundách zamrzol.

Nabil som na ňom batériu a umiestnil tracker na okno, aby som chytil satelity. O tri minúty neskôr zachytil signál zo 4 satelitov a určil polohu. No, to znamená, že funguje a dá sa pravdepodobne zložiť? Meníme boost konvertor, zrejme ten malý robí veľký hluk z napájacieho zdroja.

Aby som to urobil, musel som sledovač úplne rozobrať, odspájkovať všetky vodiče a znova ho zložiť. Nový napájací modul bude umiestnený na rovnakom mieste ako ten starý, len musel byť odstránený jeden stojan, aby sa zmestil pod obrazovku.

To je všetko, skrútil som drôty do pigtailov, aby sa zabránilo rušeniu. Aaa... tento bastard sa znova nezapol. Presnejšie povedané, zapol a okamžite zamrzol s artefaktmi na obrazovke. Toľko hodín práce a všetko za nič. Výmena prevodníka nepomohla.

Skúsil som nainštalovať kondenzátory na zdroj - nič nepomohlo. Sledovač odmietol pracovať autonómne, a to ako zo zosilňovacích meničov, tak aj z laboratórneho napájacieho zdroja - zamrzol alebo sa vôbec nezapol. Ale zároveň to fungovalo perfektne z Arduino USB konektora.

Pomocou metódy sekvenčného vypínania sa mi podarilo zistiť, že za to môže OLED obrazovka - ale stále nechápem prečo. Riešenie sa našlo náhle. Pri ďalšej kontrole autonómneho napájania som omylom priviedol 5 voltov na pin VIN. Podotýkam, že tento pin! nie! navrhnutý na napájanie 5 voltov a vyžaduje napätie 7 až 12 voltov.

Ale napriek tomu sa sledovač okamžite spustil a začal pracovať stabilne. Tie. Ukazuje sa, že malý stabilizátor nebol zdrojom problému, bolo to niečo iné.

Zároveň som sa rozhodol skontrolovať aktuálnu spotrebu. Z 5 voltov spotreboval sledovač asi 70 miliampérov. A zo 4 voltov cez zosilňovací menič sa ukázalo, že je to asi 110 miliampérov. Moja malá 350 miliampérová batéria teda vydrží tri hodiny životnosť batérie. A ešte som neoptimalizoval napájanie, môžete vypnúť LED diódy, ktoré sú stále zapnuté, a stále šetriť batériu.

Tracker začal fungovať úplne stabilne, nechal som ho na okne a po pár minútach zachytil 4 satelity. Skvelé

Ak máte záujem pomôcť mi pochopiť dôvod zvláštneho správania Arduina, tu je úvod:

1 – Tracker funguje, ak je napájaný cez Arduino USB konektor.

2 – Sledovač zamrzne a nezapne sa, ak ho napájate cez kolík Arduino 5V privedením 5 voltov naň z akéhokoľvek zdroja napájania.

3 – Sledovač zamrzne a nezapne sa, ak sa naň cez kolík Arduino VIN privedie napätie 7 voltov alebo viac.

4 – Sledovač funguje, ak je napájaný neštandardným 5 voltom cez rovnaký kolík VIN.

Hotovým zariadením je univerzálny autonómny rýchlomer, diaľkomer, počítadlo kilometrov a satelitné presné hodiny v jednom kryte.

Na hlavnej obrazovke po načítaní sa v hornej časti zobrazuje aktuálny čas a dátum v Greenwichi, v druhom riadku je aktuálna rýchlosť 0,3 kilometra za hodinu a maximálna hodnota rýchlosti, ktorá bola zaznamenaná od zapnutia - 26 kilometrov za hodinu. Na treťom riadku je aktuálna vzdialenosť k nulovému bodu 530 metrov a maximálna vzdialenosť dosiahnutá od zapnutia je 580 metrov. Na štvrtom riadku počítadlo kilometrov ukazuje 923 metrov a počet použitých satelitov.

Znaky v spodnom riadku predstavujú množstvo údajov prijatých z modulu GPS.

Po krátkom stlačení tlačidla sa zmení zobrazenie na obrazovke a pri dlhšom podržaní si tracker zapamätá aktuálnu polohu ako nulový referenčný bod pre meranie vzdialenosti. Druhá obrazovka zobrazuje aktuálnu a maximálnu rýchlosť. Tretia obrazovka obsahuje informácie o vzdialenosti k nulovému bodu. Štvrtou obrazovkou je počítadlo kilometrov. Piata zemepisná šírka a dĺžka.

Počítadlo kilometrov a maximálne hodnoty môžete vynulovať dlhým stlačením tlačidla na obrazovke s týmito parametrami. Tie. prejdite na počítadlo kilometrov a podržte stlačené tlačidlo, aby ste ho vynulovali.

Prejdime k testovaniu. Teraz sledovač vidí 12 satelitov. Nastavil som aktuálny nulový bod a vynuloval počítadlo kilometrov. To isté robím na počítadle kilometrov v aute. Po prejdení 1,2 kilometra podľa tachometra auta som na GPS trackeri videl rovnakých 1205 metrov. Aktuálna vzdialenosť k nulovému bodu v priamke je 0,93 kilometra. A podľa mapy tých istých 930 metrov, zatiaľ je všetko presné.

Rozhodol som sa merať dlhšiu vzdialenosť. Opäť som vynuloval hodnoty na sledovači a aute. Po prejdení 8,4 kilometra som na sledovači zistil, že vzdialenosť je kratšia - len 7974 metrov. V tomto prípade je aktuálna vzdialenosť k nulovému bodu 4 930 metrov. Skontrolujeme to na mape, vychádza to veľmi presne, rovnakých 4 930 metrov. Nie je jasné, prečo potom počítadlo kilometrov leží na 400 metroch a ktoré počítadlo kilometrov leží na aute alebo na GPS.

Dobre, je čas tlačiť zadný kryt a budeme testovať znova. zatváram. Hmotnosť hotového zariadenia sa ukázala byť 55 gramov, veľa, ale nie kritické - na konci vám ukážem, ako ju znížiť.

Prišiel som na klzisko a rozhodol som sa zmerať rýchlosť hokejistu. Sakra, ešte potrebuje odstrániť kryty kvôli rýchlosti. Výsledkom bola divoká rýchlosť ako „ruská raketa“ - 5 kilometrov za hodinu. Chodil som, a to všetko preto, že strop na klzisku je izolovaný reflexnou fóliou, aby nepremŕzal chlad. Existuje signál zo satelitov, ale nie je presný.

Urobme posledný test s mobilný telefón. Telefón vidí 7 satelitov a sledovač 9. Začnem zaznamenávať a resetujem počítadlo kilometrov na sledovači. No... poďme. Po prejdení troch kilometrov telefón a sledovač ukazovali na počítadle kilometrov rovnaké hodnoty. 3017 verzus 3021 metrov je super výsledok, nečakal som takú presnosť.

Počítadlo kilometrov sa však pokazilo, až 12 tisíc kilometrov. Nie kyslé. Predtým, keď som ladil program, už som sa s takouto chybou stretol a sledovač sa okamžite posunul o 7 000 kilometrov. Keď som sa vrátil domov, vytvoril som v Google bod s nulovou zemepisnou šírkou a dĺžkou. Ukázalo sa, že sa nachádza v Atlantickom oceáne, neďaleko pobrežia Ghany. Po zmeraní vzdialenosti od nej k mojej polohe som dostal tých istých 7 000 kilometrov. Ukazuje sa, že modul GPS niekedy preskočí nuly pozdĺž súradníc. To sa dá jednoducho opraviť pridaním len jednej podmienky do programového kódu. A táto chyba nebola počas testov pozorovaná.

Myslím, že sledovač dopadol úžasne; toto je moja prvá skúsenosť s priamou prácou s modulmi GPS. Prečo je to potrebné? Takýto sledovač môže slúžiť ako autonómny rýchlomer alebo nezávislý počítadlo kilometrov. Dá sa umiestniť na bicykel, auto, hračku alebo kvadrokoptéru. Umožňuje tiež merať vzdialenosť v priamke k danému bodu, pričom sú uložené nulové hodnoty energeticky nezávislá pamäť. Pamätá si maximálne dosiahnuté hodnoty rýchlosti a vzdialenosti. To všetko robí autonómne a nezávisí od nikoho iného ako od satelitov. A samozrejme, toto sú presné hodiny. Potrebujem to na meranie maximálnej rýchlosti a maximálnej vzdialenosti od objektov. To je pravda, musíte pridať väčšiu výšku obrazovky, aby ste zmerali, ako vysoko stúpate!

Poďme sa porozprávať o tom, ako môžete znížiť hmotnosť; najjednoduchší spôsob, ako to urobiť, je zostaviť sledovač na plošinu Arduino Pro Mini na 3,3 V. Potom nebudete potrebovať boost konvertor, namiesto toho bude malý lineárny pahýľ na 3,3 V, modul GPS funguje bez problémov na tomto napätí a na obrazovke budete musieť obísť stabilizátor napájania.

Okamžite odpoviem na otázku: je možné pridať GSM modul a ovládať sledovač cez SMS? Áno môžeš. K tomu bude potrebné okrem samotného modulu pridať do programového kódu aj spracovanie SMS príkazov a malo by ísť o samostatný projekt.

To je na dnes všetko, ak sa vám toto video páčilo, tak som si istý, že sa vám bude páčiť a zdieľajte odkaz na video so svojimi priateľmi.

Ďakujem za sledovanie, prajem všetkým veľa šťastia a vidíme sa pri nových videách! čau čau!

Údaje sú uložené v tabuľkovom procesore dataGPS.csv, ktorého formát zodpovedá požiadavkám služby Moje mapy Google.

    Programovací jazyk: Arduino (C++)

Video návod

Čo potrebuješ

Ako zostaviť

gps-tracker.ino // knižnica pre prácu so zariadeniami cez SPI#include // knižnica pre prácu s SD kartou#include // knižnica pre prácu so zariadením GPS#include // vytvoríme objekt triedy GPS a odošleme mu objekt Serial1 GPS gps (Serial1) ; // LED kolík#define LED_PIN A0 // pin tlačidla #define BUTTON_PIN 13 // pin CS micro-sd karta#define CHIP_SELECT_PIN 9 // časový interval zápisu dát na kartu#define INTERVAL 5000 // nastavenie veľkosti poľa pre čas, dátum, zemepisnú šírku a dĺžku#define MAX_SIZE_MASS 16 // pole na uloženie aktuálneho časučas znaku[MAX_SIZE_MASS]; // stav záznamu bool stateRec = false ; // si pamätá aktuálny čas long startMillis = millis() ; void setup() ( // otvorte sériový port na sledovanie akcií v programe Serial.begin(115200); // počkajte, kým sa otvorí monitor sériový port // na sledovanie všetkých udalostí v programe// while (!Serial) ( // ) Serial.print ("Sériové spustenie je OK \r\n") ; // otvorenie sériového spojenia s modulom GPS Serial1.begin(115200); // nastavte LED do výstupného režimu pinMode(LED_PIN, OUTPUT) ; // nastavte tlačidlo do režimu prihlásenia pinMode(BUTTON_PIN, INPUT_PULLUP) ; // výstup informácií o inicializácii na sériový port Serial.println("Inicializuje sa SD karta...") ; // inicializujte SD kartu while (! SD.begin (CHIP_SELECT_PIN) ) ( Serial.println ("Karta zlyhala alebo nie je prítomná" ) ; delay(1000 ) ; ) // výstup informácií na sériový port Serial.println("Karta inicializovaná"); // vytvorte objekt dataFile triedy File na prácu so súbormi Súbor dataFile = SD.open("dataGPS.csv" , FILE_WRITE) ; // ak súbor existuje if (dataFile) ( // zapíšte názov budúcich údajov na pamäťovú kartu dataFile.println("Čas, súradnice, rýchlosť"); // zatvorte súbor dataFile.close(); Serial.println("Uložiť OK"); ) else ( Serial.println ("Chyba pri otváraní test.csv" ) ; ) ) void loop() ( // Zaznamenajte stlačenie tlačidla if (! digitalRead(BUTTON_PIN) ) ( // zmeniť stav „nahráva sa“ / „nezapisuje sa“ na pamäťovú kartu stateRec = ! stateRec; // zmena stavu indikačnej LED digitalWrite(LED_PIN, stateRec) ; ) // ak údaje pochádzajú z modulu GPS if (gps.available()) ( // čítať dáta a analyzovať gps.readParsing(); // kontrola stavu modulu GPS switch (gps.getState () ) ( // všetko je v poriadku prípad GPS_OK: Serial.println ("GPS je v poriadku" ) ; // ak uplynul zadaný časový interval if (millis() - startMillis > INTERVAL && stateRec) ( // uloženie údajov na pamäťovú kartu saveSD() ; // zapamätať si aktuálny čas startMillis = millis() ; ) prestávka ; // prípad chyby údajov GPS_ERROR_DATA: Serial.println("GPS chybové údaje" ); prestávka ; // žiadne spojenie so satelitmi prípad GPS_ERROR_SAT: Serial.println ( "GPS bez pripojenia k satelitom"); prestávka ; ))) // funkcia pre ukladanie dát na pamäťovú kartu void saveSD() ( Súbor dataFile = SD.open("dataGPS.csv" , FILE_WRITE) ; // ak súbor existuje a bol otvorený if (dataFile) ( // prečíta aktuálny čas gps.getTime(čas, MAX_SIZE_MASS); // zapíšte čas na pamäťovú kartu dataFile.print(" \" " ); dataFile.print(time); dataFile.print(" \" " ); dataFile.print ("," ) ; dataFile.print(" \" " ) ; // čítanie a zápis súradníc zemepisnej šírky a dĺžky na pamäťovú kartu dataFile.print(gps.getLatitudeBase10(), 6); dataFile.print ("," ) ; dataFile.print(gps.getLongitudeBase10(), 6); dataFile.print(" \" " ); dataFile.print ("," ) ; dataFile.print(gps.getSpeedKm()); dataFile.println("km/h"); dataFile.close(); Serial.println("Uložiť OK"); ) else ( Serial.println ( "Chyba pri otváraní test.csv" ) ; ) )