- Potrebni materiali
- Arduino LoRa ščit
- Izdelava PCB za LoRa Shield
- Sestavljanje PCB
- Priključitev modula GPS na oddajnik LoRa
- Programiranje Arduino LoRa kot oddajnika GPS
- Programiranje Arduino LoRa kot sprejemnika GPS
- Arduino LoRa GPS Tracker deluje
Vedenje, kje se nahaja določen predmet / oseba, je bilo vedno tolažilno. Danes se GPS pogosto uporablja v aplikacijah za upravljanje premoženja, kot so sledenje vozil, sledenje voznega parka, spremljanje premoženja, sledenje osebam, sledilnik hišnih ljubljenčkov itd. Pri vseh sledilnih napravah bo glavni namen načrtovanja pričakovana pričakovana baterija in obseg spremljanja. Glede na oboje se zdi LoRa odlična izbira, saj ima zelo majhno porabo energije in lahko deluje na dolge razdalje. Torej, v tej vadnici bomo zgradili sistem za sledenje GPS z uporabo LoRa, sistem bo sestavljen iz oddajnika, ki bo prebral podatke o lokaciji iz modula GPS NEO-6Min ga brezžično prenesite prek Lore. Sprejemni del bo prejel informacije in jih prikazal na 16x2 LCD zaslonu. Če ste novi LoRa, potem pred nadaljevanjem spoznajte tehnologijo LoRa in LoRaWAN ter kako jo je mogoče povezati z Arduinom.
Da bodo stvari preproste in stroškovno učinkovite za ta projekt, ne bomo uporabljali prehoda LoRa. Namesto tega bo izvedel medsebojno komunikacijo med oddajnikom in sprejemnikom. Če pa želite globalno območje, lahko sprejemnik zamenjate z LoRa Gateway. Ker sem iz Indije, bomo tukaj uporabljali 433MHz LoRa modul, ki je tu zakonit ISM pas, zato boste morda morali izbrati modul glede na svojo državo. Kot rečeno, začnimo…
Potrebni materiali
- Arduino Lora Shield - 2Nos (zasnova PCB na voljo za prenos)
- Arduino Uno - 2 št
- SX1278 433MHz LoRa modul - 2
- 433MHz Lora antena
- GPS modul NEO-6M
- Modul LCD zaslona
- Priključne žice
Arduino LoRa ščit
Da bi olajšali gradnjo stvari z LoRa, smo za ta projekt zasnovali LoRa Arduino Shield. Ta ščit je sestavljen iz SX1278 433MHz z 3.3V regulatorjem, zasnovan s spremenljivim regulatorjem LM317. Ščit bo neposredno sedel na vrhu Arduina in mu omogočal LoRa zmogljivosti. Ta LoRa Shield bo prišel prav, ko boste morali razporediti zaznavna vozlišča LoRa ali ustvariti mrežno mrežo LoRa. Popoln diagram vezja za LoRa Arduino Shield je podan spodaj
Shield je sestavljen iz 12-voltne vtičnice, ki bo z napajanjem uporabljena za regulacijo 3,3 V za modul LoRa z regulatorjem LM317. Uporabljal se bo tudi za napajanje Arduino UNO prek Vin pin, regulirano 5V iz Arduina pa za napajanje LCD-ja na ščitu. Izhodna napetost LM317 je z uporom R1 in R2 določena na 3,3 V, vrednost teh uporov je mogoče izračunati s pomočjo kalkulatorja LM317.
Ker modul LoRa porablja zelo majhno moč, ga je mogoče napajati tudi neposredno iz 3,3-voltnega zatiča Arduino, vendar smo uporabili zunanjo zasnovo regulatorja, saj je LM317 zanesljivejši od vgrajenega regulatorja napetosti. Ščit ima tudi potenciometer, s katerim lahko prilagodite svetlost LCD-ja. Povezava modula LoRa z Arduinom je podobna tistemu, ki smo ga storili v prejšnji vadnici Interfacing Arduino z Loro.
Izdelava PCB za LoRa Shield
Zdaj, ko je naše vezje pripravljeno, lahko nadaljujemo z oblikovanjem našega tiskanega vezja. Odprl sem programsko opremo za oblikovanje PCB in začel oblikovati svoje skladbe. Ko je bila zasnova tiskanega vezja končana, je bila moja plošča videti nekako takole, kot je prikazano spodaj
Prav tako lahko prenesete oblikovalske datoteke v formatu GERBER in jih izdelate, da dobite svoje plošče. Povezava do datoteke Gerber je navedena spodaj
Prenesite datoteko Gerber za Arduino LoRa Shield
Zdaj, ko je naš dizajn pripravljen, je čas, da jih izdelamo. Dokončanje tiskanega vezja je zelo enostavno, preprosto sledite spodnjim korakom
1. korak: Pojdite na www.pcbgogo.com in se prijavite, če ste prvič. Nato na zavihku Prototip PCB vnesite dimenzije PCB, število slojev in število PCB, ki ga potrebujete. Ob predpostavki, da je PCB 80 cm × 80 cm, lahko nastavite mere, kot je prikazano spodaj.
2. korak: Nadaljujte s klikom na gumb Citiraj zdaj . Preusmerjeni boste na stran, kjer boste po potrebi nastavili nekaj dodatnih parametrov, kot je uporabljeni razmik skladbe itd. Toda večinoma bodo privzete vrednosti dobro delovale. Edino, kar moramo tu upoštevati, sta cena in čas. Kot lahko vidite, je čas izdelave le 2-3 dni in za naš PSB stane le 5 USD. Nato lahko izberete želeni način pošiljanja glede na vaše potrebe.
3. korak: Zadnji korak je nalaganje datoteke Gerber in nadaljevanje plačila. Preden nadaljuje s plačilom, PCBGOGO preveri, ali je datoteka Gerber veljavna, da se prepriča, da je postopek nemoten. Tako se lahko prepričate, da je vaš PCB prijazen do izdelave in vas bo sprejel kot predan.
Sestavljanje PCB
Po naročilu plošče je čez nekaj dni prišel do mene, čeprav je kurir v lepo označeni dobro zapakirani škatli in kot vedno bila kakovost PCB-ja izjemna.
Vklopil sem spajkalno palico in začel sestavljati ploščo. Ker so Footprints, blazinice, steklenice in sitotisk popolnoma pravilne oblike in velikosti, nisem imel težav pri sestavljanju deske. Ko je bilo spajkanje končano, je bila plošča videti spodaj tako, kot vidite, da se prilega moji plošči Arduino Uno.
Ker je naš projekt z Arduino Lora oddajnik in Arduino Lora sprejemnik bomo potrebovali dve ščite eno za sprejemnik in druge za oddajnik. Zato sem nadaljeval s spajkanjem drugega tiskanega vezja, tako PCB z modulom LoRa kot LCD je prikazan spodaj.
Kot lahko vidite, da ima le sprejemnik LoRa (levi) povezan LCD, je oddajna stran sestavljena samo iz modula LoRa. Nadalje bomo povezali modul GPS s stranjo oddajnika, kot je opisano spodaj.
Priključitev modula GPS na oddajnik LoRa
Tu uporabljeni GPS modul je GPS modul NEO-6M, modul lahko deluje na zelo majhni moči z majhnim faktorjem oblike, zaradi česar je primeren za sledenje aplikacijam. Na voljo pa je še veliko drugih modulov GPS, ki smo jih že uporabljali pri različnih vrstah aplikacij za sledenje vozil in zaznavanje lokacije.
Modul deluje v napetosti 5 V in komunicira s pomočjo serijske komunikacije s hitrostjo 9600 baudov. Zato napajamo modul na + 5V pin Arduino in priključimo Rx in Tx pin na digitalni pin D4 oziroma D3, kot je prikazano spodaj
Zatiča D4 in D3 bosta konfigurirana kot zaporedna zatiča programske opreme. Ko napaja NEO-6M GPS modul, bo iskal satelitsko povezavo in bo samodejno serijsko prikazoval vse informacije. Ti izhodni podatki bodo v obliki stavka NMEA, kar pomeni National Association of Marine Electronics Association in je standardni format za vse naprave GPS. Če želite izvedeti več o uporabi GPS-a z Arduino, sledite povezavi. Ti podatki bodo veliki in večino časa jih moramo ročno frazirati, da dobimo želeni rezultat. Na našo srečo obstaja knjižnica z imenom TinyGPS ++, ki za nas dela vse težko. Če tega še niste storili, morate dodati tudi knjižnico LoRa. Prenesite torej knjižnico od spodnje povezave
Prenesite knjižnico TinyGPS ++ Arduino
Prenesite knjižnico Arduino LoRa
Povezava bo prenesla datoteko ZIP, ki jo lahko nato dodate v IDE Arduino po ukazu Skica -> Vključi knjižnico -> Dodaj.ZIP knjižnico. Ko ste pripravljeni na strojno opremo in knjižnico, lahko nadaljujemo s programiranjem naših Arduino plošč.
Programiranje Arduino LoRa kot oddajnika GPS
Kot vemo, je LoRa oddajna naprava, kar pomeni, da lahko pošilja in prejema informacije. Vendar bomo v tem projektu GPS sledilca uporabili en modul kot oddajnik za branje informacij o koordinati iz GPS-a in njihovo pošiljanje, drugi modul pa kot sprejemnik, ki bo prejel vrednosti koordinate GPS in jih natisnil na LCD-prikazovalnik. Program tako za oddajnik in sprejemnik modul lahko najdete na dnu te strani. Pred nadaljevanjem kode preverite, ali ste namestili knjižnici za modul GPS in modul LoRa. V tem poglavju si bomo ogledali kodo oddajnika.
Kot vedno začnemo program z dodajanjem potrebnih knjižnic in zatičev. Tu se knjižnica SPI in LoRa uporablja za komunikacijo LoRa, knjižnici TinyGPS ++ in SoftwareSerial pa za komunikacijo GPS. Modul GPS v moji strojni opremi je povezan s pinoma 3 in 4, zato to tudi določimo na naslednji način
#include
Znotraj nastavitvene funkcije začnemo serijski monitor in serijsko programsko opremo inicializiramo kot "gpsSerial " za komunikacijo z našim NEO-6M GPS modulom. Upoštevajte tudi, da sem uporabil 433E6 (433 MHz) kot svojo delovno frekvenco LoRa, zato jo boste morda morali spremeniti glede na vrsto modula, ki ga uporabljate.
void setup () { Serial.begin (9600); gpsSerial.begin (9600); while (! Serial); Serial.println ("LoRa Sender"); if (! LoRa.begin (433E6)) { Serial.println ("Zagon LoRa ni uspel!"); medtem ko (1); } LoRa.setTxPower (20); }
Znotraj funkcije zanke preverimo, ali modul GPS oddaja nekatere podatke, če da, potem preberemo vse podatke in jih s pomočjo funkcije gps.encode prestavimo. Nato s funkcijo gps.location.isValid () preverimo, ali smo prejeli veljavne podatke o lokaciji .
medtem ko (gpsSerial.available ()> 0) if (gps.encode (gpsSerial.read ())) if (gps.location.isValid ()) {
Če smo prejeli veljavno lokacijo, lahko začnemo oddajati vrednosti zemljepisne širine in dolžine. Funkcija gps.location.lat () daje koordinato zemljepisne širine, funkcija gps.location.lng () pa koordinato zemljepisne dolžine. Ker jih bomo tiskali na LCD 16 * 2, moramo omeniti, kdaj se je treba preusmeriti v drugo vrstico, zato s ključno besedo "c" sprejemamo sprejemnik za tiskanje naslednjih informacij v 2. vrstici.
LoRa.beginPacket (); LoRa.print ("Lat:"); LoRa.print (gps.location.lat (), 6); LoRa.print ("c"); LoRa.print ("Long:"); LoRa.print (gps.location.lng (), 6); Serial.println ("Poslano prek LoRa"); LoRa.endPacket ();
Programiranje Arduino LoRa kot sprejemnika GPS
Koda oddajnika že pošilja vrednost koordinat zemljepisne širine in dolžine, zdaj mora sprejemnik te vrednosti prebrati in natisniti na LCD. Podobno tukaj dodamo knjižnico za modul LoRa in LCD zaslon ter določimo, na katere nožice je priključen LCD in prav tako inicializiramo modul LoRa kot prej.
#include
Znotraj funkcije zanke poslušamo podatkovne pakete iz modula LoRa oddajnika in njegovo velikost s pomočjo funkcije LoRa.parsePacket () ter ga shranimo v spremenljivko “ packetSize ”. Če prejmemo pakete, jih nadaljujemo z branjem kot znake in jih natisnemo na LCD. Program tudi preveri, ali modul LoRa pošilja ključno besedo "c", če da, nato natisne preostale informacije v drugo vrstico.
if (packetSize) {// Če je paket prejel Serial.print ("Received packet '"); lcd.clear (); while (LoRa.available ()) { char incoming = (char) LoRa.read (); if (incoming == 'c') { lcd.setCursor (0, 1); } else { lcd.print (dohodno); } }
Arduino LoRa GPS Tracker deluje
Ko sta strojna oprema in program pripravljena, lahko obe kodi naložimo v ustrezne module Arduino in ju napajamo z 12V adapterjem ali kablom USB. Ko se oddajnik napaja, lahko na modulu GPS utripa modra lučka LED, kar pomeni, da modul išče satelitsko povezavo za koordinate. Medtem se modul sprejemnika vklopi in na LCD zaslonu prikaže pozdravno sporočilo. Ko oddajnik pošlje informacije, jih bo sprejemniški modul prikazal na svojem LCD-prikazovalniku, kot je prikazano spodaj
Zdaj se lahko premikate z oddajnikom GPS modul in opazili boste, da sprejemnik posodablja svojo lokacijo. Če želite vedeti, kje točno je oddajniški modul, lahko preberete vrednosti zemljepisne širine in dolžine, prikazane na LCD-prikazovalniku, in jih vnesete v Google maps, da dobite lokacijo na zemljevidu, kot je prikazano spodaj.
Celoten delovni mogoče najti tudi v video dani na dnu te strani. Upam, da ste razumeli vadnico in ste z njo uživali pri ustvarjanju nekaj koristnega. Če dvomite, jih lahko pustite v spodnjem oddelku za komentarje ali uporabite druge forume za druga tehnična vprašanja.