Dari-to-yourself GPS izsekotājs, kura pamatā ir GY-NEO6M, ir vienkāršs. Īss Arduino GPS izsekotāja Hatire Arduino iestatījumu loga apraksts

Pēc vairākiem eksperimentiem ar Arduino, nolēmu uztaisīt vienkāršu un ne pārāk dārgu GPS izsekotāju ar koordinātēm, kuras pa GPRS nosūtītas uz serveri.
Lietots Arduino Mega 2560 ( Arduino Uno), SIM900 - GSM/GPRS modulis (informācijas nosūtīšanai uz serveri), GPS uztvērējs SKM53 GPS.

Viss tika iegādāts ebay.com, kopā apmēram 1500 rubļu (apmēram 500 rubļu par arduino, nedaudz mazāk par GSM moduli, nedaudz vairāk par GPS).

GPS uztvērējs

Vispirms jums ir jāsaprot, kā strādāt ar GPS. Izvēlētais modulis ir viens no lētākajiem un vienkāršākajiem. Tomēr ražotājs sola akumulatoru, lai saglabātu satelīta datus. Pēc datu lapas aukstajam iedarbināšanai vajadzētu aizņemt 36 sekundes, taču manos apstākļos (10.stāvs no palodzes, tuvumā nevienas ēkas) tas prasīja pat 20 minūtes. Nākamais starts taču jau 2 minūtes.

Svarīgs arduino savienoto ierīču parametrs ir enerģijas patēriņš. Pārslogojot Arduino pārveidotāju, tas var izdegt. Izmantotā uztvērēja maksimālais enerģijas patēriņš ir 45 mA pie 3,3 V. Kāpēc specifikācijā būtu jānorāda strāvas stiprums pie sprieguma, kas atšķiras no vajadzīgā (5V), man ir noslēpums. Tomēr Arduino pārveidotājs izturēs 45 mA.

Savienojums
GPS netiek kontrolēts, lai gan tam ir RX tapa. Kādam nolūkam nav zināms. Galvenais, ko varat darīt ar šo uztvērēju, ir nolasīt datus no TX kontakta, izmantojot NMEA protokolu. Līmeņi - 5V, tikai priekš Arduino, ātrums - 9600 bodi. Es savienoju VIN ar arduino VCC, GND ar GND, TX ar RX no atbilstošās sērijas. Es vispirms nolasīju datus manuāli, pēc tam izmantojot TinyGPS bibliotēku. Pārsteidzoši, viss ir lasāms. Pēc pārejas uz Uno man nācās izmantot SoftwareSerial, un tad sākās problēmas - dažas ziņojuma rakstzīmes tika pazaudētas. Tas nav īpaši svarīgi, jo TinyGPS izslēdz nederīgus ziņojumus, taču tas ir diezgan nepatīkami: jūs varat aizmirst par 1 Hz frekvenci.

Īsa piezīme par SoftwareSerial: Uno nav aparatūras portu (izņemot to, kas ir pievienots USB seriālajai ierīcei), tāpēc jums ir jāizmanto programmatūra. Tātad tas var saņemt datus tikai par tapu, uz kuras plate atbalsta pārtraukumus. Uno gadījumā tie ir 2 un 3. Turklāt tikai viens šāds ports var saņemt datus vienlaikus.

Šādi izskatās “pārbaudes stends”.

GSM uztvērējs/raidītājs


Tagad nāk interesantākā daļa. GSM modulis - SIM900. Tā atbalsta GSM un GPRS. Netiek atbalstīts ne EDGE, ne īpaši 3G. Koordinātu datu pārraidei tas droši vien ir labi - pārslēdzoties starp režīmiem, nebūs kavēšanās vai problēmu, turklāt GPRS tagad ir pieejams gandrīz visur. Tomēr dažām sarežģītākām lietojumprogrammām ar to var nepietikt.

Savienojums
Modulis tiek vadīts arī caur seriālo portu, ar tādu pašu līmeni - 5V. Un šeit mums būs nepieciešams gan RX, gan TX. Modulis ir vairogs, tas ir, tas ir instalēts Arduino. Turklāt tas ir saderīgs gan ar mega, gan ar uno. Noklusējuma ātrums ir 115 200.

Mēs to saliekam uz Mega, un šeit mūs sagaida pirmais nepatīkamais pārsteigums: moduļa TX tapa nokrīt uz Mega 7. tapas. Uz mega 7. kontaktdakšas pārtraukumi nav pieejami, tas nozīmē, ka jums būs jāpievieno 7. kontakts, teiksim, ar 6. kontaktu, uz kura ir iespējami pārtraukumi. Tādējādi mēs iztērēsim vienu Arduino tapu. Nu, mega tas nav ļoti biedējoši - galu galā ir pietiekami daudz piespraudes. Bet Uno tas jau ir sarežģītāk (atgādinu, ka ir tikai 2 kontakti, kas atbalsta pārtraukumus - 2 un 3). Kā risinājumu šai problēmai mēs varam ieteikt nevis instalēt moduli Arduino, bet savienot to ar vadiem. Pēc tam varat izmantot Serial1.

Pēc savienojuma izveides mēs cenšamies “runāt” ar moduli (neaizmirstiet to ieslēgt). Mēs izvēlamies porta ātrumu - 115200, un ir labi, ja visi iebūvētie seriālie porti (4 uz mega, 1 uz uno) un visi programmatūras porti darbojas vienā ātrumā. Tādā veidā jūs varat sasniegt stabilāku datu pārraidi. Es nezinu, kāpēc, lai gan varu uzminēt.

Tātad, mēs rakstām primitīvu kodu datu pārsūtīšanai starp seriālajiem portiem, nosūtām atz un saņemam klusumu kā atbildi. Kas notika? Ak, reģistrjutīgs. ATZ, mums viss ir kārtībā. Urā, modulis mūs dzird. Vai ziņkārības dēļ mums vajadzētu piezvanīt? ATD +7499... Zvana fiksētais telefons, no arduino nāk dūmi, klēpjdators izslēdzas. Arduino pārveidotājs izdega. Bija slikta doma barot to ar 19 voltiem, lai gan rakstīts, ka var darboties no 6 līdz 20 V, ieteicams 7-12 V. GSM moduļa datu lapā nekur nav teikts par enerģijas patēriņu slodzes laikā. Nu Mega iet uz rezerves daļu noliktavu. Ar aizturētu elpu ieslēdzu portatīvo datoru, kas pa +5V līniju saņēma +19V no USB. Tas darbojas, un pat USB neizdegās. Paldies Lenovo par mūsu aizsardzību.

Pēc pārveidotāja izdegšanas es meklēju pašreizējo patēriņu. Tātad, maksimums - 2A, tipisks - 0,5A. Tas nepārprotami pārsniedz Arduino pārveidotāja iespējas. Nepieciešama atsevišķa barība.

Programmēšana
Modulis nodrošina plašas datu pārraides iespējas. Sākot no balss zvaniem un SMS un beidzot ar pašu GPRS. Turklāt pēdējo ir iespējams veikt HTTP pieprasījums izmantojot AT komandas. Jums būs jānosūta vairāki, taču tas ir tā vērts: jūs īsti nevēlaties izveidot pieprasījumu manuāli. Ar datu pārraides kanāla atvēršanu caur GPRS ir pāris nianses - atceries klasisko AT+CGDCONT=1, “IP”, “apn”? Tātad šeit ir vajadzīgs tas pats, tikai nedaudz viltīgāks.

Lai iegūtu lapu ar noteiktu URL, jums ir jānosūta šādas komandas:
AT+SAPBR=1,1 //Atvērts mobilo sakaru operators (Carrier) AT+SAPBR=3,1"CONTYPE","GPRS" //savienojuma veids - GPRS AT+SAPBR=3,1"APN","internets" //APN, Megafon - internets AT+HTTPINIT //Inicializēt HTTP AT+HTTPPARA="CID",1 //Izmantojamais mobilo sakaru operatora ID. AT+HTTPPARA="URL","http://www.example.com/GpsTracking/record.php?Lat=%ld&Lng=%ld" //Faktiskais URL pēc sprintf ar koordinātām AT+HTTPACTION=0 // Pieprasīt datus, izmantojot GET metodi //gaidiet atbildi AT+HTTPTERM //apturiet HTTP

Rezultātā, ja būs savienojums, mēs saņemsim atbildi no servera. Tas nozīmē, ka mēs jau zinām, kā nosūtīt koordinātu datus, ja serveris tos saņem, izmantojot GET.

Uzturs
Tā kā GSM moduļa barošana no Arduino pārveidotāja, kā noskaidroju, ir slikta doma, tika nolemts tajā pašā ebay iegādāties 12v->5v, 3A pārveidotāju. Tomēr modulim nepatīk 5V barošanas avots. Iesim uzlauzt: pievienojiet 5V kontaktam, no kura 5V nāk no arduino. Tad moduļa iebūvētais pārveidotājs (daudz jaudīgāks par Arduino pārveidotāju MIC 29302WU) no 5V izveidos modulim nepieciešamo.

Serveris

Serveris uzrakstīja primitīvu - saglabā koordinātas un zīmēja Yandex.maps. Nākotnē ir iespējams pievienot dažādas funkcijas, tostarp atbalstu daudziem lietotājiem, statusu “bruņots/neapbruņots”, transportlīdzekļa sistēmu stāvokli (aizdedze, priekšējie lukturi utt.), un, iespējams, pat transportlīdzekļa sistēmu vadību. Protams, ar atbilstošu izsekotāja atbalstu, kas vienmērīgi pārvēršas par pilnvērtīgu signalizācijas sistēmu.

Lauka testi

Šādi izskatās saliktā ierīce bez korpusa:

Pēc strāvas pārveidotāja uzstādīšanas un ievietošanas korpusā no mirušā DSL modema sistēma izskatās šādi:

Es pielodēju vadus un noņēmu vairākus kontaktus no Arduino blokiem. Tie izskatās šādi:

Mašīnā pieslēdzu 12V, apbraucu Maskavu un ieguvu trasi:


Trases punkti atrodas diezgan tālu viens no otra. Iemesls ir tāds, ka datu nosūtīšana, izmantojot GPRS, aizņem salīdzinoši ilgu laiku, un šajā laikā koordinātas netiek nolasītas. Tā nepārprotami ir programmēšanas kļūda. Tas tiek apstrādāts, pirmkārt, nekavējoties nosūtot koordinātu paketi laika gaitā, un, otrkārt, asinhroni strādājot ar GPRS moduli.

Satelītu meklēšanas laiks automašīnas pasažiera sēdeklī ir pāris minūtes.

secinājumus

Ir iespējams izveidot GPS izsekotāju vietnē Arduino ar savām rokām, lai gan tas nav mazsvarīgs uzdevums. Šobrīd galvenais jautājums ir, kā noslēpt ierīci automašīnā, lai tā netiktu pakļauta kaitīgiem faktoriem (ūdens, temperatūra), netiktu pārklāta ar metālu (GPS un GPRS tiks ekranēti) un nebūtu īpaši pamanāma. Pagaidām tas vienkārši atrodas salonā un savienojas ar cigarešu aizdedzinātāja ligzdu.

Nu, mums arī jālabo kods, lai celiņš būtu vienmērīgāks, lai gan izsekotājs jau veic galveno uzdevumu.

Lietotas ierīces

  • Arduino Mega 2560
  • Arduino Uno
  • GPS SkyLab SKM53
  • SIM900 bāzes GSM/GPRS vairogs
  • DC-DC 12v->5v 3A pārveidotājs

Personīgie GPS raidītāji

Mūsdienās progress notiek tādā tempā, ka ierīces, kas iepriekš bija apjomīgas, dārgas un ļoti specializētas, ātri zaudē izmēru, svaru un cenu, bet iegūst daudzas jaunas funkcijas.

Tā ierīces, kuru pamatā ir GPS tehnoloģija, nokļuva līdz kabatas sīkrīkiem un stabili tur iekārtojās, sniedzot cilvēkiem jaunas iespējas. Īpaši vērts izcelt atsevišķus GPS raidītājus.

Būtībā tie ir tie paši GPS izsekotāji, tikai paredzēti lietošanai nevis transportlīdzeklī, bet gan cilvēkam ikdienas dzīvē.

Atkarībā no modeļa vairākas dažādas ierīces. Vienkāršākajā veidā tā ir vienkārši maza kaste bez displeja, kas ļauj kontrolēt bērnu, dzīvnieku vai kādu citu priekšmetu kustības, uz kura tas ir fiksēts.

Tā iekšpusē atrodas GPS modulis, kas nosaka koordinātas uz zemes, GSM/GPRS modulis, kas pārraida informāciju un saņem vadības komandas, kā arī barošanas avots, kas nodrošina autonomu darbību uz ilgu laiku.

GPS raidītāju funkcionalitāte

Palielinoties funkcionalitātei, parādās šādas ierīces iespējas:


Iespējas GPS raidītājiem

Atkarībā no konfigurācijas raidītāja korpusi var ievērojami atšķirties. Dažādi modeļi ir nāvessods formā mobilos tālruņus, klasiskos navigatorus vai pat rokas pulksteņus.

Īpašo versiju krāsains dizains un noderīgi papildinājumi ļauj bērniem izturēties pret šīm ierīcēm nevis kā pret “vecāku spiegiem”, bet gan kā moderniem un praktiskiem sīkrīkiem.

Kā priekšrocību ir vērts pieminēt faktu, ka daudzas ierīces versijas var iztikt bez abonēšanas maksa specializēto operatoru pakalpojumiem, un visa nepieciešamā informācija klientam tiek nosūtīta tieši ar interneta vai SMS īsziņām, kas ļauj ievērojami ietaupīt uz šādu iekārtu apkopi.

Raksti par GPS sekotājiem

Šajā rakstā es parādīšu, kā izmantot gsm moduli ar arduino, izmantojot piemēru sim800L. Tās pašas instrukcijas ir diezgan piemērotas, lai izmantotu jebkurus citus gsm moduļus, piemēram, sim900 utt., Jo visi moduļi darbojas aptuveni vienādi - tā ir AT komandu apmaiņa caur portu.

Parādīšu moduļa lietošanu ar arduino, izmantojot SMS releja piemēru, ar kuru var attālināti vadīt ierīci, izmantojot SMS komandas. To var izmantot kopā ar automašīnu signalizāciju utt.

Modulis ir savienots ar Arduino, izmantojot programmatūras seriālā porta UART saskarni, kas darbojas ar 2 un 3 Arduino nano digitālajām tapām.

Darbs ar Arduino ar GSM moduļiem

Lai darbinātu moduli, ir nepieciešams spriegums diapazonā no 3,6 V līdz 4,2 V, tas nozīmē, ka jums būs jāizmanto papildu sprieguma stabilizators, jo Arduino ir uzstādīts 3,3 voltu stabilizators, kas nav piemērots moduļa barošanai. , otrs iemesls papildu stabilizatora uzstādīšanai ir tas, ka GSM modulis ir nopietna slodze, jo tam ir vājš raidītājs, kas nodrošina stabils savienojums ar mobilo staciju. Arduino nano barošana tiek piegādāta uz VIN tapas - tas ir Arduino iebūvēts stabilizators, kas nodrošina moduļa darbību plašā sprieguma diapazonā (6-10V). Releja modulis saskaņā ar doto programmas tekstu ir savienots ar Arduino nano 10. tapu, un to var viegli nomainīt uz jebkuru citu, kas darbojas kā digitālā izeja.

Tas darbojas šādi: ievietojiet SIM karti GSM modulī, ieslēdziet strāvu un nosūtiet SMS ar tekstu “1” uz numuru SIM kartes lai ieslēgtu mūsu releju, lai to izslēgtu, nosūtām SMS ar tekstu “0”.

#iekļauts
SoftwareSerial gprsSerial(2, 3); // iestatiet 2. un 3. tapas programmatūras portam
int LedPin = 10; // stafetei

nederīgs iestatījums ()
{
gprsSerial.begin(4800);
pinMode(LedPin, OUTPUT);

// ziņojumu saņemšanas iestatīšana

gprsSerial.print("AT+CMGF=1\r");
gprsSerial.print("AT+IFC=1, 1\r");
kavēšanās (500);
gprsSerial.print("AT+CPBS=\"SM\"\r");
kavēšanās (500); // aizkave komandu apstrādei
gprsSerial.print("AT+CNMI=1,2,2,1,0\r");
kavēšanās (700);
}

Virkne currStr = "";
// ja šī rinda ir ziņojums, tad mainīgajam būs vērtība True
Būla vērtība isStringMessage = false;

tukšuma cilpa ()
{
if (!gprsSerial.available())
atgriešanās;

char currSymb = gprsSerial.read();
if ('\r' == currSymb) (
if (isStringMessage) (
// ja pašreizējā rinda ir ziņojums, tad...
if (!currStr.compareTo("1")) (
digitalWrite (LedPin, HIGH);
) else if (!currStr.compareTo("0")) (
digitalWrite (LedPin, LOW);
}
isStringMessage = false;
) cits (
if (currStr.startsWith("+CMT")) (
// ja pašreizējā rinda sākas ar “+CMT”, tad nākamais ziņojums
isStringMessage = true;
}
}
currStr = "";
) else if ('\n' != currSymb) (
currStr += String(currSymb);
}
}

Raksta video versija:

Birkas: #Arduino, #SIM800L

Jūsu atzīme:

Šajā rakstā izmantotie produkti:

← GPS reģistrētājs arduino | Releja vadība caur COM portu →

GSM skeneris uz RTL-SDR

| mājas| angļu | Attīstība | FAQ |

Skenera galvenās īpašības

GSM skeneris skenē GSM lejupsaites kanālus un parāda informāciju par signāla stiprumu un kanālu īpašumtiesībām vienam no trim galvenajiem operatoriem. šūnu komunikācija MTS, Beeline un Megafon. Pamatojoties uz sava darba rezultātiem, skeneris ļauj saglabāt identifikatoru sarakstu bāzes stacijas MCC, MNC, LAC un CI visiem skenētajiem kanāliem.
GSM skeneri var izmantot, lai novērtētu GSM signāla līmeni un salīdzinātu signāla kvalitāti dažādi operatori, radio pārklājuma novērtējumi, lemjot par mobilo signālu pastiprinātāju uzstādīšanu un to parametru pielāgošanu, izglītības nolūkos utt.
Skeneris darbojas operētājsistēmā Windows un izmanto vienkāršu un lētu uztvērēju - RTL-SDR. Par RTL-SDR varat lasīt:
RTL-SDR (RTL2832U) un programmatūras definētas radio ziņas un projekti,
RTL-SDR — OsmoSDR,
RTL-SDR krievu valodā.
RTL-SDR parametri nosaka skenera galvenās īpašības. Protams, GSM skeneris nevar aizstāt parasto mērīšanas iekārtu.
Skeneris tiek izplatīts bez maksas, bez lietošanas ierobežojumiem.
Pašreizējā versija atbalsta joslu GSM 900 un neatbalsta GSM 1800. To nosaka fakts, ka RTL-SDR darbības frekvence ar uztvērēju R820T ir ierobežota līdz 1760 MHz. Ir cerība, ka eksperimentālā RTL-SDR draivera izmantošana ļaus darboties vismaz daļā no 1800 MHz diapazona.

Skenera palaišana

Jaunāko skenera versiju var lejupielādēt no šīs saites. Vienkārši izpakojiet failu ērtā vietā un palaidiet gsmscan.exe.
Iepriekšējās versijas skeneris, saite uz repozitoriju ar avotiem un cita ar izstrādi saistīta informācija ir izstrādes lapā.
Lai skeneris darbotos, ir jāinstalē RTL-SDR draiveri; ja tie vēl nav instalēti, to var ērti izdarīt, izmantojot Zadig programmu, lai aprakstītu instalēšanas procedūru.

Izmantojot skeneri

Tālāk ir parādīts skenera programmas loga skats:

Horizontālā ass parāda GSM kanāla numuru ARFCN vai MHz formā, un vertikālā ass parāda signāla līmeni dBm. Līnijas augstums parāda signāla stiprumu.

GSM moduļa NEOWAY M590 komunikācija ar Arduino

Ja BS identifikatori ir veiksmīgi atšifrēti un tie atbilst trīs lielāko telekomunikāciju operatoru identifikatoriem, līnijas tiek nokrāsotas atbilstošās krāsās.
Ekrāna augšdaļā esošie nolaižamie saraksti ļauj izvēlēties SDR uztvērēju, ja ir pievienoti vairāki, diapazons GSM darbs 900 vai GSM 1800 un horizontālās ass vienības ARFCN vai MHz.
Pogas ļauj saglabāt atskaiti par skenera darbību atšifrēto bāzes staciju saraksta veidā, notīrīt BS dekodēšanas rezultātus un iegūt informāciju par programmu.

Darba principi un iezīmes.

Darbības laikā programma skenē darbības frekvenču diapazonu ar soli 2,0 MHz (10 GSM kanāli) un digitalizē signālu ar iztveršanas frekvenci 2,4 MHz. Skenēšanas process sastāv no ātras caurlaides visam diapazonam, lai izmērītu signāla stiprumu, un lēnas pārejas, lai atšifrētu BS identifikatorus.

Viens dekodēšanas solis tiek veikts pēc visa diapazona šķērsošanas, lai izmērītu jaudu. Tādējādi GSM 900 diapazonā signāla līmenis tiek atjaunināts aptuveni reizi 2 sekundēs, un pilnīga dekodēšanas gājiens aizņem apmēram 1 minūti.
No RTL-SDR saņemtā signāla sliktās kvalitātes dēļ BS apraides vadības kanāla (BCCH) sistēmas informācijas (SI) pareizas dekodēšanas iespējamība nav augsta. Signāla līmeņa svārstības vairāku ceļu izplatīšanās rezultātā samazina arī sistēmas informācijas dekodēšanas iespējamību. Šo iemeslu dēļ, lai iegūtu BS identifikatorus, skenerim ir jāuzkrāj informācija aptuveni 10 minūšu laikā. Bet pat šajā gadījumā ne visi kanāli nodrošina šī vieta pietiekams signāla līmenis un kvalitāte dekodēšanai pat ar visideālāko uztvērēju. Turklāt ne visi GSM kanāli tiek izmantoti, lai darbotos GSM standarts, kā redzams attēlā iepriekš, kanālus 975–1000 aizņem Megafon, lai strādātu pie UMTS standarts.
Darbības laikā skeneris pievieno sistēmas informāciju par jauniem dekodētiem kanāliem vispārējam informācijas masīvam par kanāliem. Taču informācija par iepriekš dekodētajiem kanāliem netiek izdzēsta, ja sistēmas informācija netiek dekodēta šajā darbībā, un tā paliek masīvā. Lai notīrītu šo informāciju, izmantojiet pogu, lai notīrītu BS dekodēšanas rezultātus.
Noklikšķinot uz pogas Saglabāt atskaiti, uzkrātie rezultāti tiek saglabāti teksta fails ar nosaukumu, kas sastāv no programmas nosaukuma, datu saglabāšanas datuma un laika. Tālāk ir sniegts atskaites faila daļas piemērs:
Skeneris ir paredzēts darbam operētājsistēmās Windows 7, 8.1 un 10. Darbs tika pārbaudīts ar trim RTL-SDR eksemplāriem ar uztvērēju R820T, citi skaņotāju veidi netika pārbaudīti.
Darbībai operētājsistēmā Windows XP ir izveidota īpaša programmas versija, kas darbojas vairākas reizes lēnāk nekā standarta versija.

Attīstība.

Skenera programma tiek piegādāta tāda, kāda tā ir, bez jebkādām garantijām vai saistībām. Ja jums ir pamatotas idejas, kā paplašināt skenera funkcionalitāti vai uzlabot veiktspēju, esam gatavi apspriest to ieviešanas iespēju.
Jūs varat piedalīties skenera izstrādē, lai to izdarītu, apmeklējiet izstrādes lapu.
Plānota GSM skenera tālāka attīstība, iespējams, ar Jūsu līdzdalību.

Pēc vairākiem eksperimentiem ar Arduino, nolēmu uztaisīt vienkāršu un ne pārāk dārgu GPS izsekotāju ar koordinātēm, kuras pa GPRS nosūtītas uz serveri.
Lietots Arduino Mega 2560 (Arduino Uno), SIM900 - GSM/GPRS modulis (informācijas nosūtīšanai uz serveri), GPS uztvērējs SKM53 GPS.

Viss tika iegādāts ebay.com, kopā apmēram 1500 rubļu (apmēram 500 rubļu par arduino, nedaudz mazāk par GSM moduli, nedaudz vairāk par GPS).

GPS uztvērējs

Vispirms jums ir jāsaprot, kā strādāt ar GPS. Izvēlētais modulis ir viens no lētākajiem un vienkāršākajiem. Tomēr ražotājs sola akumulatoru, lai saglabātu satelīta datus. Pēc datu lapas aukstajam iedarbināšanai vajadzētu aizņemt 36 sekundes, taču manos apstākļos (10.stāvs no palodzes, tuvumā nevienas ēkas) tas prasīja pat 20 minūtes. Nākamais starts taču jau 2 minūtes.

Svarīgs arduino savienoto ierīču parametrs ir enerģijas patēriņš. Pārslogojot Arduino pārveidotāju, tas var izdegt. Izmantotā uztvērēja maksimālais enerģijas patēriņš ir 45 mA pie 3,3 V. Kāpēc specifikācijā būtu jānorāda strāvas stiprums pie sprieguma, kas atšķiras no vajadzīgā (5V), man ir noslēpums. Tomēr Arduino pārveidotājs izturēs 45 mA.

Savienojums

GPS netiek kontrolēts, lai gan tam ir RX tapa. Kādam nolūkam nav zināms. Galvenais, ko varat darīt ar šo uztvērēju, ir nolasīt datus no TX kontakta, izmantojot NMEA protokolu. Līmeņi - 5V, tikai priekš Arduino, ātrums - 9600 bodi. Es savienoju VIN ar arduino VCC, GND ar GND, TX ar RX no atbilstošās sērijas. Es vispirms nolasīju datus manuāli, pēc tam izmantojot TinyGPS bibliotēku. Pārsteidzoši, viss ir lasāms. Pēc pārejas uz Uno man nācās izmantot SoftwareSerial, un tad sākās problēmas - dažas ziņojuma rakstzīmes tika pazaudētas. Tas nav īpaši svarīgi, jo TinyGPS izslēdz nederīgus ziņojumus, taču tas ir diezgan nepatīkami: jūs varat aizmirst par 1 Hz frekvenci.

Īsa piezīme par SoftwareSerial: Uno nav aparatūras portu, tāpēc jums ir jāizmanto programmatūras porti. Tātad tas var saņemt datus tikai par tapu, uz kuras plate atbalsta pārtraukumus. Uno gadījumā tie ir 2 un 3. Turklāt tikai viens šāds ports var saņemt datus vienlaikus.

Šādi izskatās “pārbaudes stends”.


GSM uztvērējs/raidītājs


Tagad nāk interesantākā daļa. GSM modulis - SIM900. Tā atbalsta GSM un GPRS. Netiek atbalstīts ne EDGE, ne īpaši 3G. Koordinātu datu pārraidei tas droši vien ir labi - pārslēdzoties starp režīmiem, nebūs kavēšanās vai problēmu, turklāt GPRS tagad ir pieejams gandrīz visur. Tomēr dažām sarežģītākām lietojumprogrammām ar to var nepietikt.

Savienojums

Modulis tiek vadīts arī caur seriālo portu, ar tādu pašu līmeni - 5V. Un šeit mums būs nepieciešams gan RX, gan TX. Modulis ir vairogs, tas ir, tas ir instalēts Arduino. Turklāt tas ir saderīgs gan ar mega, gan ar uno. Noklusējuma ātrums ir 115 200.

Mēs to saliekam uz Mega, un šeit mūs sagaida pirmais nepatīkamais pārsteigums: moduļa TX tapa nokrīt uz Mega 7. tapas. Uz mega 7. kontaktdakšas pārtraukumi nav pieejami, tas nozīmē, ka jums būs jāpievieno 7. kontakts, teiksim, ar 6. kontaktu, uz kura ir iespējami pārtraukumi. Tādējādi mēs iztērēsim vienu Arduino tapu. Nu, mega tas nav ļoti biedējoši - galu galā ir pietiekami daudz piespraudes. Bet Uno tas jau ir sarežģītāk (atgādinu, ka ir tikai 2 kontakti, kas atbalsta pārtraukumus - 2 un 3). Kā risinājumu šai problēmai mēs varam ieteikt nevis instalēt moduli Arduino, bet savienot to ar vadiem. Pēc tam varat izmantot Serial1.

Pēc savienojuma izveides mēs cenšamies “runāt” ar moduli (neaizmirstiet to ieslēgt). Mēs izvēlamies porta ātrumu - 115200, un ir labi, ja visi iebūvētie seriālie porti (4 uz mega, 1 uz uno) un visi programmatūras porti darbojas vienā ātrumā. Tādā veidā jūs varat sasniegt stabilāku datu pārraidi. Es nezinu, kāpēc, lai gan varu uzminēt.

Tātad, mēs rakstām primitīvu kodu datu pārsūtīšanai starp seriālajiem portiem, nosūtām atz un saņemam klusumu kā atbildi. Kas notika? Ak, reģistrjutīgs. ATZ, mums viss ir kārtībā. Urā, modulis mūs dzird. Vai ziņkārības dēļ mums vajadzētu piezvanīt? ATD +7499... Zvana fiksētais telefons, no arduino nāk dūmi, klēpjdators izslēdzas. Arduino pārveidotājs izdega. Bija slikta doma barot to ar 19 voltiem, lai gan rakstīts, ka var darboties no 6 līdz 20 V, ieteicams 7-12 V. GSM moduļa datu lapā nekur nav teikts par enerģijas patēriņu slodzes laikā. Nu Mega iet uz rezerves daļu noliktavu. Ar aizturētu elpu ieslēdzu portatīvo datoru, kas pa +5V līniju saņēma +19V no USB. Tas darbojas, un pat USB neizdegās. Paldies Lenovo par mūsu aizsardzību.


Pēc pārveidotāja izdegšanas es meklēju pašreizējo patēriņu. Tātad, maksimums - 2A, tipisks - 0,5A. Tas nepārprotami pārsniedz Arduino pārveidotāja iespējas. Nepieciešama atsevišķa barība.

Programmēšana

Modulis nodrošina plašas datu pārraides iespējas. Sākot no balss zvaniem un SMS un beidzot ar pašu GPRS. Turklāt pēdējam ir iespējams izpildīt HTTP pieprasījumu, izmantojot AT komandas. Jums būs jānosūta vairāki, taču tas ir tā vērts: jūs īsti nevēlaties izveidot pieprasījumu manuāli. Ar datu pārraides kanāla atvēršanu caur GPRS ir pāris nianses - atceries klasisko AT+CGDCONT=1, “IP”, “apn”? Tātad šeit ir vajadzīgs tas pats, tikai nedaudz viltīgāks.

Lai iegūtu lapu ar noteiktu URL, jums ir jānosūta šādas komandas:

AT+SAPBR=1,1 //Atvērts mobilo sakaru operators (Carrier) AT+SAPBR=3,1"CONTYPE","GPRS" //savienojuma veids - GPRS AT+SAPBR=3,1"APN","internets" //APN, Megafon - internets AT+HTTPINIT //Inicializēt HTTP AT+HTTPPARA="CID",1 //Izmantojamais mobilo sakaru operatora ID. AT+HTTPPARA="URL","http://www.example.com/GpsTracking/record.php?Lat=%ld&Lng=%ld" //Faktiskais URL pēc sprintf ar koordinātām AT+HTTPACTION=0 // Pieprasīt datus, izmantojot GET metodi //gaidiet atbildi AT+HTTPTERM //apturiet HTTP

Rezultātā, ja būs savienojums, mēs saņemsim atbildi no servera. Tas nozīmē, ka mēs jau zinām, kā nosūtīt koordinātu datus, ja serveris tos saņem, izmantojot GET.

Uzturs

Tā kā GSM moduļa barošana no Arduino pārveidotāja, kā noskaidroju, ir slikta doma, tika nolemts tajā pašā ebay iegādāties 12v->5v, 3A pārveidotāju. Tomēr modulim nepatīk 5V barošanas avots. Iesim uzlauzt: pievienojiet 5V kontaktam, no kura 5V nāk no Arduino. Tad moduļa iebūvētais pārveidotājs (daudz jaudīgāks par Arduino pārveidotāju MIC 29302WU) no 5V izveidos modulim nepieciešamo.

Serveris

Serveris uzrakstīja primitīvu - saglabā koordinātas un zīmēja Yandex.maps. Nākotnē ir iespējams pievienot dažādas funkcijas, tostarp atbalstu daudziem lietotājiem, statusu “bruņots/neapbruņots”, transportlīdzekļa sistēmu stāvokli (aizdedze, priekšējie lukturi utt.), un, iespējams, pat transportlīdzekļa sistēmu vadību. Protams, ar atbilstošu izsekotāja atbalstu, kas vienmērīgi pārvēršas par pilnvērtīgu signalizācijas sistēmu.

Lauka testi

Šādi izskatās saliktā ierīce bez korpusa:


Pēc strāvas pārveidotāja uzstādīšanas un ievietošanas korpusā no mirušā DSL modema sistēma izskatās šādi:

Es pielodēju vadus un noņēmu vairākus kontaktus no Arduino blokiem. Tie izskatās šādi:

Mašīnā pieslēdzu 12V, apbraucu Maskavu un ieguvu trasi:


Trase izrādās saplēsta. Iemesls ir tāds, ka datu nosūtīšana, izmantojot GPRS, aizņem salīdzinoši ilgu laiku, un šajā laikā koordinātas netiek nolasītas. Tā nepārprotami ir programmēšanas kļūda. Tas tiek apstrādāts, pirmkārt, nekavējoties nosūtot koordinātu paketi laika gaitā, un, otrkārt, asinhroni strādājot ar GPRS moduli.

Projekta diagramma:

Sveiki draugi, mums virs mūsu galvām lido liels skaits dažādu kosmosa kuģu. Starp tiem ir aptuveni 90 ārkārtīgi noderīgi navigācijas satelīti no Amerikas GPS sistēmas, Krievijas GLONASS, Eiropas Galileo un Ķīnas BeiDou. Un šodien mēs noķersim signālu no viņiem.

Pirmkārt, neliela teorija: satelītnavigācijas sistēma ir kosmosa kuģu tīkls, kas lido pa iepriekš zināmiem maršrutiem, precīzi novērojot savu orbītu un trajektoriju, vai atrodas zināmā stacionārā ģeostacionārās vai ģeosinhronās orbītas punktā. Satelīti vidēji lido aptuveni 20 tūkstošu kilometru augstumā, un katrs ir īpaši precīzs atompulkstenis, kas nepārtraukti raida savu laiku uz visu planētu. pašreizējais laiks.

Radiosignāls, kas izplatās gaismas ātrumā, sasniedz Zemi ar 60 līdz 90 milisekundes kavēšanos, tas ir atkarīgs no satelīta attāluma. Zinot precīzu radiosignāla avota atrašanās vietu pēc tā izplatīšanās laika aizkaves, varat uzzināt precīzu attālumu līdz satelītam. Un tad, triangulējot attālumus līdz vairākiem zināmiem objektiem, var uzzināt, kur kosmosā atrodaties.

Iedomājieties, ka šī zilā bumba ir mūsu planēta. Virs tā 20 tūkstošu kilometru augstumā lido trīs satelīti. Mērot attālumu līdz pirmajam, saņemsi informāciju, ka atrodies kaut kur uz šī apļa – pagaidām tas nav īpaši informatīvi. Signāls no otrā satelīta noskaidros jūsu atrašanās vietu līdz diviem krustojuma punktiem, neatsaucoties uz augstumu. Trešā navigācijas satelīta signāls norādīs šo punktu augstumu virs virsmas un formāli atrisinās navigācijas vienādojumu, samazinot jūsu atrašanās vietu līdz divām iespējamām vietām. Patiesībā vienai no šīm koordinātām ir neticamas īpašības, un tā tiek izmesta, pilnībā atrisinot problēmu. Signāls no ceturtā satelīta dara to pašu - tas jau viennozīmīgi precīzi atrisina navigācijas vienādojumu.

Attālumu mērīšana līdz katram nākamajam satelītam palielina pozicionēšanas precizitāti, un mūsdienās tā svārstās no 1 līdz 3 metriem ar standarta redzamību aptuveni 10 navigācijas satelītiem.

Esam sakārtojuši teoriju, pāriesim pie prakses. Mūsdienās dažādi navigācijas moduļi tiek pārdoti atsevišķi. Vienkāršākie un vecākie atbalsta tikai signālus no Amerikas GPS novērošanas sistēmas, vidēji 5-7 satelīti. Uzlabotāki moduļi spēj uztvert signālus arī no Krievijas GLONASS zvaigznāja, palielinot kopējo novēroto satelītu skaitu vidēji divas reizes. Pārdošanā ir arī moduļi, kas ir apvienoti ar kompasu, tie tiek izmantoti precīzai navigācijai un kursa uzturēšanai.

Mana tālruņa ekrānā ir redzami dažādu navigācijas sistēmu satelīti. Apļi ir GPS, trīsstūri ir GLONASS, un zvaigznes ir ķīniešu BeiDou. Tātad mans tālrunis atbalsta trīs dažādus navigācijas sistēmas un apvienojot no tiem saņemtos signālus, palielinās atrašanās vietas noteikšanas precizitāte. Tagad virs manas galvas ir 28 satelīti, un signāls ir pieejams tikai no 7. Tas ir. mans telefons jau iepriekš zina, kur atrodas katrs satelīts. Un trūkstošais signāls no 21 satelīta nozīmē, ka tie atrodas ārpus redzamības līnijas. Navigācijas signāls ir ļoti vājš, no vārda VASCHE, gandrīz neatspoguļojas, to bloķē reljefs, ēkas, automašīnas jumts - jebkurš metāls virs galvas vai sānos. Pat sniegs, kas krīt aiz loga, traucē labu uztveršanu.

Lai īstenotu projektu, jums būs nepieciešami vairāki elektroniskie moduļi: programmējama platforma Arduino Nano, OLED ekrāns 128 x 32 punkti (tas ir savienots, izmantojot I2C kopni), GPS modulis savienošanai, izmantojot UART, jebkurš litija akumulators ar jaudu virs 200 miliamperiem, litija aizsarguzlādes moduli un pastiprināšanas pārveidotāju, lai iegūtu 5 voltus. Man šeit ir trīs dažādi veidi, derēs jebkurš. Es arī plānoju izmantot krāsainu RGB LED, lai norādītu statusu, bet atteicos no tā projekta gaitā.

Mēs savienojam ekrānu ar Arduino un saskaramies ar pirmajām grūtībām. Standarta bibliotēka OLED ekrāns aizņem 20 kB, kas ir 70% no mikrokontrollera atmiņas un praktiski neatstāj vietu programmai. Iepriekš es montēju altimetru un saskāros ar faktu, ka jebkura jauna koda rinda noved pie atmiņas pārpildes un mikrokontrolleris sasalst darbības laikā. Tāpēc es izmantošu daudz vairāk gaismas bibliotēka. Tas nedarbojas ar grafiku un parāda tikai tekstu OLED ekrānā, un tas aizņem tikai 1 KB atmiņas.

Atsevišķi pieslēdzu GPS moduli pie maizes dēļa un redzu pirmos navigācijas datus - noķerts un apstrādāts signāls no kosmosa. Tagad es parādu informāciju ekrānā. Klase! Redz 4 satelītus, tagad 3, un atkal 4, jau 5! Labākai GPS uztveršanai modulis karājas ārpus loga uz stieples.

Projekta izstrādes gaitā izmantoju GPS moduļus dažādi veidi. Vienkāršs GPS un kombinētais GPS ar Glonass. Mums bija jāveic daudzu stundu eksperimentu sērija, lai pārbaudītu darbības stabilitāti. Moduļi izrādījās strādājoši, bet ar programmatūras bibliotēkas Man nācās lāpīt. Mēģināja vairākas dažādas bibliotēkas, un TinyGPS+ bija vienīgais, kas strādāja ar visiem GPS moduļiem vienlaikus.

Kopumā bibliotēka parsē NMEA protokolu; tā vienkārši parsē datus, ko GPS modulis izspiež divas reizes sekundē. Šādi izskatās neapstrādāta datu straume.

Tā rezultātā mana programmaparatūra ļauj savienot gandrīz jebkuru GPS moduli, izmantojot UART ar NMEA datu pārraides protokolu. Faktiski šie ir lielākā daļa moduļu, kuriem ir RX un TX tapas. Iesaku ņemt GPS moduli no Glonass, tas redz vairāk satelītus, tāpēc tā precizitāte ir lielāka. Saites uz visiem komponentiem un moduļiem ir šī video aprakstā.

Maizes panelis parādīja pilnu sistēmas funkcionalitāti, tagad jūs varat salikt visu aparatūrā. Kā barošanu izmantošu litija akumulatoru; tas tiks savienots ar aizsargplati ar uzlādi. Šajā platē apakšējais rezistors R3 iestata akumulatora uzlādes strāvu, noklusējuma vērtība ir 1 ampērs, tas ir daudz maziem akumulatoriem, tāpēc ir jāmaina rezistors. Ekrānā redzat plāksni ar rezistoru vērtībām dažādām uzlādes strāvām. Ja jūsu akumulatora jauda ir 500 miliampērstundas, uzlādes strāva ir jāiestata ne augstāka par šo vērtību. Tie. varat iestatīt 200 vai 300 miliampērus un nepārsniedz 500.

Pēc tam ir jāpalielina spriegums; ekrāns un GPS modulis tiek darbināti ar 5 voltiem. Mēs to darīsim, izmantojot sprieguma pārveidotāju. Tos parasti uzstāda jaudas bankās, lai paaugstinātu spriegumu no 3,7 līdz 5 voltiem. Es izmantošu mazo zaļo moduli, tas var izvadīt līdz 300 mA un ir vairāk nekā pietiekami šim projektam.

Esmu atjauninājis programmaparatūru, tagad ielādējot galvenajā ekrānā tiek parādīts pašreizējais precīzs laiks no satelītiem, redzamo satelītu skaits un izsekotāja pašreizējais ātrums, tas lec, jo ir kļūda atrašanās vietas noteikšanā. Nospiežot pogu, ekrāns mainās. Šeit tiek parādīta pašreizējā ātruma vērtība un maksimālā vērtība novērošanas periodam. Citā ekrānā ir redzams pašreizējais attālums līdz nulles punktam, maksimālais reģistrētais attālums no tā un odometrs.

Izmēru visu moduļu izmērus un cenšos tos sakārtot pēc iespējas kompaktāk. Bet, lai kā es centos, plānais ekrāns nesaderēja ar plato. GPS uztvērējs ohm Tāpēc es nolēmu nomainīt ekrānu ar citu OLED 128x64 pikseļiem. Tas padara to ergonomiskāku un ļauj izmantot lielāku pogu. OLED ekrāni ir pilnībā savietojami un tiem nepieciešama minimāla koda korekcija, tāpēc programmaparatūra būs pieejama abām ierīces versijām ar mazu ekrānu un lielam.

Montāžas shēma ir vienkārša. Ekrāns ir jāpievieno I2C kopnei, tie ir A4 un A5 tapas, GPS modulis ir savienots ar programmatūras seriālo portu uz tapām D3 un D4. Poga uz tapas D7. Akumulatora jauda caur aizsardzības modulis velciet to uz slēdzi, pēc tam uz pastiprināšanas pārveidotāju un pievienojiet Arduino 5 voltiem.

Komponentu ērtai izvietošanai izmantošu zaļo maizes dēli 7x3 centimetri. Lai ekrāns nekarātos uz savienotāja, es to uzstādu uz plastmasas statīviem ar 5 mm starplikām. Starp ekrānu un pogu būs GPS uztvērējs. Plātnes aizmugurē būs Arduino kontrolieris, akumulators un aizsargplate. Akumulators izmantos plānu litija jaudu 350 miliampēri, ja nemaldos, tās tiek izmantotas elektroniskajās cigaretēs, bet, kā jau teicu, var izmantot jebkuru litija akumulatoru.

Visu vēlreiz mēru, nomēru un sagatavoju korpusa dizainu drukāšanai uz 3D printera. Burtiski 15 minūtes TinkerCAD vietnē un projekts ir gatavs drukāšanai. Es pārsūtu failu uz zibatmiņas disku, palaidu to un dodamies ceļā. Drukāšanas laiks ir aptuveni 40 minūtes, šis ir pirmais tēmēklis moduļu izvietojuma izmēģināšanai.

Dēlis un poga iederējās vietā, bet ekrāns bija burtiski milimetru īss, un iekšējais statīvs traucēja. Un tā viss der un tiek uzstādīts savā vietā. Lieliski, es rediģēju projektu un izdruku pēdējā versija oranžs korpuss. Pēc apdrukas pabeigšanas jādod galdam laiks atdzist un tikai tad jānoplēš detaļa, tad priekšpuse būs gluda un nekustēsies.

Nolaužu un notīru plastmasas stiprinājuma malu. Tā kā es izmantoju ABS plastmasu, tā ir pakļauta pēcapstrādei ar acetonu. Uzklāju ar otiņu, slāņi papildus salīp kopā, un ķermenis kļūst stiprāks un iegūst spīdumu.

Dēlis lieliski iekļaujas korpusa iekšpusē, stiprinājumi ir izlīdzināti, poga nelīp. Vienā galā ir caurums Arduino Nano savienotājam, bet otrā pusē - akumulatora uzlādei. Tas izrādījās nedaudz šaurāks, tāpēc es to izplešu ar skalpeli.

Uzlādes dēlim gar malām ir izvirzījumi, tie neļauj padziļināt savienotāju, tāpēc tos noslīpu ar adatas vīli. Tagad dēlis ir labi savā vietā.

IN vispārējs skats ierīce izskatīsies šādi. Korpuss atrodas augšpusē. Zem tā atradīsies mikro slēdzis, maizes dēlis ar ekrānu, GPS modulis un poga. Sānos ir arī pastiprināts strāvas pārveidotājs.

Atsevišķi slēdzim korpusā ar skalpeli izgriezu caurumu virs pogas. Tas ir padziļināts ķermenī un netraucēs.

Ir pienācis laiks lodēt. Pirmo ekrāna kontaktu pielodēju pie dēļa, izmēģinu - viss ir pareizi un var pielodēt atlikušos trīs kontaktus. Tagad poga. Un noteikti notīriet plūsmu ar suku. Es pielodēju vadus akumulatora aizsardzības modulim.

Savienojot, noteikti pievērsiet uzmanību vadu krāsai. Nepareizas krāsas dažkārt nāk no Ķīnas. Šajā gadījumā es nolēmu atlodēt savienotāju un tieši pielodēt vadus labāks kontakts. Procedūra ir sarežģīta un prasa precizitāti un rūpību lodēšanas laikā. Papildus es piepildu kontaktus ar karstu līmi, tas pasargās sliedes un vadu no nejaušas izvilkšanas. Un mēs nekavējoties ievietojam visu GPS moduli siltuma saraušanās traukā; tas nav nepieciešams, bet tas papildus aizsargās mehāniski bojājumi un īssavienojumi, kad tie ir uzstādīti uz maizes dēļa.

Mēs arī iesaiņojam pastiprināšanas pārveidotāju siltuma saraušanās plēvē. Moduļu nostiprināšanai izmantoju abpusēju līmlenti. Uzstādot dēli, izrādījās, ka vadiem nav pietiekami daudz vietas, tāpēc es izurbu caurumus centrā un ievietoju tur strāvas vadus.

Starp citu, iesaku foršu akumulatora urbjmašīnu. Tas darbojas ar vienu 18650 akumulatoru un ļauj ātri izurbt līdzīgus caurumus uz dēļiem un korpusiem.Iepriekš šādiem darbiem man bija jāizņem Dremel no korpusa un jāpievieno kontaktligzdai, bet tagad man vienmēr ir šis urbis pie rokas.

Plāksnes augšējā daļa ir samontēta, vadi ir vītņoti un tagad jums ir jāuzstāda slēdzis. Lai to izdarītu, mēs tam nokožam papildu kājas; barošanas padevei un pārtraukumam ir vajadzīgas tikai divas. Uz tiem pielodējam vadu un, kā parasti, visu savelkam ar siltumu. Tālāk varat uzstādīt slēdzi tā vietā un piepildīt ar karstu līmi. Tagad būs ērti ieslēgt un izslēgt izsekotāju.

Es ievietoju dēli korpusā un nostiprinu ar četrām mazām skrūvēm. Attiecīgie caurumi jau ir paredzēti korpusa balstiem. Kad es noņēmu aizsargplēvi no ekrāna, es pamanīju lielu atstarpi starp displeju un korpusu. Tāpēc no kādas elektronikas paņēmu caurspīdīga iepakojuma gabalu un izgriezu no tā stiklu, lai tas atbilstu loga izmēram. Un pielīmēja to ar acetonu pie korpusa plastmasas.

Mēs veicam montāžu pēc shēmas, šeit nav nekādu grūtību vai nianses. Vienkārši pievērsiet uzmanību pluss plus, mīnus mīnuss. Mēs savienojam slēdzi tieši ar uzlādes moduļa izeju. Tas izslēgs visu strāvas ķēdi un novērsīs akumulatora iztukšošanos.

Pēc visu vadu lodēšanas pie moduļiem pārklājiet apakšējo dēli ar zilu elektrisko lenti. Arduino kontrolieris ar uzlādi būs augšā, un bez izolācijas ir iespēja kaut ko saīsināt.

Es pielodēju aizsargmoduli un nostiprinu to vietā ar karstu līmi.

Sabubinu akumulatora kontaktus un ātri pielodēju pie tiem vadu, lai nepārkarstu akumulatoru. No vienas puses un no otras. Pēc tam jums ir nepieciešams izveidot savienojumu mikro USB kabeli un piegādājiet aizsargmodulim strāvu, tas aktivizēs tā darbību.

Gatavs, tagad jums ir jāaugšupielādē programmaparatūra. Savienojam Arduino ar datoru, dodamies uz projekta lapu, saite uz to ir video aprakstā. Lejupielādējiet arhīvu, izpakojiet failus, instalējiet bibliotēkas, atveriet nepieciešamo programmaparatūras versiju 32 vai 64 punktu ekrānam un ielādējiet to kontrolierī. Viss izdevās pirmajā reizē! Dati no GPS stieņa. Forši!

Uzstādu kontrolieri vietā, ieslēdzu autonomo barošanu... iiiiiiiii... nekas. Arduino strāvas indikators ir ieslēgts, bet ekrāns neieslēdzas. Un tā notika mēģinājumi, kuru iemeslu es joprojām nezinu. Man bija vajadzīgas vairākas darba stundas, lai izsekotājs darbotos autonomi no iebūvētā akumulatora.

Sākumā es domāju, ka vaininieks ir mazais pakāpju jaudas pārveidotājs. Bet pārbaudot ar multimetru, tika parādīts stabils 5 volti. Tālāk pieslēdzu autonomu barošanas moduli, kas man bija palicis pāri no cita projekta, tas ir uzbūvēts uz liela pastiprinājuma pārveidotāja - un, lūk, trakeris ieslēdzās, bet pēc dažām sekundēm sastinga.

Es uzlādēju tajā esošo akumulatoru un novietoju izsekotāju uz loga, lai noķertu satelītus. Trīs minūtes vēlāk viņš uzņēma signālu no 4 satelītiem un noteica atrašanās vietu. Nu, tas nozīmē, ka tas darbojas un, iespējams, var salikt? Mainām pastiprināšanas pārveidotāju, acīmredzot mazais rada lielu troksni no barošanas bloka.

Lai to izdarītu, man vajadzēja pilnībā izjaukt izsekotāju, atlodēt visus vadus un atkal to salikt. Jaunais barošanas modulis atradīsies turpat, kur vecais, bija jānoņem tikai viens statīvs, lai tas ietilptu zem ekrāna.

Tas tā, es saviju vadus bizēs, lai izvairītos no traucējumiem. Ā un... šis nelietis vairs neieslēdzās. Precīzāk, tas ieslēdzās un uzreiz sastinga ar artefaktiem ekrānā. Tik daudz stundu darba un viss par velti. Pārveidotāja nomaiņa nepalīdzēja.

Es mēģināju uzstādīt kondensatorus barošanas blokā - nekas nepalīdzēja. Trakeris atteicās strādāt autonomi gan no pastiprināšanas pārveidotājiem, gan no laboratorijas barošanas avota - sasala vai neieslēdzās vispār. Bet tajā pašā laikā tas lieliski strādāja no Arduino USB savienotāja.

Izmantojot secīgās izslēgšanas metodi, es varēju noskaidrot, ka pie tā ir vainojams OLED ekrāns, taču es joprojām nesaprotu, kāpēc. Risinājums tika atrasts pēkšņi. Nākamajā autonomās barošanas avota pārbaudes laikā es nejauši pieslēdzu 5 voltus VIN tapai. Es atzīmēju, ka šī piespraude! Nav! paredzēts 5 voltu strāvas padevei, un tam nepieciešams spriegums no 7 līdz 12 voltiem.

Bet, neskatoties uz to, izsekotājs nekavējoties sāka darboties un sāka strādāt stabili. Tie. Izrādās, ka problēmas avots nebija mazais stabilizators, tas bija kaut kas cits.

Tajā pašā laikā nolēmu pārbaudīt pašreizējo patēriņu. No 5 voltiem izsekotājs patērēja aptuveni 70 miliamperus. Un no 4 voltiem caur pastiprināšanas pārveidotāju izrādījās apmēram 110 miliamperi. Tādējādi mans mazais 350 miliampēru akumulators darbosies trīs stundas akumulatora darbības laiks. Un es vēl neesmu optimizējis barošanas avotu, jūs varat nogriezt LED, kas vienmēr ir ieslēgtas, un joprojām taupīt akumulatoru.

Trakeris sāka strādāt pilnīgi stabili, atstāju uz loga un pēc dažām minūtēm tas noķēra 4 satelītus. Lieliski

Ja vēlaties man palīdzēt izprast Arduino dīvainās uzvedības iemeslu, šeit ir ievads:

1 – izsekotājs darbojas, ja to darbina, izmantojot Arduino USB savienotāju.

2 – izsekotājs sasalst un neieslēdzas, ja barojat to caur Arduino 5V kontaktu, pieslēdzot tam 5 voltus no jebkura strāvas avota.

3 – izsekotājs sasalst un neieslēdzas, ja tam caur Arduino VIN tapu tiek pieslēgts 7 volti vai vairāk.

4 - izsekotājs darbojas, ja tas tiek barots ar nestandarta 5 voltiem caur to pašu VIN tapu.

Gatavā ierīce ir universāls autonoms spidometrs, attāluma mērītājs, odometrs un satelīta precīzs laika pulkstenis vienā korpusā.

Galvenajā ekrānā pēc ielādes augšpusē tiek parādīts pašreizējais laiks un datums Griničā, otrajā rindā ir pašreizējais ātrums 0,3 kilometri stundā un maksimālā ātruma vērtība, kas reģistrēta kopš ieslēgšanas brīža - 26 kilometri stundā. Trešajā rindā pašreizējais attālums līdz nulles punktam ir 530 metri un maksimālais attālums, kas sasniegts kopš ieslēgšanas, ir 580 metri. Ceturtajā rindā odometrs rāda 923 metrus un izmantoto satelītu skaitu.

Apakšējās rindas rakstzīmes ir datu apjoms, kas saņemts no GPS moduļa.

Īsi nospiežot pogu, ekrāna displejs mainās, un, turot to ilgāku laiku, izsekotājs atceras pašreizējo atrašanās vietu kā nulles atskaites punktu attāluma mērījumiem. Otrajā ekrānā tiek parādīts pašreizējais un maksimālais ātrums. Trešajā ekrānā ir informācija par attālumu līdz nulles punktam. Ceturtais ekrāns ir odometrs. Piektais platums un garums.

Jūs varat atiestatīt odometru un maksimālās vērtības, ilgi nospiežot pogu uz ekrāna ar šiem parametriem. Tie. dodieties uz odometru un turiet nospiestu pogu, lai to atiestatītu.

Pāriesim pie testēšanas. Tagad izsekotājs redz 12 satelītus. Es iestatīju pašreizējo nulles punktu un atiestatīju odometru uz nulli. Es daru to pašu ar automašīnas odometru. Nobraucot 1,2 kilometrus pēc auto spidometra, GPS izsekotājā redzēju tos pašus 1205 metrus. Pašreizējais attālums līdz nulles punktam taisnē ir 0,93 kilometri. Un pēc kartes tie paši 930 metri, pagaidām viss ir precīzi.

Nolēmu mērot garāku distanci. Atkal es atiestatīju izsekotāja un automašīnas rādījumus uz nulli. Nobraucot 8,4 kilometrus, uz trekera konstatēju, ka distance ir mazāka - tikai 7974 metri. Šajā gadījumā pašreizējais attālums līdz nulles punktam ir 4930 metri. Pārbaudīsim kartē, izrādās ļoti precīzi, tie paši 4930 metri. Nav skaidrs, bet kāpēc tad odometrs atrodas 400 metru augstumā un kurš odometrs atrodas uz automašīnas vai GPS.

Labi, ir pienācis laiks drukāt aizmugurējais vāciņš un mēs pārbaudīsim vēlreiz. Es slēdzu. Gatavās ierīces svars izrādījās 55 grami, daudz, bet ne kritiski - beigās parādīšu, kā to samazināt.

Es ierados slidotavā un nolēmu izmērīt hokejista ātrumu. Sasodīts, viņam vēl jānoņem pārsegi ātrumam. Rezultāts bija nikns ātrums, piemēram, "krievu raķetei" - 5 kilometri stundā. Es gāju kājām, un viss tāpēc, ka slidotavas griesti ir siltināti ar atstarojošu foliju, lai nepieļautu aukstumu. Ir signāls no satelītiem, taču tas nav precīzs.

Veiksim pēdējo testu ar Mobilais telefons. Tālrunis redz 7 satelītus, bet izsekotājs 9. Es sāku reģistrēt un atiestatīt odometru uz izsekotāja. Nu... ejam. Pēc trīs kilometru nobraukšanas telefons un izsekotājs odometrā uzrādīja identiskas vērtības. 3017 pret 3021 metru ir super rezultāts, nebiju gaidījis tādu precizitāti.

Bet odometra rādījums satricināja, pat 12 tūkstošus kilometru. Nav skābs. Iepriekš, atkļūdojot programmu, es jau biju saskāries ar šādu kļūmi, un izsekotājs tika nekavējoties pārvietots par 7 tūkstošiem kilometru. Kad atgriezos mājās, Google izveidoju punktu ar nulles platuma un garuma grādiem. Izrādījās, ka tas atrodas Atlantijas okeānā, netālu no Ganas krasta. Izmērot attālumu no tā līdz manai atrašanās vietai, es saņēmu tos pašus 7 tūkstošus kilometru. Izrādās, ka GPS modulis dažreiz izlaiž nulles gar koordinātām. To var viegli novērst, programmas kodam pievienojot tikai vienu nosacījumu. Un šī kļūme testu laikā netika novērota.

Manuprāt, izsekotājs izrādījās lielisks; šī ir mana pirmā pieredze darbā tieši ar GPS moduļiem. Kāpēc tas ir vajadzīgs? Šāds izsekotājs var kalpot kā autonoms spidometrs vai neatkarīgs odometrs. To var novietot uz velosipēda, automašīnas, rotaļlietas vai kvadrokoptera. Tas arī ļauj izmērīt attālumu taisnā līnijā līdz noteiktam punktam, kurā tiek saglabātas nulles vērtības nepastāvīga atmiņa. Atceras maksimāli sasniegtā ātruma un distances vērtības. Tas visu dara autonomi un nav atkarīgs no neviena cita, izņemot satelītus. Un, protams, tas ir precīzs laika pulkstenis. Man tas ir vajadzīgs, lai izmērītu maksimālo ātrumu un maksimālo attālumu no objektiem. Tieši tā, jums ir jāpievieno ekrānam lielāks augstums, lai izmērītu, cik augstu jūs paceļaties!

Parunāsim par to, kā jūs varat samazināt svaru; vienkāršākais veids, kā to izdarīt, ir salikt izsekotāju uz platformas Arduino Pro Mini pie 3,3 voltiem. Tad jums nebūs nepieciešams pastiprināšanas pārveidotājs, tā vietā būs mazs lineārs spieķis pie 3,3 voltiem, GPS modulis darbojas bez problēmām ar šo spriegumu, un ekrānā jums būs jāapiet strāvas stabilizators.

Nu, es nekavējoties atbildēšu uz jautājumu: vai ir iespējams pievienot GSM moduli un kontrolēt izsekotāju, izmantojot SMS? Jā tu vari. Lai to izdarītu, papildus pašam modulim programmas kodam būs jāpievieno arī SMS komandu apstrāde, un tam vajadzētu būt atsevišķam projektam.

Tas šodienai, ja jums patika šis video, tad esmu pārliecināts, ka jums tas patiks un padalieties ar saiti uz video ar saviem draugiem.

Paldies, ka skatījāties, veiksmi visiem un tiekamies jaunos video! Čau čau!

Dati tiek saglabāti izklājlapā dataGPS.csv, kuras formāts atbilst pakalpojuma prasībām. Google manas kartes.

    Programmēšanas valoda: Arduino (C++)

Video instrukcija

Ko tev vajag

Kā salikt

gps-tracker.ino // bibliotēka darbam ar ierīcēm, izmantojot SPI#iekļauts // bibliotēka darbam ar SD karti#iekļauts // bibliotēka darbam ar GPS ierīci#iekļauts // izveidojiet GPS klases objektu un nododiet tam Serial1 objektu GPS gps (Serial1); // LED tapa#define LED_PIN A0 // pogas tapa #define BUTTON_PIN 13 // piespraust CS micro-sd karti#define CHIP_SELECT_PIN 9 // laika intervāls datu ierakstīšanai kartē#define INTERVĀLU 5000 // iestatiet masīva lielumu laikam, datumam, platumam un garumam#define MAX_SIZE_MASS 16 // masīvs, lai saglabātu pašreizējo laiku char time [MAX_SIZE_MASS]; // ieraksta stāvoklis bool stateRec = false ; // atceras pašreizējo laiku long startMillis = millis() ; anulēt iestatīšanu() ( // atveriet seriālo portu, lai pārraudzītu programmas darbības Serial.begin(115200); // pagaidiet, līdz atveras monitors seriālais ports // lai izsekotu visiem programmas notikumiem// while (!Serial) ( // ) Serial.print ("Serial init OK \r\n") ; // atver seriālo savienojumu ar GPS moduli Serial1.begin(115200); // iestatiet LED izvades režīmā pinMode(LED_PIN, OUTPUT) ; // iestatiet pogu pieteikšanās režīmā pinMode(BUTTON_PIN, INPUT_PULLUP) ; // izvada informāciju par inicializāciju seriālajā portā Serial.println("Inicializē SD karti...") ; // inicializējiet SD karti while (! SD.begin (CHIP_SELECT_PIN) ) ( Serial.println ("Karte neizdevās vai tās nav") ; delay(1000) ; ) // izvada informāciju uz seriālo portu Serial.println("Karte inicializēta"); // izveido klases Fails objektu dataFile, lai strādātu ar failiem Fails dataFile = SD.open("dataGPS.csv" , FILE_WRITE) ; // ja fails pastāv if (dataFile) ( // ierakstiet atmiņas kartē nākotnes datu nosaukumu dataFile.println("Laiks, koordinātes, ātrums" ); // aizveriet failu dataFile.close(); Serial.println ("Saglabāt labi"); ) else ( Serial.println ("Kļūda atverot test.csv" ) ; ) ) void loop() ( // Ierakstiet pogas nospiešanu if (! digitalRead(BUTTON_PIN) ) ( // mainiet stāvokli “ieraksts” / “neraksta” atmiņas kartē stateRec = ! stateRec; // mainīt indikācijas LED stāvokli digitalWrite(LED_PIN, statusRec) ; ) // ja dati tika saņemti no GPS moduļa if (gps.available()) ( // lasīt datus un parsēt gps.readParsing(); // pārbaudiet GPS moduļa statusu slēdzis (gps.getState () ) ( // viss ir kārtībā gadījumā GPS_OK: Serial.println ("GPS ir OK" ) ; // ja norādītais laika intervāls ir pagājis if (millis() - startMillis > INTERVAL && stateRec) ( // saglabājiet datus atmiņas kartē saveSD() ; // atcerieties pašreizējo laiku startMillis = millis() ; ) pārtraukums ; // datu kļūdas gadījums GPS_ERROR_DATA: Serial.println("GPS kļūdu dati" ); pārtraukums ; // nav savienojuma ar satelītiem gadījums GPS_ERROR_SAT: Serial.println ( "GPS nav savienojuma ar satelītiem") ; pārtraukums ; ) ) ) // funkcija datu saglabāšanai atmiņas kartē void saveSD() ( Fails dataFile = SD.open("dataGPS.csv" , FILE_WRITE) ; // ja fails pastāv un ir atvērts if (dataFile) ( // nolasa pašreizējo laiku gps.getTime(laiks, MAX_SIZE_MASS); // ierakstiet laiku atmiņas kartē dataFile.print(" \" " ) ; dataFile.print(laiks); dataFile.print(" \" " ) ; dataFile.print ("," ) ; dataFile.print(" \" " ) ; // lasīt un ierakstīt atmiņas kartē platuma un garuma koordinātas 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 ("Saglabāt OK"); ) else ( Serial.println ("Kļūda atverot test.csv" ) ; ) )