Udělej si sám GPS tracker založený na GY-NEO6M je snadný. Stručný popis Arduino GPS trackeru Okno nastavení Hatire Arduino

Po několika experimentech s Arduinem jsem se rozhodl vytvořit jednoduchý a nepříliš drahý GPS tracker se souřadnicemi zasílanými přes GPRS na server.
Použité Arduino Mega 2560 ( Arduino Uno), SIM900 - GSM/GPRS modul (pro odesílání informací na server), GPS přijímač SKM53 GPS.

Vše bylo zakoupeno na ebay.com, celkem za cca 1500 rublů (asi 500 rublů za arduino, o něco méně za GSM modul, trochu více za GPS).

GPS přijímač

Nejprve musíte pochopit, jak pracovat s GPS. Vybraný modul je jedním z nejlevnějších a nejjednodušších. Výrobce však slibuje baterii pro úsporu satelitních dat. Studený start by měl podle datasheetu trvat 36 sekund, nicméně v mých podmínkách (10. patro od parapetu, žádné budovy poblíž) to trvalo až 20 minut. Další start je však již za 2 minuty.

Důležitým parametrem zařízení připojených k Arduinu je spotřeba. Pokud Arduino převodník přetížíte, může se spálit. Pro použitý přijímač je maximální spotřeba energie 45 mA @ 3,3 V. Proč by měla specifikace udávat sílu proudu při jiném než požadovaném napětí (5V) je mi záhadou. Arduino převodník však vydrží 45 mA.

Spojení
GPS se neřídí, i když má RX pin. Za jakým účelem není známo. Hlavní věc, kterou můžete s tímto přijímačem udělat, je číst data přes protokol NMEA z TX pinu. Úrovně - 5V, jen pro Arduino, rychlost - 9600 baudů. Připojuji VIN k VCC arduina, GND k GND, TX k RX odpovídajícího seriálu. Data jsem načetl nejprve ručně, poté pomocí knihovny TinyGPS. Vše je kupodivu čitelné. Po přechodu na Uno jsem musel používat SoftwareSerial a pak začaly problémy – některé znaky zpráv se ztratily. To není příliš kritické, protože TinyGPS odřízne neplatné zprávy, ale je to docela nepříjemné: na frekvenci 1 Hz můžete zapomenout.

Rychlá poznámka k SoftwareSerial: na Uno nejsou žádné hardwarové porty (kromě toho, který je připojen k USB Serial), takže musíte použít software. Může tedy přijímat data pouze na pinu, na kterém deska podporuje přerušení. V případě Uno jsou to 2 a 3. Navíc pouze jeden takový port může přijímat data najednou.

Takto vypadá „zkušební stolice“.

GSM přijímač/vysílač


Nyní přichází ta zajímavější část. GSM modul - SIM900. Podporuje GSM a GPRS. Není podporováno ani EDGE, ani zejména 3G. Pro přenos souřadnicových dat je to asi dobré – nebudou žádné prodlevy ani problémy při přepínání mezi režimy, navíc GPRS je nyní dostupné téměř všude. U některých složitějších aplikací to však nemusí stačit.

Spojení
Modul je také řízen přes sériový port, se stejnou úrovní - 5V. A tady budeme potřebovat RX i TX. Modul je shield, to znamená, že je nainstalován na Arduinu. Navíc je kompatibilní s mega i uno. Výchozí rychlost je 115200.

Montujeme to na Mega a zde nás čeká první nepříjemné překvapení: TX pin modulu padá na 7. pin Mega. Přerušení nejsou k dispozici na 7. pinu mega, což znamená, že budete muset připojit 7. pin, řekněme, k 6. pinu, na kterém jsou možná přerušení. Tím pádem vyplýtváme jeden Arduino pin. No, za mega to není moc děsivé - koneckonců je dost kolíků. Ale pro Uno je to již složitější (připomínám, že jsou pouze 2 piny, které podporují přerušení - 2 a 3). Jako řešení tohoto problému můžeme navrhnout neinstalovat modul na Arduino, ale připojit jej pomocí vodičů. Pak můžete použít Serial1.

Po připojení se pokusíme „promluvit“ s modulem (nezapomeňte jej zapnout). Zvolíme rychlost portu - 115200 a je dobré, když všechny vestavěné sériové porty (4 na mega, 1 na uno) a všechny softwarové porty fungují na stejné rychlosti. Tímto způsobem můžete dosáhnout stabilnějšího přenosu dat. Nevím proč, i když tuším.

Píšeme tedy primitivní kód pro předávání dat mezi sériovými porty, odesíláme Atz a přijímáme ticho jako odpověď. Co se stalo? Rozlišují se malá a velká písmena. ATZ, jsme v pořádku. Hurá, modul nás slyší. Měli byste nám zavolat ze zvědavosti? ATD +7499... Zazvoní telefon pevné linky, z arduina jde kouř, notebook se vypne. Konvertor Arduino shořel. Byl špatný nápad napájet to 19 volty, i když je napsáno, že to může fungovat od 6 do 20V, doporučuje se 7-12V. Datasheet ke GSM modulu nikde nepíše o spotřebě při zátěži. No, Mega jde do skladu náhradních dílů. Se zatajeným dechem zapínám notebook, který přijímal +19V přes +5V linku z USB. Funguje a ani USB nevyhořelo. Děkujeme společnosti Lenovo, že nás chrání.

Po vyhoření převodníku jsem hledal aktuální spotřebu. Takže vrchol - 2A, typický - 0,5A. To je jednoznačně nad možnosti Arduino převodníku. Vyžaduje samostatné jídlo.

Programování
Modul poskytuje rozsáhlé možnosti přenosu dat. Počínaje hlasovými hovory a SMS a konče samotným GPRS. Navíc pro posledně jmenované je možné provést HTTP požadavek pomocí AT příkazů. Budete jich muset poslat několik, ale stojí to za to: ve skutečnosti nechcete vytvářet požadavek ručně. S otevřením kanálu přenosu dat přes GPRS existuje několik nuancí - pamatujete si klasické AT+CGDCONT=1, „IP“, „apn“? Takže tady je potřeba to samé, ale trochu mazanější.

Chcete-li získat stránku na konkrétní adrese URL, musíte odeslat následující příkazy:
AT+SAPBR=1,1 //Otevřený operátor (Carrier) AT+SAPBR=3,1,"CONTYPE","GPRS" //typ připojení - GPRS AT+SAPBR=3,1,"APN","internet" //APN, pro Megafon - internet AT+HTTPINIT //Inicializovat HTTP AT+HTTPPARA="CID",1 //ID operátora k použití. AT+HTTPPARA="URL","http://www.example.com/GpsTracking/record.php?Lat=%ld&Lng=%ld" //Skutečná adresa URL po sprintf se souřadnicemi AT+HTTPACTION=0 // Vyžádejte si data pomocí metody GET //čekejte na odpověď AT+HTTPTERM //zastavte HTTP

V důsledku toho, pokud existuje připojení, obdržíme odpověď ze serveru. To znamená, že již víme, jak odeslat data souřadnic, pokud je server přijme přes GET.

Výživa
Vzhledem k tomu, že napájení GSM modulu z Arduino převodníku, jak jsem zjistil, je špatný nápad, bylo rozhodnuto koupit převodník 12v->5v, 3A na stejném ebayi. Modul ale nemá rád 5V napájení. Pojďme na hack: připojte 5V na pin, ze kterého jde 5V z arduina. Pak vestavěný převodník modulu (mnohem výkonnější než převodník Arduino, MIC 29302WU) udělá z 5V to, co modul potřebuje.

Server

Server napsal primitivní - ukládání souřadnic a kreslení na Yandex.maps. V budoucnu je možné přidat různé funkce, včetně podpory mnoha uživatelů, stavu „zapnuto/nezastřeno“, stavu systémů vozidla (zapalování, světlomety atd.), případně i ovládání systémů vozidla. Samozřejmě s patřičnou podporou trackeru, který se plynule změní v plnohodnotný poplašný systém.

Terénní testy

Takto vypadá sestavené zařízení bez pouzdra:

Po instalaci napájecího měniče a jeho umístění do pouzdra od mrtvého DSL modemu vypadá systém takto:

Připájel jsem dráty a odstranil několik kontaktů z bloků Arduino. Vypadají takto:

Připojil jsem 12V v autě, jel po Moskvě a dostal trať:


Traťové body jsou od sebe poměrně daleko. Důvodem je, že odesílání dat přes GPRS trvá poměrně dlouho a během této doby nedochází k načítání souřadnic. Jde jednoznačně o chybu programování. Ošetřuje se za prvé okamžitým odesláním paketu souřadnic v průběhu času a za druhé asynchronní prací s modulem GPRS.

Doba vyhledávání satelitů na sedadle spolujezdce v autě je několik minut.

závěry

Vytvoření GPS trackeru na Arduinu vlastníma rukama je možné, i když to není triviální úkol. Hlavní otázkou nyní je, jak zařízení v autě schovat, aby nebylo vystaveno škodlivým faktorům (voda, teplota), nebylo pokryto kovem (GPS a GPRS bude stíněné) a nebylo nijak zvlášť nápadné. Zatím jen leží v kabině a zapojuje se do zásuvky zapalovače cigaret.

Musíme také opravit kód pro hladší stopu, i když sledovač již plní hlavní úkol.

Použitá zařízení

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

Osobní GPS vysílače

Dnes jde pokrok takovým tempem, že dříve objemná, drahá a vysoce specializovaná zařízení rychle ztrácejí na velikosti, hmotnosti a ceně, ale získávají mnoho nových funkcí.

Takto se zařízení založená na technologii GPS dostala do kapesních přístrojů a pevně se tam usadila a poskytla lidem nové příležitosti. Za vyzdvihnutí stojí především jednotlivé GPS vysílače.

V podstatě se jedná o stejné GPS trackery, pouze navržené pro použití nikoli ve vozidle, ale pro osobu v každodenním životě.

V závislosti na modelu několik různá zařízení. Ve své nejjednodušší podobě je to prostě malá krabička bez displeje, která umožňuje ovládat pohyby dětí, zvířat nebo některých jiných předmětů, na kterém je upevněn.

Uvnitř se nachází GPS modul, který určuje souřadnice na zemi, modul GSM/GPRS, který přenáší informace a přijímá řídicí příkazy, a také zdroj energie, který zajišťuje autonomní provoz po dlouhou dobu.

Funkčnost GPS vysílačů

S rostoucí funkčností se objevují následující možnosti zařízení:


Možnosti pro vysílače GPS

V závislosti na konfiguraci se pouzdra převodníku mohou výrazně lišit. Různé modely mít exekuce ve formuláři mobily, klasické navigátory, nebo třeba náramkové hodinky.

Barevné provedení speciálních verzí a užitečné doplňky umožňují dětem, aby s těmito zařízeními zacházely nikoli jako s „rodičovskými špiony“, ale jako s módními a praktickými vychytávkami.

Jako výhodu stojí za zmínku fakt, že se bez ní řada verzí zařízení obejde poplatek za předplatné pro služby specializovaných operátorů a veškeré potřebné informace jsou klientovi zasílány přímo prostřednictvím internetu nebo SMS zpráv, což umožňuje výrazné úspory na údržbě takového zařízení.

Články o GPS trackerech

V tomto článku ukážu, jak používat modul gsm s arduino na příkladu sim800L. Stejné instrukce jsou docela vhodné pro použití jakýchkoli jiných gsm modulů, například sim900 atd., protože všechny moduly fungují přibližně stejně - jedná se o výměnu AT příkazů přes port.

Využití modulu s arduinem ukážu na příkladu SMS relé, kterým lze zařízení ovládat na dálku pomocí SMS příkazů. To lze použít ve spojení s autoalarmy atd.

Modul je připojen k Arduinu přes rozhraní UART softwarového sériového portu pracujícího na 2 a 3 digitálních pinech Arduino nano.

Práce s Arduino s GSM moduly

Pro napájení modulu je potřeba napětí v rozsahu od 3,6V do 4,2V, to znamená, že budete muset použít další stabilizátor napětí, protože Arduino má nainstalovaný stabilizátor 3,3V, který není vhodný pro napájení modulu. , druhým důvodem pro instalaci dalšího stabilizátoru je to, že GSM modul je vážně zatížen, protože má slabý vysílač, který poskytuje stabilní připojení s mobilní stanicí. Napájení pro Arduino nano je přiváděno na pin VIN - jedná se o stabilizátor zabudovaný v Arduinu, který zajišťuje, že modul pracuje v širokém rozsahu napětí (6-10V). Reléový modul se připojuje dle daného programového textu na pin 10 Arduino nano a lze jej jednoduše změnit na jakýkoli jiný, který funguje jako digitální výstup.

Funguje to takto: nainstalujte SIM kartu do GSM modulu, zapněte napájení a odešlete SMS s textem „1“ na číslo SIM karty aby se naše relé sepnulo, pro jeho vypnutí zašleme SMS s textem „0“.

#zahrnout
SoftwareSerial gprsSerial(2, 3); // nastavení pinů 2 a 3 pro softwarový port
int LedPin = 10; // pro relé

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

// nastavení příjmu zpráv

gprsSerial.print("AT+CMGF=1\r");
gprsSerial.print("AT+IFC=1, 1\r");
zpoždění(500);
gprsSerial.print("AT+CPBS=\"SM\"\r");
zpoždění(500); // zpoždění pro zpracování příkazu
gprsSerial.print("AT+CNMI=1,2,2,1,0\r");
zpoždění(700);
}

Řetězec currStr = "";
// pokud je tento řádek zprávou, pak proměnná bude mít hodnotu True
boolean isStringMessage = false;

void loop()
{
if (!gprsSerial.available())
vrátit se;

char currSymb = gprsSerial.read();
if ('\r' == currSymb) (
if (isStringMessage) (
// pokud je aktuální řádek zpráva, pak...
if (!currStr.compareTo("1")) (
digitalWrite(LedPin, HIGH);
) else if (!currStr.compareTo("0")) (
digitalWrite(LedPin, LOW);
}
isStringMessage = false;
) jinak (
if (currStr.startsWith("+CMT")) (
// pokud aktuální řádek začíná „+CMT“, pak další zpráva
isStringMessage = true;
}
}
currStr = "";
) else if ('\n' != currSymb) (
currStr += String(currSymb);
}
}

Video verze článku:

Štítky: #Arduino, #SIM800L

Vaše známka:

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

← GPS logger na arduino | Ovládání relé přes COM port →

GSM skener na RTL-SDR

| Domov| anglicky | Vývoj | FAQ |

Hlavní vlastnosti skeneru

GSM skener skenuje kanály GSM downlink a zobrazuje informace o síle signálu a vlastnictví kanálu jednoho ze tří hlavních operátorů mobilní komunikace MTS, Beeline a Megafon. Na základě výsledků své práce vám skener umožňuje uložit seznam identifikátorů základnové stanice MCC, MNC, LAC a CI pro všechny skenované kanály.
Pro vyhodnocení úrovně GSM signálu a porovnání kvality signálu lze použít GSM skener různých operátorů, hodnocení rádiového pokrytí, při rozhodování o instalaci zesilovačů celulárního signálu a úpravě jejich parametrů, pro vzdělávací účely atd.
Skener běží pod Windows a využívá jednoduchý a levný přijímač - RTL-SDR. O RTL-SDR si můžete přečíst na:
RTL-SDR (RTL2832U) a softwarově definované rozhlasové zprávy a projekty,
RTL-SDR – OsmoSDR,
RTL-SDR v ruštině.
Parametry RTL-SDR určují hlavní charakteristiky skeneru. GSM skener samozřejmě nenahrazuje běžné měřicí zařízení.
Skener je distribuován zdarma, bez omezení použití.
Současná verze podporuje pásmo GSM 900 a nepodporuje GSM 1800. To je dáno tím, že provozní frekvence RTL-SDR s tunerem R820T je omezena na 1760 MHz. Existuje naděje, že použití experimentálního ovladače RTL-SDR umožní provoz alespoň v části rozsahu 1800 MHz.

Spuštění skeneru

Nejnovější verzi skeneru lze stáhnout z tohoto odkazu. Stačí rozbalit soubor na vhodné místo a spustit gsmscan.exe.
Předchozí verze scanner, odkaz na úložiště se zdroji a další informace související s vývojem jsou na stránce vývoje.
Aby skener fungoval, je nutná instalace ovladačů RTL-SDR, pokud ještě nejsou nainstalovány, lze to pohodlně provést pomocí programu Zadig, který popisuje postup instalace.

Pomocí skeneru

Níže je pohled na okno programu skeneru:

Vodorovná osa zobrazuje číslo kanálu GSM ve tvaru ARFCN nebo v MHz a svislá osa ukazuje úroveň signálu v dBm. Výška čáry ukazuje sílu signálu.

Komunikace GSM modulu NEOWAY M590 s Arduinem

Pokud byly identifikátory BS úspěšně dekódovány a odpovídají identifikátorům tří hlavních telekomunikačních operátorů, jsou čáry obarveny odpovídajícími barvami.
Rozbalovací seznamy v horní části obrazovky vám umožňují vybrat přijímač SDR, pokud je připojeno několik, rozsah GSM práce 900 nebo GSM 1800 a horizontální osové jednotky ARFCN nebo MHz.
Tlačítka umožňují uložit zprávu o činnosti skeneru ve formě seznamu dekódovaných základnových stanic, vymazat výsledky dekódování BS a získat informace o programu.

Principy a vlastnosti práce.

Během provozu program snímá pracovní frekvenční rozsah s krokem 2,0 MHz (10 GSM kanálů) a digitalizuje signál se vzorkovací frekvencí 2,4 MHz. Proces skenování se skládá z rychlého průchodu celým rozsahem pro měření síly signálu a pomalého průchodu pro dekódování BS ID.

Jeden krok dekódování se provede po projetí celého rozsahu pro měření výkonu. V rozsahu GSM 900 je tedy úroveň signálu aktualizována přibližně jednou za 2 s a úplný dekódovací průchod trvá přibližně 1 minutu.
Kvůli špatné kvalitě signálu přijímaného z RTL-SDR není pravděpodobnost správného dekódování systémových informací (SI) BS broadcast control channel (BCCH) vysoká. Kolísání úrovně signálu v důsledku vícecestného šíření také snižuje pravděpodobnost dekódování systémových informací. Z těchto důvodů je pro získání BS identifikátorů nutné, aby skener nashromáždil informace po dobu asi 10 minut. Ale ani v tomto případě ne všechny kanály poskytují toto místo dostatečná úroveň a kvalita signálu pro dekódování i tím nejideálnějším přijímačem. Navíc ne všechny kanály GSM se používají k přepínání GSM standard, jak je vidět na obrázku výše, kanály 975 - 1000 jsou obsazeny Megafonem, aby na nich mohl pracovat standard UMTS.
Během provozu skener přidává systémové informace o nových dekódovaných kanálech k obecnému poli informací o kanálech. Ale informace o dříve dekódovaných kanálech se nevymažou, když systémové informace nejsou dekódovány v tomto kroku, a zůstanou v poli. Chcete-li tyto informace vymazat, použijte tlačítko k vymazání výsledků dekódování BS.
Když kliknete na tlačítko uložit zprávu, nashromážděné výsledky se uloží textový soubor s názvem složeným z názvu programu, data a času uložení dat. Níže je uveden příklad části souboru sestavy:
Skener je navržen pro práci pod Windows 7, 8.1 a 10. Práce byla testována se třemi kopiemi RTL-SDR s tunerem R820T, ostatní typy tunerů testovány nebyly.
Pro práci pod Windows XP byla zkompilována speciální verze programu, která běží několikanásobně pomaleji než standardní verze.

Rozvoj.

Program skeneru je dodáván tak, jak je, bez jakýchkoli záruk nebo odpovědnosti. Pokud máte rozumné nápady, jak rozšířit funkcionalitu nebo zlepšit výkon skeneru, jsme připraveni diskutovat o možnosti jejich implementace.
Můžete se podílet na vývoji skeneru, navštivte stránku vývoje.
Plánuje se další vývoj GSM skeneru, případně s vaší účastí.

Po několika experimentech s Arduinem jsem se rozhodl vytvořit jednoduchý a nepříliš drahý GPS tracker se souřadnicemi zasílanými přes GPRS na server.
Použité Arduino Mega 2560 (Arduino Uno), SIM900 - GSM/GPRS modul (pro odesílání informací na server), GPS přijímač SKM53 GPS.

Vše bylo zakoupeno na ebay.com, celkem za cca 1500 rublů (asi 500 rublů za arduino, o něco méně za GSM modul, trochu více za GPS).

GPS přijímač

Nejprve musíte pochopit, jak pracovat s GPS. Vybraný modul je jedním z nejlevnějších a nejjednodušších. Výrobce však slibuje baterii pro úsporu satelitních dat. Studený start by měl podle datasheetu trvat 36 sekund, nicméně v mých podmínkách (10. patro od parapetu, žádné budovy poblíž) to trvalo až 20 minut. Další start je však již za 2 minuty.

Důležitým parametrem zařízení připojených k Arduinu je spotřeba. Pokud Arduino převodník přetížíte, může se spálit. Pro použitý přijímač je maximální spotřeba energie 45 mA @ 3,3 V. Proč by měla specifikace udávat sílu proudu při jiném než požadovaném napětí (5V) je mi záhadou. Arduino převodník však vydrží 45 mA.

Spojení

GPS se neřídí, i když má RX pin. Za jakým účelem není známo. Hlavní věc, kterou můžete s tímto přijímačem udělat, je číst data přes protokol NMEA z TX pinu. Úrovně - 5V, jen pro Arduino, rychlost - 9600 baudů. Připojuji VIN k VCC arduina, GND k GND, TX k RX odpovídajícího seriálu. Data jsem načetl nejprve ručně, poté pomocí knihovny TinyGPS. Vše je kupodivu čitelné. Po přechodu na Uno jsem musel používat SoftwareSerial a pak začaly problémy – některé znaky zpráv se ztratily. To není příliš kritické, protože TinyGPS odřízne neplatné zprávy, ale je to docela nepříjemné: na frekvenci 1 Hz můžete zapomenout.

Rychlá poznámka k SoftwareSerial: na Uno nejsou žádné hardwarové porty, takže musíte použít softwarový. Může tedy přijímat data pouze na pinu, na kterém deska podporuje přerušení. V případě Uno jsou to 2 a 3. Navíc pouze jeden takový port může přijímat data najednou.

Takto vypadá „zkušební stolice“.


GSM přijímač/vysílač


Nyní přichází ta zajímavější část. GSM modul - SIM900. Podporuje GSM a GPRS. Není podporováno ani EDGE, ani zejména 3G. Pro přenos souřadnicových dat je to asi dobré – nebudou žádné prodlevy ani problémy při přepínání mezi režimy, navíc GPRS je nyní dostupné téměř všude. U některých složitějších aplikací to však nemusí stačit.

Spojení

Modul je také řízen přes sériový port, se stejnou úrovní - 5V. A tady budeme potřebovat RX i TX. Modul je shield, to znamená, že je nainstalován na Arduinu. Navíc je kompatibilní s mega i uno. Výchozí rychlost je 115200.

Montujeme to na Mega a zde nás čeká první nepříjemné překvapení: TX pin modulu padá na 7. pin Mega. Přerušení nejsou k dispozici na 7. pinu mega, což znamená, že budete muset připojit 7. pin, řekněme, k 6. pinu, na kterém jsou možná přerušení. Tím pádem vyplýtváme jeden Arduino pin. No, za mega to není moc děsivé - koneckonců je dost kolíků. Ale pro Uno je to již složitější (připomínám, že jsou pouze 2 piny, které podporují přerušení - 2 a 3). Jako řešení tohoto problému můžeme navrhnout neinstalovat modul na Arduino, ale připojit jej pomocí vodičů. Pak můžete použít Serial1.

Po připojení se pokusíme „promluvit“ s modulem (nezapomeňte jej zapnout). Zvolíme rychlost portu - 115200 a je dobré, když všechny vestavěné sériové porty (4 na mega, 1 na uno) a všechny softwarové porty fungují na stejné rychlosti. Tímto způsobem můžete dosáhnout stabilnějšího přenosu dat. Nevím proč, i když tuším.

Píšeme tedy primitivní kód pro předávání dat mezi sériovými porty, odesíláme Atz a přijímáme ticho jako odpověď. Co se stalo? Rozlišují se malá a velká písmena. ATZ, jsme v pořádku. Hurá, modul nás slyší. Měli byste nám zavolat ze zvědavosti? ATD +7499... Zazvoní telefon pevné linky, z arduina jde kouř, notebook se vypne. Konvertor Arduino shořel. Byl špatný nápad napájet to 19 volty, i když je napsáno, že to může fungovat od 6 do 20V, doporučuje se 7-12V. Datasheet ke GSM modulu nikde nepíše o spotřebě při zátěži. No, Mega jde do skladu náhradních dílů. Se zatajeným dechem zapínám notebook, který přijímal +19V přes +5V linku z USB. Funguje a ani USB nevyhořelo. Děkujeme společnosti Lenovo, že nás chrání.


Po vyhoření převodníku jsem hledal aktuální spotřebu. Takže vrchol - 2A, typický - 0,5A. To je jednoznačně nad možnosti Arduino převodníku. Vyžaduje samostatné jídlo.

Programování

Modul poskytuje rozsáhlé možnosti přenosu dat. Počínaje hlasovými hovory a SMS a konče samotným GPRS. Navíc je u posledně jmenovaného možné provést HTTP požadavek pomocí AT příkazů. Budete jich muset poslat několik, ale stojí to za to: ve skutečnosti nechcete vytvářet požadavek ručně. S otevřením kanálu přenosu dat přes GPRS existuje několik nuancí - pamatujete si klasické AT+CGDCONT=1, „IP“, „apn“? Takže tady je potřeba to samé, ale trochu mazanější.

Chcete-li získat stránku na konkrétní adrese URL, musíte odeslat následující příkazy:

AT+SAPBR=1,1 //Otevřený operátor (Carrier) AT+SAPBR=3,1,"CONTYPE","GPRS" //typ připojení - GPRS AT+SAPBR=3,1,"APN","internet" //APN, pro Megafon - internet AT+HTTPINIT //Inicializovat HTTP AT+HTTPPARA="CID",1 //ID operátora k použití. AT+HTTPPARA="URL","http://www.example.com/GpsTracking/record.php?Lat=%ld&Lng=%ld" //Skutečná adresa URL po sprintf se souřadnicemi AT+HTTPACTION=0 // Vyžádejte si data pomocí metody GET //čekejte na odpověď AT+HTTPTERM //zastavte HTTP

V důsledku toho, pokud existuje připojení, obdržíme odpověď ze serveru. To znamená, že již víme, jak odeslat data souřadnic, pokud je server přijme přes GET.

Výživa

Vzhledem k tomu, že napájení GSM modulu z Arduino převodníku, jak jsem zjistil, je špatný nápad, bylo rozhodnuto koupit převodník 12v->5v, 3A na stejném ebayi. Modul ale nemá rád 5V napájení. Pojďme na hack: připojte 5V na pin, ze kterého jde 5V z Arduina. Pak vestavěný převodník modulu (mnohem výkonnější než převodník Arduino, MIC 29302WU) udělá z 5V to, co modul potřebuje.

Server

Server napsal primitivní - ukládání souřadnic a kreslení na Yandex.maps. V budoucnu je možné přidat různé funkce, včetně podpory mnoha uživatelů, stavu „zapnuto/nezastřeno“, stavu systémů vozidla (zapalování, světlomety atd.), případně i ovládání systémů vozidla. Samozřejmě s patřičnou podporou trackeru, který se plynule změní v plnohodnotný poplašný systém.

Terénní testy

Takto vypadá sestavené zařízení bez pouzdra:


Po instalaci napájecího měniče a jeho umístění do pouzdra od mrtvého DSL modemu vypadá systém takto:

Připájel jsem dráty a odstranil několik kontaktů z bloků Arduino. Vypadají takto:

Připojil jsem 12V v autě, jel po Moskvě a dostal trať:


Trať se ukáže být rozervaná. Důvodem je, že odesílání dat přes GPRS trvá poměrně dlouho a během této doby nedochází k načítání souřadnic. Jde jednoznačně o chybu programování. Ošetřuje se za prvé okamžitým odesláním paketu souřadnic v průběhu času a za druhé asynchronní prací s modulem GPRS.

Schéma projektu:

Ahoj přátelé, nad našimi hlavami létá velké množství různých kosmických lodí. Je mezi nimi přibližně 90 mimořádně užitečných navigačních satelitů amerického systému GPS, ruského GLONASS, evropského Galileo a čínského BeiDou. A dnes od nich zachytíme signál.

Nejprve trocha teorie: Satelitní navigační systém je síť kosmických lodí, které létají po dříve známých trasách a přesně sledují svou dráhu a trajektorii, nebo se nacházejí ve známém stacionárním bodě na geostacionární nebo geosynchronní dráze. Satelity létají v průměru ve výšce kolem 20 tisíc kilometrů a každý z nich jsou ultra přesné atomové hodiny, které nepřetržitě vysílají svůj čas na celou planetu. aktuální čas.

Rádiový signál šířící se rychlostí světla dorazí na Zemi se zpožděním 60 až 90 milisekund, to závisí na vzdálenosti družice. Znáte-li přesnou polohu zdroje rádiového signálu podle časového zpoždění jeho šíření, můžete zjistit přesnou vzdálenost k satelitu. A pak, triangulací vzdáleností k několika známým objektům, můžete zjistit, kde se ve vesmíru nacházíte.

Představte si, že tato modrá koule je naše planeta. Nad ním ve výšce 20 tisíc kilometrů létají tři satelity. Při měření vzdálenosti k prvnímu dostanete informaci, že jste někde na tomto kruhu - zatím to není příliš informativní. Signál z druhého satelitu objasní vaši polohu do dvou průsečíků bez ohledu na nadmořskou výšku. Signál z třetího navigačního satelitu ukáže výšku těchto bodů nad povrchem a formálně vyřeší navigační rovnici, čímž se vaše poloha zmenší na dvě možná místa. Ve skutečnosti má jedna z těchto souřadnic neuvěřitelné vlastnosti a je vyřazena, čímž se problém zcela vyřeší. Signál ze čtvrté družice dělá totéž - již jednoznačně přesně řeší navigační rovnici.

Měření vzdáleností ke každému následujícímu satelitu zvyšuje přesnost určení polohy a dnes se pohybuje od 1 do 3 metrů při standardní viditelnosti asi 10 navigačních satelitů.

Teorii jsme si utřídili, přejděme k praxi. V současné době se různé navigační moduly prodávají samostatně. Ty nejjednodušší a nejstarší podporují pouze signály z amerického pozorovacího systému GPS, v průměru 5-7 satelitů. Pokročilejší moduly mohou také přijímat signály z ruského souhvězdí GLONASS, což zvyšuje celkový počet pozorovaných satelitů v průměru dvojnásobně. V prodeji jsou i moduly kombinované s kompasem, slouží k přesné navigaci a údržbě kurzu.

Na obrazovce mého telefonu jsou vidět satelity různých navigačních systémů. Kruhy jsou GPS, trojúhelníky jsou GLONASS a hvězdy jsou čínské BeiDou. Můj telefon tedy podporuje tři různé navigační systémy a kombinování signálů z nich zvyšuje přesnost určení polohy. Nyní je nad mou hlavou 28 satelitů a signál je dostupný pouze ze 7. To znamená. můj telefon už předem ví, kde se který satelit nachází. A chybějící signál z 21 satelitů znamená, že jsou mimo dohled. Navigační signál je velmi slabý, od slova VASCHE se téměř neodráží, blokuje jej terén, budovy, střecha auta - jakýkoliv kov nad hlavou nebo na boku. Dobrý příjem narušuje i sníh padající za oknem.

K realizaci projektu budete potřebovat řadu elektronických modulů: programovatelnou platformu Arduino Nano, OLED obrazovku 128 x 32 bodů (připojuje se přes I2C sběrnici), GPS modul pro připojení přes UART, libovolný lithiová baterie s kapacitou nad 200 miliampér, ochranným nabíjecím modulem pro lithium a boost konvertorem pro získání 5 voltů. Mám tady tři různé typy, každý se hodí. Plánoval jsem také použít barevnou RGB LED k indikaci stavu, ale s postupem projektu jsem od toho upustil.

Připojíme obrazovku k Arduinu a narazíme na první obtíž. Standardní knihovna OLED obrazovka zabírá 20 kB, což je 70 % paměti mikrokontroléru a nenechává prakticky žádné místo pro program. Dříve jsem montoval výškoměr a potýkal jsem se s tím, že jakýkoli nový řádek kódu vede k přetečení paměti a mikrokontrolér během provozu zamrzne. Proto toho využiji mnohem víc světelná knihovna. Nepracuje s grafikou a zobrazuje pouze text na OLED obrazovce a zabírá pouze 1 KB paměti.

Samostatně připojuji GPS modul k prkénku a vidím první navigační data - signál z vesmíru byl zachycen a zpracován. Nyní zobrazím informace na obrazovce. Třída! Vidí 4 satelity, nyní 3, a znovu 4, již 5! Pro lepší příjem GPS modul visí za oknem na drátě.

Při vývoji projektu jsem použil GPS moduly odlišné typy. Jednoduchá GPS a kombinovaná GPS s Glonass. Museli jsme provést řadu mnohahodinových experimentů, abychom ověřili stabilitu provozu. Ukázalo se, že moduly fungují, ale s softwarových knihoven Musel jsem makat. Vyzkoušeno několik různé knihovny, a TinyGPS+ byl jediný, který fungoval se všemi moduly GPS najednou.

Obecně knihovna analyzuje protokol NMEA; jednoduše analyzuje data, která modul GPS vyplivne dvakrát za sekundu. Takto vypadá nezpracovaný datový tok.

Výsledkem je, že můj firmware umožňuje připojit téměř jakýkoli modul GPS přes UART s protokolem přenosu dat NMEA. Ve skutečnosti se jedná o většinu modulů, které mají RX a TX piny. Doporučuji vzít GPS modul od Glonass, vidí více satelitů, takže jeho přesnost je vyšší. Odkazy na všechny komponenty a moduly jsou v popisu tohoto videa.

Báječná deska ukázala plnou funkčnost systému, nyní můžete vše sestavit hardwarově. Jako napájení použiji lithiovou baterii, která bude připojena k ochranné desce s nabíjením. Na této desce spodní rezistor R3 nastavuje nabíjecí proud baterie, výchozí je 1 ampér, to je na malé baterie hodně, takže je potřeba odpor vyměnit. Na obrazovce vidíte štítek s hodnotami odporů pro různé nabíjecí proudy. Pokud má vaše baterie kapacitu 500 miliampérhodin, musíte nastavit nabíjecí proud ne vyšší než tato hodnota. Tito. můžete nastavit 200 nebo 300 miliampérů a nepřekročit 500.

Dále je třeba zvýšit napětí, obrazovka a modul GPS jsou napájeny 5 volty. Provedeme to pomocí zesilovače napětí. Ty se obvykle instalují do energetických bank, aby zvýšily napětí z 3,7 na 5 voltů. Budu používat malý zelený modul, může mít výstup až 300 mA a je pro tento projekt více než dostačující.

Firmware jsem aktualizoval, nyní při načítání hlavní obrazovka zobrazuje aktuální přesný čas ze satelitů, počet viditelných satelitů a aktuální rychlost trackeru, naskakuje to, protože je chyba v určení polohy. Po stisknutí tlačítka se obrazovka změní. Zde se zobrazuje aktuální hodnota rychlosti a maximální hodnota za sledované období. Na další obrazovce je aktuální vzdálenost k nulovému bodu, maximální zaznamenaná vzdálenost od něj a počítadlo kilometrů.

Měřím velikosti všech modulů a snažím se je uspořádat co nejkompaktněji. Ale ať jsem se snažil sebevíc, tenká obrazovka se k té široké nevešla. GPS přijímač ohm Proto jsem se rozhodl vyměnit obrazovku za jiný OLED 128x64 pixelů. Díky tomu je ergonomičtější a umožňuje větší tlačítko. OLED obrazovky jsou plně kompatibilní a vyžadují minimální korekci kódu, takže firmware bude dostupný pro obě verze zařízení s malou obrazovkou a velkou.

Montážní schéma je jednoduché. Obrazovku je potřeba připojit ke sběrnici I2C, jedná se o piny A4 a A5, modul gps je připojen k softwarovému sériovému portu na pinech D3 a D4. Tlačítko na kolíku D7. Napájení z baterie přes ochranný modul přetáhněte jej k přepínači, poté k boost konvertoru a připojte Arduino k 5 voltům.

Pro pohodlné umístění komponentů použiji zelené prkénko 7 x 3 centimetry. Aby obrazovka nevisela na konektoru, instaluji ji na plastové stojany s 5 mm distančními podložkami. Mezi obrazovkou a tlačítkem bude přijímač GPS. Na zadní straně desky bude Arduino ovladač, baterie a ochranná deska. Baterie bude používat tenké lithiové 350 miliampérů, pokud se nepletu, tyto se používají v elektronických cigaretách, ale jak jsem řekl, můžete použít jakoukoli lithiovou baterii.

Vše znovu změřím, změřím a připravím návrh pouzdra pro tisk na 3D tiskárně. Doslova 15 minut na webu TinkerCAD a projekt je připraven k tisku. Přenesu soubor na flash disk, spustím a jedeme. Doba tisku je cca 40 minut, jedná se o první zaměřovací těleso pro vyzkoušení umístění modulů.

Deska a tlačítko zapadly na místo, ale obrazovka byla doslova o milimetr kratší a vnitřní stojan překážel. A tak vše sedí a je instalováno na svém místě. Super, upravím projekt a vytisknu finální verze oranžové bydlení. Po dokončení tisku musíte nechat stůl vychladnout a teprve potom část odtrhnout, pak bude přední strana hladká a nebude se pohybovat.

Odlomím a očistím upevňovací hranu plastu. Vzhledem k tomu, že jsem použil ABS plast, podléhá následnému zpracování acetonem. Nanáším štětcem, vrstvy se navíc slepí a tělo se zpevní a získá lesk.

Deska perfektně zapadá do pouzdra, spojovací prvky jsou zarovnány, tlačítko nedrží. Na jednom konci je otvor pro Arduino Nano konektor a na druhé straně pro nabíjení baterie. Ukázalo se, že je trochu užší, tak ho rozšiřuji skalpelem.

Nabíjecí deska má po okrajích výstupky, brání prohloubení konektoru, proto je obrousím jehlovým pilníkem. Nyní je deska dobře na svém místě.

V obecný pohled zařízení bude vypadat takto. Pouzdro je umístěno nahoře. Pod ním bude mikrospínač, prkénko s obrazovkou, modul GPS a tlačítko. Na boku je také stupňovitý napájecí měnič.

Samostatně pro vypínač jsem skalpelem vyřízl otvor do pouzdra, nad tlačítkem. Je zapuštěná do těla a nebude překážet.

Je čas pájet. První kontakt obrazovky připájem k desce, vyzkouším - vše je v pořádku a zbývající tři kontakty můžete připájet. Nyní tlačítko. A nezapomeňte vyčistit tavidlo kartáčem. Připájem dráty k modulu ochrany baterie.

Při připojování nezapomeňte věnovat pozornost barvě vodičů. Nesprávné barvy občas pocházejí z Číny. V tomto případě jsem se rozhodl odpájet konektor a připájet vodiče přímo pro lepší kontakt. Postup je složitý a vyžaduje přesnost a pečlivost při pájení. Kromě toho vyplním kontakty horkým lepidlem, které ochrání dráhy a drát před náhodným vytažením. A rovnou celý GPS modul nacpeme do smršťování, to není nutné, ale navíc to ochrání mechanické poškození a zkraty při montáži na prkénko.

Zesilovací konvertor také obalíme tepelným smršťováním. K zajištění modulů používám oboustrannou pásku. Při instalaci desky se ukázalo, že není dostatek místa pro vodiče, tak jsem vyvrtal otvory do středu a prostrčil tam napájecí vodiče.

Mimochodem doporučuji chladnou aku vrtačku. Funguje na jednu baterii 18650 a umožňuje rychle vyvrtat podobné otvory na deskách a pouzdrech. Dříve jsem pro takovou práci musel Dremel vyndat z pouzdra a zapojit jej do elektrické zásuvky, ale nyní mám vždy toto vrták po ruce.

Horní část desky je sestavena, dráty jsou navlečeny a nyní je třeba nainstalovat spínač. K tomu mu ukousneme přebytečné nožky, k napájení a přerušení napájení stačí dvě. Pájíme na ně drát a jako obvykle vše teplem smrštíme. Dále můžete nainstalovat spínač na jeho místo a naplnit jej horkým lepidlem. Nyní bude vhodné tracker zapínat a vypínat.

Nainstaluji desku do pouzdra a zajistím ji čtyřmi malými šroubky. Odpovídající otvory jsou již na podpěrách skříně. Když jsem z displeje sundal ochrannou fólii, všiml jsem si velké mezery mezi displejem a tělem. Vzal jsem proto kus průhledného obalu od nějaké elektroniky a vyřezal z něj sklo na velikost okna. A přilepil acetonem na plast pouzdra.

Montáž provádíme podle schématu, zde nejsou žádné potíže ani nuance. Jen pozor, plus na plus, mínus na mínus. Vypínač připojíme přímo na výstup nabíjecího modulu. Tím se vypne celý napájecí obvod a zabrání se vybití baterie.

Po připájení všech vodičů k modulům přelepte spodní desku modrou elektro páskou. Arduino ovladač s nabíjením bude nahoře a bez izolace je možnost něco zkratovat.

Připájem ochranný modul a zajistím jej na místě horkým lepidlem.

Pustím kontakty baterie a rychle k nim připájím drát, abych baterii nepřehřál. Na jedné a na druhé straně. Poté se musíte připojit micro USB kabelu a napájení ochranného modulu, tím se aktivuje jeho činnost.

Hotovo, nyní je potřeba nahrát firmware. Připojíme Arduino k počítači, přejdeme na stránku projektu, odkaz na něj je v popisu videa. Stáhněte si archiv, rozbalte soubory, nainstalujte knihovny, otevřete požadovanou verzi firmwaru pro 32 nebo 64 bodovou obrazovku a nahrajte ji do ovladače. Všechno fungovalo napoprvé! Data z GPS tyče. Chladný!

Instaluji ovladač na jeho místo, zapnu autonomní napájení... iiiiiiiii... nic. LED napájení na Arduinu svítí, ale obrazovka se nezapne. A tak se stalo tryndets, důvod, pro který stále nevím. Trvalo mi několik hodin práce, než jsem přiměl sledovač, aby fungoval autonomně z vestavěné baterie.

Nejprve jsem si myslel, že viníkem je malý zvyšovací měnič. Ale kontrola pomocí multimetru ukázala stabilních 5 voltů. Dále jsem připojil autonomní napájecí modul, který mi zbyl z jiného projektu, je postaven na velkém boost konvertoru – a ejhle, tracker se spustil, ale po pár sekundách zamrzl.

Nabil jsem na něm baterii a umístil tracker na okno, abych zachytil satelity. O tři minuty později zachytil signál ze 4 satelitů a určil polohu. No, to znamená, že to funguje a dá se pravděpodobně sestavit? Měníme boost převodník, zřejmě ten malý hodně hučí ze zdroje.

K tomu jsem musel stopovač kompletně rozebrat, odpájet všechny dráty a znovu ho složit. Nový napájecí modul bude umístěn na stejném místě jako ten starý, jen musel být odstraněn jeden stojan, aby se vešel pod obrazovku.

To je vše, zkroutil jsem dráty do copánků, aby nedošlo k rušení. Aaa... tenhle bastard se znovu nezapnul. Přesněji řečeno, zapnulo se a okamžitě zamrzlo s artefakty na obrazovce. Tolik hodin práce a všechno za nic. Výměna převodníku nepomohla.

Zkoušel jsem nainstalovat kondenzátory na zdroj - nic nepomohlo. Tracker odmítal pracovat autonomně, a to jak z boost konvertorů, tak z laboratorního napájení – zamrzl nebo se vůbec nezapnul. Z Arduino USB konektoru to ale zároveň fungovalo perfektně.

Pomocí metody sekvenčního vypínání jsem byl schopen zjistit, že za to může OLED obrazovka - ale stále nechápu proč. Řešení bylo nalezeno náhle. Při další kontrole autonomního napájení jsem omylem přivedl 5 voltů na pin VIN. Podotýkám, že tento pin! Ne! navržený pro napájení 5 voltů a vyžaduje napětí 7 až 12 voltů.

Ale přesto se tracker okamžitě spustil a začal pracovat stabilně. Tito. Ukazuje se, že malý stabilizátor nebyl zdrojem problému, bylo to něco jiného.

Zároveň jsem se rozhodl zkontrolovat aktuální spotřebu. Z 5 voltů spotřeboval sledovač asi 70 miliampérů. A ze 4 voltů přes posilovací převodník to bylo asi 110 miliampérů. Moje malá 350 miliampérová baterie tedy vydrží tři hodiny životnost baterie. A ještě jsem neoptimalizoval napájení, můžete vypnout LED diody, které stále svítí, a přesto šetřit baterii.

Tracker začal fungovat naprosto stabilně, nechal jsem ho na okně a po pár minutách zachytil 4 satelity. Skvělý

Pokud máte zájem mi pomoci pochopit důvod podivného chování Arduina, zde je úvod:

1 – Tracker funguje, pokud je napájen přes Arduino USB konektor.

2 – Sledovač zamrzne a nezapne se, pokud jej napájíte přes pin Arduino 5V přivedením 5 voltů z jakéhokoli zdroje napájení.

3 – Sledovač zamrzne a nezapne se, pokud je na něj přes pin Arduino VIN přivedeno 7 voltů nebo více.

4 – Sledovač funguje, pokud je napájen nestandardním napětím 5 voltů přes stejný pin VIN.

Hotovým zařízením je univerzální autonomní rychloměr, dálkoměr, počítadlo kilometrů a satelitní přesné hodiny v jednom pouzdře.

Na hlavní obrazovce po načtení se nahoře zobrazuje aktuální čas a datum v Greenwichi, na druhém řádku je aktuální rychlost 0,3 kilometru za hodinu a hodnota maximální rychlosti, která byla zaznamenána od doby zapnutí - 26 kilometrů za hodinu. Na třetím řádku je aktuální vzdálenost k nulovému bodu 530 metrů a maximální vzdálenost, která byla dosažena od zapnutí, je 580 metrů. Na čtvrtém řádku počítadlo kilometrů ukazuje 923 metrů a počet použitých satelitů.

Znaky na spodním řádku představují množství dat přijatých z modulu GPS.

Po krátkém stisknutí tlačítka se zobrazení na obrazovce změní a při delším podržení si tracker zapamatuje aktuální polohu jako nulový referenční bod pro měření vzdálenosti. Druhá obrazovka zobrazuje aktuální a maximální rychlost. Třetí obrazovka obsahuje informace o vzdálenosti k nulovému bodu. Čtvrtá obrazovka je počítadlo kilometrů. Pátá zeměpisná šířka a délka.

Počítadlo kilometrů a maximální hodnoty můžete vynulovat dlouhým stisknutím tlačítka na obrazovce s těmito parametry. Tito. přejděte na počítadlo kilometrů a podržte stisknuté tlačítko pro jeho resetování.

Pojďme k testování. Nyní sledovač vidí 12 satelitů. Nastavil jsem aktuální nulový bod a vynuloval počítadlo kilometrů. To samé dělám na tachometru auta. Po ujetí 1,2 kilometru podle rychloměru auta jsem na GPS trackeru viděl stejných 1205 metrů. Aktuální vzdálenost k nulovému bodu v přímce je 0,93 kilometru. A podle mapy těch samých 930 metrů, zatím je vše přesné.

Rozhodl jsem se měřit delší vzdálenost. Znovu jsem vynuloval hodnoty na trackeru a autě. Po ujetí 8,4 kilometru jsem na trackeru zjistil, že vzdálenost je kratší - pouze 7974 metrů. V tomto případě je aktuální vzdálenost k nulovému bodu 4 930 metrů. Zkontrolujeme to na mapě, vychází to velmi přesně, stejných 4 930 metrů. Není jasné, ale proč potom počítadlo kilometrů leží na 400 metrech a které počítadlo kilometrů leží, na autě nebo na GPS.

Dobře, je čas tisknout zadní kryt a budeme testovat znovu. zavírám. Hmotnost hotového zařízení se ukázala být 55 gramů, hodně, ale ne kritická - na konci vám ukážu, jak ji snížit.

Přišel jsem na kluziště a rozhodl se změřit hokejistovu rychlost. Sakra, ještě potřebuje sundat kryty kvůli rychlosti. Výsledkem byla divoká rychlost jako „ruská raketa“ - 5 kilometrů za hodinu. Chodil jsem, a to vše proto, že strop na kluzišti je izolován reflexní fólií, aby neprochladl. Existuje signál ze satelitů, ale není přesný.

Udělejme poslední test s mobilní telefon. Telefon vidí 7 satelitů a tracker 9. Začnu protokolovat a resetuji počítadlo kilometrů na trackeru. No... pojďme. Po ujetí tří kilometrů ukazovaly telefon a tracker na tachometru shodné hodnoty. 3017 versus 3021 metrů je super výsledek, takovou přesnost jsem nečekal.

Jenže počítadlo kilometrů selhalo, celých 12 tisíc kilometrů. Ne kyselé. Dříve, když jsem ladil program, už jsem se s takovou závadou setkal a tracker byl okamžitě posunut o 7 tisíc kilometrů. Když jsem se vrátil domů, vytvořil jsem v Googlu bod s nulovou zeměpisnou šířkou a délkou. Ukázalo se, že se nachází v Atlantském oceánu, nedaleko pobřeží Ghany. Když jsem změřil vzdálenost od něj k mému umístění, dostal jsem stejných 7 tisíc kilometrů. Ukázalo se, že modul GPS někdy přeskakuje nuly podél souřadnic. To lze snadno opravit přidáním jediné podmínky do programového kódu. A tato závada nebyla během testů pozorována.

Myslím, že tracker dopadl skvěle, toto je moje první zkušenost s přímou prací s GPS moduly. Proč je to potřeba? Takový tracker může sloužit jako autonomní rychloměr nebo nezávislý počítadlo kilometrů. Dá se umístit na kolo, auto, hračku nebo kvadrokoptéru. Umožňuje také měřit vzdálenost v přímce k danému bodu, přičemž jsou uloženy nulové hodnoty energeticky nezávislá paměť. Pamatuje si maximální dosaženou rychlost a hodnoty vzdálenosti. To vše dělá autonomně a nezávisí na nikom jiném než na satelitech. A samozřejmě se jedná o přesné hodiny. Potřebuji to pro měření maximální rychlosti a maximální vzdálenosti od objektů. To je pravda, musíte přidat další výšku obrazovky, abyste změřili, jak vysoko stoupáte!

Pojďme si promluvit o tom, jak můžete snížit váhu; nejjednodušší způsob, jak toho dosáhnout, je sestavit sledovač na plošinu Arduino Pro Mini na 3,3V. Pak nebudete potřebovat boost převodník, místo toho bude malý lineární pahýl na 3,3 voltu, GPS modul na toto napětí funguje bez problémů a na obrazovce budete muset obejít stabilizátor napájení.

No, hned odpovím na otázku: je možné přidat GSM modul a ovládat tracker pomocí SMS? Ano můžeš. K tomu bude potřeba kromě samotného modulu přidat do programového kódu také zpracování SMS příkazů a mělo by se jednat o samostatný projekt.

To je pro dnešek vše, pokud se vám toto video líbilo, tak jsem si jistý, že se vám bude líbit a sdílejte odkaz na video se svými přáteli.

Díky za sledování, hodně štěstí všem a uvidíme se u nových videí! Ahoj!

Data se ukládají do tabulkového procesoru dataGPS.csv, jehož formát odpovídá požadavkům služby Moje mapy Google.

    Programovací jazyk: Arduino (C++)

Video návod

Co potřebuješ

Jak sestavit

gps-tracker.ino // knihovna pro práci se zařízeními přes SPI#zahrnout // knihovna pro práci s SD kartou#zahrnout // knihovna pro práci se zařízením GPS#zahrnout // vytvoří objekt třídy GPS a předá mu objekt Serial1 GPS gps (Serial1) ; // LED pin#define LED_PIN A0 // pin tlačítka #define BUTTON_PIN 13 // pin CS micro-sd karta#define CHIP_SELECT_PIN 9 // časový interval pro zápis dat na kartu#define INTERVAL 5000 // nastavení velikosti pole pro čas, datum, zeměpisnou šířku a délku#define MAX_SIZE_MASS 16 // pole pro uložení aktuálního času doba znaku[MAX_SIZE_MASS]; // stav záznamu bool stateRec = false ; // si pamatuje aktuální čas long startMillis = millis() ; void setup() ( // otevřete sériový port pro sledování akcí v programu Serial.begin(115200); // počkejte, až se otevře monitor sériový port // za účelem sledování všech událostí v programu// while (!Serial) ( // ) Serial.print ("Sériové spuštění OK \r\n") ; // otevření sériového připojení s modulem GPS Serial1.begin(115200); // nastavte LED do výstupního režimu pinMode(LED_PIN, OUTPUT) ; // nastavte tlačítko do režimu přihlášení pinMode(BUTTON_PIN, INPUT_PULLUP) ; // výstup informace o inicializaci na sériový port Serial.println("Inicializace SD karty...") ; // inicializovat SD kartu while (! SD.begin (CHIP_SELECT_PIN) ) ( Serial.println ("Karta selhala nebo není přítomna" ) ; delay(1000 ) ; ) // výstup informací na sériový port Serial.println("Karta inicializována"); // vytvoří objekt dataFile třídy File pro práci se soubory Soubor dataFile = SD.open("dataGPS.csv" , FILE_WRITE) ; // pokud soubor existuje if (dataFile) ( // zapsat název budoucích dat na paměťovou kartu dataFile.println("Čas, souřadnice, rychlost" ) ; // zavřete soubor dataFile.close(); Serial.println("Uložit OK"); ) else ( Serial.println ("Chyba při otevírání test.csv" ) ; ) ) void loop() ( // Zaznamenejte stisk tlačítka if (! digitalRead(BUTTON_PIN) ) ( // změňte stav „nahrávání“ / „nezápis“ na paměťovou kartu stateRec = ! stateRec; // změna stavu indikační LED digitalWrite(LED_PIN, stateRec) ; ) // pokud data pocházejí z GPS modulu if (gps.available()) ( // číst data a analyzovat gps.readParsing(); // kontrola stavu modulu GPS switch (gps.getState () ) ( // vše je v pořádku case GPS_OK: Serial.println ("GPS je v pořádku" ) ; // pokud zadaný časový interval uplynul if (millis() - startMillis > INTERVAL && stateRec) ( // uložení dat na paměťovou kartu saveSD() ; // zapamatovat si aktuální čas startMillis = millis() ; ) přestávka ; // případ chyby dat GPS_ERROR_DATA: Serial.println("GPS chybová data" ); přestávka ; // žádné spojení se satelity pouzdro GPS_ERROR_SAT: Serial.println ( "GPS bez připojení k satelitům"); přestávka ; ))) // funkce pro ukládání dat na paměťovou kartu void saveSD() ( Soubor dataFile = SD.open("dataGPS.csv" , FILE_WRITE) ; // pokud soubor existuje a byl otevřen if (dataFile) ( // přečte aktuální čas gps.getTime(čas, MAX_SIZE_MASS); // zapsat čas na paměťovou kartu dataFile.print(" \" " ); dataFile.print(time); dataFile.print(" \" " ); dataFile.print ("," ) ; dataFile.print(" \" " ) ; // čtení a zápis souřadnic zeměpisné šířky a délky na paměťovou 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žit OK"); ) else ( Serial.println ("Chyba při otevírání souboru test.csv" ) ; ) )