Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Módulo Arduino + GPS - Notificador de destino

Componentes y suministros

Arduino UNO
× 1
Módulo GPS (genérico)
Módulo GPS NEO-6M
× 1
LED (genérico)
× 1
Controladores de motor Texas Instruments Dual H-Bridge L293D
× 1
Brown Dog Gadgets Motor de disco vibratorio Solar Cucaracha
× 1
SparkFun Snappable Protoboard
× 1
batería de 9V (genérica)
× 1
Conector de conector de barril de 9 V
× 1
Una caja
Algo para incluir el proyecto.
× 1
Cables de puente (genéricos)
× 1

Herramientas y máquinas necesarias

Soldador (genérico)
Pelacables

Aplicaciones y servicios en línea

Arduino IDE

Acerca de este proyecto

Introducción:el problema y la solución

Todo el mundo sabe que los atascos de tráfico pueden ser una gran pérdida de tiempo. Y es imposible predecir cuánto tiempo tomaría desde el origen hasta el destino.

El problema de los atascos me afectó cuando llegué a una ciudad hace dos meses. Todos los días me paso más de dos horas atrapada en atascos. Y sentí que ¿por qué no puedo utilizar este tiempo para hacer algo?

Nota:uso el transporte público. :-)

¡Hay muchas otras cosas que puede hacer mientras está atrapado en un atasco!

Algunos de los siguientes no solo son divertidos, sino también productivos:

  • Use el tiempo para pensar y planificar, ya sea para proyectos actuales y futuros.
  • Utiliza el tiempo para informarte, mirar videos instructivos o tomar un curso de aprendizaje electrónico en Udemy, Coursera, etc.

Y, por supuesto, haciendo Los productos electrónicos siempre me inspiran. Así que construí un notificador de destino usando Arduino y módulo GPS. Entonces, lo que hace es cuando estás cerca de tu destino, te lo notifica con un LED brillante o mediante vibración (usando un mini motor vibrador). He proporcionado circuitos para LED y motor vibratorio.

Para eso, primero debe encontrar la latitud y la longitud para definir la ubicación. Una vez que encuentre su ubicación, puede usar los valores de latitud y longitud para encontrar la distancia a la ubicación y, al mantener un rango, puede activar el notificador. La lógica es simple, ¿verdad?

Así que comencemos .......

Piezas y herramientas:

Para comenzar con su notificador de destino, estas son las partes requeridas:

  • Arduino UNO
  • Módulo GPS NEO-6M

GPS significa sistema de posicionamiento global y se puede utilizar para determinar la posición, el tiempo y la velocidad si está viajando.

  • Este módulo tiene una antena externa y EEPROM incorporada.
  • Interfaz:RS232 TTL
  • Fuente de alimentación:3V a 5V
  • Velocidad en baudios predeterminada:9600 bps
  • Funciona con oraciones NMEA estándar

El módulo GPS NEO-6M tiene cuatro pines:VCC, RX, TX y GND. El módulo se comunica con el Arduino a través de la comunicación en serie usando los pines TX y RX, por lo que el cableado no podría ser más simple:

Módulo GPS NEO-6M Cableado a Arduino UNO

VCC VIN

Pin RX TX definido en la serie del software

Pin TX RX definido en la serie del software

GND GND

L293D IC

El L293D es un controlador de motor IC de 16 pines que puede controlar hasta dos motores de CC simultáneamente en cualquier dirección.

¿Por qué utilizar L293D?

La entrada al controlador de motor IC o controlador de motor es una señal de baja corriente. La función del circuito es convertir la señal de baja corriente en una señal de alta corriente. Esta señal de alta corriente se envía al motor.

Biblioteca TinyGPS ++ :

La biblioteca TinyGPS ++ facilita la obtención de información sobre la ubicación en un formato que es útil y fácil de entender.

La biblioteca TinyGPS ++ le permite obtener mucha más información que solo la ubicación, y de manera simple, además de la ubicación, puede obtener:

>> fecha

>> tiempo

>> velocidad

>> curso

>> altitud

>> satélites

>> hdop

Captura de latitud y longitud:

Sugeriré descargar los archivos fritzing que se encuentran al final del proyecto para una mejor aclaración de la conexión o si tiene alguna duda, no dude en preguntar en los comentarios.

Código Arduino para captura de ubicación:

  #include  
#include
static const int RXPin =4, TXPin =3;
static const uint32_t GPSBaud =9600;
// El objeto TinyGPS ++
TinyGPSPlus gps;
// La conexión en serie al dispositivo GPS
SoftwareSerial ss (RXPin, TXPin);
void setup () {
Serial.begin (9600);
ss.begin (GPSBaud);
}
void loop () {
// Este boceto muestra información cada vez que un nuevo la oración está codificada correctamente.
while (ss.available ()> 0) {
gps.encode (ss.read ());
if (gps.location.isUpdated ()) {
Serial.print ("Latitud =");
Serial.print (gps.location.lat (), 6);
Serial.print ("Longitud =");
Serial.println (gps.location.lng (), 6);
}
}
}

Nota:debe instalar Biblioteca TinyGPS ++

conéctese según el diagrama del circuito y cargue el código anterior, abra el monitor en serie a una velocidad en baudios de 9600 y verá la siguiente salida

Nota: Para obtener la latitud y la longitud, puede llevar algún tiempo, ya que el receptor necesita capturar las señales. cada vez que comienza a recibir señales, el LED del módulo GPS parpadea.

Notificador de destino a través de LED:

Entonces, para asegurarme de que mi idea funciona, hice un prototipo con LED para notificar el destino. Entonces, lo que hice fue agregar los valores de latitud y longitud del destino del código anterior (Read_Lat_Lng.ino) y encontré la distancia al destino desde la ubicación actual. Y lo usé para configurar el rango en el que el LED debe encenderse.

Código:

  #include  
#include
static const int RXPin =4, TXPin =3;
static const uint32_t GPSBaud =9600;
// El objeto TinyGPS ++
TinyGPSPlus gps;
// La conexión en serie al dispositivo GPS
SoftwareSerial ss (RXPin, TXPin);
// Para estadísticas que suceder cada 5 segundos
unsigned long last =0UL;
int ledPin =13;
void setup ()
{
Serial.begin (115200);
ss.begin (GPSBaud);
pinMode (ledPin, OUTPUT);
}
void loop ()
{
// Enviar caracteres entrantes
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 () - último> 5000)
{
Serial.println ();
if (gps.location.isValid ())
{
// reemplaza los valores 'Dest_LAT' y 'Dest_LON' bas eden su ubicación
// puede encontrar la latitud y la longitud de 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 ("Distancia a Destino ="));
Serial.print (distanceToDest / 1000, 6); // * Imprime la distancia hasta el destino
if (distanceToDest / 1000 <0.050000) // Aquí, cuando distanceToDest / 1000 es menor que 0.050000, el LED se enciende. Así que cambie * la distancia al destino según sus necesidades.
{
digitalWrite (ledPin, HIGH);
}
else
{
digitalWrite (ledPin, LOW);
}
}
if (gps.charsProcessed () <10)
Serial.println (F ("ADVERTENCIA:No hay datos GPS. Verifique el cableado."));
last =millis ();
Serial.println ();
}
}

Cargue el código y verá lo siguiente en el monitor en serie.

Por lo tanto, la distancia al destino se puede usar para definir el rango en el que debe realizarse la operación de salida (notificación).

¡El final!

OK, mi prototipo funcionó bien. Ahora quiero encerrar mi proyecto en una caja que pueda caber en un Arduino, un módulo GPS, un motor con controlador IC y la fuente de alimentación de 9V.

Conexión al L293D IC

  • Conecte 5V para habilitar 1, Vs y Vss en el L293D
  • Conecte los pines de salida digital (estamos usando 6 y 7) a la entrada 1 y la entrada 2 en el L293D.
  • Conecte el GND de su Arduino a ambos pines GND en el mismo lado del L293D
  • Finalmente, conecte la salida 1 y la salida 2 del L293D a los pines de su motor.

Código:

  #include  
#include
static const int RXPin =4, TXPin =3;
static const uint32_t GPSBaud =9600;
// El objeto TinyGPS ++
TinyGPSPlus gps;
// La conexión en serie al dispositivo GPS
SoftwareSerial ss (RXPin, TXPin);
// Para estadísticas que suceder cada 5 segundos
unsigned long last =0UL;
int motorpin1 =6;
int motorpin2 =7;
void setup ()
{
Serial .begin (115200);
ss.begin (GPSBaud);
pinMode (motorpin1, OUTPUT);
pinMode (motorpin2, OUTPUT);
}
bucle vacío ()
{
// Enviar caracteres entrantes
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 ( ) - último> 5000)
{
Serial.println ();
if (gps.location.isValid ())
{
// reemplace los valores 'Dest_LAT' y 'Dest_LON' según su ubicación
// puede encontrar la latitud y la longitud en 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 ("Distancia al destino ="));
Serial.print (distancia al destino / 1000, 6); // * Imprime la distancia hasta el destino
if (distanceToDest / 1000 <0.050000) // Aquí, cuando distanceToDest / 1000 es menor que 0.050000, el LED se enciende. Así que cambie * la distancia al destino según sus necesidades.
{
digitalWrite (motorpin1, LOW);
digitalWrite (motorpin2, HIGH);
}
else
{
digitalWrite (motorpin1, ALTA);
digitalWrite (motorpin2, HIGH);
}
}
if (gps.charsProcessed () <10)
Serial.println (F ("ADVERTENCIA:No hay datos de GPS. Verifique el cableado."));
last =millis ();
Serial.println ();
}
}

¡Feliz creación!

Código

  • Read_Lat_Lng.ino
  • Destination_notifier_LED.ino
  • Destination_notifier_motor.ino
Read_Lat_Lng.ino Arduino
 #include  #include  static const int RXPin =4, TXPin =3; static const uint32_t GPSBaud =9600; // The TinyGPS ++ objectTinyGPSPlus gps; // La conexión serial al GPS deviceSoftwareSerial ss (RXPin, TXPin); void setup () {Serial.begin (9600); ss.begin (GPSBaud);} void loop () {// Este boceto muestra información cada vez que se codifica correctamente una nueva oración. while (ss.available ()> 0) {gps.encode (ss.read ()); if (gps.location.isUpdated ()) {Serial.print ("Latitud ="); Serial.print (gps.location.lat (), 6); Serial.print ("Longitud ="); Serial.println (gps.location.lng (), 6); }}} 
Destination_notifier_LED.ino Arduino
 #include  #include  static const int RXPin =4, TXPin =3; static const uint32_t GPSBaud =9600; // The TinyGPS ++ objectTinyGPSPlus gps; // La conexión serial al GPS deviceSoftwareSerial ss (RXPin, TXPin); // Para estadísticas que suceden cada 5 segundos unsigned long last =0UL; int ledPin =13; void setup () {Serial.begin (115200); ss.begin (GPSBaud); pinMode (ledPin, OUTPUT);} void loop () {// Envía los caracteres entrantes mientras (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 () - último> 5000) {Serial.println (); if (gps.location.isValid ()) {// reemplace los valores 'Dest_LAT' y 'Dest_LON' según su ubicación // puede encontrar la latitud y la longitud en 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 ("Distancia al destino =")); Serial.print (distancia hasta el destino / 1000, 6); // * Imprime la distancia al destino if (distanceToDest / 1000 <0.050000) // Aquí, cuando distanceToDest / 1000 es menor que 0.050000, el LED se enciende. Así que cambie * la distancia al destino según sus necesidades. {digitalWrite (ledPin, HIGH); } else {digitalWrite (ledPin, LOW); }} if (gps.charsProcessed () <10) Serial.println (F ("ADVERTENCIA:No hay datos GPS. Verifique el cableado.")); último =milis (); Serial.println (); }} 
Destination_notifier_motor.ino Arduino
 #include  #include  static const int RXPin =4, TXPin =3; static const uint32_t GPSBaud =9600; // The TinyGPS ++ objectTinyGPSPlus gps; // La conexión serial al GPS deviceSoftwareSerial ss (RXPin, TXPin); // Para estadísticas que ocurren cada 5 segundos unsigned long last =0UL; int motorpin1 =6; int motorpin2 =7; void setup () {Serial.begin (115200); ss.begin (GPSBaud); pinMode (motorpin1, SALIDA); pinMode (motorpin2, SALIDA); } void loop () {// Envía los caracteres entrantes 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 () - último> 5000) {Serial.println (); if (gps.location.isValid ()) {// reemplace los valores 'Dest_LAT' y 'Dest_LON' según su ubicación // puede encontrar la latitud y la longitud en 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 ("Distancia al destino =")); Serial.print (distancia hasta el destino / 1000, 6); // * Imprime la distancia al destino if (distanceToDest / 1000 <0.050000) // Aquí, cuando distanceToDest / 1000 es menor que 0.050000, el LED se enciende. Así que cambie * la distancia al destino según sus necesidades. {digitalWrite (motorpin1, LOW); digitalWrite (motorpin2, HIGH); } else {digitalWrite (motorpin1, HIGH); digitalWrite (motorpin2, HIGH); }} if (gps.charsProcessed () <10) Serial.println (F ("ADVERTENCIA:No hay datos GPS. Verifique el cableado.")); último =milis (); Serial.println (); }} 

Esquemas

read_lat_lng_l3VSL54w0k.fzz destination_notifier_led_c7qaqTImXg.fzz destination_notifier_motor_fGc8OV6Y0w.fzz

Proceso de manufactura

  1. Dados digitales Arduino
  2. Generador de ondas JX
  3. Iron Man
  4. Encuéntrame
  5. Brazo robótico Arduino impreso en 3D
  6. Cómo conectar Arduino Mega con el módulo GPS NEO-6M
  7. Control del humidificador Arduino
  8. Módulo GPS u-blox LEA-6H 02 con Arduino y Python
  9. NeoMatrix Arduino Pong
  10. Joystick de Arduino
  11. Receptor de radio FM Arduino TEA5767