Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Arduino + GPS-module - Destination Notifier

Componenten en benodigdheden

Arduino UNO
× 1
GPS-module (algemeen)
NEO-6M GPS-module
× 1
LED (generiek)
× 1
Texas Instruments Dual H-Bridge motordrivers L293D
× 1
Bruine hondengadgets Kakkerlak-trilschijfmotor op zonne-energie
× 1
SparkFun Snappable Protoboard
× 1
9V-batterij (algemeen)
× 1
9V naar Barrel Jack Connector
× 1
Een doos
Iets om het project in te sluiten.
× 1
Jumperdraden (algemeen)
× 1

Benodigde gereedschappen en machines

Soldeerbout (algemeen)
Draadstripper

Apps en online services

Arduino IDE

Over dit project

Inleiding:het probleem en de oplossing

Iedereen weet dat files een grote tijdverspilling kunnen zijn. En het is onmogelijk om te voorspellen hoe lang het zou duren van herkomst tot bestemming.

Het probleem van de files raakte me toen ik twee maanden geleden in een stad kwam. Elke dag zit ik meer dan twee uur vast in de file. En ik dacht:waarom kan ik deze tijd niet gebruiken om iets te doen?

Let op:ik gebruik het openbaar vervoer. :-)

Er zijn genoeg andere dingen die je kunt doen als je in de file staat!

Sommige van de onderstaande zijn niet alleen leuk, maar ook productief:

  • Gebruik de tijd om na te denken en te plannen, zowel voor huidige als toekomstige projecten.
  • Gebruik de tijd om jezelf te onderwijzen, instructievideo's te bekijken of een e-learningcursus te volgen over Udemy, Coursera, enz.

En natuurlijk maken elektronica-dingen inspireren me altijd. Dus bouwde ik een bestemmingsmelder met behulp van Arduino en GPS-module. Dus wat het doet, is dat wanneer u in de buurt van uw bestemming bent, het u op de hoogte stelt door middel van een gloeiende LED of door middel van trillingen (met behulp van een mini-trilmotor). Ik heb circuits geleverd voor zowel LED als vibrerende motor.

Daarvoor moet u eerst de breedte- en lengtegraad vinden om de locatie te definiëren. Zodra u uw locatie heeft gevonden, kunt u de breedte- en lengtegraadwaarden gebruiken om de afstand tot de locatie te bepalen en door een bereik aan te houden, kunt u de melder inschakelen. De logica is simpel, toch?!

Dus laten we beginnen.......

Onderdelen en gereedschappen:

Om aan de slag te gaan met uw bestemmingsmelder, zijn hier de vereiste onderdelen:

  • Arduino UNO
  • NEO-6M GPS-module

GPS staat voor Global Positioning System en kan worden gebruikt om positie, tijd en snelheid te bepalen als u op reis bent.

  • Deze module heeft een externe antenne en ingebouwde EEPROM.
  • Interface:RS232 TTL
  • Voeding:3V tot 5V
  • Standaard baudrate:9600 bps
  • Werkt met standaard NMEA-zinnen

De NEO-6M GPS-module heeft vier pinnen:VCC, RX, TX en GND. De module communiceert met de Arduino via seriële communicatie met behulp van de TX- en RX-pinnen, dus de bedrading kan niet eenvoudiger:

NEO-6M GPS-module Bedrading naar Arduino UNO

VCC VIN

RX TX-pin gedefinieerd in de softwareserie

TX RX-pin gedefinieerd in de softwareserie

GND GND

L293D IC

De L293D is een 16-pins motorbesturings-IC die tot twee gelijkstroommotoren tegelijk in elke richting kan aansturen.

Waarom L293D gebruiken?

De invoer naar het motorstuurprogramma IC of motorstuurprogramma is een laagstroomsignaal. De functie van het circuit is om het lage stroomsignaal om te zetten in een hoog stroomsignaal. Dit hoge stroomsignaal wordt vervolgens aan de motor gegeven.

TinyGPS++-bibliotheek :

De TinyGPS++-bibliotheek maakt het eenvoudig om informatie op locatie te krijgen in een formaat dat handig en gemakkelijk te begrijpen is.

Met de TinyGPS++-bibliotheek kunt u veel meer informatie krijgen dan alleen de locatie, en op een eenvoudige manier kunt u naast de locatie het volgende verkrijgen:

>>datum

>>tijd

>>snelheid

>>cursus

>>hoogte

>>satellieten

>>hdop

Breedte- en lengtegraad vastleggen:

Ik zal voorstellen om fritzing-bestanden te downloaden die aan het einde van het project zijn gegeven voor een betere verduidelijking van de verbinding of als je twijfelt, vraag het dan gerust in opmerkingen.

Arduino-code voor het vastleggen van locaties:

#include 
#include
static const int RXPin =4, TXPin =3;
static const uint32_t GPSBaud =9600;
// Het TinyGPS++ object
TinyGPSPlus gps;
// De seriële verbinding met het GPS-apparaat
SoftwareSerial ss(RXPin, TXPin);
void setup(){
Serial.begin(9600);
ss.begin(GPSBaud);
}
void loop(){
// Deze schets toont elke keer dat een nieuwe zin correct is gecodeerd.
while (ss.available()> 0){
gps.encode(ss.read());
if (gps.location.isUpdated()){
Serial.print("Latitude=");
Serial.print(gps.location.lat(), 6);
Serial.print("Longitude=");
Serial.println(gps.location.lng(), 6);
}
}
}

Opmerking:u moet . installeren TinyGPS++ Bibliotheek

sluit aan volgens het schakelschema en upload bovenstaande code, Open de seriële monitor met een baudrate van 9600 en je zult de volgende output zien

Opmerking: Het kan enige tijd duren om de breedte- en lengtegraad te krijgen, omdat de ontvanger de signalen moet opvangen. telkens wanneer het signalen begint te ontvangen, knippert de LED op de GPS-module.

Bestemmingsmelder via LED:

Dus om ervoor te zorgen dat mijn idee werkt, heb ik een prototype gemaakt met LED om de bestemming te melden. Dus wat ik deed, is dat ik de breedte- en lengtegraadwaarden van de bestemming van de vorige code (Read_Lat_Lng.ino) heb toegevoegd en de afstand tot de bestemming heb gevonden vanaf de huidige locatie. En gebruikte het voor het instellen van het bereik waarop de LED moet gaan branden.

Code:

#include 
#include
static const int RXPin =4, TXPin =3;
static const uint32_t GPSBaud =9600;
// Het TinyGPS++ object
TinyGPSPlus gps;
// De seriële verbinding met het GPS-apparaat
SoftwareSerial ss(RXPin, TXPin);
// Voor statistieken die gebeurt elke 5 seconden
unsigned long last =0UL;
int ledPin =13;
void setup()
{
Serial.begin(115200);
ss.begin(GPSBaud);
pinMode(ledPin, OUTPUT);
}
void loop()
{
// Inkomende tekens verzenden
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())
{
// vervang 'Dest_LAT' en 'Dest_LON' waarden bas edon uw locatie
// u kunt de breedte- en lengtegraad vinden van 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("Afstand tot Destination ="));
Serial.print(distanceToDest/1000, 6); // *Print afstand tot bestemming
if(distanceToDest/1000 <0.050000) //Hier wanneer distanceToDest/1000 kleiner is dan 0.050000 LED gaat aan. Dus verander *afstand tot bestemming volgens uw vereisten.
{
digitalWrite(ledPin, HOOG);
}
else
{
digitalWrite(ledPin, LAAG);
}
}
if (gps.charsProcessed() <10)
Serial.println(F("WAARSCHUWING:Geen GPS-gegevens. Controleer bedrading."));
last =millis();
Serial.println();
}
}

Upload de code en je ziet het volgende op de seriële monitor.

De afstand tot de bestemming kan dus worden gebruikt om het bereik te definiëren waarop de uitvoerbewerking (melding) moet worden uitgevoerd.

De laatste!

OK, mijn prototype werkte prima. Nu wil ik mijn project insluiten in een doos waarin een Arduino, GPS-module, motor met driver-IC en de 9V-voeding passen.

Aansluiting op de L293D IC

  • Sluit 5V aan om 1, Vs en Vss op de L293D in te schakelen
  • Sluit de digitale uitgangspinnen (we gebruiken 6 en 7 ) aan op ingang 1 en ingang 2 op de L293D.
  • Sluit de GND van je Arduino aan op beide GND-pinnen aan dezelfde kant van de L293D
  • Sluit ten slotte uitgang 1 en uitgang 2 van de L293D aan op je motorpinnen.

Code:

#include 
#include
static const int RXPin =4, TXPin =3;
static const uint32_t GPSBaud =9600;
// Het TinyGPS++ object
TinyGPSPlus gps;
// De seriële verbinding met het GPS-apparaat
SoftwareSerial ss(RXPin, TXPin);
// Voor statistieken die gebeurt elke 5 seconden
unsigned long last =0UL;
int motorpin1=6;
int motorpin2=7;
void setup()
{
Serieel .begin(115200);
ss.begin(GPSBaud);
pinMode(motorpin1,OUTPUT);
pinMode(motorpin2,OUTPUT);
}
void loop ()
{
// Verzend inkomende tekens
while (ss.available()> 0)
gps.encode(ss.read());
als (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( ) - laatste> 5000)
{
Serial.println();
if (gps.location.isValid())
{
// vervang de waarden voor 'Dest_LAT' en 'Dest_LON' op basis van uw locatie
// u kunt de breedte- en lengtegraad vinden in Read_Lat_Lng.ino
static const double Dest_LAT =18.786254, Dest_LON =73.880798;
dubbele distanceToDest =
TinyGPSPlus::distanceBetween(
gps.location.lat(),
gps.location.lng(),
Dest_LAT,
Dest_LON);
Serial.print(F("Distance to Destination ="));
Serial.print(distanceToDest/1000, 6); // *Print afstand tot bestemming
if(distanceToDest/1000 <0.050000) //Hier wanneer distanceToDest/1000 kleiner is dan 0.050000 LED gaat aan. Dus verander *afstand tot bestemming volgens uw vereisten.
{
digitalWrite(motorpin1,LOW);
digitalWrite(motorpin2,HIGH);
}
else
{
digitalWrite(motorpin1, HOOG);
digitalWrite(motorpin2, HOOG);
}
}
if (gps.charsProcessed() <10)
Serial.println(F("WAARSCHUWING:Geen GPS-gegevens. Controleer bedrading."));
last =millis();
Serial.println();
}
}

Veel plezier met maken!

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;// Het TinyGPS++ objectTinyGPSPlus gps;// De seriële verbinding met de GPS deviceSoftwareSerial ss (RXPin, TXPin); ongeldige setup () {Serial.begin (9600); ss.begin(GPSBaud);}void loop(){ // Deze schets geeft informatie weer telkens wanneer een nieuwe zin correct is gecodeerd. while (ss.available()> 0){ gps.encode(ss.read()); if (gps.location.isUpdated()){ Serial.print("Latitude="); Serial.print(gps.locatie.lat(), 6); Serial.print("Lengte ="); Serial.println(gps.locatie.lng(), 6); } }}
Destination_notifier_LED.inoArduino
#include #include static const int RXPin =4, TXPin =3;static const uint32_t GPSBaud =9600;// Het TinyGPS++ objectTinyGPSPlus gps;// De seriële verbinding met de GPS deviceSoftwareSerial ss(RXPin, TXPin);// Voor statistieken die elke 5 seconden plaatsvinden unsigned long last =0UL;int ledPin =13;void setup(){ Serial.begin(115200); ss.begin(GPSBaud);pinMode(ledPin, OUTPUT);}void loop(){ // Verzend inkomende tekens terwijl (ss.available()> 0) gps.encode(ss.read()); if (gps.location.isUpdated()) { Serial.print(F(" Lat=")); Serial.print(gps.locatie.lat(), 6); Serial.print(F("Lang=")); Serial.println(gps.locatie.lng(), 6); } else if (millis() - laatste> 5000) { Serial.println(); if (gps.location.isValid()) { // vervang 'Dest_LAT' en 'Dest_LON' waarden op basis van uw locatie // u kunt de breedte- en lengtegraad vinden van Read_Lat_Lng.ino static const double Dest_LAT =18.786254, Dest_LON =73.880798; dubbele distanceToDest =TinyGPSPlus::distanceBetween(gps.location.lat(), gps.location.lng(), Dest_LAT, Dest_LON); Serial.print(F("Afstand tot bestemming =")); Serial.print(distanceToDest/1000, 6); // * Drukt afstand tot bestemming af als (afstand naar bestemming/1000 <0,050000) //Hier wanneer afstand naar bestemming/1000 kleiner is dan 0,050000 LED gaat branden. Dus verander *afstand tot bestemming volgens uw vereisten. {digitalWrite(ledPin, HOOG); } else {digitalWrite(ledPin, LOW); } } if (gps.charsProcessed() <10) Serial.println(F("WAARSCHUWING:Geen GPS-gegevens. Controleer de bedrading.")); laatste =millis(); Serieel.println(); }}
Destination_notifier_motor.inoArduino
#include #include static const int RXPin =4, TXPin =3;static const uint32_t GPSBaud =9600;// Het TinyGPS++ objectTinyGPSPlus gps;// De seriële verbinding met de GPS deviceSoftwareSerial ss(RXPin, TXPin);// Voor statistieken die elke 5 seconden plaatsvinden, niet-ondertekend, laatste keer =0UL;int motorpin1=6;int motorpin2=7;void setup(){ Serial.begin(115200); ss.begin(GPSBaud);pinMode(motorpin1,OUTPUT);pinMode(motorpin2,OUTPUT); }void loop(){ // Verzend inkomende tekens terwijl (ss.available()> 0) gps.encode(ss.read()); if (gps.location.isUpdated()) { Serial.print(F(" Lat=")); Serial.print(gps.locatie.lat(), 6); Serial.print(F("Lang=")); Serial.println(gps.locatie.lng(), 6); } else if (millis() - laatste> 5000) { Serial.println(); if (gps.location.isValid()) { // vervang 'Dest_LAT' en 'Dest_LON' waarden op basis van uw locatie // u kunt de breedte- en lengtegraad vinden van Read_Lat_Lng.ino static const double Dest_LAT =18.786254, Dest_LON =73.880798; dubbele distanceToDest =TinyGPSPlus::distanceBetween(gps.location.lat(), gps.location.lng(), Dest_LAT, Dest_LON); Serial.print(F("Afstand tot bestemming =")); Serial.print(distanceToDest/1000, 6); // * Drukt afstand tot bestemming af als (afstand naar bestemming/1000 <0,050000) //Hier wanneer afstand naar bestemming/1000 kleiner is dan 0,050000 LED gaat branden. Dus verander *afstand tot bestemming volgens uw vereisten. {digitalWrite(motorpin1,LAAG); digitalWrite (motorpin2, HOOG); } else { digitalWrite(motorpin1,HIGH); digitalWrite (motorpin2, HOOG); } } if (gps.charsProcessed() <10) Serial.println(F("WAARSCHUWING:Geen GPS-gegevens. Controleer de bedrading.")); laatste =millis(); Serieel.println(); }}

Schema's

read_lat_lng_l3VSL54w0k.fzz bestemming_notifier_led_c7qaqTImXg.fzz bestemming_notifier_motor_fGc8OV6Y0w.fzz

Productieproces

  1. Arduino digitale dobbelstenen
  2. JX Wave Generator
  3. Iron Man
  4. Vind mij
  5. Arduino 3D-geprinte robotarm
  6. Hoe Arduino Mega te interfacen met NEO-6M GPS-module
  7. Arduino-luchtbevochtigerbediening
  8. u-blox LEA-6H 02 GPS-module met Arduino en Python
  9. NeoMatrix Arduino Pong
  10. Arduino-joystick
  11. Arduino TEA5767 FM-radio-ontvanger