Autopiloto avanzado para veleros: dirección automática de precisión
Componentes y materiales
| Arduino UNO (MCU principal) | ×1 |
| Arduino Nano R3 (Watchdog externo) | ×1 |
Sobre el proyecto
Prefacio
Navegar en solitario es libertad: horizontes infinitos, técnica, decisiones óptimas... y un buen té con galletas a las 17:00. Ahí entra el autopiloto: gobierna mientras tú descansas.
¿Qué hace el autopiloto?
Un velero no tiene motor ni sigue rutas programadas. El patrón lo hace todo: velas, viento, cuerdas, tráfico, rumbo, timón. Cuando el patrón pausa (unos segundos o minutos), activa el autopiloto. En segundos, el GPS fija posición, velocidad y rumbo, y mantiene el rumbo (route). El sistema de gobierno (caña conectada al timón), movido por manos expertas, pasa a controlarse por un motor paso a paso vía poleas y cabos.
Controlar el timón es ajuste continuo. Barcos pequeños/ligeros sufren más influencias: olas, viento, desplazamiento de peso, corrientes. El patrón sigue atento, corrigiendo rumbo mediante mando a distancia (4 botones: +1, -1, +10, -10 grados). Los mismos botones están en la unidad (verdes/rojos). Botón azul = activar/pausar. Botón negro = ajustar parámetros en memoria.

El circuito
- Arduino Uno: procesamiento principal.
- Arduino Nano: watchdog externo (pin 3 Uno → A0 Nano, pulso high/low cada ≤2.5 s). Si Uno no "alimenta" al Nano, este lo resetea. Nunca ha fallado.
- Display LCD1602 + conversor I2C (4 hilos).
- Botones y mando RF vía divisores de tensión (resistencias 1% para lectura analógica precisa).
- RF 433 MHz (XD-YK04) + antena bobina casera (hilo cobre). Alcance ~10-20 m (barco prueba: 4.20 m).
- GPS Beitian BN-220T (2 Hz, solo trama $GNRMC). TX GPS → RX Uno (pin 0). Desconectar GPS al subir sketch (pin 0 compartido).
- EEPROM I2C 24C04 (512 bytes) para parámetros persistentes.
- Motor paso a paso 23LM (54 pasos = 1/4 vuelta) + driver Keyes L298.
- Sensores vía multiplexor 4051: termistor NTC (temp. disipador 7805), resistor 2W 0.22Ω + 4×10k (consumo), divisor tensión batería LiPo 2S 7.4V.
- Alarmas: buzzer (batería < 7.0V o temp > 50°C).
- LEDs: amarillo (watchdog vivo, 1 Hz), azul (autopiloto ON), rojo (pulsación mando).
- Alimentación: LiPo 2S 7.4V 2600 mAh → 7805 + disipador → 5V. Corriente 100-450 mA (máx 800 mA).








PCBs y montaje
- PCBs una cara (requiere puentes). Archivos para transferencia tóner (láser 1200 dpi, sin ahorro tóner).
- Ambas PCBs apiladas sobre Arduino Uno: abajo Potencia, arriba Autopiloto.
- Todo con conectores Dupont (≈200 conexiones sin soldar). Recomendación: soldar todo para estabilidad.


Parámetros y visualización sensores
Botón negro → Modo Setup (incluso navegando). Páginas:
- Sensores: Vbat, mA, Temp (°C).
- Intervalo (ms entre correcciones, ej. 2000).
- Mínimo (grados fuera de rumbo para actuar, ej. 2°).
- Máximo (máx. giro por corrección, ej. 40°).
- Coeficiente (multiplicador giro real, ej. 1.50 → 40° calculados = 60° motor).
- Página 6: "Updating..." si hay cambios → guarda en EEPROM.
Estos parámetros afinan respuesta según poleas, sensibilidad timón, etc. Pruebas en día soleado, viento ligero.
Funcionamiento en vivo
- Navegando, llega "tea time": activa autopiloto (botón azul).
- Espera fix GPS. Pantalla: velocidad (nudos), hora, rumbo actual H (heading) y rumbo objetivo R (route). En pausa:
STOP, R=H. - Conecta cabo del motor paso a paso a la caña del timón. Pulsa azul → inicia gobierno.
- Autopiloto mantiene R, corrige H (±10°, ±5°...) hasta H=R.
- Cambias rumbo con botones ±1/±10 (unidad o mando).
- Para recuperar control: pausa (azul), desconecta cabo, gobierna a mano.
Lado software
- Sketch ~65% flash, ~45% RAM. Uso
Stringpara tramas NMEA, flujo estable. serialEvent()recibe GPS 2 Hz →nmeaExtractData()→ verifica checksumnmea0183_checksum().- Ejemplo trama:
$GPRMC,095836.000,A,4551.9676,N,01328.7118,E,2.09,341.84,280519,, *08(EM406A usa $GPRMC, BN-220 usa $GNRMC). Setup(): verifica/formatea EEPROM (bytes 0-1 = ID 0x29/0x00). Parámetros en bytes 2-11.- Sensores cada 10 s vía multiplexor. Botones HW/RF chequeo continuo. Display según
IsSetup. - Núcleo:
gomotor()mueve paso a paso ida/vuelta cada intervalo. Watchdog: pin 3 high/low continuo.
Instalación en velero
Unidad y motor en popa, bien fijados. Cabo 6 mm desde polea motor → 2 poleas laterales (fijas con tensores elásticos) → conexión rápida a caña timón. ¡Lejos del agua!

Notas y actualizaciones
- 10.05.2020: archivos STEP 3D (polea motor y placa montaje) + vista 3D.
Descargo y advertencias
Esto es un juego, ¡nada serio! Navegué 16 meses alrededor del mundo con autopiloto REAL (¡NO ESTE!) en todo tiempo. Uno real es hardware/software robusto en el que confías la vida. Este Arduino Autopilot es un juego fantástico para aprender y divertirse. ¡Diviértete!
— Marco Zonca
Código
Sketch Autopiloto (Arduino UNO)
/* Autopiloto veleros pequeños - Marco Zonca 2019
UNO CPU, Nano watchdog, GPS BT-220 NMEA, stepper+driver, RF433, 6 botones, buzzer, i2c LCD, 2 LEDs, i2c 24C04 EEPROM, Mux 4051, LiPo 2S 7.4V, 7805, Termistor */
#include <LiquidCrystal_I2C.h>
#include <NewTone.h>
#include <Stepper.h>
#include <Wire.h>
// ... (código completo en repositorio GitHub del autor)
// Funciones clave: nmeaExtractData(), gomotor(), RefreshDisplay(), checkRfRC(), checkHWButtons(),
// readMuxSensors(), EEPROM read/write, watchdog feeding, steering control loop.
Sketch Watchdog (Arduino Nano)
/* Watchdog para cliente (UNO) en Nano 3.0 - Marco Zonca
Cliente debe alimentar watchdog antes de feedingInterval o se reinicia */
const int feedingPin = 14, ledPin = 15, restartPin = 16, buzzerPin = 17;
const long ledInterval = 1000, feedingInterval = 2500, timeForClientStart = 16000;
// ... loop: parpadea LED 1 Hz, monitoriza feedingPin, si no hay flanco HIGH-LOW en 2.5 s → reinicia UNO (restartPin LOW) + beeps.
Piezas personalizadas

- Placa montaje motor 23LM (by Andrew Barney):
23lm-stepper-plate-v2_PlvJaff9Hl.step - Polea motor 23LM (56 dientes):
23lm-stepper-pulley-56_UhsbaWbiBt.step
Esquemáticos





Proceso de manufactura
- ¿Es el Monitoreo Continuo la Elección Correcta para sus Operaciones?
- Construya un Sensor de Movimiento Infrarrojo DIY para Raspberry Pi – Guía Paso a Paso
- Diseño de un Sistema de Recuperación con Paracaídas Balístico para UAVs
- Cómo las Transmisiones Manual y Automática Transfieren Potencia: Visión General Clara
- Guía Completa de Sistemas de Transmisión Automática
- Sistemas de Lubricación Automática: Cómo Funcionan y Por Qué Son Importantes
- ATI Industrial Automation: Cambiadores automáticos de herramienta líderes para robots industriales
- Cortadores de polígono de precisión para tornos automáticos: soluciones de corte ajustables y alto rendimiento
- Torno CNC R07 Cincom: Mecanizado de precisión 7 mm para piezas pequeñas
- Sistema de Propulsión Hipersónico Revolucionario Permite Viajes Transcontinentales en Menos de 30 Minutos
- ¿Está tu planta de fabricación lista para IoT? Guía práctica