- Reikalingos medžiagos
- „Arduino LoRa“ skydas
- Gamyba „LoRa Shield“ PCB
- PCB surinkimas
- GPS modulio prijungimas prie „LoRa“ siųstuvo
- „Arduino LoRa“ programavimas kaip GPS siųstuvas
- „Arduino LoRa“ programavimas kaip GPS imtuvą
- „Arduino LoRa GPS Tracker“ veikia
Žinoti konkretaus objekto / asmens buvimo vietą visada buvo malonu. Šiandien GPS yra plačiai naudojamas turto valdymo programose, tokiose kaip transporto priemonių stebėjimas, transporto priemonių parko stebėjimas, turto stebėjimas, asmenų stebėjimas, naminių gyvūnėlių sekimas ir kt. Bet kokiam stebėjimo įrenginiui pagrindinis dėmesys bus skiriamas jo baterijos tikimybei ir stebėjimo diapazonui. Atsižvelgiant į abu dalykus, „ LoRa“ atrodo puikus pasirinkimas, nes jis sunaudoja labai mažai energijos ir gali veikti dideliais atstumais. Taigi, šioje pamokoje sukursime GPS sekimo sistemą naudodami „LoRa“, sistemą sudarys iš siųstuvo, kuris nuskaitys vietos informaciją iš NEO-6M GPS modulioir perduoti belaidžiu ryšiu per Lora. Imtuvo dalis gaus informaciją ir parodys ją 16x2 LCD ekrane. Jei dar nesinaudojote „LoRa“, prieš tęsdami, sužinokite apie „LoRa“ ir „LoRaWAN Technology“ bei kaip tai galima susieti su „Arduino“.
Kad viskas būtų paprasta ir ekonomiška šiam projektui, nenaudosime „LoRa“ vartų. Vietoj to atliks tarpusavio ryšį tarp siųstuvo ir imtuvo. Tačiau, jei norite globalaus diapazono, imtuvą galite pakeisti „LoRa Gateway“. Taip pat, kadangi esu iš Indijos, naudosime 433MHz LoRa modulį, kuris čia yra teisėta ISM juosta, todėl gali tekti pasirinkti modulį pagal jūsų šalį. Tai sakant, pradėkime…
Reikalingos medžiagos
- „Arduino Lora Shield“ - 2Nos (galima atsisiųsti PCB dizainą)
- Arduino Uno - 2Nos
- SX1278 433MHz LoRa modulis - 2
- 433MHz „Lora“ antena
- NEO-6M GPS modulis
- LCD ekrano modulis
- Jungiamieji laidai
„Arduino LoRa“ skydas
Kad būtų lengviau kurti daiktus naudojant „LoRa“, mes suprojektavome „LoRa Arduino Shield“ šiam projektui. Šį skydą sudaro SX1278 433MHz su 3,3 V reguliatoriumi, suprojektuotu naudojant „LM317“ kintamą reguliatorių. Skydas tiesiai sėdės ant „Arduino“, suteikdamas „LoRa“ galimybes. Šis „LoRa“ skydas bus naudingas, kai turėsite įdiegti „LoRa“ jutimo mazgus arba sukurti „LoRa“ tinklo tinklą. Visa „LoRa Arduino Shield“ grandinės schema pateikta žemiau
Skydą sudaro 12 V lizdas, kuris maitinamas bus naudojamas reguliuojant „LoRa“ modulio 3,3 V, naudojant reguliatorių LM317. Jis taip pat bus naudojamas „Arduino UNO“ maitinimui per „Vin“ kaištį, o „Arduino“ reguliuojamas 5 V įtampa naudojama skydo skystųjų kristalų maitinimui. Naudojant rezistorius R1 ir R2, LM317 išėjimo įtampa yra fiksuota 3,3 V įtampa. Šių rezistorių vertę galima apskaičiuoti naudojant LM317 skaičiuoklę.
Kadangi „LoRa“ modulis sunaudoja labai mažai energijos, jį taip pat galima maitinti tiesiogiai iš 3,3 V „Arduino“ kaiščio, tačiau mes naudojome išorinio reguliatoriaus konstrukciją, nes LM317 yra patikimesnis nei borto įtampos reguliatorius. Skyde taip pat yra potenciometras, kuriuo galima reguliuoti LCD ryškumą. „LoRa“ modulio ryšys su „Arduino“ yra panašus į tą, kurį padarėme ankstesnėje „Arduino sąsajos su„ Lora “pamokoje.
Gamyba „LoRa Shield“ PCB
Dabar, kai mūsų grandinė yra paruošta, galime tęsti savo PCB projektavimą. Atidariau PCB projektavimo programine įranga ir pradėjau kurti savo takelius. Kai PCB dizainas buvo baigtas, mano plokštė atrodė panašiai kaip parodyta žemiau
Taip pat galite atsisiųsti dizaino failus GERBER formatu ir pagaminti, kad gautumėte lentas. Gerber failo nuoroda pateikta žemiau
Atsisiųskite „Gerber“ failą, skirtą „Arduino LoRa Shield“
Dabar, kai mūsų dizainas yra paruoštas, atėjo laikas juos pagaminti. Norėdami padaryti PCB yra gana lengva, tiesiog atlikite toliau nurodytus veiksmus
1 žingsnis: Eikite į www.pcbgogo.com, užsiregistruokite, jei tai jūsų pirmas kartas. Tada skirtuke PCB Prototype įveskite savo PCB matmenis, sluoksnių skaičių ir reikalingą PCB skaičių. Darant prielaidą, kad PCB yra 80 cm × 80 cm, matmenis galite nustatyti taip, kaip parodyta žemiau.
2 žingsnis: tęskite spustelėdami mygtuką „ Pasiūlyti dabar “. Būsite nukreipti į puslapį, kuriame prireikus nustatysite keletą papildomų parametrų, pvz., Naudojamos medžiagos takų tarpai ir pan. Tačiau dažniausiai numatytosios vertės veiks gerai. Vienintelis dalykas, į kurį turime atsižvelgti, yra kaina ir laikas. Kaip matote, pastatymo laikas yra tik 2-3 dienos, o mūsų PSB jis kainuoja tik 5 USD. Tada galite pasirinkti pageidaujamą pristatymo būdą pagal savo reikalavimus.
3 žingsnis: Paskutinis žingsnis yra įkelti „Gerber“ failą ir tęsti mokėjimą. Norėdami įsitikinti, kad procesas vyksta sklandžiai, prieš tęsdamas mokėjimą, PCBGOGO patikrina, ar jūsų „Gerber“ failas galioja. Tokiu būdu galite būti tikri, kad jūsų PCB yra draugiškas gamybai ir pasieks jus kaip įsipareigojusį.
PCB surinkimas
Užsakius lentą, ji mane pasiekė po kelių dienų, nors kurjeris tvarkingai paženklintoje, gerai supakuotoje dėžutėje ir kaip visada PCB kokybė buvo nuostabi.
Aš įjungiau litavimo strypą ir pradėjau montuoti lentą. Kadangi pėdsakai, įklotai, vijokliai ir šilkografija yra tinkamos formos ir dydžio, neturėjau jokių problemų surenkant lentą. Kai litavimas buvo baigtas, lenta atrodė taip žemiau, nes matote, kad ji tinka prie mano „Arduino Uno“ lentos.
Kadangi mūsų projekte yra „ Arduino LoRa“ siųstuvas ir „ Arduino LoRa“ imtuvas, mums reikės dviejų skydų - vieno imtuvui, kito - siųstuvui. Taigi aš pradėjau lituoti kitą PCB, tiek PCB su LoRa moduliu, tiek LCD yra parodytas žemiau.
Kaip matote tik imtuvą „LoRa shied“ (kairėje pusėje) yra prijungtas LCD ekranas, siųstuvo pusę sudaro tik „LoRa“ modulis. Toliau prijungsime GPS modulį prie siųstuvo pusės, kaip aptarta toliau.
GPS modulio prijungimas prie „LoRa“ siųstuvo
Čia naudojamas GPS modulis yra NEO-6M GPS modulis, modulis gali veikti labai mažu galingumu, turėdamas mažą formos faktorių, todėl jis yra tinkamas stebėti programas. Tačiau yra daugybė kitų GPS modulių, kuriuos anksčiau naudojome įvairiose transporto priemonių sekimo ir vietos nustatymo programose.
Modulis veikia 5 V įtampa ir palaiko nuoseklų ryšį 9600 baudos greičiu. Taigi mes prijungiame modulį prie + 5 V „Arduino“ kaiščio ir prijungiame „Rx“ ir „Tx“ kaiščius prie skaitmeninių kaiščių D4 ir D3, kaip parodyta žemiau
Kaiščiai D4 ir D3 bus sukonfigūruoti kaip nuoseklūs programinės įrangos kaiščiai. Įjungus maitinimą, NEO-6M GPS modulis ieškos palydovo ryšio ir automatiškai visą informaciją išves nuosekliai. Šie išvesties duomenys bus pateikiami NMEA sakinių formatu, kuris reiškia Nacionalinę jūrų elektronikos asociaciją ir yra standartinis visų GPS prietaisų formatas. Norėdami sužinoti daugiau apie GPS naudojimą su „Arduino“, spustelėkite nuorodą. Šie duomenys bus dideli ir daugiausiai laiko turime juos formuluoti rankiniu būdu, kad gautume norimą rezultatą. Mums pasisekė, yra biblioteka, vadinama „TinyGPS ++“, kuri mums sunkiai pakelia. Taip pat turite pridėti „LoRa“ biblioteką, jei to dar nepadarėte. Taigi atsisiųskime abi bibliotekas iš žemiau pateiktos nuorodos
Atsisiųskite „TinyGPS ++ Arduino“ biblioteką
Atsisiųskite „Arduino LoRa“ biblioteką
Nuoroda atsisiųs ZIP failą, kurį bus galima pridėti prie „Arduino IDE“ vykdant komandą „ Eskizas -> Įtraukti biblioteką ->„ Add.ZIP “ biblioteka. Kai būsite pasirengę aparatinei įrangai ir bibliotekai, galėsime programuoti mūsų „Arduino“ plokštes.
„Arduino LoRa“ programavimas kaip GPS siųstuvas
Kaip žinome, „LoRa“ yra siųstuvas-imtuvas, o tai reiškia, kad jis gali siųsti ir gauti informaciją. Tačiau šiame GPS sekimo projekte mes naudosime vieną modulį kaip siųstuvą, kad nuskaitytume koordinatės informaciją iš GPS ir ją išsiųstume, o kitą modulį kaip imtuvą, kuris gaus GPS koordinatės reikšmes ir atspausdins ją LCD. Tiek siųstuvas ir imtuvas modulis programa galima rasti šio puslapio apačioje. Prieš tęsdami kodą, įsitikinkite, kad įdiegėte GPS modulio ir „LoRa“ bibliotekų bibliotekas. Šiame skyriuje apžvelgsime siųstuvo kodą.
Kaip visada, programą pradedame pridėdami reikalingas bibliotekas ir smeigtukus. Čia SPI ir LoRa biblioteka naudojama LoRa ryšiui, o TinyGPS ++ ir SoftwareSerial biblioteka naudojama GPS ryšiui. GPS aparatūros modulis yra prijungtas prie 3 ir 4 kontaktų, todėl mes taip pat apibrėžiame taip
# įtraukti
Sąrankos funkcijos viduje mes pradedame nuoseklųjį monitorių ir inicijuojame programinės įrangos seriją kaip „gpsSerial “, kad galėtume bendrauti su mūsų NEO-6M GPS moduliu. Taip pat atkreipkite dėmesį, kad „LoRa“ veikimo dažniu naudojau 433E6 (433 MHz), todėl gali tekti jį pakeisti atsižvelgiant į naudojamo modulio tipą.
negaliojanti sąranka () { Serial.begin (9600); gpsSerial.begin (9600); o (! Serijinis); Serial.println („LoRa siuntėjas“); jei (! LoRa.begin (433E6)) { Serial.println ("LoRa paleidimas nepavyko!"); o (1); } LoRa.setTxPower (20); }
Viduje ciklo funkcija mes patikriname, ar GPS modulis pateikia kai kuriuos duomenis, jei taip, mes perskaitėme visus duomenis ir suformulavome juos naudodami funkciją gps.encode. Tada naudodamiesi funkcija gps.location.isValid () patikriname, ar gavome galiojančius vietos duomenis.
while (gpsSerial.available ()> 0) if (gps.encode (gpsSerial.read ())) if (gps.location.isValid ()) {
Jei gavome galiojančią vietą, galime pradėti perduoti platumos ir ilgumos reikšmes. Funkcija gps.location.lat () pateikia platumos koordinatę, o funkcija gps.location.lng () - ilgumos koordinatę. Kadangi juos spausdinsime 16 * 2 skystųjų kristalų ekrane, turime paminėti, kada reikia pereiti prie antros eilutės, todėl naudodamiesi raktiniu žodžiu „c“ imtuvui suintiminti spausdiname šią informaciją 2 eilutėje.
LoRa.beginPacket (); „LoRa.print“ („lot.:“); „LoRa.print“ (gps.location.lat (), 6); LoRa.print ("c"); „LoRa.print“ („Ilgas:“); „LoRa.print“ (gps.location.lng (), 6); Serial.println („Siunčiama per LoRa“); LoRa.endPacket ();
„Arduino LoRa“ programavimas kaip GPS imtuvą
Siųstuvo kodas jau siunčia platumos ir ilgumos koordinačių vertę, dabar imtuvas turi perskaityti šias reikšmes ir atspausdinti LCD. Panašiai čia pridedame „LoRa“ modulio ir LCD ekrano biblioteką ir nustatome, prie kurių kaiščių yra prijungtas LCD, taip pat inicializuojame „LoRa“ modulį, kaip ir anksčiau.
# įtraukti
Viduje kilpos funkcijos mes klausytis duomenų paketus sudaro siųstuvo Lora modulį ir jo dydį naudodamiesi LoRa.parsePacket () funkciją ir laikyti jį " packetSize " kintamasis. Jei paketai gaunami, mes juos skaitome simboliais ir atspausdiname LCD. Programa taip pat patikrina, ar „LoRa“ modulis siunčia raktinį žodį „c“, jei taip, tada išspausdina likusią informaciją antroje eilutėje.
if (packetSize) {// Jei paketas gavo Serial.print ("Gautas paketas" "); lcd.clear (); while (LoRa.available ()) { char incoming = (char) LoRa.read (); if (gaunamas == 'c') { lcd.setCursor (0, 1); } else { lcd.print (gaunamas); } }
„Arduino LoRa GPS Tracker“ veikia
Kai aparatinė įranga ir programa bus paruošta, abu kodus galėsime įkelti į atitinkamus „Arduino“ modulius ir juos maitinti naudodami 12 V adapterį arba USB kabelį. Kai siųstuvas maitinamas, galite pastebėti, kad mirksi mėlynas GPS modulio šviesos diodas, o tai rodo, kad modulis ieško palydovo ryšio, kad gautų koordinates. Tuo tarpu imtuvo modulis įsijungs ir LCD ekrane parodys pasveikinimo pranešimą. Kai siųstuvas išsiųs informaciją, imtuvo modulis ją parodys savo skystųjų kristalų ekrane, kaip parodyta žemiau
Dabar galite judėti naudodamiesi siųstuvo GPS moduliu ir pastebėsite, kad imtuvas atnaujina savo vietą. Norėdami sužinoti, kur tiksliai yra siųstuvo modulis, galite perskaityti LCD ekrane rodomas platumos ir ilgumos vertes ir įvesti jas į „ Google maps“, kad gautumėte vietą žemėlapyje, kaip parodyta žemiau.
Pilnas darbo taip pat galima rasti vaizdo tikrą šio puslapio apačioje. Tikiuosi, kad supratote mokymo programą ir patiko kurti ką nors naudingo. Jei turite kokių nors abejonių, galite juos palikti komentarų skiltyje arba naudoti mūsų forumus kitoms techninėms užklausoms.