Hub NMEA / AIS económico - Puente RS232 a Wifi para uso a bordo: 6 pasos
Hub NMEA / AIS económico - Puente RS232 a Wifi para uso a bordo: 6 pasos
Anonim
Hub NMEA / AIS económico - Puente RS232 a Wifi para uso a bordo
Hub NMEA / AIS económico - Puente RS232 a Wifi para uso a bordo
Hub NMEA / AIS económico - Puente RS232 a Wifi para uso a bordo
Hub NMEA / AIS económico - Puente RS232 a Wifi para uso a bordo
Hub NMEA / AIS económico - Puente RS232 a Wifi para uso a bordo
Hub NMEA / AIS económico - Puente RS232 a Wifi para uso a bordo
Hub NMEA / AIS económico - Puente RS232 a Wifi para uso a bordo
Hub NMEA / AIS económico - Puente RS232 a Wifi para uso a bordo

Actualización 9 de enero de 2021: se agregó una conexión TCP adicional y reutilizar la última conexión si se conectan más clientes Actualización 13 de diciembre de 2020: no se agregó una versión de configuración del código para barcos con enrutadores existentes

Introducción

Este puente NMEA / AIS RS232 a WiFi se basa en el escudo WiFi ESP8266-01. AIS es un sistema de identificación automática para mostrar la posición de los barcos cercanos. NMEA 0183 es el estándar de la Asociación Nacional de Electrónica Marina que se utiliza para los mensajes GPS.

El puente de RS232 a WiFi se ha modificado del ESP8266-01 WiFi Shield para que funcione con una batería de 12 V y acepte una entrada RS232 (+/- 15 V) y cree una red local que transmita los datos a través de TCP y UDP. Fue desarrollado en conjunto con Jo, quien quería ejecutar una red local autónoma, barata y simple para acceder a los datos de su AIS desde cualquier lugar de su yate. Este módulo resultante crea un punto de acceso (un enrutador) y configura un servidor TCP para hasta 4 conexiones y también transmite los datos en un grupo de transmisión UDP. Se proporciona una página web de configuración para establecer los números de puerto TCP y UDP, la potencia WiFi Tx y la velocidad en baudios del RS232 entrante. A diferencia del WiFi Shield, no hay botón de configuración, por lo que una vez construido, el módulo se puede sellar completamente a prueba de agua. Se incluyen circuitos de protección para hacer que este dispositivo sea robusto contra fallas de cableado. Aunque está diseñado con NMEA (GPS) y AIS en mente, el módulo manejará cualquier dato RS232 con velocidades en baudios entre 4800 y 38400 (y otros mediante la edición del boceto de Arduino).

Características

  • Utiliza el módulo ESP8266-01 económico y fácilmente disponible: - También se pueden utilizar otros módulos ESP8266
  • Robusto: - El circuito tiene una serie de protecciones integradas para evitar errores al realizar el cableado.
  • Eficiente de energía: - Una fuente de alimentación de convertidor CC-CC alimenta eficientemente la unidad con una batería de 12 V y la potencia de WiFi Tx se puede reducir para ahorrar más energía.
  • Fácil de usar: - Simplemente conecte un suministro de 5.5V a 12V y la línea RS232 TX y luego conecte su receptor a la red y conéctese al servicio TCP o UDP para recibir los datos. Se puede cambiar rápidamente por uno de repuesto si la unidad falla
  • Fácil de configurar: - No es necesario reprogramar, no hay modo de configuración especial. Se proporciona una página de configuración que le permite configurar la velocidad en baudios RS232 y la potencia de transmisión WiFi y los números de puerto para los servidores TCP y UDP.
  • Opcional Sin versión de configuración: - También hay otro boceto donde toda la configuración está preprogramada. Esto es para aquellas situaciones que ya tienen una red local ejecutándose con su propio enrutador (punto de acceso)

Suministros:

Este puente ESP8266-01 RS232 a WiFi necesita las siguientes piezas o similar. Los precios que se muestran aquí son a agosto de 2020 y excluyen los gastos de envío y algún tipo de caja de plástico: -

Módulo WiFi ESP8266-01 - ~ US $ 1,50 en línea (arriesgue) O para un producto confiable SparkFun ESP8266-01 - US $ 6,95

MPM3610 3.3V Buck Converter Adafruit - US $ 5.95 Entrada de 5V a 21V, O módulo de fuente de alimentación reductor DC-DC 3A Buck en línea Aliexpress ~ US2.00

Cabezal de 10 pines Element14 - US $ 0.40 (o regleta de terminales de cabezal de 28 pines de Jaycar AU $ 0.95)

1 descuento 1N5711 Schottky Diode Digikey US $ 1.15 (o Jaycar AU $ 1.60)

2 de descuento 1N4001 Diodos SparkFun US $ 0.30 (o 1N4004 Jaycar AU $ 1.00) Cualquier diodo 1A 50V o superior servirá, por ejemplo, 1N4001, 1N4002, 1N4003, 1N4004

1 de 2N3904 Transistor NPN SparkFun US $ 0.50 (o Jaycar AU $ 0.75 cualquier NPN de propósito general con Vce> 40V, Hfe> 50 a 1mA, Ic> 50mA por ejemplo, BC546, BC547, BC548, BC549, BC550, 2N2222

6 resistencias 3K3, p. Ej. Resistencias 3K3 - Digikey - US $ 0.60 (o resistencias de película metálica 3K3ohm 1/2 Watt 1% - Pk.8 de Jaycar AU $ 0.85)

3 resistencias 330R Element14 US $ 0.10 (o resistencias de película metálica de 330ohm 1/2 Watt 1% - Pk.8 de Jaycar AU $ 0.85)

1 resistencia de 10K Element14 US $ 0.05 (o resistencias de película metálica de 10k Ohm 0.5 Watt - Paquete de 8 de Jaycar AU $ 0.85)

Placa Vero (enlaces y rieles de bus) Jaycar HP9556 OR (tira de cobre) (tira de cobre) p. Ej. Jaycar HP9540 ~ AU $ 5.50

y una caja de plástico y un cable de conexión.

Costo total ~ US $ 9.90 + envío y caja de plástico (a partir de agosto de 2020) usando Aliexpress ESP8266-01 y módulo DC-DC O ~ US $ 19.30 usando el módulo Sparkfun ESP8266-01 y el convertidor Adafruit DC-DC buck. Lo suficientemente barato para hacer un par de repuestos.

Para programar el puente RS232 a WiFi, también necesita un cable USB a serie. Aquí se usa un cable serial USB a TTL de SparkFun (US $ 10.95) porque tiene extremos bien etiquetados y tiene soporte de controlador para una amplia gama de sistemas operativos Incluyendo el cable de programación, el costo de un solo puente RS232 a WiFi es de ~ US $ 20 a US $ 24 (más envío y estuche).

Paso 1: Diagrama de circuito y protecciones de circuito

Diagrama de circuito y protecciones de circuito
Diagrama de circuito y protecciones de circuito

Arriba está el diagrama de circuito del puente RS232 a WiFi (versión pdf). Esto ha sido adaptado del Escudo Wifi ESP8266-01 y modificado para aceptar RS232 y un suministro de 5V a 12V (batería). El convertidor de CC a CC proporciona un funcionamiento energéticamente eficiente con una batería de 12 V para uso nocturno cuando no hay energía solar y el uso de energía es un bien escaso.

Se han incorporado varias protecciones de circuito en el circuito. Las conexiones en el lado izquierdo del circuito solo se utilizan durante la construcción para programar / depurar la unidad. Las resistencias 330R R6 y R7 protegen contra el cortocircuito de una salida TX a una salida TX durante la programación / depuración. Al programar, conecta TX a RX y RX a TX. La salida de depuración TX debe conectarse a una entrada RX UART 3v3 para ver la salida de depuración (consulte los comentarios en el boceto ESP8266_NMEA_BRIDGE.ino).

Las conexiones en el lado derecho del circuito se utilizan para conectar la unidad completa a la fuente de alimentación y la fuente NMEA / AIS RS232. Estas son las únicas conexiones que deben ser accesibles una vez que se construye la unidad. Mantenga estas conexiones en pares.

El 2N3904 proporciona la inversión y el cambio de nivel desde la señal RS232 +/- 15V a la entrada TTL UART al ESP2866. El voltaje inverso entre el emisor y la base del 2N3904 está especificado para soportar al menos 6V. El D4 limita el voltaje base del emisor inverso a menos de 1V cuando la entrada RS232 es -15V.

Por último, “los controladores y receptores RS-232 deben poder soportar un cortocircuito a tierra indefinido” (RS232 wikipedia) por lo que si conecta accidentalmente las líneas RS232 a los terminales de la fuente de alimentación, no debería dañar el dispositivo NMEA / AIS.

Fuente de alimentación

El diodo D1 evita que se aplique voltaje inverso al convertidor CC-CC si cambia las conexiones + V y GND al realizar el cableado. D1 tiene una pequeña fuga de corriente. D2 proporciona una ruta de bajo voltaje para que la corriente de fuga mantenga el voltaje inverso en el convertidor CC-CC por debajo de -0,3 V. La resistencia 330R (R10) en la línea RS232 GND proporciona protección contra cortocircuitos de la batería a tierra si el cable + ve de la batería está conectado al cable GND de la fuente de alimentación de la placa mientras el RS232 GND está conectado.

El convertidor CC-CC está clasificado para una entrada operativa de hasta 21 V, por lo que es adecuado para una batería de 12 V mientras se cambia. Una batería con carga completa puede ser de hasta ~ 14,8 V y el voltaje del cargador puede ser mayor, 16 V o más. La clasificación de entrada de 21 V del convertidor DC-DC está clasificada para manejar esto. La conexión de alimentación inversa accidental (en medio de la noche con mal tiempo) está protegida contra. El voltaje máximo absoluto para la entrada del convertidor es de 28 V, por lo que puede manejar tener una señal RS232 conectada. Se especifica que el voltaje RS232 es menor a +/- 25V.

Si conecta accidentalmente los cables de su fuente de alimentación a las conexiones RS232 TX / GND (intercambiadas o no), las resistencias de 10K y 330R protegerán contra cortocircuitos en la fuente de alimentación.

En resumen, el circuito está protegido contra el intercambio de energía y los cables RS232 y la conexión de los cables de esos pares en ambos sentidos. La mezcla de cables, uno de cada par, no está protegida en todas las combinaciones, así que mantenga el RS232 y los cables de alimentación emparejados y conéctelos en pares.

La corriente promedio utilizada por la placa es de aproximadamente 100 mA (dependiendo de la potencia de transmisión WiFi y la velocidad de datos). Si se usara un regulador lineal simple para alimentar la placa con una batería de 12V, el uso de energía sería 12V x 100mA = 1.2W o 1.2Ahrs durante una noche de 12. El uso del convertidor de CC a CC, que tiene una eficiencia de ~ 70%, reduce esta carga a 0,47 W o 0,47 Ah durante una noche de 12 horas.

Paso 2: construcción

Construcción
Construcción
Construcción
Construcción
Construcción
Construcción

Construí esta unidad usando una pequeña pieza de tablero vero con enlaces y buses de potencia (versión pdf). Aquí están las vistas superior e inferior del tablero completo. Asegúrese de revisar cuidadosamente el cableado cuando haya terminado. Es fácil conectar el pin incorrecto cuando se da la vuelta y se conecta desde la parte inferior.

Paso 3: Programación del escudo WiFi

Programación del escudo WiFi
Programación del escudo WiFi

Cada puente RS232 a WiFi debe programarse una vez, solo y nunca más. Una página web incorporada brinda acceso a las configuraciones disponibles.

Instalación de compatibilidad con ESP8266

Para programar el escudo, siga las instrucciones dadas en https://github.com/esp8266/Arduino en Instalación con Boards Manager. Al abrir el Administrador de tableros desde el menú Herramientas → Tablero, seleccione Tipo Contribuido e instale la plataforma esp8266. Este proyecto fue compilado usando la versión 2.6.3 de ESP8266. Las versiones posteriores pueden ser mejores, pero pueden tener sus propios errores, ya que la plataforma está evolucionando rápidamente.

Cierre y vuelva a abrir el IDE de Arduino y ahora puede seleccionar “Módulo ESP8266 genérico” en el menú Herramientas → Placa.

Instalación de bibliotecas de apoyo

También debe instalar, desde https://www.forward.com.au/pfod/pfodParserLibraries/index.html, las últimas versiones de la biblioteca pfodESP8266BufferedClient (para pfodESP8266Utils.hy pfodESP8266BufferedClient.h) y la biblioteca millisDelay (para millisDelay. h).

Descargue estos archivos zip en su computadora, muévalos a su escritorio o alguna otra carpeta que pueda encontrar fácilmente y luego use la opción de menú Arduino IDE Sketch → Import Library → Add Library para instalarlos. También necesita instalar la biblioteca SafeString. La biblioteca de SafeString está disponible en el administrador de la biblioteca de Arduino o puede descargar el archivo SafeString.zip directamente para la instalación manual a través de Sketch → Importar biblioteca → Agregar biblioteca

Detenga y reinicie el IDE de Arduino y en Archivo-> Ejemplos ahora debería ver pfodESP8266BufferedClient y SafeString.

Programando la placa

Para programar la placa, configure la placa en modo de programación acortando el enlace (abajo a la izquierda). Luego conecte el cable serial USB a TTL UART

Tenga en cuenta que solo conecte los cables 3V3 TX / RX a la conexión del lado izquierdo utilizando el 3V3 TX / RX del cable serie USB a TTL de Sparkfun. Las conexiones del cable son RX (amarillo), TX (naranja), VCC (5V) (rojo), y GND (negro). Tenga en cuenta que el cable amarillo (RX) está conectado al pin TX en la placa y el cable naranja (TX) está conectado al pin RX en la placa. El cable negro (GND) está conectado al GND para el pin TX / RX

Nota: Parece que hay dos versiones de este cable. Las versiones anteriores tienen 5V Vcc y RX (marrón), TX (bronceado / melocotón), VCC (rojo) y GND (negro), en cualquier caso, el cable VCC no se usa aquí. También hay comentarios de que los cables TX y RX están invertidos en algunos casos. Si el IDE de Arduino no puede programar la placa, intente intercambiar los cables TX / RX. El 330R protege contra cortocircuitos TX-TX.

Alimente la placa con una fuente o batería de 6V a 12V 500mA o mayor. Conecte primero el cable de la fuente de alimentación -Ve (GND) para que la corriente de la fuente de alimentación no intente fluir de regreso a través de la conexión USB. Preferiblemente use una fuente o batería aislada (flotante) de 6V a 12V. Tenga en cuenta que los módulos Aliexpress DC-DC necesitan al menos un suministro de 6,5 V.

Luego, conecte el cable USB a su computadora. Seleccione su puerto COM en el menú Herramientas → Puerto. Deje la frecuencia de la CPU, el tamaño del flash y la velocidad de carga en su configuración predeterminada.

Verifique la foto y su cableado. Consulte también Consejos de programación de ESP8266 (error de espcomm). Compile el boceto ESP8266_NMEA_BRIDGE.ino. Luego seleccione Archivo → Cargar o use el botón de flecha derecha para compilar y cargar el programa. Se cargan dos archivos. Si recibe un mensaje de error al cargar, verifique que las conexiones de sus cables estén enchufados en los pines correctos e intente nuevamente.

Una vez completada la programación, quite el modo de programación que cortocircuita el enlace y las conexiones de programación TX / RX y luego apague y encienda la fuente de alimentación para reiniciar la placa en su modo normal.

Conecte el dispositivo NMEA / AIS.

Sin versión de configuración

Existe otra versión de este boceto, ESP8266_NMEA_BRIDGE_noCfg.ino, en la que toda la configuración está preprogramada en el código del boceto. En este caso, el concentrador NMEA se conecta a un enrutador existente (punto de acceso) para que los datos estén disponibles en la red.

La configuración está en la parte superior del archivo ESP8266_NMEA_BRIDGE_noCfg.ino.

// ================= CONFIGURACIÓN CODIFICADA DIFÍCIL ==================

const char ssid = "yourRouterSSID"; // establece aquí el SSID de tu red const char password = "yourRouterPassword"; // establece aquí la contraseña de tu red IPAddress staticIP (10, 1, 1, 190); // establece aquí la IP estática del concentrador NMEA. NOTA entre los números // asegúrese de que ningún otro dispositivo se esté ejecutando con esta misma IP y que la IP esté en el rango de IP de su enrutador // los rangos de IP de enrutador comunes son 10.1.1.2 a 10.1.1.254 // 192.168.1.2 a 192.168.254.254 y // 172.16.1.2 a 172.31.254.254 // el enrutador suele ser 10.1.1.1 o 192.168.1.1 o 172.16.1.1 dependiendo de su rango IPAddress udpBroadcaseIP (230, 1, 1, 1); // establece aquí la IP de transmisión UDP. NOTA el, entre los números. Esta IP es independiente del rango del enrutador. No cambie const uint16_t tcpPortNo = 10110; // establece el puerto del servidor NMEA tcp No aquí const uint16_t udpPortNo = 10110; // establece el puerto de difusión NMEA UDP No aquí const unsigned int txPower = 10; // Potencia TX en el rango de 0 a 82; const unsigned int GPS_BAUD_RATE = 4800; // la velocidad en baudios serial de su módulo GPS // ================= FIN DE LA CONFIGURACIÓN CODIFICADA DIFÍCIL ==============

Paso 4: Agregar LED indicadores (opcional)

Adición de LED indicadores (opcional)
Adición de LED indicadores (opcional)

Mi asesor de navegación en este proyecto, Jo, sugirió montar un LED Red Power y un LED Green Data en el caso para indicar que las cosas están funcionando. Aquí está el circuito modificado con estos dos leds añadidos. (versión pdf)

R9 y R11 establecen la corriente del LED y, por lo tanto, el brillo. Utilice la resistencia más grande que haga que los leds sigan siendo visibles. Será difícil verlos bajo la luz solar directa o en una cabina con mucha luz, por lo que debe montar la unidad en un rincón oscuro para obtener la máxima visibilidad. Jaycar tiene leds rojos y verdes de bisel adecuados (~ AU $ 2,75) y Sparkfun tiene algunos leds rojos y verdes superbrillantes (US $ 1,70), pero casi cualquier led rojo y verde servirá.

Paso 5: Establecer la configuración a través de la página web incorporada

Establecer la configuración a través de la página web incorporada
Establecer la configuración a través de la página web incorporada
Establecer la configuración a través de la página web incorporada
Establecer la configuración a través de la página web incorporada
Establecer la configuración a través de la página web incorporada
Establecer la configuración a través de la página web incorporada
Establecer la configuración a través de la página web incorporada
Establecer la configuración a través de la página web incorporada

Cuando encienda la placa después de la programación, creará automáticamente una red local. Es decir, se convertirá en un punto de acceso local (enrutador). El nombre de la red comenzará con NMEA_ seguido de 12 dígitos hexadecimales únicos para cada placa, por ejemplo. NMEA_18FE34A00239 La contraseña de la red local es siempre NMEA_WiFi_Bridge. Si necesita intercambiar unidades en el mar, apague la vieja, instale la de repuesto y luego busque la nueva red NMEA_….. y use la contraseña NMEA_WiFi_Bridge para unirse a ella.

Si no puede ver la red, acérquese a la placa de circuito y compruebe que tiene los cables de alimentación conectados correctamente. Debe haber una luz azul en la placa ESP8266-01.

Una vez que se haya unido a la red con su computadora o teléfono móvil, puede abrir la página web de configuración en https://10.1.1.1 (Nota: escriba https://10.1.1.1, si solo escribe 10.1.1.1, puede hacer que Google intente buscarlo y fallar ya que no está conectado a Internet)

La página de configuración le permite configurar la potencia de transmisión WiFi. Números más bajos para menos potencia, autonomía y consumo de corriente. También puede cambiar los números de puerto para las conexiones TCP y UDP. El 10110 predeterminado es el puerto designado para las conexiones NMEA, pero puede elegir el suyo si lo desea. Los números de IP son fijos. Finalmente, puede configurar la velocidad en baudios para que coincida con su fuente NMEA / AIS. 4800 baudios es la velocidad en baudios estándar para NMEA. Mientras que 34800 baudios es la velocidad en baudios estándar para AIS.

Una vez que haya realizado sus selecciones, haga clic en Enviar y se mostrará una página de resumen de los cambios que se han almacenado.

Si no son correctos, utilice el botón de retroceso del navegador para volver atrás y corregirlos. Para aplicar los cambios, es necesario reiniciar la placa. Hacer clic en el botón Aplicar estos cambios hará eso.

Una vez que la placa se reinicia, automáticamente mostrará la página de configuración nuevamente con la configuración actual.

Conecte su computadora o dispositivo móvil a la conexión TCP o UDP y verifique que esté obteniendo datos.

¡¡Eso se acabó !! Selle todo en una caja de plástico hermética, dejando libres solo los dos cables de alimentación y los dos cables RS232.

Paso 6: Ayuda - Sin datos

Una vez que se haya conectado a la red y haya configurado su dispositivo móvil para que se conecte al TCP 10.1.1.1 y al puerto que haya configurado (o únase al grupo de multidifusión UDP 230.1.1.1 con el puerto que haya configurado), si aún no obtiene cualquier dato, pruebe los siguientes pasos.

1) Verifique que el equipo NMEA / AIS esté encendido

2) Compruebe que los cables RS232 estén conectados correctamente.

3) Verifique la configuración de 'control de flujo' en su equipo NMEA / AIS. Configúrelo en 'NINGUNO' si esa es una opción. Si no es así, elija 'hardware' O control de flujo RTS / CTS y cortocircuite los pines RTS a CTS y DSR del cable NMEA / AIS. Eso es para un conector DB-25, conecte los pines 4, 5 y 6 juntos. Para un conector DB-9, conecte los pines 6, 7 y 8 juntos. Con control de 'hardware', el equipo NMEA / AIS (el DTE) afirma RTS (ReadyToSend) cuando quiere enviar datos. Con estas conexiones, el pin RTS controla los pines ClearToSend (CTS) y DataSetReady (DSR) que se introducen de nuevo en el equipo NMEA / AIS para indicarle que el otro lado está listo y puede recibir datos.

Depuración

Para activar la salida de depuración TX, descomentar, es decir, editar para #define DEBUGcerca de la parte superior del boceto ESP8266_NMEA_BRIDGE.ino.

Retire los cables USB TX / RX y simplemente conecte el cable amarillo RX a la salida Debug TX. Deje el cable negro GND conectado a GND para TX / RX. El Arduino IDE Serial Monitor ahora mostrará mensajes de depuración.

De forma predeterminada, se inicia el grupo de multidifusión UDP, pero puede deshabilitarlo comentando, es decir, editar a // #define UDP_BROADCAST cerca de la parte superior del boceto ESP8266_NMEA_BRIDGE.ino.

Conclusión

Este puente NMEA / AIS RS232 a WiFi es robusto y fácil de usar. Funciona de manera eficiente con una fuente de 12 baterías y es lo suficientemente barato como para llevar una de repuesto que puede cambiar a mitad del viaje si es necesario.