Turinys:
- 1 žingsnis: Būtinos sąlygos
- 2 žingsnis: pagrindinė koncepcija
- 3 žingsnis: SIM800L modulis
- 4 žingsnis: „Ublox Neo 6m“
- 5 žingsnis: grandinė
- 6 žingsnis: kodas
- 7 veiksmas: tinklalapio serveris
- 8 žingsnis: pabaiga/patirtis
Video: Naminis realaus laiko GPS sekiklis (SIM800L, „Ublox NEO-6M“, „Arduino“): 8 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:48
Taigi, ar jūs, kaip aš, guli GSM modulis? Taip pat GPS sekimo priemonė?
Mes galvojame tą patį!
Šioje instrukcijoje aš bandysiu jums padėti, kaip pasiekti savo tikslą naujoko požiūriu.
Kadangi neturėjau ankstesnių žinių apie elektros inžineriją (tiesą pasakius, projektui to nereikia tiek daug, bet ne) ir nežinojau, kaip sukurti įrenginį, kuris siunčia duomenis realiuoju laiku į žiniatinklio serverį, susidūriau su daugybe problemų. Vis dėlto galų gale man pavyko susitvarkyti.
Taigi šioje pamokoje noriu pabrėžti pradedančiojo klaidas ir atitinkamai sudaryti projektą.
Atminkite: dirbdami su elektra visada būkite atsargūs!
PASTABA: nesu profesionalus. Kodas gali būti nepakankamai sudėtingas visiems jūsų poreikiams. Projektas yra „hobio projektas“, bet! man tai pavyko. Ir jei tai veiktų man, tai tiktų ir jums!
1 žingsnis: Būtinos sąlygos
GSM MODULIS - SIM800L
- Gana mažas, lengvai naudojamas
- Galimybė naudotis mobiliuoju internetu (GPRS)
- Pigu
GPS MODULIS - „Ublox NEO6M“
- Taip pat mažas
- Puikiai atlieka savo darbą
Mikrovaldiklis - gali būti bet koks - galite naudoti garsųjį „Arduino Uno“arba „Nano“, kad atlaisvintumėte vietos
Baterija - aš naudoju 18650 elementą kaip pagrindinį ir vienintelį maitinimo šaltinį (nominalus 3,7 V)
Akumuliatoriaus laikiklis - kodėl? - nes lituoti 18650 bateriją yra gana pavojinga dėl karščio.
„DC -DC Boost Converter“padidinimo modulis 5V - turi būti, nes mano naudojamam „Arduino“reikia 5V
Įrankiai, pagrindiniai dalykai, kurie gali būti naudingi:
Laidai, lituoklis, bandymo lenta bandymui
2 žingsnis: pagrindinė koncepcija
Pagrindinė sistemos koncepcija yra tokia:
Jį sudaro 3 dalys:
- Įrenginys, kuris turi tinkamas GPS koordinates ir gali nuotoliniu būdu prisijungti prie serverio ir į jį siųsti duomenis
- Žiniatinklio serveris, galintis priimti gaunamus duomenis, juos saugo ir aptarnauja kitus klientus
- Platforma - kurioje galime peržiūrėti koordinates - Idealiu atveju tai dabar turėtų būti mobilioji programa arba svetainė
3 žingsnis: SIM800L modulis
Man buvo sunku su moduliu.
Norėčiau pradėti nuo kai kurių savybių ir nuorodų.
Pagal duomenų lapą:
- Jis veikia nuo 3,4V iki 4,4V
- Jis gali siųsti SMS, skambinti balsu į kitus telefonus ir netgi prisijungti prie interneto!
- Mes galime su juo bendrauti per AT komandas!
- Piko metu jis gali naudoti iki 2A! Pastaba: tikriausiai negalėsite jo išmatuoti multimetru - dėl mažo mėginių ėmimo dažnio
Mano patirtis rodo, kad SIM800L žemiau 3.8V tikrai neveikia.
Norėdami gauti daugiau informacijos, apsilankykite: duomenų lape
Taigi jūsų darbas yra aprūpinti modulį mažiausiai 3,8 V įtampa (idealiu atveju - 4 V), maitinimo šaltinį, kurio išėjimas yra ne mažesnis kaip 2A.
Prieš naudodami modulį galutiniame įrenginyje, siūlau užmegzti ryšį su SIM800L ir kompiuteriu, kad įsitikintumėte, jog įrenginys veikia tinkamai.
Pirmiausia įjunkite SIM kortelę, kaip parodyta aukščiau esančiame paveikslėlyje.
Norėdami prijungti jį prie kompiuterio, galite naudoti USB į TTL keitiklį arba „Arduino“.
Dabar aš einu su „Arduino“.
Prijunkite SIM800L VCC ir GND prie maitinimo šaltinio gnybtų.
Prijunkite TX prie „Arduino“10 -ojo skaitmeninio kaiščio, RX prie „arduino“11 -ojo skaitmeninio kaiščio.
Atsisiųskite kodą, kurį susiejau šiame veiksme.
Turėdami kodą, galite siųsti komandas ir jas atgauti serijiniame monitoriuje.
Keletas paprastų komandų:
AT Grąžina Gerai, jei ryšys yra geras.
ATD+123456789; Skambinkite nurodytu telefono numeriu. Pastaba: nepamirškite baigti kabliataškiu.
AT+CPIN? Pateikiama SIM kortelės būsena (užrakinta arba ne)
Jei norite išsiųsti SMS, įvestį turite baigti specialiu simboliu, tai galima padaryti naudojant simbolį „$“.
Dėl kitų įdomių komandų siūlau perskaityti šią.
Yra įvairių komandų, susipažinkite su jomis, jos tikrai naudingos.
Yra raudonas būsenos šviesos diodas, nurodantis SIM800L veikimą.
64 MS ON - 800MS OFF - SIM800L nėra užregistruotas tinkle.
64 MS ON - 3000MS OFF - SIM800L yra užregistruotas tinkle.
64 MS ON - 300MS OFF - SIM800l veikia GPRS režimu
Jei SIM800L vėl įsijungia maždaug po 8–10 mirksėjimų, tai gali būti dėl to, kad trūksta efektyvaus maitinimo šaltinio.
Jei po AT nesiseka, patikrinkite laidus! Jei turite multimetrą, patikrinkite laidų tęstinumą.
Patikrinkite laidų ir litavimo jungčių jungtis! Modulis veiks tik mirksint.
4 žingsnis: „Ublox Neo 6m“
Kai kurios savybės
- Maksimali įtampa: 3,6 V - maitinau jį su „Arduino“3,3 V kaiščiu
- Maksimali srovės srovė yra 67 mA, todėl galite ją maitinti iš „arduino“
- Temperatūros diapazonas: -40-85 Celsijaus (manau, kad jums tiks)
Mano užsakytas įrenginys buvo su antena, matoma paveikslėlyje, aš tiesiog įkišu jį į atitinkamą lizdą.
Kai prietaisas turi signalus, jis mirksi su mėlynu šviesos diodu.
Pirmiausia patikrinkite, kaip čia veikia GPS, jei nežinote.
Kai įrenginys įjungtas ir randa 3 palydovus, jis siunčia daug kableliais atskirtų reikšmių „Arduino“, kaip nurodyta aukščiau.
Norėdami palengvinti savo darbą, galime naudoti kai kurias išorines bibliotekas, kad išanalizuotume šiuos duomenis, kad juos būtų lengviau skaityti žmonėms.
Galite naudoti „TinyGps“biblioteką arba „NeoGPS“biblioteką. Aš naudoju antrąjį, nes jis yra lengvesnis.
Norėdami atlikti bandymus, turite prijungti maitinimo kaiščius prie arduino 3.3V ir GND.
Atsisiųskite šį kodą ir naudokite jį su GPS. RX skaitmeninis kaištis 10, TX skaitmeninis kaištis 11
Pastaba: nepamirškite naudoti modulio lauke, geriausia, kai nėra debesies.
Po pusės minutės prietaisas turėtų mirksėti ir išvesti jūsų GPS koordinates!:)
Kai žinote, kad jūsų SIM800L ir GPS modulis veikia tinkamai, galite pereiti prie kito žingsnio.
5 žingsnis: grandinė
Grandinė tokia kaip paveikslėlyje.
Taigi, 3,4V - 4,2V 18650 baterija yra pagrindinis energijos šaltinis. Sim800L energiją gauna tiesiai iš jo. Siekiant pagerinti grandinės stabilumą, tarp jų yra kondensatorius.
Renkantis kondensatorių, turėtumėte pasirinkti mažą ESR talpą.
Vienas 5 V pakopinis keitiklis padidina akumuliatoriaus įtampą iki 5 V (to reikia, nes „Arduino“veikia su 5 V įtampa).
5 V maitinimo šaltinis čia prijungtas prie „Nano“. „Sim800L“ir „Neo6m“yra prijungti prie „Nano“, kaip parodyta paveikslėlyje. („Sim Tx-D10“, „SimRx-D11“; „NeoTX-D3“, „NeoRX-D4“)
D12 yra prijungtas prie RST, todėl galime programiškai iš naujo paleisti sistemą (išskyrus SIM800L). PASTABA: šis perkrovimo metodas gali būti ne geriausia praktika)
Ir galiausiai, du šviesos diodai yra prijungti prie NANO, kad galėtume pasakyti vartotojui, jei įvyksta kokia nors klaida.
6 žingsnis: kodas
Kodas pridedamas prie „Instructables“arba pažiūrėkite į „github“.
Galite jį pakeisti, kad tinkamai veiktų pagal jūsų poreikius, arba, jei norite, galite naudoti kito kodą.
waitUntilResponse (); pagalbinė funkcija buvo paimta iš jo kodo. Patikrinkite jo darbą ir kodą!
Trumpai tariant, sąrankos funkcijoje turime įgalinti mūsų SIM800L modulio GPRS ryšį. Mes žinome, ar tai pavyks, jei šviesos diodas greitai mirksi. (setupGPRSConnection ())
Ciklo funkcijoje - kas 15 sekundžių iškviečiama funkcija sendData (), kuri turi HTTP užklausą
Aš naudoju užklausos eilutes, norėdamas perduoti duomenis į žiniatinklio serverį tokiu formatu:
ip adresas/file.php? key = value & key = value pvz.
Jei įvyksta klaida, užsidega atitinkamas šviesos diodas. (SIM, GPS)
7 veiksmas: tinklalapio serveris
Mūsų naudojimui pakanka paprasto lengvo žiniatinklio serverio.
Yra keletas variantų, kuriuos galite pasirinkti:
- Galite naudoti nuotolinį įmonės serverį, už kurį tikriausiai turite reguliariai mokėti.
- Galite naudoti savo kompiuterį. Siūlau tik bandymams, tai nėra labai efektyvu paleisti visą parą, dėl energijos švaistymo, saugumo problemų.
- Galite naudoti mažą kompiuterį, pvz., Raspberry PI. Lengvas, pigus, nevartoja daug energijos.
Aš išbandžiau antrąjį ir trečiąjį variantus, jie gerai veikė. Na, pagrindinis tikslas nėra šios instrukcijos serveriai, bet aš jums patariu.
Jei naudojate kompiuterį, tikriausiai naudojate „Windows“. Jei aš būčiau tu, aš į jį įdiegčiau „Apache“arba „XAMPP“serverį.
„XAMPP“jau turi PHP, be to, jame yra HTML, „Perl“ir duomenų bazių valdymo sistema. Naudodami PHP galite sukurti dinamišką serverį. Jei norite naudoti ką tik sukurtą vietinį serverį iš bet kurios pasaulio vietos, turite priskirti savo kompiuteriui statinį IP ir atlikti tam tikrą perkėlimą. Naudinga pamoka apie statinį IP:
Ir visas perkėlimo dalykas:
Jei turite avietę, gera praktika ją naudoti. Galite susipažinti su „Linux“komandomis ir paleisti savo serverį visą parą.
Operacinė sistema buvo „Raspbian Jessie“su sąranka be galvos (be klaviatūros, monitoriaus) - valdžiau ją kompiuteriu su SSH ryšiu.
Aš naudoju „Putty“prisijungdamas prie savo „Raspberry“. Nepamirškite pakeisti savo paskyros slaptažodžio, kad kiti negalėtų prisijungti prie jūsų Pi. Numatytasis yra: pi, passw: aviečių.
Įdiegiau „lighttpd“žiniatinklio serverį su „sqlite3“. Gera pamoka čia:
Serverio kode daugiausia naudoju PHP. Naudodami PHP galite gauti duomenis, skaityti/rašyti duomenų bazes - koduoti užklausą į „json“formatą ir pan.
Mano kodą taip pat galite peržiūrėti „github“aplanke „server_files“.
Ir, žinoma, turite įgalinti perkėlimą į „Pi“savo maršrutizatoriuje, jei norite jį pasiekti nuotoliniu būdu.
8 žingsnis: pabaiga/patirtis
Aptvaras dar nepadarytas.
Mano patirtis tokia, kad sistema veikia neblogai. Tačiau laukia stabilumo patobulinimai.
Jei sekimo priemonė neveikia su pridėtu kodu, nesijaudinkite. Pabandykite įsitikinti, kad SIM800L ir NEO 6M veikia taip, kaip turėtų. Galite laisvai keisti mano kodą arba ieškoti geresnio. Tikiuosi, kad galėčiau parodyti jums pavyzdį, kaip galite užbaigti šį projektą.
Priimu bet kokius patarimus, pataisymus iš komentarų. Nesidrovėkite klausti.
Rekomenduojamas:
Kaip padaryti drėgmės ir temperatūros realaus laiko duomenų įrašymo įrenginį naudojant „Arduino UNO“ir SD kortelę - DHT11 duomenų kaupiklio modeliavimas „Proteus“: 5 žingsniai
Kaip padaryti drėgmės ir temperatūros realaus laiko duomenų įrašymo įrenginį naudojant „Arduino UNO“ir SD kortelę | DHT11 duomenų kaupiklio modeliavimas „Proteus“: Įvadas: Sveiki, tai „Liono Maker“, čia yra „YouTube“nuoroda. Mes kuriame kūrybinį projektą su „Arduino“ir dirbame prie įterptųjų sistemų
„SCARA Robot“: mokymasis apie priešingą ir atvirkštinę kinematiką !!! (Plot Twist Sužinokite, kaip sukurti realaus laiko sąsają ARDUINO naudojant apdorojimą !!!!): 5 žingsniai (su paveikslėliais)
„SCARA Robot“: mokymasis apie priešingą ir atvirkštinę kinematiką !!! (Plot Twist Sužinokite, kaip sukurti realaus laiko sąsają ARDUINO naudojant APDOROJIMĄ !!!!): SCARA robotas yra labai populiari mašina pramonės pasaulyje. Pavadinimas reiškia tiek selektyviai atitinkančią surinkimo roboto ranką, tiek selektyviai atitinkančią šarnyrinę roboto ranką. Tai iš esmės yra trijų laisvės laipsnių robotas, kuris yra du pirmieji
DS1307 ir DS3231 realaus laiko laikrodžio modulių naudojimas naudojant „Arduino“: 3 žingsniai
DS1307 ir DS3231 realaus laiko laikrodžio modulių naudojimas su „Arduino“: Mes nuolat gauname užklausų, kaip naudoti DS1307 ir DS3231 realaus laiko laikrodžio modulius su „Arduino“iš įvairių šaltinių, todėl tai yra pirmoji iš dviejų dalių mokymo, kaip juos naudoti. Šiai „Arduino“pamokai mes turime du realaus laiko laikrodžio modulius
DS1307 realaus laiko laikrodis RTC su „Arduino“: 4 žingsniai
DS1307 realaus laiko laikrodis RTC su „Arduino“: šioje pamokoje sužinosime apie realaus laiko laikrodį (RTC) ir kaip „Arduino“& „Real Time Clock IC DS1307“yra sumontuotas kaip laiko nustatymo įrenginys. „Real Time Clock“(RTC) naudojamas laikui stebėti ir kalendoriui prižiūrėti. Norėdami naudoti RTC, naudokite
„Arduino“laikrodis naudojant DS1307 realaus laiko laikrodžio (RTC) modulį ir 0,96: 5 žingsniai
„Arduino“laikrodis, naudojant DS1307 realaus laiko laikrodžio (RTC) modulį ir 0.96: Sveiki, vaikinai, šioje pamokoje pamatysime, kaip sukurti darbinį laikrodį naudojant DS1307 realaus laiko laikrodžio modulį & OLED ekranai. Taigi laiką perskaitysime iš laikrodžio modulio DS1307. Ir atsispausdinkite jį OLED ekrane