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

Construye un Notificador de Destino GPS con Arduino UNO y Módulo NEO‑6M

Componentes y materiales

Herramientas necesarias

Aplicaciones y servicios online

Sobre el proyecto

Introducción: El problema y la solución

Los atascos de tráfico son una gran pérdida de tiempo y es imposible predecir con exactitud la duración de un trayecto. Este problema me afectó personalmente al mudarme a una ciudad hace dos meses: cada día pasaba más de dos horas atrapado en congestión (uso transporte público). Decidí aprovechar ese tiempo para crear algo útil: un notificador de destino que avisa cuando estás cerca de tu parada mediante un LED o una vibración.

La lógica es sencilla: obtienes la latitud y longitud de tu destino, calculas la distancia desde tu posición actual y, al estar dentro de un rango definido, activas el indicador.

Captura de latitud y longitud

Conecta el módulo NEO‑6M al Arduino UNO:

Usa la librería TinyGPS++ para leer las coordenadas. El siguiente sketch muestra latitud y longitud en el monitor serie a 9600 baudios:

#include <TinyGPS++.h>
#include <SoftwareSerial.h>
static const int RXPin = 4, TXPin = 3;
static const uint32_t GPSBaud = 9600;
TinyGPSPlus gps;
SoftwareSerial ss(RXPin, TXPin);
void setup() {
  Serial.begin(9600);
  ss.begin(GPSBaud);
}
void loop() {
  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: La primera fijación puede tardar unos minutos; el LED del módulo parpadea cuando recibe señal.

Notificador de destino con LED

Una vez conocidas las coordenadas del destino, se calcula la distancia con TinyGPSPlus::distanceBetween(). Si la distancia (en km) es menor al umbral (ej. 0,05 km = 50 m), se enciende el LED del pin 13.

#include <TinyGPS++.h>
#include <SoftwareSerial.h>
static const int RXPin = 4, TXPin = 3;
static const uint32_t GPSBaud = 9600;
TinyGPSPlus gps;
SoftwareSerial ss(RXPin, TXPin);
unsigned long last = 0UL;
int ledPin = 13;
void setup() {
  Serial.begin(115200);
  ss.begin(GPSBaud);
  pinMode(ledPin, OUTPUT);
}
void loop() {
  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) {
    if (gps.location.isValid()) {
      static const double Dest_LAT = 18.786254, Dest_LON = 73.880798; // Cambia a tus coordenadas
      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);
      if (distanceToDest / 1000 < 0.050000) digitalWrite(ledPin, HIGH);
      else digitalWrite(ledPin, LOW);
    }
    if (gps.charsProcessed() < 10) Serial.println(F("AVISO: Sin datos GPS. Revisa conexiones."));
    last = millis();
  }
}

Versión final con motor vibrador

Para una notificación táctil, se usa el driver L293D para controlar un pequeño motor vibrador. Conexiones clave del L293D:

El código es idéntico al anterior, pero en lugar del LED se activan los pines 6 y 7 para hacer vibrar el motor:

// ... mismas includes y configuración ...
int motorpin1 = 6;
int motorpin2 = 7;
void setup() {
  // ...
  pinMode(motorpin1, OUTPUT);
  pinMode(motorpin2, OUTPUT);
}
void loop() {
  // ... mismo bucle ...
  if (distanceToDest / 1000 < 0.050000) {
    digitalWrite(motorpin1, LOW);
    digitalWrite(motorpin2, HIGH); // Vibración
  } else {
    digitalWrite(motorpin1, HIGH);
    digitalWrite(motorpin2, HIGH); // Parado
  }
}

¡Disfruta construyendo tu propio notificador de destino!

Código completo

Esquemas (Fritzing)

Proceso de manufactura

  1. Proyecto Dados Digitales Arduino: Construye tu Propio Generador de Números Aleatorios con LCD
  2. Generador de Ondas JX – Oscilador DDS Compatible con Arduino con Pantalla OLED
  3. Construye un Iron Man animado con Arduino: componentes, sensores y guía paso a paso
  4. Find Me: Localizador Inteligente de Objetos con Arduino y Bluetooth
  5. Construye un Brazo Robótico Impreso en 3D Controlado por Arduino – Guía Paso a Paso
  6. Conectar Arduino Mega a módulo GPS NEO‑6M: Guía paso a paso
  7. Controlador de Humidificador DIY con Arduino y Relé: Configuración Segura de Alto Voltaje
  8. Módulo GPS u-blox LEA‑6H 02: Guía de integración con Arduino y Python
  9. Pong Neón en Matriz NeoPixel con Arduino Nano
  10. Construye un volante joystick personalizado con Arduino para gaming
  11. Construye un Receptor FM Potente con Arduino y Módulo TEA5767