Análisis de Experto
Experto verificado
Análisis general del producto
Llevo ya varias semanas probando este HAT RS485/CAN de Waveshare montado sobre una Raspberry Pi 4B en mi embarcación de pesca deportiva, concretamente en una semirrígida de 5,5 metros que uso para jigging y curricán costero en la zona de Cabo de Palos. El objetivo era integrar la electrónica de a bordo —sonda CHIRP, piloto automático, monitor de baterías LiFePO4 y un par de sensores de temperatura/presión— bajo una única plataforma de adquisición y registro basada en Linux, evitando la maraña de cajas negras propietarias que no hablan entre sí. El formato HAT encaja directo sobre el GPIO de 40 pines sin cables volantes, algo que en un entorno marino, con vibraciones y humedad salina, es media batalla ganada.
Calidad de materiales y fabricación
El PCB presenta un acabado ENIG en los contactos del conector GPIO, lo que reduce la oxidación galvánica frente al estaño estándar; un detalle que se agradece cuando el equipo pasa semanas en la sentina con condensación. Los transceptores —un MAX3485 para RS485 y un MCP2515 + TJA1050 para CAN— van montados en encapsulados SOIC con patillas expuestas, lo que facilita la inspección visual de soldaduras frías tras los primeros golpes de mar. La aislación magnética integrada en ambos buses (hasta 2,5 kV RMS según hoja de datos) se nota en la práctica: he podido conectar el bus CAN del BMS de las baterías LiFePO4 (referenciado a negativo de 12 V) y la sonda NMEA 2000 (referenciada a su propia masa) sin bucles de tierra que antes me obligaban a aislar con optoacopladores externos. Los bornes de tornillo no vienen de serie; he montado unos Phoenix Contact PT 1,5 de paso 3,5 mm que encajan en los pads previstos y aguantan el vibrado sin aflojarse. El disipador minúsculo sobre el regulador 3,3 V del Pi basta, pero en verano, con la Pi a 60 °C en la consola estanca, le he añadido un disipador de aluminio de 15 × 15 mm con pasta térmica y el throttle desaparece.
Rendimiento en el agua
Bus CAN (NMEA 2000 / J1939 / BMS LiFePO4)
He configurado el MCP2515 a 250 kbps mediante el overlay mcp2515-can0 en config.txt y la carga de kernel can-dev + can-raw. La latencia medida con candump -t a frente a un Actisense NGT-1 de referencia está por debajo de 0,8 ms frame a frame, indistinguible del ruido de bus. El filtro de aceptación por hardware (máscaras de 29 bits) permite descartar PGNs innecesarios antes de que interrumpan la CPU; en mi caso solo dejo pasar PGN 127488 (motor), 127508 (batería) y 130306 (viento), bajando la interrupción de ~1.200 a ~120 Hz. La biblioteca python-can con interfaz socketcan funciona out-of-the-box; he escrito un demonio systemd que vuelca a InfluxDB cada 5 s y no ha perdido un solo frame en 72 h de prueba continua.
Bus RS485 (Modbus RTU / sensores industriales)
El MAX3485 trabaja en semidúplex a 9.600–115.200 baudios; lo he probado a 38.400 8N1 con un contador de energía SDM630 y una sonda de temperatura/conductividad industrial (Modbus RTU, dirección 1 y 2). El cambio de dirección TX/RX lo gestiona el pin GPIO 17 (configurable en device tree) sin colisiones visibles en osciloscopio. La terminación de 120 Ω y el polarizado fail-safe vienen en pads soldados; he puentado los jumpers J3/J4 y la señal limpia a 200 m de cable apantallado Belden 3105A. El aislamiento magnético evita que los picos de arranque del motor diésel (midí 1,2 kV common-mode con sonda diferencial) pasen a la Pi; antes, con un adaptador USB-RS485 barato, perdía el puerto serie cada dos por tres.
Uso simultáneo
Ambos buses comparten el único UART hardware (ttyAMA0 en Pi 4/5, ttyS0 en Pi 3) mediante multiplexación por software: el kernel expone /dev/ttyAMA0 para RS485 y can0 para CAN. En la práctica, la conmutación la hace el demonio modbusd (RS485) y cand (CAN) accediendo a recursos distintos; no he observado contention porque el tráfico Modbus es poll-request (cada 2 s) y el CAN es event-driven. Si se satura el UART a >115 kbps sostenidos en RS485, el buffer de 64 bytes del MAX3485 puede desbordar; la solución es bajar a 38.400 o usar una Pi 5 con segundo UART (UART1 en GPIO 14/15) y recompilar el overlay —algo que Waveshare documenta en su wiki pero no viene activado de fábrica.
Puntos fuertes y aspectos mejorables
Lo que brilla
- Aislamiento real en ambos buses, no solo diodos TVS.
- Formato HAT mecánicamente sólido, sin holguras en el header GPIO.
- Documentación wiki completa: overlays, device-tree snippets, ejemplos Python/C, esquemas KiCad.
- Compatibilidad Pi 5/4/3/Zero sin jumpers extra.
- Consumo ridículo: 45 mA a 5 V en reposo, 120 mA pico con ambos buses a tope.
Lo que echo en falta
- Bornes de tornillo incluidos; los pads de 2,54 mm obligan a soldar o comprar conectores aparte.
- Segundo UART hardware expuesto para RS485 dedicado en Pi 5 (requiere overlay custom).
- LED de actividad solo en CAN; un par de LEDs SMD en RX/TX RS485 habría salvado horas de debugging.
- Caja de protección IP65 opcional: el PCB desnudo en consola estanca pide a gritos una carcasa DIN-rail o similar.
Veredicto del experto
Para quien quiera unificar la electrónica de pesca —sonda, piloto, baterías, sensores de agua, registro de capturas— bajo una sola Raspberry Pi con software libre (Node-RED, Grafana, Signal K), este HAT es la pieza central más robusta y barata que he encontrado. El aislamiento magnético doble y la convivencia real CAN + RS485 sobre un solo UART ahorran dolores de cabeza de bucles de tierra y multiplicadores de puertos serie. Montado en una Pi 4B con 4 GB, disipador pasivo y fuente conmutada 12→5 V 3 A (Mean Well SD-15B-5), el conjunto lleva tres meses sin reinicios ni corrupciones de tarjeta SD (uso overlayfs read-only + logs en RAM). Si tu proyecto marino pasa por NMEA 2000, J1939, Modbus RTU o BMS LiFePO4, cómpralo, suelda unos bornes Phoenix, carga los overlays y olvídate de cajas negras que no hablan entre sí.














