- Nødvendig materiale
- Arduino LoRa-skjold
- Fabrikasjon av PCB for LoRa Shield
- Montering av PCB
- Koble GPS-modul til LoRa-sender
- Programmering av Arduino LoRa som GPS-sender
- Programmering av Arduino LoRa som GPS-mottaker
- Arduino LoRa GPS Tracker Arbeider
Å vite hvor en bestemt gjenstand / person befinner seg har alltid vært trøstende. I dag blir GPS mye brukt i kapitalforvaltningsapplikasjoner som Vehicle Tracking, Fleet Tracking, Asset monitoring, Person tracking, Pet Tracker etc. For enhver sporingsenhet vil det primære designhensynet dreie seg om batteriets forventede forventning og overvåkingsområde. Med tanke på begge deler ser LoRa ut til å være et perfekt valg, siden det har veldig lavt strømforbruk og kan fungere på lange avstander. Så i denne opplæringen vil vi bygge GPS-sporingssystem ved hjelp av LoRa, systemet vil bestå av en sender som vil lese posisjonsinformasjonen fra NEO-6M GPS-modulenog overføre den trådløst over Lora. Mottakerdelen vil motta informasjonen og vise den på en 16x2 LCD-skjerm. Hvis du er ny i LoRa, kan du lære om LoRa og LoRaWAN-teknologi og hvordan den kan grensesnittes med Arduino før du fortsetter videre.
For å holde ting enkelt og kostnadseffektivt for dette prosjektet, bruker vi ikke en LoRa-gateway. I stedet vil utføre peer to peer-kommunikasjon mellom sender og mottaker. Men hvis du vil ha et globalt utvalg, kan du erstatte mottakeren med en LoRa Gateway. Også siden jeg er fra India, vil vi bruke 433MHz LoRa-modulen som er lovlig ISM-bånd her, derfor må du kanskje velge en modul basert på ditt land. Når det er sagt, la oss komme i gang…
Nødvendig materiale
- Arduino Lora Shield - 2Nos (PCB-design tilgjengelig for nedlasting)
- Arduino Uno - 2Nos
- SX1278 433 MHz LoRa-modul - 2
- 433MHz Lora-antenne
- NEO-6M GPS-modul
- LCD-skjermmodul
- Koble ledninger
Arduino LoRa-skjold
For å gjøre det lettere å bygge ting med LoRa, har vi designet et LoRa Arduino Shield for dette prosjektet. Dette skjoldet består av SX1278 433MHz med en 3,3V regulator designet med LM317 variabel regulator. Skjoldet vil sitte direkte på toppen av Arduino og gi det LoRa-funksjoner. Dette LoRa Shield vil være nyttig når du må distribuere LoRa sensing noder eller å lage et LoRa mesh nettverk. Det komplette kretsskjemaet for LoRa Arduino Shield er gitt nedenfor
Skjoldet består av en 12V-kontakt som når den drives, vil brukes til å regulere 3,3V for LoRa-modulen ved hjelp av LM317-regulatoren. Den vil også bli brukt til å drive Arduino UNO gjennom Vin-pin, og den regulerte 5V fra Arduino brukes til å drive LCD-skjermen på skjoldet. Utgangsspenningen til LM317 er fast til å være 3,3V ved bruk av henholdsvis motstanden R1 og R2, verdien av disse motstandene kan beregnes ved hjelp av LM317-kalkulatoren.
Siden LoRa-modulen bruker veldig lite strøm, kan den også drives direkte fra 3.3V-pinnen på Arduino, men vi har brukt en ekstern regulatordesign siden LM317 er mer pålitelig enn den innebygde spenningsregulatoren. Skjoldet har også et potensiometer som kan brukes til å justere lysstyrken på LCD-skjermen. Tilkoblingen av LoRa-modulen med Arduino ligner på det vi gjorde i vår forrige opplæring om Grensesnitt Arduino med Lora.
Fabrikasjon av PCB for LoRa Shield
Nå som kretsen vår er klar, kan vi fortsette med å designe PCB. Jeg åpnet med PCB-designprogramvare og begynte å danne sporene mine. Når PCB-designen var fullført, så kortet mitt ut som dette vist nedenfor
Du kan også laste ned designfilene i GERBER-format og lage dem for å få brettene dine. Gerber-fillenken er gitt nedenfor
Last ned Gerber-fil for Arduino LoRa Shield
Nå som vårt design er klart, er det på tide å få dem fabrikert. For å få PCB ferdig er ganske enkelt, følg bare trinnene nedenfor
Trinn 1: Gå inn på www.pcbgogo.com, registrer deg hvis dette er første gang. Deretter skriver du inn dimensjonene på PCB, antall lag og antall PCB du trenger i kategorien PCB Prototype. Forutsatt at PCB er 80cm × 80cm, kan du stille inn dimensjonene som vist nedenfor.
Trinn 2: Fortsett ved å klikke på Sitat nå- knappen. Du vil bli ført til en side der du kan angi noen ekstra parametere hvis nødvendig, som materialet som brukes sporavstand osv. Men for det meste vil standardverdiene fungere bra. Det eneste vi må vurdere her er pris og tid. Som du kan se, er byggetiden bare 2-3 dager, og det koster bare $ 5 for PSB. Du kan deretter velge en foretrukket fraktmetode basert på dine krav.
Trinn 3: Det siste trinnet er å laste opp Gerber-filen og fortsette med betalingen. For å sikre at prosessen er jevn, verifiserer PCBGOGO om Gerber-filen din er gyldig før du fortsetter med betalingen. På denne måten kan du være sikker på at PCB-en din er fabrikasjonsvennlig og vil nå deg som engasjert.
Montering av PCB
Etter at brettet var bestilt, nådde det meg etter noen dager, selv om bud i en pent merket, godt pakket eske, og som alltid var kvaliteten på PCB fantastisk.
Jeg skrudde på loddestangen og begynte å montere brettet. Siden Footprints, pads, vias og silkscreen har perfekt form og størrelse, hadde jeg ikke noe problem å montere brettet. Når loddingen var fullført, så brettet ut slik nedenfor, som du kan se det passer godt på Arduino Uno Board.
Siden prosjektet vårt har en Arduino LoRa-sender og en Arduino LoRa-mottaker, trenger vi to skjold, den ene for mottakeren og den andre for senderen. Så jeg fortsatte med lodding av en annen PCB, både PCB med LoRa-modul og LCD er vist nedenfor.
Som du kan se, har bare mottakeren LoRa shied (venstre) en LCD-tilkobling, den består bare av LoRa-modulen. Vi vil videre koble en GPS-modul til sendersiden som omtalt nedenfor.
Koble GPS-modul til LoRa-sender
GPS-modulen som brukes her er NEO-6M GPS-modulen, modulen kan fungere på svært lav effekt med en liten formfaktor, noe som gjør den egnet for sporing av applikasjoner. Imidlertid er det mange andre GPS-moduler tilgjengelig som vi tidligere har brukt i forskjellige typer bilsporings- og stedsdeteksjonsapplikasjoner.
Modulen opererer i 5V og kommuniserer ved hjelp av seriell kommunikasjon med 9600 baudrate. Derfor driver vi modulen til + 5V pin av Arduino og kobler Rx og Tx pin til henholdsvis digital pin D4 og D3 som vist nedenfor
Pinnene D4 og D3 vil bli konfigurert som serielle pinner for programvaren. Når NEO-6M GPS-modulen er slått på, vil den lete etter satellittforbindelse, og den vil automatisk sende all informasjon serielt. Disse utdataene vil være i NMEA setningsformat som står for National Marine Electronics Association og er standardformatet for alle GPS-enheter. For å lære mer om bruk av GPS med Arduino, følg lenken. Disse dataene vil være store, og mest tid må vi formulere det manuelt for å oppnå ønsket resultat. Heldig for oss er det et bibliotek som heter TinyGPS ++ som gjør alt tungt løft for oss. Du må også legge til LoRa-biblioteket hvis du ikke har gjort det ennå. Så la oss laste ned begge biblioteket fra lenken nedenfor
Last ned TinyGPS ++ Arduino Library
Last ned Arduino LoRa-biblioteket
Koblingen vil laste ned en ZIP-fil som deretter kan legges til Arduino IDE ved å følge kommandoen Skisse -> Inkluder bibliotek -> Add.ZIP- bibliotek. Når du er klar med maskinvaren og biblioteket, kan vi fortsette med programmering av Arduino-kortene.
Programmering av Arduino LoRa som GPS-sender
Som vi vet er LoRa en transceiver-enhet, noe som betyr at den både kan sende og motta informasjon. Imidlertid vil vi i dette GPS-trackerprosjektet bruke en modul som sender for å lese koordinatinformasjonen fra GPS og sende den, mens den andre modulen som mottaker som vil motta GPS-koordinatverdiene og skrive den ut på LCD-skjermen. The program for både sender og mottaker modul finner du nederst på denne siden. Forsikre deg om at du har installert bibliotekene for GPS-modulen og LoRa-modulen før du fortsetter med koden. I denne delen vil vi se på senderkoden.
Som alltid begynner vi programmet med å legge til de nødvendige biblioteker og pins. Her brukes SPI og LoRa-biblioteket til LoRa-kommunikasjon, og TinyGPS ++ og SoftwareSerial-biblioteket brukes til GPS-kommunikasjon. GPS-modulen i maskinvaren min er koblet til pin 3 og 4, og derfor definerer vi også det som følger
#inkludere
Inne i installasjonsfunksjonen begynner vi den serielle skjermen og initialiserer også programvareserien som “gpsSerial ” for kommunikasjon med vår NEO-6M GPS-modul. Vær også oppmerksom på at jeg har brukt 433E6 (433 MHz) som min LoRa-driftsfrekvens. Du må kanskje endre den basert på hvilken modultype du bruker.
ugyldig oppsett () { Serial.begin (9600); gpsSerial.begin (9600); mens (! Serial); Serial.println ("LoRa Sender"); hvis (! LoRa.begin (433E6)) { Serial.println ("Start av LoRa mislyktes!"); mens (1); } LoRa.setTxPower (20); }
Inne i loop- funksjonen sjekker vi om GPS-modulen legger ut noen data, hvis ja, så leser vi alle dataene og fraser det ved hjelp av funksjonen gps.encode. Deretter sjekker vi om vi har mottatt gyldige stedsdata ved hjelp av funksjonen gps.location.isValid () .
mens (gpsSerial.available ()> 0) hvis (gps.encode (gpsSerial.read ())) hvis (gps.location.isValid ()) {
Hvis vi har mottatt et gyldig sted, kan vi begynne å overføre bredde- og lengdegradene. Funksjonen gps.location.lat () gir breddekoordinaten og funksjonen gps.location.lng () gir lengdegradskoordinaten. Siden vi skal skrive dem ut på 16 * 2 LCD-skjermen, må vi nevne når vi skal shit til andre linje, og derfor bruker vi nøkkelordet "c" for å intimisere mottakeren for å skrive ut følgende informasjon på linje 2.
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 ("Sendt via LoRa"); LoRa.endPacket ();
Programmering av Arduino LoRa som GPS-mottaker
Senderkoden sender allerede verdien for bredde- og lengdegradskoordinater, nå må mottakeren lese disse verdiene og skrive ut på LCD-skjermen. På samme måte legger vi til biblioteket for LoRa-modul og LCD-skjerm og definerer til hvilke pinner LCD-skjermen er koblet til, og initialiserer også LoRa-modulen som før.
#inkludere
Inne i sløyfefunksjonen lytter vi til datapakker fra senderen LoRa-modulen og størrelsen på den ved hjelp av LoRa.parsePacket () -funksjonen og lagrer den i " packetSize " -variabel. Hvis pakker mottas, fortsetter vi med å lese dem som tegn og skrive dem ut på LCD-skjermen. Programmet sjekker også om LoRa-modulen sender nøkkelordet “c”, hvis ja, så skrives den gjenværende informasjonen ut på andre linje.
if (packetSize) {// Hvis pakke mottatt Serial.print ("Mottatt pakke '"); lcd.clear (); mens (LoRa.available ()) { char incoming = (char) LoRa.read (); hvis (innkommende == 'c') { lcd.setCursor (0, 1); } annet { lcd.print (innkommende); } }
Arduino LoRa GPS Tracker Arbeider
Når maskinvaren og programmet er klart, kan vi laste opp begge kodene i de respektive Arduino-modulene og drive dem med en 12V-adapter eller USB-kabel. Når senderen får strøm, kan du merke at den blå LED-lampen på GPS-modulen blinker, dette indikerer at modulen leter etter satellittforbindelse for å få koordinater. I mellomtiden vil mottakermodulen slå seg på og vise en velkomstmelding på LCD-skjermen. Når senderen har sendt informasjonen, vil mottakermodulen vise den på LCD-skjermen som vist nedenfor
Nå kan du bevege deg rundt med GPS-modulen for senderen, og du vil legge merke til at mottakeren oppdaterer plasseringen. For å vite hvor sendermodulen er, kan du lese breddegrad og lengdegrad som vises på LCD-skjermen og legge den inn på Google maps for å få posisjonen på kartet som vist nedenfor.
Den komplette arbeids kan også bli funnet i videoen gitt nederst på denne siden. Håper du forsto opplæringen og likte å bygge noe nyttig med den. Hvis du er i tvil, kan du legge dem igjen i kommentarfeltet nedenfor eller bruke forumene våre for andre tekniske spørsmål.