- Material som krävs
- Arduino LoRa-sköld
- Tillverkning av kretskort för LoRa Shield
- Montering av kretskortet
- Ansluter GPS-modulen till LoRa-sändaren
- Programmerar Arduino LoRa som GPS-sändare
- Programmerar Arduino LoRa som GPS-mottagare
- Arduino LoRa GPS Tracker fungerar
Att veta var ett visst objekt / en person befinner sig har alltid varit tröstande. Idag används GPS i stor utsträckning i tillgångshanteringsapplikationer som Fordonsspårning, Fleet Tracking, Asset monitoring, Person tracking, Pet Tracker etc. För alla spårningsenheter kommer den primära designhänsynen att handla om batteriets förväntade livslängd och övervakningsområde. Med tanke på båda verkar LoRa vara ett perfekt val eftersom det har mycket låg strömförbrukning och kan fungera på långa avstånd. Så, i denna handledning kommer vi att bygga GPS-spårningssystem med LoRa, systemet kommer att bestå av en sändare som läser platsinformationen från NEO-6M GPS-modulenoch överföra den trådlöst över Lora. Mottagardelen tar emot informationen och visar den på en 16x2 LCD-skärm. Om du är ny på LoRa kan du lära dig mer om LoRa och LoRaWAN-teknik och hur den kan anslutas till Arduino innan du fortsätter.
För att hålla sakerna enkla och kostnadseffektiva för detta projekt använder vi inte en LoRa-gateway. Istället utförs peer to peer-kommunikation mellan sändaren och mottagaren. Men om du vill ha ett globalt sortiment kan du ersätta mottagaren med en LoRa Gateway. Eftersom jag kommer från Indien kommer vi också att använda 433MHz LoRa-modulen som är ett lagligt ISM-band här, därför kan du behöva välja en modul baserat på ditt land. Med det sagt, låt oss komma igång…
Material som krävs
- Arduino Lora Shield - 2Nos (PCB-design tillgänglig för nedladdning)
- Arduino Uno - 2Nos
- SX1278 433MHz LoRa-modul - 2
- 433MHz Lora-antenn
- NEO-6M GPS-modul
- LCD-skärmmodul
- Anslutande ledningar
Arduino LoRa-sköld
För att göra det lättare att bygga saker med LoRa har vi utformat en LoRa Arduino-sköld för detta projekt. Denna skärm består av SX1278 433MHz med en 3,3V regulator designad med LM317 variabel regulator. Skölden kommer att sitta direkt ovanpå Arduino och ge den LoRa-funktioner. Denna LoRa-sköld kommer att vara till nytta när du måste distribuera LoRa-avkänningsnoder eller skapa ett LoRa-nätverk. Det fullständiga kretsschemat för LoRa Arduino Shield ges nedan
Skölden består av en 12V-uttag som när den används kommer att användas för att reglera 3,3V för LoRa-modulen med hjälp av LM317-regulatorn. Den kommer också att användas för att driva Arduino UNO genom Vin-stift och den reglerade 5V från Arduino används för att driva LCD-skärmen på skärmen. Utgångsspänningen för LM317 är fixerad till 3,3 V med användning av motståndet R1 respektive R2, värdet på dessa motstånd kan beräknas med hjälp av LM317-kalkylatorn.
Eftersom LoRa-modulen förbrukar mycket låg effekt kan den också drivas direkt från 3,3 V-stiftet på Arduino, men vi har använt en extern regulatorutformning eftersom LM317 är mer pålitlig än den inbyggda spänningsregulatorn. Skärmen har också en potentiometer som kan användas för att justera LCD-skärmens ljusstyrka. Anslutningen av LoRa-modulen med Arduino liknar vad vi gjorde i vår tidigare handledning om Gränssnitt Arduino med Lora.
Tillverkning av kretskort för LoRa Shield
Nu när vår krets är klar kan vi fortsätta med att designa vår PCB. Jag öppnade med PCB-designprogramvara och började forma mina spår. När PCB-designen var färdig såg mitt kort ut ungefär så här som visas nedan
Du kan också ladda ner designfilerna i GERBER-format och tillverka dem för att få dina brädor. Gerber-fillänken ges nedan
Ladda ner Gerber-fil för Arduino LoRa Shield
Nu när vår design är klar är det dags att få dem tillverkade. För att få PCB gjort är ganska enkelt, följ bara stegen nedan
Steg 1: Gå in på www.pcbgogo.com, registrera dig om det är första gången. På fliken PCB Prototype anger du måtten på din PCB, antalet lager och antalet PCB du behöver. Förutsatt att kretskortet är 80 cm × 80 cm kan du ställa in måtten enligt nedan.
Steg 2: Fortsätt genom att klicka på knappen Citera nu . Du kommer till en sida där du kan ställa in några ytterligare parametrar om det behövs, till exempel det material som används spåravstånd etc. Men vanligtvis fungerar standardvärdena bra. Det enda som vi måste tänka på här är pris och tid. Som du kan se är byggtiden bara 2-3 dagar och det kostar bara 5 USD för vår PSB. Du kan sedan välja en föredragen leveransmetod baserat på ditt krav.
Steg 3: Det sista steget är att ladda upp Gerber-filen och fortsätta med betalningen. För att säkerställa att processen är smidig verifierar PCBGOGO om din Gerber-fil är giltig innan du fortsätter med betalningen. På så sätt kan du vara säker på att din PCB är tillverkningsvänlig och når dig som engagerad.
Montering av kretskortet
Efter att tavlan beställdes nådde den mig efter några dagar, även om kurir i en snyggt märkt välpackad låda och som alltid var PCB-kvaliteten fantastisk.
Jag slog på min lödstång och började montera brädet. Eftersom Footprints, kuddar, vias och silkscreen har perfekt form och storlek hade jag inga problem att montera kortet. När lödningen var klar såg brädet så här ut, som du kan se passar det bra på mitt Arduino Uno Board.
Eftersom vårt projekt har en Arduino LoRa-sändare och en Arduino LoRa-mottagare behöver vi två skärmar för mottagaren och den andra för sändaren. Så jag fortsatte med att lödda en annan PCB, både PCB med LoRa-modul och LCD visas nedan.
Som du kan se har endast mottagaren LoRa shied (vänster) en LCD ansluten, sändarsidan består bara av LoRa-modulen. Vi ansluter vidare en GPS-modul till sändarsidan enligt nedan.
Ansluter GPS-modulen till LoRa-sändaren
GPS-modulen som används här är NEO-6M GPS-modulen, modulen kan fungera på mycket låg effekt med en liten formfaktor vilket gör den lämplig för spårning av applikationer. Det finns dock många andra GPS-moduler tillgängliga som vi tidigare har använt i olika slags fordonsspårnings- och platsdetekteringsapplikationer.
Modulen arbetar i 5V och kommunicerar med seriell kommunikation med 9600 baudhastighet. Därför driver vi modulen till + 5V-stift av Arduino och ansluter Rx- och Tx-stiftet till den digitala stiftet D4 respektive D3, som visas nedan
Stiften D4 och D3 kommer att konfigureras som seriella stift för programvara. När NEO-6M GPS-modulen är strömförsörjd kommer den att leta efter satellitanslutning och kommer automatiskt att mata ut all information seriellt. Dessa utdata kommer att vara i NMEA- meningformat som står för National Marine Electronics Association och är standardformatet för alla GPS-enheter. För att lära dig mer om hur du använder GPS med Arduino, följ länken. Dessa data kommer att vara stora och mest tid måste vi formulera det manuellt för att uppnå önskat resultat. Tur för oss finns det ett bibliotek som heter TinyGPS ++ som gör alla tunga lyft för oss. Du måste också lägga till LoRa-biblioteket om du inte har gjort det ännu. Så låt oss ladda ner både biblioteket från länken nedan
Ladda ner TinyGPS ++ Arduino Library
Ladda ner Arduino LoRa-biblioteket
Länken laddar ner en ZIP-fil som sedan kan läggas till i Arduino IDE genom att följa kommandot Skiss -> Inkludera bibliotek -> Add.ZIP- bibliotek. När du är redo med hårdvaran och biblioteket kan vi fortsätta med programmering av våra Arduino-kort.
Programmerar Arduino LoRa som GPS-sändare
Som vi vet är LoRa en transceiver-enhet, vilket betyder att den både kan skicka och ta emot information. Men i detta GPS-trackerprojekt kommer vi att använda en modul som sändare för att läsa koordinatinformationen från GPS och skicka den, medan den andra modulen som en mottagare som tar emot GPS-koordinatvärdena och skriver ut den på LCD-skärmen. Det program för både sändare och mottagare modul kan hittas längst ner på denna sida. Se till att du har installerat biblioteken för GPS-modulen och LoRa-modulen innan du fortsätter med koden. I det här avsnittet kommer vi att titta på sändarkoden.
Som alltid börjar vi programmet med att lägga till nödvändiga bibliotek och stift. Här används SPI- och LoRa-biblioteket för LoRa-kommunikation och TinyGPS ++ och SoftwareSerial-biblioteket används för GPS-kommunikation. GPS-modulen i min hårdvara är ansluten till stift 3 och 4 och därför definierar vi det också enligt följande
#omfatta
Inuti installationsfunktionen startar vi den seriella bildskärmen och initierar också programvarans serie som “gpsSerial ” för kommunikation med vår NEO-6M GPS-modul. Observera också att jag har använt 433E6 (433 MHz) som min LoRa-arbetsfrekvens. Du kan behöva ändra den baserat på vilken typ av modul du använder.
ogiltig installation () { Serial.begin (9600); gpsSerial.begin (9600); medan (! Serial); Serial.println ("LoRa Sender"); if (! LoRa.begin (433E6)) { Serial.println ("Start av LoRa misslyckades!"); medan (1); } LoRa.setTxPower (20); }
Inuti loopfunktionen kontrollerar vi om GPS-modulen lägger ut några data, om ja, läser vi all information och fraserar den med funktionen gps.encode. Sedan kontrollerar vi om vi har fått en giltig platsinformation med funktionen gps.location.isValid () .
medan (gpsSerial.available ()> 0) if (gps.encode (gpsSerial.read ())) if (gps.location.isValid ()) {
Om vi har fått en giltig plats kan vi börja sända latitud- och longitudvärdena. Funktionen gps.location.lat () ger latitudkoordinaten och funktionen gps.location.lng () ger longitudkoordinaten. Eftersom vi kommer att skriva ut dem på 16 * 2 LCD-skärmen måste vi nämna när vi ska skita till andra raden, därför använder vi nyckelordet "c" för att intimisera mottagaren för att skriva ut följande information på rad 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 ("Skickat via LoRa"); LoRa.endPacket ();
Programmerar Arduino LoRa som GPS-mottagare
Sändarkoden skickar redan värdet på latitud- och longitudkoordinater, nu måste mottagaren läsa dessa värden och skriva ut på LCD-skärmen. På samma sätt lägger vi till biblioteket för LoRa-modulen och LCD-skärmen och definierar till vilka stift LCD-skärmen är ansluten till och initierar också LoRa-modulen som tidigare.
#omfatta
Inuti loopfunktionen lyssnar vi efter datapaket bildar sändarens LoRa-modul och storleken på den med funktionen LoRa.parsePacket () och lagrar den i variabeln " packetSize ". Om paket tas emot fortsätter vi med att läsa dem som tecken och skriva ut dem på LCD-skärmen. Programmet kontrollerar också om LoRa-modulen skickar nyckelordet "c", om ja, skriv ut återstående information på andra raden.
if (packetSize) {// If packet received Serial.print ("Mottaget paket '"); lcd.clear (); medan (LoRa.available ()) { char inkoming = (char) LoRa.read (); if (inkommande == 'c') { lcd.setCursor (0, 1); } annat { lcd.print (inkommande); } }
Arduino LoRa GPS Tracker fungerar
När hårdvaran och programmet är klart kan vi ladda upp båda koderna i respektive Arduino-moduler och driva dem med en 12V-adapter eller USB-kabel. När sändaren är påslagen kan du se att den blå lysdioden på GPS-modulen blinkar, detta indikerar att modulen letar efter satellitanslutning för att få koordinater. Under tiden startar mottagarmodulen och visar ett välkomstmeddelande på LCD-skärmen. När sändaren skickar informationen kommer mottagarmodulen att visa den på LCD-skärmen enligt nedan
Nu kan du flytta runt med sändarens GPS-modul och du kommer att märka att mottagaren uppdaterar sin plats. För att veta var exakt sändarmodulen finns kan du läsa latitud- och longitudvärdena som visas på LCD-skärmen och ange den på Google maps för att få platsen på kartan enligt nedan.
Den kompletta arbets kan också hittas i videon ges längst ner på denna sida. Hoppas att du förstod handledningen och tyckte om att bygga något användbart med den. Om du är osäker kan du lämna dem i kommentarsektionen nedan eller använda våra forum för andra tekniska frågor.