Arduino GPS/GSM Tracker (WatchDog aktiverat) (6 / 9 steg)
Steg 6: Spårning och varningar
I detta första projekt, kommer vi kontinuerligt kontrollerar du platsen för projektet, och se om vi överskridit en given sträcka vi satt i skissen också.
Om så är fallet, kommer vi göra lampan blinka, och även göra summern avger ett ljud.
Vi först förklara några konstanter och variabler för alarm:
LED & Summer pins < br > const int ledPin = 6;
CONST int buzzerPin = 9;
Larm
int counter = 0;
bool larm = false;
Vi Ställ sedan det längsta avstånd som projektet kan gå utan att slå larm. Observera att en civil precision GPS som denna är ca 10 meter, så jag verkligen föreslår anger ett värde som är större än 20 meter eller så:
CONST float maxDistance = 100;
Vi förklarar också två variabler som ska innehålla den första platsen för projektet:
flyta initialLatitude; < br > float initialLongitude;
Som standard anges vi larmet ska vara falsk:
Alarm = false;
I funktionen setup() av skiss får vi en GPS-fix att ställa in den första platsen av projektet:
bool gpsFix = fona.getGPS (latitud, longitud, & speed_kph, & rubrik, & höjd); < br > initialLatitude = bredd.
initialLongitude = longitud;
I funktionen loop() i skissen vi få ständigt den nuvarande GPS-position, och sedan beräkna skillnaden mellan detta och den ursprungliga platsen:
flyta avstånd = distanceCoordinates (latitud, longitud, initialLatitude, initialLongitude);
Vi trycker också detta avstånd inuti den Serial monitorn:
Serial.Print ("avstånd:"); < br > printFloat (avstånd, 5);
Serial.println("");
Om det uppmätta avståndet överskridit det maximala avståndet tillät vi, aktivera vi också alarmet:
om (avstånd > maxDistance) {< br > alarm = sant;
}
Efter det kolla vi om vi är i larmläge eller inte, och agera på LED & Piezo summern därefter:
om (alarm == false) {< br >
om (millis() - counter > 5000) {
digitalWrite (ledPin, hög);
}
om (millis() - counter > 5100) {
digitalWrite (ledPin, låg);
räknare = millis();
}
noTone(buzzerPin);
}
annat {
om (millis() - counter > 100) {
digitalWrite (ledPin, hög);
}
om (millis() - counter > 200) {
digitalWrite (ledPin, låg);
räknare = millis();
}
tonen (buzzerPin, 1000);
}
Nu är det dags att testa projektet! Ladda upp koden till Arduino styrelsen och öppna den Serial monitorn. Du bör se att inledningsvis, avståndet är lika med noll, eller på ett litet värde.
Ja, Observera att precision GPS är ca 10 meter, så mellan två mätningar ståndpunkten kommer att förändras något. Du kan också ta projektet för en kort promenad genom att gå ur den gräns du anger, och se om det ger upphov till larmet!
Bästa är det lämnar punkter, där det sista hittades alltså geografisk inriktning.