LTE Arduino GPS Tracker + IoT Dashboard (Del 1): 6 trin (med billeder)

LTE Arduino GPS Tracker + IoT Dashboard (Del 1): 6 trin (med billeder)

Indholdsfortegnelse:

Anonim

Introduktion

Hvad så gutter! Denne instruktion er en opfølgning af min første instruktion til brug af Botletics LTE / NB-IoT skjoldet til Arduino, så hvis du ikke allerede har det, læs det for at få et godt overblik over, hvordan du bruger skjoldet og hvad det hele handler om. I denne vejledning vil jeg fokusere på IOT-datalogging, og specifikt GPS- og temperatursporing og give dig alle de kode og vejledning, du bliver nødt til at ramme vejen og teste den!

Denne instruktør er primært rettet mod LTE-skjoldet, som jeg personligt har designet og bygget, men alt her (herunder Github Arduino-biblioteket) skal fungere på SIMComs 2G- og 3G-moduler som SIM800 / 808/900/5320, da det bare er en opdateret version af Adafruit FONA biblioteket. Uanset hardware er konceptet det samme, og du kan lave masser af cool ting med dette, herunder sensor data logging, fjern vejret overvågning, automatisk tyveri karma GPS tracking osv… så læs videre!

forsyninger:

Trin 1: Saml dele

Listen er den samme som i min første tutorial og er virkelig enkel!

  • Arduino Uno, Mega, eller Leonardo. Alternativt kan du bruge en hvilken som helst anden 3,3V eller 5V mikrocontroller, men du bliver nødt til at binde stifterne udadtil.
  • Botletics SIM7000 Shield Kit (leveres med skjoldet, dual LTE / GPS uFL-antenne og stabling af hundehoveder). Sørg for at gennemgå denne vejledning for at vælge en passende version!
  • Hologram SIM-kort. Det første SIM-kort (kaldet "developer" SIM-kort) er helt gratis og leveres med 1 MB data om måneden! I USA vil du højst sandsynligt være på Verizon-netværket, hvis du bruger Hologram SIM-kortet. Du kan også hente det sammen med Botletics skjoldet, hvis det er mere praktisk.
  • 3,7V LiPo batteri (1000mAH eller større kapacitet anbefales).
  • USB-kabel til at programmere din Arduino eller til at tænde den.

Til GPS tracking test!

  • Du kan bruge en bil USB-adapter til at tænde din Arduino, mens du tester skærmen på vejen.
  • Alternativt kan du bruge en batteripakke (7-12V) til at forsyne Arduino via VIN og GND-stifterne.

Trin 2: Fysisk forsamling

Nu hvor du har alle dine dele, her er en hurtig oversigt over, hvad du skal gøre for at konfigurere din hardware:

  • Lod det stabile hundehoved på skærmen. Se denne vejledning om, hvordan du gør det.
  • Sæt skærmen ind i Arduino, sørg for at justere alle tappene, så du ikke beskadiger dem!
  • Indsæt SIM-kortet som vist på billedet. Metallkontakterne vender nedad og noterer placeringen af ​​hakket i hjørnet.
  • Tilslut LiPo-batteriet til JST-stikket på skærmen
  • Tilslut din Arduino til din computer ved hjælp af et USB-kabel. Du kan bemærke, at skærmens grøn strømlampe ikke lyser. Det er helt normalt, fordi skærmens PWRKEY-pin skal pulseres lavt for en lille smule for at tænde den. Eksemplet Arduino skitse i det følgende afsnit vil tage sig af det for dig!
  • Fastgør den dobbelte LTE / GPS-antenne til uFL-stikene i skærmens højre kant. Bemærk at ledningerne vil krydse tværs, så sæt ikke de forkerte stikket i!
  • Du er helt indstillet til softwaren!

Trin 3: Arduino Setup & Device Testing

Arduino IDE Setup

Hvis du ikke allerede har det, se venligst "Arduino IDE Setup" og "Arduino Eksempel" trin i hovedproduktet Instruerbart for at sikre, at dit kort fungerer korrekt. I disse instruktioner skal du downloade biblioteket på Github-siden og åbne eksempelkoden "LTE_Demo". Efter at have fulgt disse instruktioner, skal du have testet netværksforbindelsen, GPS og sende data til dweet.io.

IoT Eksempel Skitse

Nu, da du har testet kerneegenskaberne i dit skjold, skal du indlæse "IoT_Example" skitsen i Arduino IDE. Du kan også finde den her på Github. Upload denne kode til din Arduino, og åbn seriel skærmen, og du skal se Arduino finde SIM7000-modulet, oprette forbindelse til mobilnetværket, aktivere GPS og fortsæt med at prøve, indtil det får en fix på stedet, og send dataene til dweet.io. Dette bør alle køre uden at ændre nogen linje i koden, forudsat at du bruger LTE skjoldet og Hologram SIM-kortet.

Som standard vil du se følgende linje definere samplingsfrekvensen (godt, faktisk forsinkelsen mellem indlæg).

#define samplingRate 30 // Tiden mellem indlæg, i sekunder

Hvis denne linje ikke længere er kommenteret, vil Arduino sende data, forsinke 30'erne, sende data igen, gentage osv. I løbet af 30-dages forsinkelse kan du gøre ting som at sætte Arduino i lavt strømtilstand og fancy ting sådan, men at holde ting simple Jeg vil bare bruge funktionen forsinkelse () til at stoppe operationen. Hvis du kommenterer denne linje, vil Arduino sende data, og derefter gå direkte til lavt strømstandskab til ubestemt tid, indtil du trykker på reset-knappen på din Arduino. Dette er nyttigt, hvis du tester noget og ikke vil forbrænde dine dyrebare gratis data (selvom det ærligt hver post bruger næsten ingenting) eller måske har du eksterne kredsløb for at nulstille Arduino (555 timer? RTC afbryder? Accelerometer afbryder? Temperaturføler afbryde? Tænk uden for boksen!). Faktisk i Burgalert 7000-øvelsen viser jeg, hvordan du kan bruge en PIR-bevægelsesdetektor til at vække mikrocontrolleren.

Næste linje angiver, om skjoldet slukker efter postdata eller forbliver tændt. Du kan vælge det tidligere valg ved at udløse linjen, hvis du kun er prøveudtagning en gang imellem, men hvis du har en relativt høj samplingsfrekvens, vil du gerne lade linjen kommenteres, så skjoldet forbliver på og ikke har at geninitialisere, genaktivere GPRS og GPS osv. Når skjoldet er tilbage, kan det poste ekstremt hurtigt!

// # define turnOffShield // Sluk skærm efter udstationering data

Husk også, at dette eksempel automatisk henter det modulspecifikke og globalt unikke IMEI nummer på SIM7000 og bruger det som enhedens ID (eller "navn", hvis du foretrækker) for at identificere enheden, når den sender data til dweet.io. Du kan ændre dette, hvis du vil, så jeg ville tro, jeg ville bare fortælle dig:)

For at kontrollere, om dine data rent faktisk bliver sendt til dweet.io, skal du blot udfylde den relevante info og kopiere / indsætte webadressen i enhver browser:

dweet.io/get/latest/dweet/for/{deviceID}

hvor {deviceID} skal erstattes med IMEI-nummeret, der udskrives i serielt skærm i starten, lige efter at Arduino finder det. Når du har indtastet denne webadresse i din browser, skal du se et JSON-svar som følgende:

{ "Denne": "lykkedes", "af": "få", "de": "dweets", "med": { "ting": "112233445566778", "skabt": "2017-12-28T23: 32: 39.803Z " "indhold": { "lat": 11,223344, "lang": - 55,667788, "hastighed": 10, "hoved": 75, "alt": 330,7, "temp": 21,2," batt ": 3630}}}

Når du ser på indholdet, skal du se længden, længden af ​​din placering, din hastighed (i kilometer pr. Hr), retningsretningen (grader, med 0 deg er nord), højde (meter), temperatur (* C, men føler fri til at konvertere i koden), og forsyningsspændingen i milli-volt (som er VBAT, spændingen af ​​batteriet). For mere information om NMEA-datastrengen kan du se på side 149 i kommandolinjen til SIM7000 AT.

Når du har bekræftet, at dit opsætningsfelt sender data til død, så lad os konfigurere dashboardet for at se alle vores data på en god grænseflade!

Trin 4: Freeboard.io Setup

Til denne øvelse bruger vi freeboard.io, et rigtig cool IOT dashboard, der kan forbinde med mange sky platforme som PubNub og dweet, samt andre funktioner som JSON og MQTT. Som du sikkert har gættet, bruger vi også dweet.io, som bruges i eksemplet kode fra foregående afsnit. Som en vigtig note ser det ikke ud til at trække ruder i fribord.io virke i Chrome, så brug Firebox eller Microsoft Edge i stedet. Hvis du ikke gør det, kan det være en rigtig "rude" for at omorganisere varerne på din skærm!

Konto og enhedsopsætning

  • Det første du skal gøre er at oprette en konto ved at klikke på den røde "START NU" knap på frivillig.io startsiden, indtast credentials og klik på "Create My Account". Derefter får du en e-mail-meddelelse, der bekræfter din nye konto.
  • Klik nu på "Log ind" øverst til højre på hjemmesiden, og efter at du har logget ind, skal du se dine "fribord", som kun er dashboards, som du har oprettet for dine projekter. Selvfølgelig, hvis kontoen er ny, så kan du ikke se noget her, så skriv et nyt projektnavn og klik på "Opret nyt" øverst til højre. Dette bringer dig så til et tomt dashboard, hvor du kan konfigurere grænsefladen, bare hvordan du kan lide det. I fribord der kan du oprette forskellige "ruder", og hver rude kan have en enkelt eller flere "widgets", som er ting som grafer, kort, måleinstrumenter mv, der viser dine data på en eller anden måde.
  • Det første, vi skal gøre nu, er at oprette den egentlige datakilde, som er din Arduino + LTE-skærm. For at gøre det skal du klikke på "ADD" øverst til højre under "Datasources". Vælg derefter "Dweet.io" og indtast det ønskede navn under feltet "Navn". Sørg dog for at i feltet "Thing Name" du indtaster skjoldets IMEI-nummer i stedet for ethvert vilkårlig navn, fordi det er, hvad fribord vil bruge til at trække data fra dweet.
  • Når du har klikket på "Gem", skal du se din enhed vises under "Datasources" samt sidste gang, den sendte data til dweet. Du kan også klikke på opdateringsknappen for at kontrollere de nyeste værdier, men fribordet opdateres af sig selv, så du normalt ikke behøver at bruge den pågældende knap.

Dashboard Setup

Lad os nu se på, hvordan du konfigurerer de faktiske klokker og fløjter, som du vil se på skærmen!

  • For at tilføje en rude, klik på knappen "ADD PANE" øverst til venstre, og du vil se det tilføje et lille vindue på skærmen. Men der er ikke noget her endnu, fordi vi ikke har tilføjet nogen widgets!
  • For at tilføje en widget skal du klikke på den lille "+" -knap på ruden. Dette vil frembringe en dropdown-menu med forskellige widgetindstillinger. Da vi skal lave nogle GPS tracking, skal vi vælge "Google Map" widgeten. Du skal så se to felter, breddegrad og længdegrad. For at udfylde disse ordentligt skal din enhed have sendt til dweet allerede. Hvis du antager det, skal du kunne klikke på "+ Datasource", klikke på datakilden ("SIM7000 GPS Tracker"), og klik derefter på "lat", hvilket er det variable navn, som skjoldet bruger, når du sender til dweet. Gentag proceduren for længdegrad og klik på skyderen nederst, hvis du vil have, at kortet skal tegne linjer mellem datapunkter for at markere, hvor du har været.
  • Nu skal du se et lille kort over din omtrentlige placering! For at teste om kortet fungerer, skal du prøve at ændre din nuværende GPS lat / lang til noget lidt anderledes ved at ændre for eksempel det første ciffer efter decimaltegnet for lat / lange værdierne i dweet URL'en, der blev udskrevet i seriel skærmen i Arduino IDE, når skjoldet lagde data. Efter tweaking dem, kopier og indsæt webadressen og udfør den i din browser.

dweet.io/dweet/for/112233445566778?lat=11.223344&long=-55.667788&speed=0&head=10&alt=324.8&temp=22.88&batt=3629

  • Skift nu tilbage til fribord, og du skal se, at den grafede din tweakede placering og tegnet en orange linje mellem punkterne! Fede ting, huh? Så jeg tror, ​​du får billedet om, at vores GPS-tracker vil sende positionsdata til at døde for dig at se det på fribord i realtid eller efter dit eventyr er forbi

Ekstra

Da vores lille GPS-tracker ikke kun sender lat / lang data, men også højde, hastighed, overskrift og temperatur, skal vi kaste nogle få widgets til for at gøre vores dashboard mere farverigt!

  • Lad os begynde med at tilføje en ny rude og derefter tilføje et mål i den nye rude, klik på knappen "+" i ruden og vælg "Gauge". Ligesom tidligere bruger datakilden og vælg "speed" som de data, vi er interesserede i at hente for denne måler. Du skal så se en god måler på dit dashboard!
  • Gentag dette for højde og temperaturværdier.
  • Nu til overskriften lad os tilføje en "Pointer" i stedet. Dette er i det væsentlige et kompas, fordi det begynder at pege op (nord) ved 0 grader og roterer med uret for positive overskrifter. Perfecto!
  • For at ændre størrelsen på ruden skal du svæve over ruden, der indeholder kortet, og du skal se et lille skiftenøglesymbol øverst til højre. Klik på det og indtast en titel for ruden og indtast "2" under "Kolonner" for at øge bredden af ​​ruden.
  • For at ændre placeringen af ​​ruderne skal du blot trække dem rundt! Du kan også eksperimentere med at tilføje en "Sparkline", som stort set kun er en linjediagram, så du ikke kun kan se de nyeste data, men også historiske data.

Hav det sjovt og sæt det hele op, hvordan du kan lide det, fordi vi er klar til at gå ud på en feltur!

Trin 5: Testning

For at teste din opsætning vil jeg anbefale at indstille prøveudtagningstiden til en lavere værdi, som 10-20s, så du kan fange din rejse med højere opløsning. Jeg ville også forlade variablen "turnOffShield", så skjoldet ikke går i seng. Dette gør det muligt at sende data hurtigt efter hinanden.

Når du har uploadet koden til din Arduino, skal du enten få en batteripakke (7-12V) for at tænde for Arduino eller bare tilslutte Arduino ved hjælp af en USB-adapter. Du skal også bruge et 3,7V LiPo-batteri, der er tilsluttet skjoldet som nævnt tidligere; skjoldet, der vises på billedet ovenfor, er en gammel version og har ikke LiPo-batteri, men det er nu nødvendigt på alle nyere versioner.

Derefter skal du åbne fribord et sted, så når du vender tilbage kan du se resultaterne! Når du har plugget i Arduino, er du god til at gå! Start kørsel rundt, tag lidt kaffe, kom hjem, og du skal se de data, der er tegnet på fribord. Hvis du virkelig vil (jeg anbefaler ikke dette under kørsel …) kan du se fribordsdata på din telefon i realtid, da din ven kører bil. Sjove ting!

Trin 6: Resultater

Til denne test gik min far og jeg for at få nogle kyllingtrommer hos Trader Joe's (omnomnomnom …) og vi hentede nogle ret præcise data. Jeg havde enheden sende data hver 10s og den maksimale hastighed fra turen var omkring 92khm (omkring 57mph), hvilket er ret præcis, fordi vi holdt øje med speedometer hele tiden. LTE-skjoldet gør sit job ganske godt, og sender data meget hurtigt til skyen. Så langt så godt!

Men måske er den ikke-så gode nyhed, at kort-widgeten på fribord ikke er så stor, som jeg oprindeligt havde tænkt. Det tillader ikke dig at bevæge musens placering, og det forbliver centreret på den sidste placering, så det er fantastisk til ting som en bil GPS-tracker, men ikke hvis du vil analysere en gennemført tur med alle datapunkterne, især hvis det var en lang rejse.

I denne vejledning lærte vi, hvordan man bruger LTE-skjoldet som en GPS-tracker og datalogger, og hvordan man hurtigt kan se dataene på freeboard.io. Brug nu din fantasi og anvend den i dit eget projekt. Du kan endda tilføje på flere skærme og gøre denne ting til en lav-power sol data logger! (Jeg kan faktisk planlægge at lave en tutorial om det i fremtiden!). På grund af begrænsningerne på fribordkortet planlægger jeg også at lave en helt ny vejledning om, hvordan du laver din egen Android-app, der henter dataene fra dweet og giver dig mulighed for at tegne lokaliseringen af ​​sporingen på Google Maps med start, pause, og stop funktioner til din rejse! Bliv hængende!

  • Hvis du kunne lide dette projekt, så giv det et hjerte!
  • Hvis du har spørgsmål, kommentarer, forslag til en ny selvstudium eller prøvet dette projekt selv, skal du definitivt kommentere nedenfor!
  • Følg mig her på Instructables, abonner på min YouTube-kanal eller følg mig på Twitter for at holde dig opdateret med mine seneste Arduino-projekter! Jeg er en ung ingeniør med en passion for at dele det jeg har lært, så der vil helt sikkert være nogle flere tutorials snart!
  • Hvis du vil støtte hvad jeg gør i at dele open source hardware og dokumentere dem grundigt til uddannelsesmæssige formål, overveje at købe dit eget skjold på Amazon.com for at lege med!