Arduino GPS/GSM Tracker (2 / 5 stap)

Stap 2: Software uitgelegd

De code voor de Arduino is vrij eenvoudig. Met behulp van een paar van de Bibliotheken, de GPS en GPRS schild worden eenvoudig in het gebruik van objecten. Dit scheelt een hoop tijd GPS tekenreeksen parseren en componeren lange AT + opdrachtreeksen voor de modem. Hier is de code zonder enige pluis. Nalezen op voor een overzicht van wat het allemaal doet.

 #include <TinyGPS++.h> #include <GPRS_Shield_Arduino.h> #include <Wire.h> #include <SoftwareSerial.h> TinyGPSPlus gps; GPRS gsm(7,8,9600); int messageIndex = 0; char message[160]; char phone[16]; char datetime[24]; char latitude[12]; char longitude[12]; void setup() { Serial.begin(9600); pinMode(9, OUTPUT); digitalWrite(9,LOW); delay(100); digitalWrite(9,HIGH); delay(500); digitalWrite(9,LOW); delay(100); pinMode(13, OUTPUT); digitalWrite(13,LOW);} void loop() { while (Serial.available() > 0) { gps.encode(Serial.read());} messageIndex = gsm.isSMSunread(); if (messageIndex > 0) { gsm.readSMS(messageIndex, message, 160, phone, datetime); gsm.deleteSMS(messageIndex); if (String(message) == "xyzzy") { if (gps.location.isValid()) { strcpy(message, "http://www.bing.com/maps?"); strcat(message, "lvl=17&style=r&sp=point."); dtostrf(gps.location.lat(), 1, 6, latitude); strcat(message,latitude); strcat(message,"_"); dtostrf(gps.location.lng(), 1, 6, longitude); strcat(message,longitude); strcat(message,"_Golf+Cart_"); strcat(message,datetime);} else { strcpy(message, "I'm sorry, Dave, I'm afraid I can't do that.");} gsm.sendSMS(phone,message);}}} 

Als u niet hoe om toe te voegen een bibliotheek voor de Arduino programmeer gereedschap weet, is de beste documentatie te vinden op de Arduino website op http://www.arduino.cc/en/guide/libraries#toc4

De TinyGPS ++ bibliotheek kan gevonden worden op http://arduiniana.org/libraries/tinygpsplus/.

De GPRS Shield-bibliotheek kan gevonden worden op https://github.com/Seeed-Studio/GPRS_SIM900.

U moet ervoor zorgen dat de GPS gegevens draden worden verwijderd uit de Arduino voordat u uploadt uw schets. Nadat het programma is geüpload, uitgeschakeld en de draden van de GPS gegevens vervangen.

In het belang van de geheugen opslaan, ik heb niet elke pin declareren als een variabele met een mooie naam, maar zet de waarden rechtstreeks in de code. Als u gebruik wilt maken verschillende pennen voor uw GPRS-apparaat, bijvoorbeeld, zou u de pinnen op het punt in de code waar de GPRS-object is gemaakt. Hier is het toneelstuk door spelen.

Eerst, declareren we onze bibliotheken en globale variabelen:

 #include <TinyGPS++.h>#include <APRS_Shield_Arduino.h>#include <Wire.h>#include <SoftwareSerial.h> 

Maak vervolgens een exemplaar van tinygps ++ 'gps' genoemd.

 TinyGPSPlus gps; 

Maak vervolgens een GPRS-object genaamd 'gsm' op de seriële poort software op pennen 7 & 8 9600 bps

 GPRS gsm(7,8,9600); 

Tot slot verklaren alle indexen en strijkers

 int messageIndex = 0; char message[160]; char phone[16]; char datetime[24]; char latitude[12]; char longitude[12]; 

De setup-lus is vrij schaars, vooral de seriële poort van de hardware voor de GPS initialiseren en vervolgens draaien op de GSM-schild door tijdelijk pulserende pin 9. Ik hoop dat u niet vergeten om te solderen de jumper pad. Tenslotte, mij zwenking vandoor de onboard LED op pin 13 opslaan van SAP en potentieel gebruiken om aan te geven van een fout op een bepaald punt in de toekomst.

 void setup() { Serial.begin(9600); pinMode(9, OUTPUT); digitalWrite(9,LOW); delay(100); digitalWrite(9,HIGH); delay(500); digitalWrite(9,LOW); delay(100); pinMode(13, OUTPUT); digitalWrite(13,LOW);} 

De loop is ook vrij directe. Het gebruik van de bibliotheek TinyGPS ++ spaart een boatload van codering, behandeling van alle GPS gegevens parseren met slechts twee lijnen van code.

 void loop() { while (Serial.available() > 0) { gps.encode(Serial.read());} 

Na dat roepen wij de bibliotheek van de GPRS_SIM9000 te nemen van al het werk uit het zoeken van ongelezen berichten door te lezen en verwijderen van de eerste we met slechts vier regels code vinden. De readSMS() functie laadt ook onze globale variabelen voor later gebruik. Als er meer dan één bericht te wachten, zal elk geparseerd krijgen op latere iteraties van de loop.

 messageIndex = gsm.isSMSunread(); if (messageIndex > 0) { gsm.readSMS(messageIndex, message, 160, phone, datetime); gsm.deleteSMS(messageIndex); 

Met het bericht geparseerd en geladen globals, wordt de binnenkomende tekst vervolgens vergeleken met een bepaalde tekenreeks, blijven alleen op exact gelijk is aan onze toverwoord. Zonder een match, we teruggaan naar de bovenkant van de lijn en beginnen het GPS-object met de nieuwe gegevens opnieuw laden. Wijzig de tekst binnen de aanhalingstekens als u wenst te gebruiken een ander magisch woord.

 if (String(message) == "xyzzy") { 

Als er een match is, maken we een andere één lijn bellen naar onze GPS-object om te bepalen of er een goede correctie over ons standpunt.

 if (gps.location.isValid()) { 

Als zo, we met antwoorden maps een URL naar Bing. Ik zou liever gebruik maken van Google, maar ik heb niet bepaald hoe plaats ik een pin op de kaart met alleen een URL. Hoe dan ook, het creëren van de URL is waarschijnlijk de lelijkste code in de lus. Er moet worden sommige type jongleren om het getal met dubbele precisie geretourneerd door de GPS-object in een string, vandaar de dtostrf() functie. Dan is het gewoon brute kracht aaneenschakeling van tekenreeksen.

De strcpy() -functie stelt u de variabele bericht naar het begin van de URL, dan blijft de strcat() bits aan de dezelfde variabele bericht toevoegen totdat we klaar. Dit is het blok te wijzigen als u wilt gebruiken een verschillende kaartservice op internet of uw antwoord op een andere manier opmaken.

 strcpy(message, "http://www.bing.com/maps?"); strcat(message, "lvl=17&style=r&sp=point."); dtostrf(gps.location.lat(), 1, 6, latitude); strcat(message,latitude); strcat(message,"_"); dtostrf(gps.location.lng(), 1, 6, longitude); strcat(message,longitude); 

De tekst tussen aanhalingstekens is het label dat wordt weergegeven op uw kaartobject. Het moet de omliggende onderstrepingsteken en het "+" teken gebruiken in plaats van spaties. De volgende regel wordt de tijdstempel van de eerste aanvraag toegevoegd.

 strcat(message,"_Golf+Cart_"); strcat(message,datetime);} 

Als we niet een oplossing hebben, wij de inhoud van de variabele bericht ingesteld op iets anders en stuur het langs naar hetzelfde nummer die de aanvraag heeft ingediend en sluiten uit de accolades.

 else { strcpy(message, "I'm sorry, Dave, I'm afraid I can't do that.");} gsm.sendSMS(phone,message);}}} 

Thats it. Ga terug naar de top van de loop en helemaal over beginnen.

Ik hoop dat dit verklaart de code goed genoeg dat iemand nieuw voor de Arduinosphere kan begrijpen en het aan hun behoeften wijzigen. Volgende, installatie...

Gerelateerde Artikelen

Arduino GPS/GSM Tracker (WatchDog ingeschakeld)

Arduino GPS/GSM Tracker (WatchDog ingeschakeld)

Wat is een GPS of GLONASS?Een GPS tracking-apparaat is een apparaat, normaal gedragen door een bewegend voertuig of persoon, die gebruikmaakt van het Global Positioning System te bepalen en de precieze locatie bijhouden, en dus die van de vervoerder,
GSM tracker voor lokalisatie van de auto

GSM tracker voor lokalisatie van de auto

What's it all about?Dit project is een goedkope oplossing voor het installeren van een auto of fiets gadget bijhouden. Ik heb gemaakt om te controleren of dat ik krijg altijd het standpunt van mijn auto, in het geval van het gestolen.Hoe werkt het?He
GPS auto Tracker - goedkoop en heimelijke

GPS auto Tracker - goedkoop en heimelijke

Ik stel mezelf een uitdaging deze week! Bouw een geheime Diy GPS voertuig Tracker voor minder dan $20!Uiteraard kon ik kopen en installeren van een bedrade tracker (of batterij tracker) maar ze zijn vrij duur en waar is het plezier in dat? Ik wil om
Arduino met GSM en PIR Sensor (Engels/Arabisch)

Arduino met GSM en PIR Sensor (Engels/Arabisch)

درس التحكم بالاردوينو عن طريق شبكة الجوالالمقدمة:يتيح لك هذا الدرس استخدام شبكة الجوال للتحكم بضوء الليد بالمنزل عن طريق ارسال رسالة نصية وايضا استخدام الاردوينو للاتصال الاتوماتيكي من المنزل لجوالك عند استشعار اي حركة في الغرفة لسماع نوع الاصوات في
GPS auto tracking-apparaat met behulp van de Arduino en smartphone

GPS auto tracking-apparaat met behulp van de Arduino en smartphone

Tegen het einde van 2013, werden meer dan 7,2 miljoen auto's wereldwijd geïdentificeerd als gestolen, dus het is zeer belangrijk om uw voertuig te beschermen tegen diefstal.in dit project, zullen we u helpen :)u hoeft niet te kopen dure onderdelen zo
Versie 2.0 Arduino gecontroleerde Auto Tracking System gebaseerd op SMS

Versie 2.0 Arduino gecontroleerde Auto Tracking System gebaseerd op SMS

dit systeem is de verbeterde versie van de vorige project...U zal zitten kundig voor bijhouden van uw auto, nadat u dit systeem bouwennoem je het apparaat dan stuurt u een sms die LAT, LON en Google kaart koppeling voor slechts één aanraking om te zi
Geo-Data Logger: Arduino + GPS + SD + versnellingsmeter te melden, tijd-stempel, en geo-tag sensorgegevens

Geo-Data Logger: Arduino + GPS + SD + versnellingsmeter te melden, tijd-stempel, en geo-tag sensorgegevens

UPDATES17 oktober 2013: Ik heb een handleiding gepubliceerd over het gebruik van uw Androïde telefoon voor een soortgelijke taak door leveraging uw Androïde apparaat is gebouwd in GPS en sensoren.6 februari 2013: Featured op GeoAwesomeness http://geo
Arduino GPS in iPhone Case - bouw je eigen! :)

Arduino GPS in iPhone Case - bouw je eigen! :)

Hi All,Het is ons wederom weer op de rails. Dit keer waren we denken aan iets cool dat kan worden gebruikt als een eenvoudige gadget dat anderen kan imponeren. Wat we hier hebben is een set van de schoonheid van schilden aangesloten op mijn favoriete
Waterkwaliteit Monitoring en aanmelding systeem met behulp van Arduino gebaseerd GSM-systeem.

Waterkwaliteit Monitoring en aanmelding systeem met behulp van Arduino gebaseerd GSM-systeem.

Dit instructable video is alles over hoe het toezicht op de kwaliteit van water, stagiaires van het toezicht op het niveau van water, de temperatuur van het water en de omgeving, de troebelheid van het water (hoe schoon het water is) evenals de nivea
GPS auto tracker met Intel Edison

GPS auto tracker met Intel Edison

Naar het volgende project met behulp van de Intel Edison vervoer en veiligheid Kit ik heb gemaakt een zeer fundamentele toepassing voor het bijhouden van een auto met behulp van de GPS Grove. Dit project kostte me een beetje meer werk vanwege de comp
Arduino LDR Motion Tracking

Arduino LDR Motion Tracking

Ik heb al speelde met het idee om iets te doen met het volgen van beweging. Ik had soortgelijke te bouwen een beetje beweging bijhouden Nerf gun turret (of soortgelijke) dus ik dacht ik zou beginnen met de basics, niets te flash, niets te duur dat, d
Verzenden van SMS met Arduino || TC35 GSM Module

Verzenden van SMS met Arduino || TC35 GSM Module

In dit kleine project zal ik u tonen hoe een TC35 GSM module om goed te gebruiken en hoe het te gebruiken met een Arduino Uno voor het verzenden van een SMS met het.Stap 1: Bekijk de video!Deze video geeft u alle informatie die u nodig hebt, zodat u
Arduino GPS snelheidsmeter met een ks0108 - 128 x 64 GLCD (display)

Arduino GPS snelheidsmeter met een ks0108 - 128 x 64 GLCD (display)

Ik wilde het bouwen van een digitale snelheidsmeter voor mijn auto. Er was niets mis met de een al geïnstalleerd in mijn auto, ik wilde alleen maar een grote LCD display die zal worden geplaatst in een gemakkelijker positie - recht voor me hebben. En
Arduino GPS Datalogger

Arduino GPS Datalogger

wilt u sommige GPS-gegevens naar een SD-kaart met behulp van de Arduino te melden? Bezit u al een Sparkfun microSD schild en de GPS-module? Did u uitproberen de Adafruit Shield (hoewel het is geweldig en goedkoop), maar het stal alle van uw pins? Wil