- Materiale necesare
- Arduino LoRa Shield
- Fabricarea PCB pentru LoRa Shield
- Asamblarea PCB-ului
- Conectarea modulului GPS la emițătorul LoRa
- Programarea Arduino LoRa ca transmițător GPS
- Programarea Arduino LoRa ca receptor GPS
- Arduino LoRa GPS Tracker funcționează
Știind unde se află un anumit obiect / persoană a fost întotdeauna reconfortant. Astăzi, GPS-ul este utilizat pe scară largă în aplicații de gestionare a activelor, cum ar fi urmărirea vehiculelor, urmărirea flotei, monitorizarea activelor, urmărirea persoanelor, urmărirea animalelor de companie etc. Având în vedere ambele, LoRa pare a fi alegerea perfectă, deoarece are un consum foarte redus de energie și poate funcționa pe distanțe mari. Deci, în acest tutorial vom construi un sistem de urmărire GPS utilizând LoRa, sistemul va consta dintr-un emițător care va citi informațiile de localizare din modulul GPS NEO-6Mși transmite-l fără fir prin Lora. Partea receptorului va primi informațiile și le va afișa pe un ecran LCD de 16x2. Dacă sunteți nou în LoRa, aflați despre LoRa și LoRaWAN Technology și cum poate fi interfațată cu Arduino înainte de a continua.
Pentru a menține lucrurile simple și rentabile pentru acest proiect, nu vom folosi un gateway LoRa. În schimb, va efectua comunicarea de la egal la egal între emițător și receptor. Cu toate acestea, dacă doriți o gamă globală, puteți înlocui receptorul cu un LoRa Gateway. De asemenea, din moment ce sunt din India, vom folosi modulul LoRa de 433 MHz, care este banda ISM legală aici, deci este posibil să trebuiască să selectați un modul în funcție de țara dvs. Acestea fiind spuse, să începem…
Materiale necesare
- Arduino Lora Shield - 2Nos (design PCB disponibil pentru descărcare)
- Arduino Uno - 2Nos
- SX1278 433MHz LoRa Module - 2
- Antenă Lora de 433 MHz
- Modul GPS NEO-6M
- Modul de afișare LCD
- Conectarea firelor
Arduino LoRa Shield
Pentru a facilita construirea lucrurilor cu LoRa, am proiectat un LoRa Arduino Shield pentru acest proiect. Acest ecran este format din SX1278 433MHz cu un regulator de 3,3V proiectat folosind regulatorul variabil LM317. Shield va sta direct deasupra Arduino oferindu-i capabilități LoRa. Acest LoRa Shield va fi util atunci când trebuie să implementați noduri de detectare LoRa sau să creați o rețea mesh LoRa. Schema completă a circuitului pentru LoRa Arduino Shield este prezentată mai jos
Shield-ul este format dintr-o mufă de 12V care, atunci când este alimentată, va fi utilizată pentru a regla 3.3V pentru modulul LoRa utilizând regulatorul LM317. Acesta va fi, de asemenea, utilizat pentru a alimenta Arduino UNO prin pinul Vin și 5V reglementat de la Arduino este utilizat pentru a alimenta LCD-ul de pe scut. Tensiunea de ieșire a LM317 este fixată la 3,3V folosind rezistorul R1 și respectiv R2, valoarea acestor rezistențe poate fi calculată folosind Calculatorul LM317.
Deoarece modulul LoRa consumă o putere foarte mică, acesta poate fi alimentat și direct de la pinul de 3,3 V al Arduino, dar am folosit un design de regulator extern, deoarece LM317 este mai fiabil decât regulatorul de tensiune de la bord. Scutul are, de asemenea, un potențiometru care poate fi utilizat pentru a regla luminozitatea ecranului LCD. Conexiunea modulului LoRa cu Arduino este similară cu ceea ce am făcut în tutorialul nostru anterior de interfață Arduino cu Lora.
Fabricarea PCB pentru LoRa Shield
Acum, când circuitul nostru este gata, putem continua cu proiectarea PCB-ului nostru. Am deschis software-ul de proiectare PCB și am început să-mi formez piesele. Odată ce proiectarea PCB a fost completă, placa mea arăta cam așa cum se arată mai jos
De asemenea, puteți descărca fișierele de proiectare în format GERBER și le puteți fabrica pentru a obține plăcile dvs. Linkul fișierului Gerber este dat mai jos
Descărcați fișierul Gerber pentru Arduino LoRa Shield
Acum, când Designul nostru este gata, este timpul să le fabricăm. Pentru a realiza PCB-ul este destul de ușor, pur și simplu urmați pașii de mai jos
Pasul 1: intrați pe www.pcbgogo.com, înscrieți-vă dacă este prima dată. Apoi, în fila Prototip PCB introduceți dimensiunile PCB-ului, numărul de straturi și numărul de PCB de care aveți nevoie. Presupunând că PCB este de 80cm × 80cm, puteți seta dimensiunile așa cum se arată mai jos.
Pasul 2: Continuați făcând clic pe butonul Cotați acum . Veți fi direcționat către o pagină în care să setați câțiva parametri suplimentari, dacă este necesar, cum ar fi materialul utilizat pentru spațierea pistelor etc. Dar, în general, valorile implicite vor funcționa bine. Singurul lucru pe care trebuie să-l luăm în considerare aici este prețul și timpul. După cum puteți vedea, timpul de construire este de numai 2-3 zile și costă doar 5 USD pentru PSB-ul nostru. Apoi puteți selecta o metodă de expediere preferată în funcție de cerința dvs.
Pasul 3: ultimul pas este să încărcați fișierul Gerber și să continuați plata. Pentru a vă asigura că procesul este ușor, PCBGOGO verifică dacă fișierul dvs. Gerber este valid înainte de a continua plata. În acest fel, vă puteți asigura că PCB-ul dvs. este prietenos cu fabricarea și vă va ajunge la fel de angajat.
Asamblarea PCB-ului
După ce a fost comandată placa, a ajuns la mine după câteva zile, deși curierul într-o cutie bine ambalată bine etichetat și ca întotdeauna calitatea PCB-ului a fost minunată.
Mi-am pornit tija de lipit și am început să asamblez placa. Deoarece amprentele, tampoanele, via-urile și serigrafia sunt perfect de forma și dimensiunea potrivită, nu am avut probleme la asamblarea plăcii. Odată ce lipirea a fost finalizată, placa a arătat așa mai jos, deoarece puteți vedea că se potrivește perfect pe placa mea Arduino Uno.
Deoarece proiectul nostru are un transmițător Arduino LoRa și un receptor Arduino LoRa, vom avea nevoie de două scuturi unul pentru receptor și celălalt pentru transmițător. Așa că am continuat cu lipirea unui alt PCB, atât PCB-ul cu modul LoRa cât și LCD-ul sunt prezentate mai jos.
După cum puteți vedea, doar receptorul LoRa care este șters (unul din stânga) are conectat un LCD, partea transmițătorului constă doar din modulul LoRa. Vom conecta în continuare un modul GPS la partea transmițătorului, așa cum este discutat mai jos.
Conectarea modulului GPS la emițătorul LoRa
Modulul GPS utilizat aici este modulul GPS NEO-6M, modulul poate funcționa la o putere foarte mică cu un factor de formă mic, făcându-l potrivit pentru urmărirea aplicațiilor. Cu toate acestea, există multe alte module GPS disponibile pe care le-am folosit anterior în diferite tipuri de aplicații de urmărire și detectare a locației vehiculului.
Modulul funcționează în 5V și comunică utilizând comunicații seriale la 9600 baud rate. Prin urmare, alimentăm modulul la + 5V pin Arduino și conectăm pinii Rx și Tx la pinii digitali D4 și respectiv D3, așa cum se arată mai jos
Pinii D4 și D3 vor fi configurați ca pin serial ai software-ului. Odată alimentat, modulul GPS NEO-6M va căuta conexiunea prin satelit și va transmite automat toate informațiile în serie. Aceste date de ieșire vor fi în formatul propoziției NMEA, care înseamnă National Marine Electronics Association și este formatul standard pentru toate dispozitivele GPS. Pentru a afla mai multe despre utilizarea GPS-ului cu Arduino, urmați linkul. Aceste date vor fi mari și de cele mai multe ori trebuie să le formulăm manual pentru a obține rezultatul dorit. Din fericire pentru noi, există o bibliotecă numită TinyGPS ++, care face toate lucrurile grele pentru noi. De asemenea, trebuie să adăugați biblioteca LoRa dacă nu ați făcut-o încă. Deci, să descărcăm atât biblioteca de pe linkul de mai jos
Descărcați TinyGPS ++ Arduino Library
Descărcați Arduino LoRa Library
Link-ul va descărca un fișier ZIP care poate fi apoi adăugat la IDE-ul Arduino urmând comanda Sketch -> Include Library -> Add.ZIP library. Odată ce sunteți gata cu hardware-ul și biblioteca, putem continua programarea plăcilor noastre Arduino.
Programarea Arduino LoRa ca transmițător GPS
După cum știm, LoRa este un dispozitiv transceiver, ceea ce înseamnă că poate trimite și primi informații. Cu toate acestea, în acest proiect de urmărire GPS, vom folosi un modul ca emițător pentru a citi informațiile coordonate de pe GPS și pentru a le trimite, în timp ce celălalt modul ca receptor care va primi valorile coordonate GPS și le va imprima pe ecranul LCD. Programul pentru ambele emițător și modulul receptor pot fi găsite în partea de jos a acestei pagini. Asigurați-vă că ați instalat bibliotecile pentru modulul GPS și modulul LoRa înainte de a continua cu codul. În această secțiune vom analiza codul emițătorului.
Ca întotdeauna, începem programul adăugând bibliotecile și pinii necesari. Aici biblioteca SPI și LoRa este utilizată pentru comunicarea LoRa, iar biblioteca TinyGPS ++ și SoftwareSerial este utilizată pentru comunicațiile GPS. Modulul GPS din hardware-ul meu este conectat la pinii 3 și 4 și, prin urmare, îl definim și după cum urmează
#include
În funcția de configurare începem monitorul serial și, de asemenea, inițializăm serialul software ca „gpsSerial ” pentru comunicarea cu modulul nostru GPS NEO-6M. De asemenea, rețineți că am folosit 433E6 (433 MHz) ca frecvență de operare LoRa, poate că va trebui să o modificați în funcție de tipul de modul pe care îl utilizați.
void setup () { Serial.begin (9600); gpsSerial.begin (9600); while (! Serial); Serial.println ("LoRa Sender"); if (! LoRa.begin (433E6)) { Serial.println ("Pornirea LoRa a eșuat!"); în timp ce (1); } LoRa.setTxPower (20); }
În interiorul funcției buclă verificăm dacă modulul GPS scoate unele date, dacă da, citim toate datele și le exprimăm folosind funcția gps.encode. Apoi verificăm dacă am primit date de locație valide utilizând funcția gps.location.isValid () .
while (gpsSerial.available ()> 0) if (gps.encode (gpsSerial.read ())) if (gps.location.isValid ()) {
Dacă am primit o locație validă, putem începe transmiterea valorilor de latitudine și longitudine. Funcția gps.location.lat () oferă coordonata de latitudine, iar funcția gps.location.lng () oferă coordonata de longitudine. Întrucât le vom imprima pe ecranul LCD 16 * 2, trebuie să menționăm când să ne căim pe a doua linie, prin urmare folosim cuvântul cheie „c” pentru a intimifica receptorul pentru a imprima următoarele informații pe linia 2.
LoRa.beginPacket (); LoRa.print ("Lat:"); LoRa.print (gps.location.lat (), 6); LoRa.print ("c"); LoRa.print ("Lung:"); LoRa.print (gps.location.lng (), 6); Serial.println („Trimis prin LoRa”); LoRa.endPacket ();
Programarea Arduino LoRa ca receptor GPS
Codul emițătorului trimite deja valoarea coordonatelor de latitudine și longitudine, acum receptorul trebuie să citească aceste valori și să imprime pe ecranul LCD. În mod similar aici adăugăm biblioteca pentru modulul LoRa și afișajul LCD și definim la ce pini LCD este conectat și, de asemenea, inițializăm modulul LoRa ca înainte.
#include
În interiorul funcției buclă , ascultăm pachetele de date din modulul LoRa transmițător și dimensiunea acestuia folosind funcția LoRa.parsePacket () și îl stocăm în variabila „ packetSize ”. Dacă sunt primite pachete, continuăm să le citim ca caractere și să le imprimăm pe ecranul LCD. Programul verifică, de asemenea, dacă modulul LoRa trimite cuvântul cheie „c”, dacă da, apoi imprimă informațiile rămase pe a doua linie.
if (packetSize) {// Dacă pachetul a primit Serial.print ("Pachetul primit '"); lcd.clear (); while (LoRa.available ()) { char incoming = (char) LoRa.read (); if (incoming == 'c') { lcd.setCursor (0, 1); } else { lcd.print (de intrare); } }
Arduino LoRa GPS Tracker funcționează
Odată ce hardware-ul și programul sunt gata, putem încărca ambele coduri în modulele Arduino respective și le putem alimenta folosind un adaptor de 12V sau un cablu USB. Când transmițătorul este alimentat, puteți observa intermitent LED-ul albastru de pe modulul GPS, ceea ce indică faptul că modulul caută conexiune prin satelit pentru a obține coordonate. Între timp, modulul receptor va porni și va afișa un mesaj de bun venit pe ecranul LCD. Odată ce emițătorul trimite informațiile, modulul receptor îl va afișa pe ecranul LCD, așa cum se arată mai jos
Acum vă puteți deplasa cu modulul GPS al transmițătorului și veți observa că receptorul își actualizează locația. Pentru a ști unde este exact modulul transmițător, puteți citi valorile de latitudine și longitudine afișate pe ecranul LCD și le puteți introduce în Google Maps pentru a obține locația pe hartă, așa cum se arată mai jos.
Lucrarea completă poate fi găsită și în videoclipul prezentat în partea de jos a acestei pagini. Sper că ați înțeles tutorialul și v-a plăcut să creați ceva util cu acesta. Dacă aveți nelămuriri, le puteți lăsa în secțiunea de comentarii de mai jos sau puteți folosi forumurile noastre pentru alte întrebări tehnice.