Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Arduino + GPS-Modul - Zielbenachrichtigung

Komponenten und Verbrauchsmaterialien

Arduino UNO
× 1
GPS-Modul (generisch)
NEO-6M GPS-Modul
× 1
LED (generisch)
× 1
Doppelte H-Brücken-Motortreiber von Texas Instruments L293D
× 1
Brown Dog Gadgets Solarkakerlaken-Vibrationsscheibenmotor
× 1
SparkFun Snappable Protoboard
× 1
9-V-Batterie (generisch)
× 1
9V zu Barrel Jack Connector
× 1
Eine Box
Etwas zum Einschließen des Projekts.
× 1
Jumper (generisch)
× 1

Notwendige Werkzeuge und Maschinen

Lötkolben (generisch)
Abisolierzange

Apps und Onlinedienste

Arduino-IDE

Über dieses Projekt

Einführung:Das Problem und die Lösung

Jeder weiß, dass Staus eine große Zeitverschwendung sein können. Und es ist unmöglich vorherzusagen, wie lange es vom Start bis zum Ziel dauern würde.

Das Problem der Staus beschäftigte mich, als ich vor zwei Monaten in eine Stadt kam. Jeden Tag verbringe ich mehr als zwei Stunden im Stau. Und ich hatte das Gefühl, warum kann ich diese Zeit nicht nutzen, um etwas zu tun?

Hinweis:Ich nutze öffentliche Verkehrsmittel. :-)

Es gibt viele andere Dinge, die Sie tun können, während Sie im Stau stehen!

Einige der folgenden machen nicht nur Spaß, sondern sind auch produktiv:

  • Nutzen Sie die Zeit zum Nachdenken und Planen, sowohl für aktuelle als auch für zukünftige Projekte.
  • Nutzen Sie die Zeit, um sich weiterzubilden, sehen Sie sich Lehrvideos an oder nehmen Sie an einem E-Learning-Kurs zu Udemy, Coursera usw. teil.

Und natürlich machen Elektroniksachen inspirieren mich immer. Also habe ich einen Zielnotifier mit Arduino und GPS-Modul gebaut. Wenn Sie sich also in der Nähe Ihres Ziels befinden, benachrichtigt es Sie durch leuchtende LEDs oder durch Vibration (durch Verwendung eines Mini-Vibrationsmotors). Ich habe Schaltungen für LED und Vibrationsmotor bereitgestellt.

Dazu müssen Sie zunächst den Breiten- und Längengrad ermitteln, um den Standort zu definieren. Sobald Sie Ihren Standort gefunden haben, können Sie die Breiten- und Längenwerte verwenden, um die Entfernung zum Standort zu ermitteln, und indem Sie einen Bereich beibehalten, können Sie den Notifier aktivieren. Die Logik ist einfach, oder?!

Fangen wir also an.......

Teile und Werkzeuge:

Um mit Ihrem Zielmelder zu beginnen, sind hier die erforderlichen Teile:

  • Arduino UNO
  • NEO-6M GPS-Modul

GPS steht für Global Positioning System und kann verwendet werden, um auf Reisen Position, Zeit und Geschwindigkeit zu bestimmen.

  • Dieses Modul hat eine externe Antenne und ein eingebautes EEPROM.
  • Schnittstelle:RS232 TTL
  • Stromversorgung:3V bis 5V
  • Standard-Baudrate:9600 bps
  • Funktioniert mit Standard-NMEA-Sätzen

Das NEO-6M GPS-Modul hat vier Pins:VCC, RX, TX und GND. Das Modul kommuniziert mit dem Arduino über die serielle Kommunikation über die TX- und RX-Pins, daher könnte die Verkabelung nicht einfacher sein:

NEO-6M GPS-ModulVerkabelung zu Arduino UNO

VCC-FIN

RX TX Pin in der Softwareserie definiert

TX RX-Pin in der Softwareserie definiert

GND GND

L293D-IC

Der L293D ist ein 16-Pin-Motortreiber-IC, der bis zu zwei Gleichstrommotoren gleichzeitig in jede Richtung steuern kann.

Warum L293D verwenden?

Der Eingang zum Motortreiber-IC oder Motortreiber ist ein Niederstromsignal. Die Funktion der Schaltung besteht darin, das Niederstromsignal in ein Hochstromsignal umzuwandeln. Dieses Hochstromsignal wird dann an den Motor gegeben.

TinyGPS++-Bibliothek :

Die TinyGPS++-Bibliothek macht es einfach, Informationen zum Standort in einem nützlichen und leicht verständlichen Format zu erhalten.

Die TinyGPS++-Bibliothek ermöglicht es Ihnen, weit mehr Informationen als nur den Standort zu erhalten, und auf einfache Weise erhalten Sie neben dem Standort:

>>Datum

>>Zeit

>>Geschwindigkeit

>>Kurs

>>Höhe

>>Satelliten

>>hdop

Breiten- und Längengrad erfassen:

Ich werde vorschlagen, die am Ende des Projekts angegebenen Fritzing-Dateien herunterzuladen, um die Verbindung besser zu klären, oder wenn Sie Zweifel haben, können Sie in Kommentaren nachfragen.

Arduino-Code für die Standorterfassung:

#include 
#include
statische Konstante int RXPin =4, TXPin =3;
statische Konstante uint32_t GPSBaud =9600;
// Das TinyGPS++ Objekt
TinyGPSPlus gps;
// Die serielle Verbindung zum GPS-Gerät
SoftwareSerial ss(RXPin, TXPin);
void setup(){
Serial.begin(9600);
ss.begin(GPSBaud);
}
void loop(){
// Diese Skizze zeigt jedes Mal Informationen an, wenn ein neues Satz ist korrekt codiert.
while (ss.available()> 0){
gps.encode(ss.read());
if (gps.location.isUpdated()){
Serial.print("Latitude=");
Serial.print(gps.location.lat(), 6);
Serial.print("Längengrad=");
Serial.println(gps.location.lng(), 6);
}
}
}

Hinweis:Sie müssen . installieren TinyGPS++-Bibliothek

Verbinden Sie sich gemäß dem Schaltplan und laden Sie den obigen Code hoch. Öffnen Sie den seriellen Monitor mit einer Baudrate von 9600 und Sie sehen die folgende Ausgabe

Hinweis: Das Ermitteln von Breiten- und Längengrad kann einige Zeit in Anspruch nehmen, da der Empfänger die Signale erfassen muss. Immer wenn es anfängt, Signale zu empfangen, blinkt die LED am GPS-Modul.

Zielbenachrichtigung durch LED:

Um sicherzustellen, dass meine Idee funktioniert, habe ich einen Prototyp mit LED erstellt, um das Ziel zu benachrichtigen. Also habe ich die Breiten- und Längenwerte des Ziels aus dem vorherigen Code (Read_Lat_Lng.ino) hinzugefügt und die Entfernung zum Ziel vom aktuellen Standort gefunden. Und verwendet es für den Einstellbereich, in dem die LED eingeschaltet werden muss.

Code:

#include 
#include
statische Konstante int RXPin =4, TXPin =3;
statische Konstante uint32_t GPSBaud =9600;
// Das TinyGPS++-Objekt
TinyGPSPlus gps;
// Die serielle Verbindung zum GPS-Gerät
SoftwareSerial ss(RXPin, TXPin);
// Für Statistiken, die geschieht alle 5 Sekunden
unsigned long last =0UL;
int ledPin =13;
void setup()
{
Serial.begin(115200);
ss.begin(GPSBaud);
pinMode(ledPin, OUTPUT);
}
void loop()
{
// Versende eingehende Zeichen
while (ss.available()> 0)
gps.encode(ss.read());
if (gps.location.isUpdated())
{
Serial. print(F(" Lat="));
Serial.print(gps.location.lat(), 6);
Serial.print(F(" Long="));
Serial.println (gps.location.lng(), 6);
}
else if (millis() - last> 5000)
{
Serial.println();
if (gps.location.isValid())
{
// Ersetze 'Dest_LAT' und 'Dest_LON' Werte bas edon Ihren Standort
// Sie finden Latitude und Longitude von Read_Lat_Lng.ino
static const double Dest_LAT =18.786254, Dest_LON =73.880798;
double distanceToDest =
TinyGPSPlus::distanceBetween(
gps.location.lat(),
gps.location.lng(),
Dest_LAT,
Dest_LON);
Serial.print(F("Distance to Destination ="));
Serial.print (distanceToDest/1000, 6); // *Druckt die Entfernung zum Ziel
if(distanceToDest/1000 <0.0500000) //Hier, wenn DistanceToDest/1000 kleiner als 0.050000 ist, schaltet sich die LED ein. Ändern Sie also die *Entfernung zum Ziel gemäß Ihren Anforderungen.
{
digitalWrite(ledPin, HIGH);
}
else
{
digitalWrite(ledPin, LOW);
}
}
if (gps.charsProcessed() <10)
Serial.println(F("WARNUNG:Keine GPS-Daten. Verkabelung prüfen."));
last =millis();
Serial.println();
}
}

Laden Sie den Code hoch und Sie werden Folgendes auf dem seriellen Monitor sehen.

So kann die Entfernung zum Ziel verwendet werden, um den Bereich zu definieren, in dem die Ausgabeoperation (Benachrichtigung) ausgeführt werden muss.

Der Letzte!

OK, mein Prototyp hat gut funktioniert. Jetzt möchte ich mein Projekt in eine Box legen, in die ein Arduino, ein GPS-Modul, ein Motor mit Treiber-IC und das 9V-Netzteil passen.

Verbindung zum L293D-IC

  • Verbinden Sie 5V mit Enable 1, Vs und Vss auf dem L293D
  • Verbinden Sie die digitalen Ausgangspins (wir verwenden 6 und 7 ) mit Eingang 1 und Eingang 2 des L293D.
  • Verbinden Sie die GND Ihres Arduino mit beiden GND-Pins auf derselben Seite des L293D
  • Verbinden Sie zum Schluss Ausgang 1 und Ausgang 2 des L293D mit Ihren Motorpins.

Code:

#include 
#include
statische Konstante int RXPin =4, TXPin =3;
statische Konstante uint32_t GPSBaud =9600;
// Das TinyGPS++-Objekt
TinyGPSPlus gps;
// Die serielle Verbindung zum GPS-Gerät
SoftwareSerial ss(RXPin, TXPin);
// Für Statistiken, die geschieht alle 5 Sekunden
unsigned long last =0UL;
int motorpin1=6;
int motorpin2=7;
void setup()
{
Serial .begin(115200);
ss.begin(GPSBaud);
pinMode(motorpin1,OUTPUT);
pinMode(motorpin2,OUTPUT);
}
void loop ()
{
// Eingehende Zeichen versenden
while (ss.available()> 0)
gps.encode(ss.read());
if (gps.location.isUpdated())
{
Serial.print (F(" Lat="));
Serial.print (gps.location.lat(), 6);
Serial.print(F(" Long="));
Serial.println(gps.location.lng(), 6);
}
else if (millis( ) - letzte> 5000)
{
Serial.println();
if (gps.location.isValid())
{
// Ersetzen Sie die Werte 'Dest_LAT' und 'Dest_LON' basierend auf Ihrem Standort
// Sie können Latitude und Longitude von Read_Lat_Lng.ino finden
static const double Dest_LAT =18.786254, Dest_LON =73.880798;
double distanceToDest =
TinyGPSPlus::distanceBetween(
gps.location.lat(),
gps.location.lng(),
Dest_LAT,
Dest_LON);
Serial.print (F ("Distance to Destination ="));
Serial.print (distanceToDest/1000, 6); // *Druckt die Entfernung zum Ziel
if(distanceToDest/1000 <0.0500000) //Hier, wenn DistanceToDest/1000 kleiner als 0.050000 ist, schaltet sich die LED ein. Ändern Sie also die *Entfernung zum Ziel gemäß Ihren Anforderungen.
{
digitalWrite(motorpin1,LOW);
digitalWrite(motorpin2,HIGH);
}
else
{
digitalWrite(motorpin1, HIGH);
digitalWrite(motorpin2,HIGH);
}
}
if (gps.charsProcessed() <10)
Serial.println(F("WARNUNG:Keine GPS-Daten. Verkabelung prüfen."));
last =millis();
Serial.println();
}
}

Viel Spaß beim Machen!

Code

  • Read_Lat_Lng.ino
  • Destination_notifier_LED.ino
  • Destination_notifier_motor.ino
Read_Lat_Lng.inoArduino
 #include #include static const int RXPin =4, TXPin =3;static const uint32_t GPSBaud =9600;// Das TinyGPS++ ObjektTinyGPSPlus gps;// Die serielle Verbindung zum GPS deviceSoftwareSerial ss (RXPin, TXPin);void setup () { Serial.begin (9600); ss.begin(GPSBaud);}void loop(){ // Diese Skizze zeigt jedes Mal Informationen an, wenn ein neuer Satz korrekt codiert wird. while (ss.available ()> 0) { gps.encode (ss.read (); if (gps.location.isUpdated()) {Serial.print("Latitude="); Serial.print (gps.location.lat(), 6); Serial.print ( "Längengrad ="); Serial.println (gps.location.lng(), 6); } }}
Destination_notifier_LED.inoArduino
#include #include static const int RXPin =4, TXPin =3;static const uint32_t GPSBaud =9600;// Das TinyGPS++ ObjektTinyGPSPlus gps;// Die serielle Verbindung zum GPS deviceSoftwareSerial ss (RXPin, TXPin); // Für Statistiken, die alle 5 Sekunden auftretenunsigned long last =0UL;int ledPin =13;void setup () { Serial.begin (115200); ss.begin(GPSBaud);pinMode(ledPin, OUTPUT);}void loop(){ // Eingehende Zeichen versenden while (ss.available()> 0) gps.encode(ss.read()); if (gps.location.isUpdated()) {Serial.print (F("Lat=")); Serial.print (gps.location.lat(), 6); Serial.print (F("Long=")); Serial.println (gps.location.lng(), 6); aufrechtzuerhalten. Sonst if (millis() - letzte> 5000) {Serial.println(); if (gps.location.isValid()) { // Ersetzen Sie die Werte 'Dest_LAT' und 'Dest_LON' basierend auf Ihrem Standort // Sie können Breiten- und Längengrad von Read_Lat_Lng.ino finden static const double Dest_LAT =18.786254, Dest_LON =73.880798; double distanceToDest =TinyGPSPlus::distanceBetween( gps.location.lat(), gps.location.lng(), Dest_LAT, Dest_LON); Serial.print (F ("Entfernung zum Ziel =")); Serial.print (AbstandToDest/1000, 6); // *Druckt die Entfernung zum Ziel if(distanceToDest/1000 <0.050000) //Hier, wenn DistanceToDest/1000 kleiner als 0.050000 ist, schaltet sich die LED ein. Ändern Sie also die *Entfernung zum Ziel gemäß Ihren Anforderungen. { DigitalWrite (ledPin, HIGH); aufrechtzuerhalten. Sonst { DigitalWrite (ledPin, LOW); } } if (gps.charsProcessed () <10) Serial.println (F ("WARNUNG:Keine GPS-Daten. Verkabelung überprüfen.")); letzte =millis(); Serial.println(); }}
Destination_notifier_motor.inoArduino
#include #include static const int RXPin =4, TXPin =3;static const uint32_t GPSBaud =9600;// Das TinyGPS++ ObjektTinyGPSPlus gps;// Die serielle Verbindung zum GPS deviceSoftwareSerial ss (RXPin, TXPin); // Für Statistiken, die alle 5 Sekunden auftretenunsigned long last =0UL;int motorpin1 =6;int motorpin2 =7;void setup () { Serial.begin (115200); ss.begin(GPSBaud);pinMode(motorpin1,OUTPUT);pinMode(motorpin2,OUTPUT); }void loop(){ // Eingehende Zeichen abschicken while (ss.available()> 0) gps.encode(ss.read()); if (gps.location.isUpdated()) {Serial.print (F("Lat=")); Serial.print (gps.location.lat(), 6); Serial.print (F("Long=")); Serial.println (gps.location.lng(), 6); aufrechtzuerhalten. Sonst if (millis() - letzte> 5000) {Serial.println(); if (gps.location.isValid()) { // Ersetzen Sie die Werte 'Dest_LAT' und 'Dest_LON' basierend auf Ihrem Standort // Sie können Breiten- und Längengrad von Read_Lat_Lng.ino finden static const double Dest_LAT =18.786254, Dest_LON =73.880798; double distanceToDest =TinyGPSPlus::distanceBetween( gps.location.lat(), gps.location.lng(), Dest_LAT, Dest_LON); Serial.print (F ("Entfernung zum Ziel =")); Serial.print (AbstandToDest/1000, 6); // *Druckt die Entfernung zum Ziel if(distanceToDest/1000 <0.050000) //Hier, wenn DistanceToDest/1000 kleiner als 0.050000 ist, schaltet sich die LED ein. Ändern Sie also die *Entfernung zum Ziel gemäß Ihren Anforderungen. { DigitalWrite (Motorpin1, LOW); digitalWrite (Motorpin2, HOCH); aufrechtzuerhalten. Sonst { DigitalWrite (Motorpin1, HOCH); digitalWrite (Motorpin2, HOCH); } } if (gps.charsProcessed () <10) Serial.println (F ("WARNUNG:Keine GPS-Daten. Verkabelung überprüfen.")); letzte =millis(); Serial.println(); }}

Schaltpläne

read_lat_lng_l3VSL54w0k.fzz destination_notifier_led_c7qaqTImXg.fzz destination_notifier_motor_fGc8OV6Y0w.fzz

Herstellungsprozess

  1. Arduino Digital Dice
  2. JX-Wellengenerator
  3. Iron Man
  4. Finde mich
  5. Arduino 3D-gedruckter Roboterarm
  6. Wie man Arduino Mega mit dem NEO-6M GPS-Modul verbindet
  7. Arduino-Befeuchtersteuerung
  8. u-blox LEA-6H 02 GPS-Modul mit Arduino und Python
  9. NeoMatrix Arduino Pong
  10. Arduino-Joystick