GPS con Arduino: precisión de metro
El módulo GPS NEO-6M recibe señales de los satélites GPS y las procesa para entregar latitud, longitud, altitud, velocidad y hora UTC con precisión de 2-3 metros en condiciones normales. La comunicación es UART (serial) y el protocolo es NMEA 0183 (frases de texto estándar). Es el mismo sistema que usan las apps de navegación de tu smartphone.
El módulo NEO-6M con antena externa está disponible en Especificar.cl.
Conexión del NEO-6M al Arduino
- VCC → 3.3V del Arduino (o 5V si el módulo tiene regulador)
- GND → GND
- TX del GPS → Pin RX del Arduino (pin 4 con SoftwareSerial)
- RX del GPS → Pin TX del Arduino (pin 3)
- Tiempo de primer fix: 1-3 minutos con antena en exterior con cielo despejado
Librería TinyGPS++ para Arduino
TinyGPS++ de Mikal Hart procesa las frases NMEA automáticamente. Con gps.location.lat() y gps.location.lng() obtienes latitud y longitud en grados decimales. gps.speed.kmph() da la velocidad en km/h. gps.altitude.meters() la altitud. gps.hdop.value() indica la precisión horizontal (menor es mejor).
Geofencing con Arduino
Define una zona geográfica (geofence) con su centro y radio en km. Calcula la distancia entre la posición actual del GPS y el centro de la zona usando la fórmula Haversine. Si la distancia supera el radio, activa una alarma: envía SMS con el módulo SIM800L o alerta por Telegram si hay WiFi. Úsalo como rastreador de mascotas, vehículos o para delimitar zonas seguras en proyectos de drones autónomos.