Kuunganisha GPS kwa Arduino. Kuunganisha kiashiria cha LCD cha kuunganisha tabia. Ngao ya GPS iliyokusanywa iliyounganishwa na Arduino

Baada ya majaribio kadhaa na Arduino, niliamua kufanya tracker rahisi na isiyo ya gharama kubwa sana ya GPS na kuratibu zilizotumwa kupitia GPRS kwa seva.
Imetumika Arduino Mega 2560 ( Arduino Uno), SIM900 - moduli ya GSM/GPRS (kwa kutuma taarifa kwa seva), mpokeaji wa GPS SKM53 GPS.

Kila kitu kilinunuliwa kwenye ebay.com, kwa kiasi cha rubles 1500 (karibu rubles 500 kwa arduino, kidogo kidogo - Moduli ya GSM, kidogo zaidi - GPS).

Mpokeaji wa GPS

Kwanza unahitaji kuelewa jinsi ya kufanya kazi na GPS. Moduli iliyochaguliwa ni moja ya gharama nafuu na rahisi zaidi. Walakini, mtengenezaji anaahidi betri kuokoa data ya satelaiti. Kwa mujibu wa daftari, kuanza kwa baridi inapaswa kuchukua sekunde 36, hata hivyo, katika hali yangu (sakafu ya 10 kutoka kwa dirisha, hakuna majengo karibu) ilichukua kama dakika 20. Mwanzo unaofuata, hata hivyo, tayari ni dakika 2.

Kigezo muhimu cha vifaa vilivyounganishwa na Arduino ni matumizi ya nguvu. Ukipakia kigeuzi cha Arduino kupita kiasi, kinaweza kuungua. Kwa mpokeaji anayetumiwa, matumizi ya juu ya nguvu ni 45mA @ 3.3v. Kwa nini vipimo vinapaswa kuonyesha nguvu ya sasa kwenye voltage nyingine isipokuwa ile inayohitajika (5V) ni siri kwangu. Walakini, kibadilishaji cha Arduino kitahimili 45 mA.

Uhusiano
GPS haidhibitiwi, ingawa ina pini ya RX. Kwa madhumuni gani haijulikani. Jambo kuu unaloweza kufanya na mpokeaji huyu ni kusoma data kupitia itifaki ya NMEA kutoka kwa pini ya TX. Ngazi - 5V, kwa Arduino tu, kasi - 9600 baud. Ninaunganisha VIN na VCC ya arduino, GND hadi GND, TX hadi RX ya mfululizo unaolingana. Nilisoma data kwanza kwa mikono, kisha kwa kutumia maktaba ya TinyGPS. Kwa kushangaza, kila kitu kinasomeka. Baada ya kubadili Uno, nilipaswa kutumia SoftwareSerial, na kisha matatizo yakaanza - baadhi ya wahusika wa ujumbe walipotea. Hii sio muhimu sana, kwani TinyGPS hukata ujumbe batili, lakini haipendezi kabisa: unaweza kusahau kuhusu masafa ya 1Hz.

Ujumbe wa haraka kuhusu SoftwareSerial: hakuna bandari za maunzi kwenye Uno (zaidi ya ile iliyounganishwa kwa USB Serial), kwa hivyo lazima utumie programu. Kwa hivyo, inaweza tu kupokea data kwenye pini ambayo bodi inasaidia kukatiza. Kwa upande wa Uno, hizi ni 2 na 3. Zaidi ya hayo, bandari moja tu hiyo inaweza kupokea data kwa wakati mmoja.

Hivi ndivyo "benchi ya mtihani" inaonekana.

Kipokeaji/kisambazaji cha GSM


Sasa inakuja sehemu ya kuvutia zaidi. Moduli ya GSM - SIM900. Inasaidia GSM na GPRS. Wala EDGE, wala haswa 3G, hazihimiliwi. Kwa kusambaza data ya kuratibu, hii labda ni nzuri - hakutakuwa na ucheleweshaji au matatizo wakati wa kubadili kati ya modes, pamoja na GPRS sasa inapatikana karibu kila mahali. Walakini, kwa zingine zaidi maombi magumu hii inaweza isitoshe tena.

Uhusiano
Moduli pia inadhibitiwa na bandari ya serial, na kiwango sawa - 5V. Na hapa tutahitaji RX na TX. Moduli ni ngao, ambayo ni, imewekwa kwenye Arduino. Kwa kuongeza, inaendana na mega na uno. Kasi ya chaguo-msingi ni 115200.

Tunakusanya kwenye Mega, na hapa mshangao wa kwanza usio na furaha unatungojea: pini ya TX ya moduli iko kwenye pini ya 7 ya Mega. Vikwazo hazipatikani kwenye pini ya 7 ya mega, ambayo ina maana utakuwa na kuunganisha pini ya 7, tuseme, kwa pini ya 6, ambayo usumbufu unawezekana. Kwa hivyo, tutapoteza pini moja ya Arduino. Kweli, kwa mega sio ya kutisha sana - baada ya yote, kuna pini za kutosha. Lakini kwa Uno hii tayari ni ngumu zaidi (nakukumbusha kuwa kuna pini 2 tu zinazounga mkono usumbufu - 2 na 3). Kama suluhisho la shida hii, tunaweza kupendekeza sio kusanikisha moduli kwenye Arduino, lakini kuiunganisha na waya. Basi unaweza kutumia Serial1.

Baada ya kuunganisha, tunajaribu "kuzungumza" na moduli (usisahau kuiwasha). Tunachagua kasi ya bandari - 115200, na ni nzuri ikiwa bandari zote za serial zilizojengwa (4 kwenye mega, 1 kwenye uno) na bandari zote za programu zinafanya kazi kwa kasi sawa. Kwa njia hii unaweza kufikia uhamishaji wa data thabiti zaidi. Sijui kwanini, ingawa naweza kukisia.

Kwa hivyo, tunaandika msimbo wa awali wa kusambaza data kati ya bandari za serial, tuma Atz, ukimya kwa kujibu. Nini kilitokea? Ah, kesi nyeti. ATZ, tuko sawa. Hurray, moduli inaweza kutusikia. Je, unapaswa kutupa simu kwa kutaka kujua? ATD +7499... Simu ya mezani inalia, moshi unatoka kwenye arduino, kompyuta ya mkononi inazimika. Kigeuzi cha Arduino kiliwaka. Ilikuwa wazo mbaya kuilisha volts 19, ingawa imeandikwa kwamba inaweza kufanya kazi kutoka 6 hadi 20V, 7-12V inapendekezwa. Hifadhidata ya moduli ya GSM haisemi popote kuhusu matumizi ya nguvu chini ya mzigo. Naam, Mega huenda kwenye ghala la vipuri. Kwa pumzi iliyopunguzwa, ninawasha kompyuta ya mkononi, ambayo ilipokea +19V kupitia mstari wa +5V kutoka USB. Inafanya kazi, na hata USB haikuchoma. Asante Lenovo kwa kutulinda.

Baada ya kibadilishaji kuchomwa moto, nilitafuta matumizi ya sasa. Kwa hiyo, kilele - 2A, kawaida - 0.5A. Hii ni wazi zaidi ya uwezo wa kibadilishaji cha Arduino. Inahitaji chakula tofauti.

Kupanga programu
Moduli hutoa fursa nyingi usambazaji wa data. Kuanzia simu za sauti na SMS na kumalizia, kwa kweli, na GPRS. Aidha, kwa ajili ya mwisho inawezekana kufanya Ombi la HTTP kwa kutumia amri za AT. Utalazimika kutuma kadhaa, lakini inafaa: hutaki kuunda ombi kwa mikono. Kuna nuances kadhaa kwa kufungua chaneli ya upitishaji data kupitia GPRS - kumbuka AT+CGDCONT=1 ya kawaida, "IP", "apn"? Kwa hiyo, kitu kimoja kinahitajika hapa, lakini ujanja zaidi kidogo.

Ili kupata ukurasa katika URL maalum, unahitaji kutuma amri zifuatazo:
AT+SAPBR=1,1 // Fungua mtoa huduma (Mtoa huduma) AT+SAPBR=3,1,"CONTYPE","GPRS" //aina ya muunganisho - GPRS AT+SAPBR=3,1,"APN","internet" //APN, kwa Megafoni - mtandao AT+HTTPINIT //Anzisha HTTP AT+HTTPPARA="CID",1 //Kitambulisho cha Mtoa huduma ili kutumia. AT+HTTPPARA="URL","http://www.example.com/GpsTracking/record.php?Lat=%ld&Lng=%ld" //URL halisi, baada ya sprintf na viwianishi AT+HTTPACTION=0 // Omba data kwa kutumia mbinu ya GET //subiri majibu AT+HTTPTERM //stop HTTP

Kama matokeo, ikiwa kuna muunganisho, tutapokea jibu kutoka kwa seva. Hiyo ni, kwa kweli, tunajua jinsi ya kutuma data ya kuratibu ikiwa seva itaipokea kupitia GET.

Lishe
Kwa kuwa kuwezesha moduli ya GSM kutoka kwa kibadilishaji cha Arduino, kama nilivyogundua, ni wazo mbaya, iliamuliwa kununua kibadilishaji cha 12v->5v, 3A kwenye ebay hiyo hiyo. Walakini, moduli haipendi usambazaji wa umeme wa 5V. Hebu tuende kwa udukuzi: unganisha 5V kwa pini ambayo 5V inatoka kwa arduino. Kisha kibadilishaji kilichojengwa cha moduli (yenye nguvu zaidi kuliko kibadilishaji cha Arduino, MIC 29302WU) kitafanya kutoka 5V kile moduli inahitaji.

Seva

Seva iliandika ya kwanza - kuhifadhi kuratibu na kuchora kwenye Yandex.maps. Katika siku zijazo, inawezekana kuongeza vipengele mbalimbali, ikiwa ni pamoja na usaidizi kwa watumiaji wengi, hali ya "silaha/silaha", hali ya mifumo ya gari (kuwasha, taa za mbele, n.k.), na ikiwezekana hata udhibiti wa mifumo ya gari. Kwa kweli, kwa msaada unaofaa kwa tracker, ambayo inabadilika vizuri kuwa mfumo kamili wa kengele.

Vipimo vya shamba

Hivi ndivyo kifaa kilichokusanyika kinavyoonekana, bila kesi:

Baada ya kusanikisha kibadilishaji cha nguvu na kuiweka kwenye kesi kutoka kwa modem ya DSL iliyokufa, mfumo unaonekana kama hii:

Niliuza waya na kuondoa anwani kadhaa kutoka kwa vizuizi vya Arduino. Wanaonekana kama hii:

Niliunganisha 12V kwenye gari, nikaendesha karibu na Moscow, na nikapata wimbo:


Pointi za wimbo ziko mbali sana kutoka kwa kila mmoja. Sababu ni kwamba kutuma data kupitia GPRS inachukua muda mrefu, na wakati huu kuratibu hazijasomwa. Hili ni kosa la programu. Inatibiwa, kwanza, kwa kutuma mara moja pakiti ya kuratibu kwa muda, na pili, kwa kufanya kazi kwa asynchronously na moduli ya GPRS.

Wakati wa kutafuta satelaiti kwenye kiti cha abiria cha gari ni dakika chache.

hitimisho

Uumbaji Kifuatiliaji cha GPS kutumia Arduino kwa mikono yako mwenyewe inawezekana, ingawa sivyo kazi ndogo. Swali kuu sasa - jinsi ya kuficha kifaa kwenye gari ili isiweze kuathiriwa mambo yenye madhara(maji, halijoto), haikufunikwa na chuma (GPS na GPRS zitalindwa) na haikuonekana haswa. Kwa sasa iko tu kwenye cabin na inaunganisha kwenye tundu nyepesi ya sigara.

Kweli, tunahitaji pia kusahihisha nambari kwa wimbo laini, ingawa tracker tayari hufanya kazi kuu.

Vifaa vilivyotumika

  • Arduino Mega 2560
  • Arduino Uno
  • GPS SkyLab SKM53
  • SIM900 kulingana na GSM/GPRS Shield
  • Kigeuzi cha DC-DC 12v->5v 3A

Je, unahitaji chanzo sahihi cha wakati kutoka GPS? Makala haya yatakuonyesha jinsi ya kutumia moduli ya GPS kupata muda, tarehe na viwianishi, na jinsi ya kuzionyesha kwenye LCD kwa kutumia Arduino.

Ni nini kinachohitajika?

  • kompyuta na Arduino IDE imewekwa;
  • Arduino (tunatumia Arduino Mega);
  • Moduli ya GPS (tunatumia EM-411, wengine wanawezekana kwamba wanaunga mkono itifaki ya NMEA, kwa mfano, VK2828U7G5LF au GY-NEO6MV2);
  • bodi ya mkate, jumpers na 5 kOhm potentiometer;
  • Maktaba ya TinyGPS (kiungo hapa chini).

Utangulizi

Uundaji wa mfumo nafasi ya kimataifa, au GPS, ilianza mapema miaka ya 1970. Kila nchi (Urusi, USA, China, nk) ina yake mwenyewe mfumo mwenyewe, lakini fedha nyingi urambazaji wa satelaiti Mfumo wa Marekani unatumika duniani kote.

Kila setilaiti kwenye mfumo ina saa ya atomiki ambayo inafuatiliwa kila mara na kurekebishwa na NORAD (Kamanda wa Ulinzi wa Anga). Marekani Kaskazini) kila siku.

Kimsingi, mpokeaji hutumia saa yake kupima TOA (wakati wa kuwasili) wa nne ishara za satelaiti. Kulingana na TOA na TOT (wakati wa maambukizi), mpokeaji huhesabu maadili manne ya wakati wa kukimbia (TOF), ambayo hutofautiana kutoka kwa kila mmoja kulingana na umbali kutoka kwa satelaiti hadi kwa mpokeaji. Kisha, kutoka kwa maadili manne ya TOF, mpokeaji huhesabu nafasi yake katika nafasi ya 3D na kupotoka kwa saa yake.

Ya gharama nafuu zaidi Wapokeaji wa GPS kuwa na usahihi wa takriban mita 20 kwa maeneo mengi duniani. Sasa hebu tuone jinsi ya kutengeneza saa yako ya GPS kwa kutumia Arduino.

Vifaa

Moduli yangu ya GPS ina pini 6: GND, Vin, Tx, Rx na GND tena. Pini ya sita haijaunganishwa popote. Pini ya GND imeunganishwa kwenye kesi kwenye Arduino, Vin imeunganishwa kwenye basi ya +5V kwenye Arduino, Tx imeunganishwa kwa pin 10 kwenye Arduino, na pini ya Rx haijaunganishwa popote, kwani hatutatuma ujumbe wowote kwenye moduli ya GPS. . Moduli yangu husambaza data ya setilaiti kwa kutumia kiolesura cha RS-232 kwa 4800 bps, ambacho hupokelewa na Arduino kwenye pini 10.

Chini ni picha Moduli ya GPS:

Moduli ya GPS EM-411

Moduli hutuma kile kinachojulikana kama ujumbe wa NMEA. Hapa unaweza kuona mfano wa ujumbe mmoja wa NMEA na maelezo yake (dondoo kutoka maelezo ya kiufundi):

$GPGGA,161229.487,3723.2475,N,12158.3416,W,1.07,1.0,9.0,M,0000*18

Ugani wa data wa GGA
JinaMfanoVitengoMaelezo
Kitambulisho cha ujumbe$GPGGA Kichwa cha itifaki ya GGA
Wakati wa UTC161229.487 hhmmss.sss (saa za tarakimu mbili, dakika za tarakimu mbili, kisha sekunde hadi elfu)
Latitudo3723.2475
Bendera ya N/SN N - kaskazini, S - kusini
Longitude12158.3416 ddmm.mmmm (nambari mbili za kwanza ni digrii, kisha dakika hadi elfu kumi iliyo karibu)
Bendera ya E/WW E - mashariki, W - magharibi
Kiashiria cha eneo1
  • 0 - eneo halipatikani au si sahihi;
  • 1 - Hali ya GPS SPS, eneo ni sahihi;
  • 2 - GPS tofauti, hali ya SPS, eneo sahihi;
  • 3 - GPS PPS mode, eneo ni sahihi.
Idadi ya satelaiti zilizotumika07 Inatofautiana kutoka 0 hadi 12
HDOP1.0 Uharibifu wa usahihi wa usawa
Urefu ukilinganisha na usawa wa bahari9.0 mita
VitengoMmita
Tofauti ya Geoidal Tofauti kati ya WGS-84 ellipsoid ya dunia na usawa wa bahari (genoid)
VitengoMmita
Umri wa data tofauti ya GPS sekundeNull sehemu wakati DGPS haitumiki
Kitambulisho cha kituo kinachotuma masahihisho tofauti0000
Angalia jumla*18
Mwisho wa ujumbe

Data hii yote inapokelewa na Arduino kupitia pin 10. Maktaba ya TinyGPS inasoma ujumbe wa GPGGA na GPRMC (kwa maelezo ya kina kuhusu GPRMC tazama maelezo ya kiufundi).

Arduino haijaonyeshwa kwenye mchoro. Unganisha pembeni kulingana na miunganisho iliyosainiwa.


Mpango Saa ya GPS kwenye arduino

Programu

Nguvu inapotumika, moduli ya GPS huchukua muda kupata eneo sahihi kutoka kwa satelaiti. Wakati eneo linapopokelewa, moduli hutuma ujumbe wa NMEA kwa Arduino. Maktaba ya TinyGPS ina kipengele cha kupata saa na tarehe kutoka kwa ujumbe wa GPRMC. Inaitwa crack_datetime() na huchukua viashiria saba kwa vigeu kama vigezo: mwaka mwaka , mwezi mwezi , siku ya mwezi siku , saa saa , dakika dakika , sekunde pili , na hundredths ya mia ya pili . Simu ya kazi inaonekana kama hii:

GPS.crack_datetime(&mwaka, &mwezi, &siku, &saa, &dakika, &pili, &hundredths);

Kupigia simu chaguo hili la kukokotoa hukurejeshea thamani sahihi katika vijiwezo mradi tu kila kitu kiko sawa na maunzi.

Ili kupata eneo lako, unaweza kupiga simu f_get_position() chaguo la kukokotoa. Kazi hii inachukua kama vigezo viashiria viwili kwa vigeu: latitudo latitudo na longitudo longitudo . Kupigia simu kipengele hiki inaonekana kama hii:

Gps.f_get_position(&latitudo, &longitudo);

Maandishi asilia programu:

#pamoja na #pamoja na #pamoja na #fafanua RXPIN 10 #fafanua TXPIN 9 #fafanua GPSBAUD 4800 #fafanua RS 2 #fafanua EN 3 #fafanua D4 4 #fafanua D5 5 #fafanua D6 6 #fafanua D7 7 TinyGPS gps; SoftwareSerial uart_gps(RXPIN, TXPIN); LiquidCrystal lcd(RS, EN, D4, D5, D6, D7); // Vigeu vya int sekunde; int timeoffset = 1; // Mtumiaji lazima abadilishe kitengo hadi eneo la saa linalofaa. Katika mfano tunatumia zamu ya saa +1. // Tamko la kazi. getgps utupu (TinyGPS &gps); // Chaguo za kusanidi - huendesha tu wakati usanidi wa utupu umewezeshwa() ( Serial.begin(115200); // Zindua kiolesura cha serial kwa utatuzi uart_gps.begin(GPSBAUD); // Anzisha kipokea UART cha GPS lcd.begin(16,2); // tamko la LCD lcd.print("saa ya GPS"); // Ucheleweshaji wa ujumbe wa kukaribisha (1000); // Subiri sekunde moja lcd.clear(); // Futa LCD) // Kitanzi programu kuu- void loop() inaendeshwa kila wakati ( while(uart_gps.available()) ( int c = uart_gps.read(); if(gps.encode(c)) ( getgps(gps); ) ) ) /* * Chaguo hili la kukokotoa hupokea data kutoka kwa moduli ya GPS * na kuzionyesha kwenye LCD */ void getgps(TinyGPS &gps) ( int year; latitudo ya kuelea, longitudo; mwezi wa baiti, siku, saa, dakika, sekunde, mia; gps.f_get_position(&latitudo, &longitudo ); gps .crack_datetime(&mwaka, &mwezi, &siku, &saa, &dakika, &pili, &hundredths); saa = saa + timeoffset; lcd.clear();//lcd.setCursor(0, 0); lcd.print("Muda : "); ikiwa (saa<= 9) { lcd.print("0"); lcd.print(hour, DEC); } else { lcd.print(hour, DEC); } lcd.print(":"); if (minute <=9) { lcd.print("0"); lcd.print(minute, DEC); } else { lcd.print(minute, DEC); } lcd.print(":"); if (second <= 9) { lcd.print("0"); lcd.print(second, DEC); } else { lcd.print(second, DEC); } lcd.setCursor(0,1); lcd.print("Date: "); if (day <= 9) { lcd.print("0"); lcd.print(day, DEC); } else { lcd.print(day, DEC); } lcd.print("-"); if (month <= 9) { lcd.print(month, DEC); } else { lcd.print(month, DEC); } lcd.print("-"); lcd.print(year, DEC); delay(2000); lcd.clear(); lcd.print("Lat: "); lcd.print(latitude, DEC); lcd.setCursor(0,1); lcd.print("Lon: "); lcd.print(longitude, DEC); delay(2000); // Debugging purpose only. Serial.print(latitude, DEC); Serial.print(" - "); Serial.println(longitude, DEC); }

Tovuti yetu tayari imezungumza mara kwa mara juu ya bidhaa za nyumbani kwa kutumia Arduino, nilitengeneza mwenyewe - ninashiriki matokeo na uzoefu na umma.

Nakala hiyo inaelezea mwanzo wa kazi na Arduino Pro mini na ukosoaji mdogo wa Orange Pi PC, kwa sababu ya mzingo wangu.

Matokeo yake ni kifaa rahisi cha kuhifadhi data ya GPS kwenye kadi ya SD, ambayo hutumiwa kuunda faili ya wimbo katika muundo wowote unaohitaji (kwa mfano, GPX).

Usuli

Ninaendesha baiskeli: wakati mwingine kwenda kazini, wakati mwingine kwa kampuni, wakati mwingine kwa sababu tu, kukimbia, viungo vyangu "si sawa tena." Wakati wa operesheni, mifumo huisha na kwa matengenezo ya wakati ni vyema kuweka wapanda wako kwa namna fulani, kwa sababu. Sikuwa na kompyuta ya kuendesha baiskeli, labda nilirekodi wimbo kwenye simu yangu, au baada ya safari niliunda njia kutoka kwa kumbukumbu kwenye YandexMaps. (shukrani kwa msanidi programu kwa zana rahisi ya "Mtawala") na kurekodi umbali uliosafirishwa katika lahajedwali ya Excel:
Tarehe | Kichwa | Umbali
Kisha akafupisha Umbali na kufanya uamuzi wakati wa kuosha mnyororo (au kuibadilisha karibu), wakati wa kuwasilisha kwa ukaguzi wa kiufundi, nk. Ilibadilika kuwa kuwa na hifadhidata ya wapandaji wako ni muhimu sana: unaweza kujionea mwenyewe ni kiasi gani uliendesha kwa mwezi uliopita ili uweze kuendesha gari sio chini ya mwezi huu; onyesha marafiki mahali ambapo umekuwa; onyesha kasi yako kwenye sehemu... Au, ikiwa umezuiliwa kama mtu anayeshukiwa bila hati, angalau onyesha ulikotoka =)

Simu yangu (Samsung Galaxy Gio) alijenga grafu za kawaida za GPS, lakini wakati wa kuanza ulimfanya awe na wasiwasi zaidi na zaidi, na mara moja alianza tayari kilomita 12 baadaye. Kwa namna fulani haikufanya kazi kununua kitu kipya: sikuinunua mara moja ZenFone4, na kisha hakukuwa na tamaa: ya zamani bado inalima, na mpya sio uzalishaji wa kutosha au ni mbaya sana.

Na hapo wazo likaingia kichwani mwangu kutafuta kifaa maalumu (na antena!) kwa kurekodi nyimbo za GPS: inagharimu kidogo, na ilianza kwa kasi, na kuamua msimamo kwa usahihi zaidi. Lakini, tena, hapakuwa na tamaa fulani ya kuwa wajanja juu ya kitu chochote ... Ni kufungia hasa wakati wa kuondoka kwenye mlango, kusimama na kusubiri GPS kuanza!

Mapumziko ya mwisho mada ilionekana - Orange Pi PC! Bodi ya bei nafuu zaidi ya kuunda bidhaa za nyumbani na kusoma robotiki (?!) na kitu kingine ambacho tulichukua maabara kwenye chuo kikuu na tukasahau kwa mafanikio. Kwa njia, katika taasisi hiyo nilifundishwa vihesabu, vilinganishi, vichochezi, kufundishwa jinsi ya kuunda mifumo inayotumia, na vile vile kanuni za kuunda vidhibiti vidogo, uendeshaji na matumizi yao, lakini labda baada ya kikao maarifa yaliyopatikana yalipangwa na mimi. nitaweza tu kuizalisha kwa hypnosis, ingawa nilihitimu kwa heshima na kupitisha vipindi vyote mwenyewe =)
Kwa matumaini kwamba ikiwa nitaangaza taa kwenye PC ya Orange Pi na bado nikishindwa kutekeleza logger ya GPS inayotamaniwa, basi naweza angalau kusanidi seva, kupakua mito juu yake usiku na kuandika miradi kadhaa wakati wa mchana, ili inafanya kazi mara kwa mara na hutumia kidogo ... Kwa kweli haikutumia sana - karibu 500 mA kwa 5V na gari la USB flash lililochomekwa.

Niliweza hata kuunganisha mfuatiliaji wa 1024x1280 kwa Orange Pi PC bila kupotosha uwiano wa kipengele, lakini ilikuwa na shida nyingi ndogo:
- baada ya "kuzima moto" kwa pili interface ya HDMI ilianza kuharibika, baada ya ishirini iliacha kufanya kazi (baadaye niligundua uwepo wa madereva wa basi kwenye mifano mingine (Orange Pi One, kwa mfano), ambayo haipo kwenye PC ya Pi. - kasoro ya asili katika hatua ya kubuni, IMHO);
- madereva hawakufanya kazi vizuri chini ya Linux (ingawa sikuweza kuunganisha mfuatiliaji, hakuna shida nao)
- ukosefu wa bandari za pembejeo za analog - nilitaka sio kununua kijaribu cha betri, lakini kufanya yangu mwenyewe, lakini ikawa kwamba kwenye Pi PC hii haiwezekani- hakuna AnalogRead().
- (ikilinganishwa na Arduino) matumizi ya juu ya nguvu, ukubwa mkubwa;
- ukosefu wa msaada na habari juu ya maendeleo na utangamano: Nilijaribu kuunganisha adapta moja ya WIFI-USB kwa wiki mbili, kisha nikaunganisha kwa mafanikio mwingine, jina ambalo lilitofautiana na wahusika kadhaa.

Kwa ujumla, Orange Pi ni jambo zuri, lakini sio kama kidhibiti kidogo, lakini kama kompyuta ndogo: inaendeshwa na chaja ya kompyuta kibao, inasaidia HDMI na pato la video, ina bandari nyingi za USB, inaweza kusanidiwa ili isifanye. joto, na huchukua nafasi kidogo kuliko ya stationary.

Kwa hivyo, kwa uhakika, kwa mapenzi ya hatima ...

Iliagizwa na kiolesura cha UART. Lakini ikiwa ningepata fursa, ningeinunua ublox neo-m8n, sasa bei ya chini ya moduli hiyo ni $18.39 .

Kukata tamaa mwisho

Wakati wa kuchagua moduli ya GPS, kwa sababu fulani sikuzingatia ukweli kwamba labda zilikuwa sahihi zaidi, zingefaa zaidi na Orange Pi na zingegharimu kidogo kwa sababu ya umaarufu wao - zimewekwa kwenye GPS ya gari. navigators na laptops. Hata hivyo,. Hata hivyo...
Moduli ilifanya kazi na Orange Pi PC - na nilianza kuandika hati ya PHP ili kuhifadhi nyimbo, na pia kurekebisha mwisho kwa matumizi ya kubebeka: inayoendeshwa na betri nne za 18650, kupitia moduli ya kushuka chini, katika kesi ambayo inaweza kubeba yote. ...
Kwa njia, maandishi ya PHP ni rahisi sana hata kwa utangazaji wa "moja kwa moja" kwenye mtandao: chagua kamba ya GLL, hesabu tena kuratibu na uhamishe nafasi ya sasa kwa seva, kisha uihifadhi kwenye hifadhidata na, unapoingia kwenye ukurasa. , onyesha ramani ya Google na wimbo, uliojengwa na pointi.
Niliamua kuchukua kesi hiyo, moduli ya kushuka chini, ilifungwa kutoka kwa ubao, ikatenganishwa, imefungwa kwenye kesi hiyo ...
Sijui jinsi ningeambatisha betri 4 18650 na nyumba kutoka kwa kipanga njia hadi baiskeli ikiwa jaribio lingefanikiwa, lakini katika mchakato wa kumwaga gundi ya moto kwenye moduli ya kushuka, sikugundua hilo. betri ziliunganishwa kwenye nyaya na kuichomeka mahali pasipofaa na bunduki ya joto, pengine kusababisha voltage ya pembejeo ya The Orange Pi ni 16V. Vidhibiti vya mstari kwenye ubao viliwaka, haijulikani kuhusu wengine (processor, kumbukumbu), tunahitaji kwa namna fulani kuagiza kutengenezwa.

Kulikuwa na hamu ya kuunganisha moduli ya GPS kwenye kompyuta na kupitia mipangilio yake, afya ya pato la mistari isiyotumiwa kurekodi wimbo. Ingewezekana kutatua tatizo hili kwa manually kutoka kwa mstari wa amri, lakini katika mazingira ya u-kituo ni rahisi na rahisi zaidi, kwa hiyo, ili si kusoma mwongozo wa nene, niliamuru , pia inafaa kwa firmware ya Arduino.

Kwa sababu "Programu" ilikuwa tayari kuruka kutoka China, baada ya OrangePi kushindwa, iliamuliwa kuagiza Arduino na kujaribu kufanya logger ya GPS juu yake. Ni wazi kuwa hutumia kidogo, ni ngumu zaidi, na kuna mabaraza mengi ya mada kwenye mtandao na wataalam ambao wanaweza kuelekeza anayeanza kwenye njia sahihi! Hata hivyo, Arduino pia ina vikwazo vyake, ambayo, kwa mujibu wa Mwandishi, hawana athari nzuri sana katika maendeleo ya wataalamu. Lakini kwa sababu Inagharimu bucks moja na nusu na zimetengwa kwa mengi, unaweza kuzitumia mwenyewe.

Mtayarishaji programu

Adapta iliyotajwa hapo juu ya CH340G inatumika kama programu; kwa urahisi wa firmware ya Arduino, inaweza kubadilishwa kidogo. Kawaida, unapoangaza kupitia UART, unahitaji kubonyeza kitufe cha Rudisha kwenye ubao wa Arduino, hata hivyo, ili kugeuza hatua hii otomatiki, unaweza kuunganisha mguu wa 13 wa chip ya CH340G kwenye pini za DTR za bodi ya Arduino:


Au, ikiwa huna ubao, lakini mtawala "wazi" wa Atmega, kupitia capacitor 0.1uF iliyounganishwa mfululizo na Pini ya Weka Upya.

Ugavi wa nguvu

Tunahitaji 5V ili kuwasha moduli na kidhibiti cha GPS. Ubao wa Arduino una kiimarishaji cha mstari wa kushuka chini; inaweza kutumika ikiwa chanzo ni angalau 5V. Ili kufanya hivyo, unahitaji kutumia voltage kwenye pini MBICHI. Lakini, kwa sababu Nitakuwa na betri moja ya Li-Ion (3-4.2V), iliamuliwa kutumia kuongezeka moduli:
au
.
Kutoka kwa pato la moduli 5V imeunganishwa na pini VCC, Hatugusi RAW.

Kadi ya SD/MicroSD

Kadi hizi za kumbukumbu zina pinout sawa na zinaendana na maunzi. Wanaweza kufanya kazi kwa njia mbili: SD Na SPI. Tuna nia ya mwisho.

Unaweza kuagiza moduli iliyopangwa tayari: ni rahisi kuunganisha. Au ikiwa unayo ya ziada kushusha hadhi moduli, resistors 10 na 4.7 kOhm na slot ya kadi, unaweza kufanya msomaji wa kadi kwa mikono yako mwenyewe. Moduli iliyoonyeshwa tayari ina kila kitu muhimu ili kuunganisha kadi ya MicroSD, lakini nilikuwa na msomaji wa kadi iliyovunjika, ambayo unaweza kuingiza kadi za SD au MicroSD kwa upande mmoja - na nilihifadhi kidogo, lakini nikapata msomaji wa kadi ya ulimwengu wote. .

Ya kutengenezwa nyumbani huchukua nafasi mara 3 zaidi, lakini pia hukuruhusu kutumia kadi za SD.
Hapa kuna viunganisho. Ili kuwasha kadi, unahitaji karibu 3.3V, ili usakinishaji uwe rahisi, tunagawanya anwani katika vikundi vitatu au vinne: pamoja na nguvu, ishara kutoka kwa mtawala hadi kadi (10-CS, 11-DI, 13-CLK), ardhi (minus nguvu) na ishara kutoka kwa kadi (DO-13).
Nguvu ya ziada hupitia moduli ya kushuka chini au kidhibiti laini cha mstari.
Ishara kutoka kwa mtawala huenda kwa vipinga vya 4.7 kO, kisha kwenye kadi ya kumbukumbu kutoka kwa hatua ya makutano ya 4.7 kO na 10 kO resistors.
Ugavi wa nguvu hasi huunganishwa moja kwa moja kutoka kwa coil ya kawaida ya waya, au kutoka kwa pini ya karibu ya Arduino, na vipinga 10 kO pia vinaunganishwa nayo.
Ishara kutoka kwa kadi imeunganishwa moja kwa moja na pin 13 ya Arduino.
Hivi ndivyo hofu ilionekana wakati wa majaribio:


katika fomu iliyokamilishwa, waya za nguvu tu zilibaki kutoka kwa zile "nene", lakini waya za kiolesura zilibadilishwa na zile nyembamba za shaba kutoka kwa rotor ya gari ngumu ya transformer:

Moduli ya GPS

Huunganisha kwa kidhibiti kupitia mlango wa kawaida wa serial na pini moja ya moduli ya TX - RX Arduino. Frequency - 9600 Baud, ikiwa imewekwa juu, matatizo yanaweza kutokea kutokana na ucheleweshaji wa usindikaji amri nyingine (kifungo cha kuangalia 7, angalia chini).

Kitufe

Kuna kitufe kimoja, kilichounganishwa kwa pin 7 katika hali INPUT_PULLUP (bila kipinga cha nje), kubofya tu ili kukata kadi ya SD na kuacha kifaa kinachakatwa. Sina hakika kabisa kwamba kuzima tu nguvu haitaathiri uendeshaji wa kadi ya kumbukumbu kwa njia yoyote, kwa hiyo niliamua kwanza kuacha kurekodi kwake, kisha kuzima nguvu. Au, kama chaguo, ondoa kadi ya kumbukumbu, futa data kutoka kwayo, kisha uiingiza tena na, ukibonyeza kuweka upya kwenye ubao, endelea kurekodi.

Kiashiria

LED imeunganishwa na LED ya rangi ya bluu yenye kung'aa sana kupitia kontena ya 220 Ohm hadi pini 6. Ili kufanya mwangaza wake uonekane, tulilazimika kujaza taa zote nyekundu za LED na gundi nyeusi ya moto (mbili kwenye Arduino, mbili kwenye moduli za nguvu. ) Kiashiria cha LED ni kama ifuatavyo ...
Kupepesa mara kwa mara - GPS inaanza - data halali haipokelewi kutoka kwa moduli. Wakati wa kuanza, GPS haitoi mara moja habari ya kisasa, kwa hivyo kuweka () ilirekodi kitanzi cha kusubiri cha mstari ".00,A,", ambayo (pamoja na mipangilio ya moduli yangu) inaonyesha kuwa ilituma data ya msimamo wa kuaminika.
Kufumba mara mbili - kosa wakati wa kuanza kufanya kazi na kadi ya kumbukumbu. Wakati mwingine unaweza kusahau kuiingiza au inaweza kuunganisha kwa usahihi. Inaangaliwa tu mwanzoni mwa kazi; ikiwa kadi itatoweka wakati mwingine, hii haijakamatwa kwa njia yoyote.
Kupepesa macho mara tatu au nne kunamaanisha kuacha baada ya kubonyeza kitufe (pini 7). 3 - ikiwa GPS haijawahi kutuma data, 4 - ikiwa kuacha ilitokea baada ya logger kuanza kufanya kazi. Inatumika kujua jinsi moduli ya GPS ilikuwa ikifanya wakati wa kuzima =)
Kwa njia, chini unaweza kuona wiring interface SPI kwenda kadi SD. Kila kitu ambacho kilitumwa bila lazima kilijazwa na gundi ya moto ya uwazi, usambazaji wa umeme na unganisho kwenye moduli ya GPS ilifanywa kuwa ya kuharibika, kuunganisha programu kwenye Arduino na moduli ya GPS, kuna waya nene. (kutoka kebo ya IDE).

Picha ya kimkakati kutoka kwa Fritzing:


Picha halisi, "bonge" nyeusi juu ya kisomaji kadi imeundwa kusaidia betri:

Kwa ujumla, kutoa kadi ni ngumu sana; Ninatumia vibano, lakini havipunguki kwa sababu ya mtetemo. Wakati imefungwa, inafaa katika mfukoni, kesi ilinunuliwa muda mrefu uliopita, bei sawa leo labda ni $ 0.50:

... urefu ~25mm. IMHO, sanduku nyeupe ya kuweka plastiki itakuwa bora zaidi! Haitaumiza kujua mapema ikiwa unahitaji eneo lililofungwa au lenye uingizaji hewa. Bado sijaamua mwenyewe, huenda nikalazimika kuchimba mashimo kwa uingizaji hewa.

Nyingine "za nyumbani"

Mbali na kisoma kadi ya SD, "mikono ya wazimu" ilizinduliwa katika maeneo mengine ambapo unaweza kufanya bila wao.
1. Mlima wa betri.
Anwani kutoka kwa umeme wa zamani wa AT zinauzwa kwenye ubao wa mkate ili zianguke kwenye anwani zinazofanana za betri ya simu. Kisha bodi iliyo na mawasiliano imejaa gundi ya moto. Hatua inayofuata ni kutengeneza kiti cha betri; nilifaulu kufanya hivi mara ya tatu. Ili sio gundi betri na gundi ya moto, tunaweka foil au karatasi laini kutoka kwa kibandiko; gundi itatoka kwenye karatasi baada ya kukauka. Unaweza kufanya bila usumbufu huu mkubwa ikiwa una betri ya kawaida ya Lithium, 18650, au tu solder moja ya polima.
2. Dupont femail kontakt - unaweza kununua waya arobaini kwa nusu buck na usiwe na wasiwasi kuhusu hilo. Lakini itabidi uwangojee kwa mwezi mmoja na, ikiwa unayo umeme karibu, unaweza kukata kiunganishi kilichoundwa kuwezesha anatoa za zamani, ondoa anwani kutoka hapo na uzifunge kwa bomba la kupunguza joto:

Uongofu

Ni bora kusoma kuhusu jinsi moduli ya GPS inavyofanya kazi katika makala hapo juu; hapa nitafafanua tu kwamba niliisanidi kutuma ujumbe wa NMEA. aina $GPRMC na $GPGGA pekee, zimeandikwa kwenye kadi bila usindikaji, ambayo inaruhusu sisi kurahisisha kazi na kukabidhi usindikaji wa data kwa mabega ya mtu mwingine.
Labda programu ya kawaida ya usindikaji data ya GPS ni. Faili zinazosababishwa zinachakatwa na hati ifuatayo:
"Njia ya programu\gpsbabel.exe" -w -r -t -i nmea -f 0.GPS -x tupa,hdop=1.2 -o gpx -F out.gpx sitisha hii hukuruhusu kutumia kichujio (kupuuza) pointi ambazo parameta fulani ya usahihi hdop chini ya 1.2 na upate faili nje.gpx katika umbizo linalofaa kwa programu nyingi. GPSBabel inasaidia

14.04.2016. Utaratibu wa kuhifadhi mifuatano ya GPS umeundwa upya: sasa ni mifuatano yenye urefu zaidi ya herufi 48 pekee ndiyo imeandikwa kwenye ramani; ikiwa kuna mfuatano mfupi zaidi, kurekodi kwa faili hukoma na LED (6) kuwasha. Kwa hivyo nilijaribu kufanya dalili ya kuonekana kwa laini za GPS zisizo sahihi. Moduli yangu ya GPS imesanidiwa kutoa matokeo $GPRMC na $GPGGA pekee, data halali inapoonekana hapo, urefu wa mistari hii huwa zaidi ya 48; ukijumuisha mistari mingine, na mpangilio huu hazitaishia kwenye faili. Ili kuzima hali hii, unahitaji kubadilisha msimbo
ikiwa (btReaded > 48) ( // Data ni ya sasa ikiwa (bWaitingGps) ( bWaitingGps = uongo; PORTD &= 0b110111111; // Weka upya pini ya PD6. mkLogFile(); // Fungua kumbukumbu ya GPS. ) flDataFile.write(chGpsLint , btReaded); // Andika data kwenye faili. ) vinginevyo ( ikiwa (!bWaitingGps) ( bWaitingGps = kweli; PORTD |= 0b001000000; // Weka pini ya PD6. flDataFile.close(); // Funga kumbukumbu ya GPS . )) kwa msimbo
flDataFile.write(chGpsLint, btReaded); // Andika data kwa faili.

Maboresho yanayowezekana

1. Unaweza kufanya kifaa kuwa kigumu zaidi mara 3 ikiwa utaweka vipengele kwa usahihi, na pia kuchukua kisoma kadi ya SD kilicho tayari, bei yake, kama moduli ya kushuka ninayotumia, ni nusu ya pesa!
2. Tumia betri 18650 - ni nafuu na zina uwezo mkubwa.
3. Kwa kuwa kifaa kimefungwa kwa baiskeli, na wengi wana taa ya baiskeli, ambayo inaendeshwa na betri kadhaa za 18650, unaweza kuunganisha kwa betri mbili (6-4.8V) kupitia pini ya RAW kwenye Arduino - na uondoe hatua. moduli ya chini ya mapigo - kufanya kifaa kuwa ngumu zaidi.
4. Kwa kuwa kifaa kimefungwa kwa baiskeli, unaweza angalau kuongeza sensor ya cadence, ambayo ni nini nitafanya katika siku za usoni.

Jumla, ukinunua kila kitu kipya:

Moduli ya Arduino yenye kidhibiti cha Atmega328 ~$1.5
(Micro)SD Card Reader Kwa Arduino ~$0.60
Moduli ya GPS yenye UART kutoka ~$10
USB-to-UART (programu) ~$0.70
/ ~$12,8
Moduli ya Kuongeza ~$0.70
Betri ~2.50
/ ~$16
Labda hiyo ndiyo yote, kuna maandishi mengi, ikiwa unahitaji ufafanuzi, uliza. Ikiwa ninakuchosha, naomba msamaha, nitajaribu kuandika katika siku zijazo zaidi kwa uhakika.

Shukrani za pekee kwa msaada wako kwenye jukwaa.

Ninapanga kununua +60 Ongeza kwa vipendwa Nilipenda uhakiki +50 +94

Moduli za GPS huruhusu kifaa chako kinachojiendesha kufuatilia viwianishi vyake na vigezo vyake vya kusogea. Utendaji huu ni muhimu kwa kila aina ya vifuatiliaji, kola mahiri na mikoba. Katika makala hii, tulijaribu muhtasari mfupi wa moduli za GPS na programu za kufanya kazi na GPS kwenye kompyuta. Kuunganishwa kwa Arduino kunazingatiwa kwa kutumia mfano wa moduli maarufu zaidi ya NEO 6.0

Kabla ya kuanza kuunganisha GPS kwa Arduino, unahitaji kujifunza jinsi ya kujaribu moduli yenyewe. Ili kufanya hivyo, kwa hakika tutahitaji programu ambayo inaruhusu sisi kuonyesha hali ya kifaa, idadi ya satelaiti zilizokamatwa na taarifa nyingine za mtihani. Tulijaribu kuweka pamoja programu maarufu zaidi ya kufanya kazi na GPS kwenye kompyuta.

Kituo cha U

Mpango wa u-center hutumiwa kufanya kazi na vipokezi vya GNSS kutoka U-Blox. Kwa kutumia programu hii, unaweza kupima usahihi wa nafasi, kubadilisha usanidi wa mpokeaji na kufanya uchunguzi wa jumla, kuchakata data iliyopokelewa na kuionyesha kwa wakati halisi. Mpokeaji hupokea kuratibu kwa kutumia GPS, GLONASS. Taarifa iliyopatikana inaweza kusafirishwa na kuonyeshwa katika Ramani za Google, Google Earth. Mpango huo utapata kuunda chati mbili-dimensional, histograms na aina nyingine za grafu. u-center inaweza kutumika wakati wa kufanya kazi na wapokeaji wengi.

Vipengele vya programu ya U-Center:

  • Kufanya kazi na Windows;
  • Kusoma data ya NMEA, SiRF, UBX;
  • Pato la data iliyopokelewa kwa namna ya maandishi na grafu;
  • Kurekodi data na kucheza tena;
  • Udhibiti kamili wa moduli ya GPS;
  • Uwezekano wa kubadilisha usanidi wa moduli ya GPS;
  • Kuandika usanidi mpya kwa moduli;
  • Kuandika usanidi kwa faili katika umbizo la .txt;
  • Sasisho la firmware ya moduli;
  • Uwezekano wa kuanza kwa baridi, joto na moto wa moduli.

Programu inakuwezesha kutathmini utendaji wa mpokeaji, kuchambua utendaji wake na kuweka mipangilio yake. Mbali na U-Center, programu nyingine zinaweza kutumika, kwa mfano, Visual GPS, Time Tools GPS Clock na wengine.

GPS inayoonekana

Mpango huu unatumika kuonyesha data ya GPS kwa kutumia itifaki ya NMEA 0183 katika umbo la picha. Programu hukuruhusu kuandika logi ya data ya GPS kwenye faili. Kuna njia mbili za kufanya kazi katika programu - ya kwanza, Visual GPS inawasiliana na mpokeaji wa GPS, na kwa pili, Visual GPS inasoma usomaji wa NMEA kutoka kwa faili. Programu ina madirisha 4 kuu - Ubora wa Mawimbi, Urambazaji, Utafiti, Azimuth na Mwinuko.

Saa ya GPS ya Zana za Wakati

Programu hii inafanya kazi kwenye Windows na vituo vyovyote vya kazi, inakagua wakati kutoka kwa kipokeaji saa cha NMEA GPS ambacho kimeunganishwa kwenye kompyuta na hukuruhusu kusawazisha wakati kwenye PC. Taarifa kuhusu saa, tarehe, hali ya GPS iliyopokelewa kutoka kwa mpokeaji huonyeshwa. Ubaya wa programu ni kutowezekana kwa uamuzi sahihi wa wakati, kwani vifaa vya GPS havina pigo la pili kwa bandari ya serial ya kompyuta.

GPS TrimbleStudio

Programu hutumiwa kufanya kazi na kipokeaji cha Copernicus kwenye Windows. Programu inaonyesha data iliyopokelewa ya urambazaji. Viwianishi vilivyopatikana vinaweza kuchaguliwa kwenye Ramani za Google, Microsoft Visual Earth. Mipangilio yote ya kipokeaji kilichosanidiwa inaweza kuhifadhiwa katika faili ya usanidi

Fugawi

Programu inatumika kwa kupanga njia na urambazaji wa GPS wa wakati halisi. Programu hukuruhusu kurekodi na kuhifadhi njia na vidokezo kwenye ramani. Urambazaji unafanywa juu ya ardhi na juu ya maji na angani. Mpango huo unatumia aina mbalimbali za ramani za kidijitali - ramani za topografia, viwango vya NOAA RNC, nakala zilizochanganuliwa za ramani za karatasi, Ramani za Mtaa za Fugawi.

Ramani ya Dunia ya 3D

Katika mpango huu unaweza kuona dunia katika vipimo vitatu. Inatumika kama kitabu cha kumbukumbu cha kijiografia ambacho unaweza kupata habari kuhusu nchi 269 na makazi elfu thelathini, kupima kati ya pointi mbili, na kucheza rekodi za sauti.

Mapitio ya moduli za GPS za Arduino

Kuna idadi kubwa ya moduli tofauti za GPS za kufanya kazi na Arduino. Kwa msaada wao, unaweza kuamua eneo halisi (kuratibu za kijiografia, urefu juu ya usawa wa bahari), kasi ya harakati, tarehe, wakati.

Sehemu ya EM-411. Kifaa kinatokana na chip ya juu ya utendaji ya SiRF Star III, ambayo ina matumizi ya chini ya nguvu. Moduli ina kiasi kikubwa cha kumbukumbu ya kuhifadhi data ya almanac na inasaidia itifaki ya kawaida ya NMEA 0183. Wakati wa kuanza kwa baridi ni karibu sekunde 45.

VK2828U7G5LF. Moduli hii inategemea chip ya Ublox UBX-G7020-KT. Kwa msaada wake unaweza kupata kuratibu kwa kutumia GPS na GLONASS. Mpokeaji ana kumbukumbu iliyojengwa ambayo mipangilio inaweza kuhifadhiwa. Moduli ina antenna ya kauri iliyojengwa na inafanya kazi kwa kutumia itifaki ya NMEA 0183. Voltage ya ugavi wa moduli ni 3.3-5V.

GPS ya SKM53. Moja ya moduli za bei nafuu na matumizi ya chini ya sasa. Wakati wa kuanza kwa baridi kali ni takriban sekunde 36, wakati wa kuanza moto ni sekunde 1. Chaneli 66 zinatumika kuweka nafasi na chaneli 22 za ufuatiliaji. Moduli ina antena ya GPS iliyojengewa ndani; kifaa hutoa utendaji wa juu wa kusogeza chini ya hali mbalimbali za mwonekano.

Neo-6M GPS. Mpokeaji hutengenezwa na u-blox. Moduli hii hutumia teknolojia ya hivi punde ili kutoa maelezo sahihi ya eneo. Ugavi wa moduli voltage 3-5V. Mstari wa vifaa unawakilishwa na aina G, Q, M, P, V na T na sifa zao za kipekee. Wakati wa kuanza kwa baridi ni kama sekunde 27.

locosys 1513. Moduli hii inasaidia GPS, GLONASS, Galileo, QZSS, SBAS. Kulingana na Chip MediaTek MT333, ambayo ina matumizi ya chini ya nguvu, unyeti wa juu na uendeshaji imara katika hali mbalimbali. Mpokeaji ana usaidizi wa itifaki ya udhibiti wa maandishi. Wakati wa kuanza kwa baridi ni takriban sekunde 38.

Arduino GPS moduli GY-NEO6MV2

Moduli hutumia itifaki ya kawaida ya NMEA 0183 kwa mawasiliano na vipokezi vya GPS. Mpokeaji ni bodi ambayo moduli ya NEO-6M-0-001, utulivu wa voltage, kumbukumbu isiyo na tete, LED na betri ziko.

Vipimo vya moduli:

  • Ugavi wa voltage 3.3-5V;
  • Kiolesura cha UART 9600 8N1 3.3V;
  • itifaki ya NMEA;
  • Uzito wa moduli 18 g;
  • Upatikanaji wa EEPROM kwa mipangilio ya kuokoa;
  • Upatikanaji wa betri iliyojengwa;
  • Uwezekano wa kuunganisha antenna kwenye kiunganishi cha U-FL;
  • Wakati wa kuanza kwa baridi ni takriban sekunde 27, wakati wa kuanza moto ni sekunde 1;
  • Upatikanaji wa njia zaidi ya 50 za kuweka nafasi;
  • Kiwango cha upya 5 Hz;
  • Joto la kufanya kazi kutoka -40C hadi 85C.

Moduli hutumiwa sana kwa copters, kuamua nafasi ya sasa ya vitu na magari ya polepole. Viwianishi vilivyopatikana vinaweza kupakiwa kwenye Ramani za Google, Google Earth na zingine.

Baada ya kuanza kwa baridi kwa moduli, upakuaji wa almanac huanza. Wakati wa kupakia sio zaidi ya dakika 15, kulingana na hali na idadi ya satelaiti katika eneo la mwonekano.

Pinout: GND (ardhi), RX (UART data pembejeo), TX (UART data pato), Vcc - 3.3V hadi 5V umeme.

Ili kuunganisha utahitaji moduli ya GY-NEO6MV2, ubao wa Arduino, waya, na antena ya GPS. Bandika miunganisho: VCC hadi 5V, GND hadi GND, RX ili kubandika 9 kwenye Arduino, TX ili kubandika 10. Kisha Arduino inahitaji kushikamana na kompyuta kupitia USB.

Kufanya kazi, utahitaji kuunganisha maktaba kadhaa. SoftwareSerial - Inahitajika kupanua utendakazi wa maunzi ya kifaa na kushughulikia kazi ya mawasiliano ya mfululizo. Maktaba ya TinyGPS hutumiwa kubadilisha ujumbe wa NMEA kuwa umbizo rahisi kusoma.

Kuangalia uendeshaji kupitia programu ya U-Center

Kama ilivyoelezwa hapo juu, moduli imetengenezwa na u-blox, kwa hivyo mpango wa U-Center hutumiwa kusanidi mpokeaji.

Inapounganishwa kwenye UART, mpokeaji hutuma ujumbe kwa kutumia itifaki ya NMEA mara moja kwa sekunde. Kwa kutumia programu, unaweza kubinafsisha ujumbe uliotumwa.

Ili kusanidi moduli, unahitaji kuiunganisha kupitia kibadilishaji cha USB-UART(COM-UART). Unaweza kusanidi muunganisho kwa kutumia menyu ya Mpokeaji-Port. Mara tu uunganisho umeanzishwa, kiashiria cha kijani kitawaka. Mpokeaji ataanza kuanzisha miunganisho na satelaiti, baada ya hapo kuratibu za sasa, wakati na habari zingine zitaonekana kwenye skrini. Ujumbe wote huonekana kwenye dirisha la Ujumbe. Katika menyu ya Tazama - Ujumbe unaweza kuchagua ujumbe ambao utatumwa kwa kidhibiti kidogo. Kulingana na kazi iliyopo, unaweza kupunguza idadi ya ujumbe uliotumwa, ambayo itaongeza kasi ya usindikaji wa data na kuwezesha algorithm ya kuchanganua ujumbe na mtawala.

Ikiwa mawasiliano na satelaiti haijaanzishwa, unahitaji kuangalia ikiwa antenna imeunganishwa. Kisha unahitaji kuangalia voltage ya usambazaji, inapaswa kuwa 5V. Ikiwa uunganisho bado haujaanzishwa, unaweza kuweka moduli karibu na dirisha au kwenda nje kwenye eneo wazi.

Unaweza kutazama data iliyotumwa kupitia menyu ya Tazama.

Ujumbe wote huanza na alama ya $, herufi zifuatazo ni vitambulisho vya ujumbe. GP ni mfumo wa kimataifa, barua 3 zifuatazo zinaonyesha ni habari gani iliyomo.

RMC - habari ndogo zaidi ya urambazaji (wakati, tarehe, kuratibu, kasi, mwelekeo).

GGA - taarifa ya nafasi iliyonaswa. Wakati, kuratibu, urefu, hali ya eneo, idadi ya satelaiti ni kumbukumbu.

Inaangalia operesheni kupitia Arduino IDE

Unaweza pia kufanya kazi na moduli kupitia mazingira ya kawaida ya ukuzaji wa IDE ya Arduino. Baada ya kuunganisha moduli kwenye ubao, unahitaji kupakia mchoro na uangalie matokeo. Ikiwa seti isiyo ya kawaida ya wahusika inaonekana kwenye kufuatilia, unahitaji kurekebisha kasi ya interface ya Arduino na kompyuta na kasi ya interface ya moduli na mtawala.

Mchoro wa kuonyesha data ya eneo.

#pamoja na #pamoja na // kuunganisha maktaba ya GPS ya TinyGPS muhimu kwa uendeshaji; SoftwareSerial gpsSerial(8, 9); // nambari za pini ambazo moduli imeunganishwa (RX, TX) bool newdata = uongo; kuanza kwa muda mrefu bila kusainiwa; mrefu lat, lon; muda mrefu bila saini, tarehe; usanidi batili())( gpsSerial.begin(9600); // kuweka kiwango cha ubadilishaji na kipokeaji Serial.begin(9600); Serial.println("Inasubiri data ya GPS..."); ) kitanzi batili()) ( ikiwa ( millis () - anza > 1000) //weka ucheleweshaji wa sekunde moja kati ya masasisho ya data ( newdata = readgps(); ikiwa (data mpya) ( start = millis(); gps.get_position(&lat, &lon); gps. get_datetime(&date, &time); Serial.print("Lat: "); Serial.print(lat); Serial.print(" Long: "); Serial.print(lon); Serial.print(" Tarehe: ") ; Serial.print (tarehe); Serial.print(" Muda: "); Serial.println(time); )) ) // angalia upatikanaji wa data bool readgps() ( huku (gpsSerial.available()) ( int b = gpsSerial.read( ); //kuna hitilafu katika maktaba ya TinyGPS: data iliyo na \r na \n haijachakatwa if("\r" != b) ( if (gps.encode(b)) inarudi kweli ;)) kurudi uwongo;)

Baada ya msimbo kupakiwa, unahitaji kusubiri sekunde chache (wakati wa kuanza kwa baridi) ili kifaa kiweze kuamua eneo na kuanza kuonyesha kuratibu. Mara tu kifaa kinapoanza kufanya kazi, LED kwenye ubao itaangaza.

Data ya latitudo na longitudo itaonekana kwenye kichunguzi cha mlango. Tarehe na saa ya sasa ya GMT pia itarejeshwa. Unaweza kuweka eneo lako la saa wewe mwenyewe - hii inafanywa kwa mstari Serial.print(static_cast(saa+8));

Hitimisho

Kama unavyoona, kuanza kutumia GPS hakuhitaji upotoshaji wowote mgumu sana. Moduli zilizotengenezwa tayari au ngao zinazoingiliana na Arduino kupitia UART zitasaidia. Ili kufanya michoro iwe rahisi, unaweza kutumia maktaba zilizopangwa tayari. Kwa kuongeza, moduli yoyote ya GPS inaweza kujaribiwa bila Arduino kwa kuunganisha kwenye kompyuta na kutumia programu maalum. Tumetoa muhtasari wa programu maarufu zaidi katika nakala hii.

Baada ya majaribio kadhaa na Arduino, niliamua kufanya tracker rahisi ya GPS.
Imetumika Arduino Mega 2560 (Arduino Uno), SIM900 - GSM/GPRS moduli (kwa kutuma taarifa kwa seva), GPS receiver SKM53 GPS.
Kila kitu kilinunuliwa kwenye ebay.com, kwa jumla ya rubles 1500 (kuhusu rubles 500 kwa arduino, kidogo kidogo kwa moduli ya GSM, kidogo zaidi kwa GPS).

Mpokeaji wa GPS

Kwanza unahitaji kuelewa jinsi ya kufanya kazi na GPS. Moduli iliyochaguliwa ni moja ya gharama nafuu na rahisi zaidi. Walakini, mtengenezaji anaahidi betri kuokoa data ya satelaiti. Kulingana na hifadhidata, kuanza kwa baridi kunapaswa kuchukua sekunde 36, hata hivyo, katika hali yangu (sakafu ya 10 kutoka kwa sill ya dirisha, hakuna majengo kabisa) ilichukua kama dakika 20. Mwanzo unaofuata, hata hivyo, tayari ni dakika 2.

Kigezo muhimu cha vifaa vilivyounganishwa na Arduino ni matumizi ya nguvu. Ukipakia kigeuzi cha Arduino kupita kiasi, kinaweza kuungua. Kwa mpokeaji anayetumiwa, matumizi ya juu ya nguvu ni 45mA @ 3.3v. Kwa nini vipimo vinapaswa kuonyesha nguvu ya sasa kwenye voltage nyingine isipokuwa ile inayohitajika (5V) ni siri kwangu. Walakini, kibadilishaji cha Arduino kitahimili 45 mA.

Uhusiano

GPS haidhibitiwi, ingawa ina pini ya RX. Kwa madhumuni gani haijulikani. Jambo kuu unaloweza kufanya na mpokeaji huyu ni kusoma data kupitia itifaki ya NMEA kutoka kwa pini ya TX. Ngazi - 5V, kwa Arduino tu, kasi - 9600 baud. Ninaunganisha VIN na VCC ya arduino, GND hadi GND, TX hadi RX ya mfululizo unaolingana. Nilisoma data kwanza kwa mikono, kisha kwa kutumia maktaba ya TinyGPS. Kwa kushangaza, kila kitu kinasomeka. Baada ya kubadili Uno, nilipaswa kutumia SoftwareSerial, na kisha matatizo yakaanza - baadhi ya wahusika wa ujumbe walipotea. Hii sio muhimu sana, kwani TinyGPS hukata ujumbe batili, lakini haipendezi kabisa: unaweza kusahau kuhusu masafa ya 1Hz.

Ujumbe wa haraka kuhusu SoftwareSerial: hakuna bandari za maunzi kwenye Uno, kwa hivyo lazima utumie programu. Kwa hivyo, inaweza tu kupokea data kwenye pini ambayo bodi inasaidia kukatiza. Kwa upande wa Uno, hizi ni 2 na 3. Zaidi ya hayo, bandari moja tu hiyo inaweza kupokea data kwa wakati mmoja.

Hivi ndivyo "benchi ya mtihani" inaonekana.

Kipokeaji/kisambazaji cha GSM

Sasa inakuja sehemu ya kuvutia zaidi. Moduli ya GSM - SIM900. Inasaidia GSM na GPRS. Wala EDGE, wala haswa 3G, hazihimiliwi. Kwa kusambaza data ya kuratibu, hii labda ni nzuri - hakutakuwa na ucheleweshaji au matatizo wakati wa kubadili kati ya modes, pamoja na GPRS sasa inapatikana karibu kila mahali. Walakini, kwa programu zingine ngumu zaidi hii inaweza kuwa haitoshi.

Uhusiano

Moduli pia inadhibitiwa kupitia bandari ya serial, na kiwango sawa - 5V. Na hapa tutahitaji RX na TX. Moduli ni ngao, ambayo ni, imewekwa kwenye Arduino. Kwa kuongeza, inaendana na mega na uno. Kasi ya chaguo-msingi ni 115200.

Tunakusanya kwenye Mega, na hapa mshangao wa kwanza usio na furaha unatungojea: pini ya TX ya moduli iko kwenye pini ya 7 ya Mega. Vikwazo hazipatikani kwenye pini ya 7 ya mega, ambayo ina maana utakuwa na kuunganisha pini ya 7, tuseme, kwa pini ya 6, ambayo usumbufu unawezekana. Kwa hivyo, tutapoteza pini moja ya Arduino. Kweli, kwa mega sio ya kutisha sana - baada ya yote, kuna pini za kutosha. Lakini kwa Uno hii tayari ni ngumu zaidi (nakukumbusha kuwa kuna pini 2 tu zinazounga mkono usumbufu - 2 na 3). Kama suluhisho la shida hii, tunaweza kupendekeza sio kusanikisha moduli kwenye Arduino, lakini kuiunganisha na waya. Basi unaweza kutumia Serial1.

Baada ya kuunganisha, tunajaribu "kuzungumza" na moduli (usisahau kuiwasha). Tunachagua kasi ya bandari - 115200, na ni nzuri ikiwa bandari zote za serial zilizojengwa (4 kwenye mega, 1 kwenye uno) na bandari zote za programu zinafanya kazi kwa kasi sawa. Kwa njia hii unaweza kufikia uhamishaji wa data thabiti zaidi. Sijui kwanini, ingawa naweza kukisia.

Kwa hivyo, tunaandika msimbo wa awali wa kusambaza data kati ya bandari za mfululizo, kutuma Atz, na kupokea ukimya katika jibu. Nini kilitokea? Ah, kesi nyeti. ATZ, tuko sawa. Hurray, moduli inaweza kutusikia. Je, unapaswa kutupa simu kwa kutaka kujua? ATD +7499... Simu ya mezani inalia, moshi unatoka kwenye arduino, kompyuta ya mkononi inazimika. Kigeuzi cha Arduino kiliwaka. Ilikuwa wazo mbaya kuilisha volts 19, ingawa imeandikwa kwamba inaweza kufanya kazi kutoka 6 hadi 20V, 7-12V inapendekezwa. Hifadhidata ya moduli ya GSM haisemi popote kuhusu matumizi ya nguvu chini ya mzigo. Naam, Mega huenda kwenye ghala la vipuri. Kwa pumzi iliyopunguzwa, ninawasha kompyuta ya mkononi, ambayo ilipokea +19V kupitia mstari wa +5V kutoka USB. Inafanya kazi, na hata USB haikuchoma. Asante Lenovo kwa kutulinda.

Baada ya kibadilishaji kuchomwa moto, nilitafuta matumizi ya sasa. Kwa hiyo, kilele - 2A, kawaida - 0.5A. Hii ni wazi zaidi ya uwezo wa kibadilishaji cha Arduino. Inahitaji chakula tofauti.

Kupanga programu

Moduli hutoa uwezo mkubwa wa kuhamisha data. Kuanzia simu za sauti na SMS na kuishia na GPRS yenyewe. Aidha, kwa mwisho inawezekana kutekeleza ombi la HTTP kwa kutumia amri za AT. Utalazimika kutuma kadhaa, lakini inafaa: hutaki kuunda ombi kwa mikono. Kuna nuances kadhaa kwa kufungua chaneli ya upitishaji data kupitia GPRS - kumbuka AT+CGDCONT=1 ya kawaida, "IP", "apn"? Kwa hiyo, kitu kimoja kinahitajika hapa, lakini ujanja zaidi kidogo.

Ili kupata ukurasa katika URL maalum, unahitaji kutuma amri zifuatazo:

AT+SAPBR=1,1 // Fungua mtoa huduma (Mtoa huduma) AT+SAPBR=3,1,"CONTYPE","GPRS" //aina ya muunganisho - GPRS AT+SAPBR=3,1,"APN","internet" //APN, kwa Megafoni - mtandao AT+HTTPINIT //Anzisha HTTP AT+HTTPPARA="CID",1 //Kitambulisho cha Mtoa huduma ili kutumia. AT+HTTPPARA="URL","http://www.example.com/GpsTracking/record.php?Lat=%ld&Lng=%ld" //URL halisi, baada ya sprintf na viwianishi AT+HTTPACTION=0 // Omba data kwa kutumia mbinu ya GET //subiri majibu AT+HTTPTERM //stop HTTP

Kama matokeo, ikiwa kuna muunganisho, tutapokea jibu kutoka kwa seva. Hiyo ni, kwa kweli, tunajua jinsi ya kutuma data ya kuratibu ikiwa seva itaipokea kupitia GET.

Lishe

Kwa kuwa kuwezesha moduli ya GSM kutoka kwa kibadilishaji cha Arduino, kama nilivyogundua, ni wazo mbaya, iliamuliwa kununua kibadilishaji cha 12v->5v, 3A kwenye ebay hiyo hiyo. Walakini, moduli haipendi usambazaji wa umeme wa 5V. Hebu tuende kwa udukuzi: unganisha 5V kwa pini ambayo 5V inatoka kwa Arduino. Kisha kibadilishaji kilichojengwa cha moduli (yenye nguvu zaidi kuliko kibadilishaji cha Arduino, MIC 29302WU) kitafanya kutoka 5V kile moduli inahitaji.

Seva

Seva iliandika ya kwanza - kuhifadhi kuratibu na kuchora kwenye Yandex.maps. Katika siku zijazo, inawezekana kuongeza vipengele mbalimbali, ikiwa ni pamoja na usaidizi kwa watumiaji wengi, hali ya "silaha/silaha", hali ya mifumo ya gari (kuwasha, taa za mbele, n.k.), na ikiwezekana hata udhibiti wa mifumo ya gari. Kwa kweli, kwa msaada unaofaa kwa tracker, ambayo inabadilika vizuri kuwa mfumo kamili wa kengele.

Vipimo vya shamba

Hivi ndivyo kifaa kilichokusanyika kinavyoonekana, bila kesi:

Baada ya kusanikisha kibadilishaji cha nguvu na kuiweka kwenye kesi kutoka kwa modem ya DSL iliyokufa, mfumo unaonekana kama hii:

Niliuza waya na kuondoa anwani kadhaa kutoka kwa vizuizi vya Arduino. Wanaonekana kama hii:

Niliunganisha 12V kwenye gari, nikaendesha karibu na Moscow, na nikapata wimbo:


Wimbo unageuka kuwa umechanika. Sababu ni kwamba kutuma data kupitia GPRS inachukua muda mrefu, na wakati huu kuratibu hazijasomwa. Hili ni kosa la programu. Inatibiwa, kwanza, kwa kutuma mara moja pakiti ya kuratibu kwa muda, na pili, kwa kufanya kazi kwa asynchronously na moduli ya GPRS.