Hasta ahora para conectar dispositivos seatalk a nuestro openplotter necesitábamos algun tipo de conversor de Seatalk a NMEA0183. No suelen ser baratos.
Ahora que se ha actualizado signal k a la versión 1.32 ya tenemos la opción de conectar el puerto seatalk de Raymarine directamente a un pin gpio de nuestra Rpi con openplotter.
Lo único que necesitaremos en el montaje es un circuito optoacoplador para meter la señal de seatalk ya que esta viene con un voltaje elevado y hay que aislar también los circuitos de masa por seguridad.
Los detalles estan aquí:
Esquema del circuito y el montaje...
https://github.com/SignalK/signalk-serve...k(GPIO).md
Este circuito optoacoplador es muy barato, del orden de los 2 o 3 €. He pedido un par de modelos a china. Tardaran un mes pero cuando vengan haré mis pruebas y comentare mis exitos o fracasos al respecto.
Tened en cuenta que se trata de una conexión unidireccional. Tan solo recibiremos datos seatalk. No podremos enviarlos en ningún caso. Tampoco es valido para Seatalk2 ya que ese es otro protocolo similar al N2K. Lo bueno es que trabajaremos con datos seatalk en bruto sin necesidad de convertirlos a NMEA0183 y tener que lidiar con los convertidores serie-USB y todo eso.
Excelente noticia. Es lo que le faltaba a openplotter.
Montare el circuito y lo probaré.
Espero que no le robe muchas Ressourcen a la raspi.
El problema de seatalk es que trabaja con datos de 9bits en lugar de 8.
La uart de la raspi es solo para 8 bits.
Para leer los 9 bits de seatalk hay que escribir un programa extra.
Yo lo había consultado y el gran problema era que programas escritos en pyton se consumían más de 60%de los recursos de la raspi. Claro con la pi 4 puede ser que sea más viable.
A ver si saco tiempo, ya que ahora estoy preparando todo para las vacances.
Gesendet von meinem SM-G988B mit Tapatalk
(23-07-2020, 10:08 PM)gypsylyon escribió: [ -> ]Para leer los 9 bits de seatalk hay que escribir un programa extra.
Yo lo había consultado y el gran problema era que programas escritos en pyton se consumían más de 60%de los recursos de la raspi. Claro con la pi 4 puede ser que sea más viable.
Ostras que bien .... se va avanzando, lástima que sea para Seatalk 1 y que aún no se puedan enviar datos .... todo llegará. Es raro que existan en el mercado productos que traducen TODO (Nmea SeaTAlk N2K...) para adelante, para atrás con WIFI... y que con la RAspy sea misión imposible .... Como no tengo NPI de programación a lo mejor meto la pata pero si la RAspy aguanta todo un OpenCPN con sus mapas, ampliaciones,capas, rutas,meteo, .... puedo ver videos, navegar por internet... pero apenas aguanta un programa para interpretar datos de Seatalk que son números y en los que el "refresco" de datos no hace falta que vaya a la milésima
ES que incluso vasldría la pena una RAspy dedicada SOLO a eso.... conectada a otra que haría de "master"
(01-08-2020, 09:53 AM)aspen escribió: [ -> ]Ostras que bien .... se va avanzando, lástima que sea para Seatalk 1 y que aún no se puedan enviar datos .... todo llegará. Es raro que existan en el mercado productos que traducen TODO (Nmea SeaTAlk N2K...) para adelante, para atrás con WIFI... y que con la RAspy sea misión imposible .... Como no tengo NPI de programación a lo mejor meto la pata pero si la RAspy aguanta todo un OpenCPN con sus mapas, ampliaciones,capas, rutas,meteo, .... puedo ver videos, navegar por internet... pero apenas aguanta un programa para interpretar datos de Seatalk que son números y en los que el "refresco" de datos no hace falta que vaya a la milésima
ES que incluso vasldría la pena una RAspy dedicada SOLO a eso.... conectada a otra que haría de "master"
No es tan sencillo Aspen. El protocolo Seatalk se decodifico a través de ingeniería inversa alla Por el año 2000. Como ves ha llovido bastante desde entonces. Te preguntarás por que entonces nadie ha escrito un programa capaz de hacer la conversión y la respuesta es por que
no se puede así sin mas.
El protocolo Seatalk no solo es diferente del NMEA0183 en el software si no especialmente en el hardware. Para poder usar es indispensable construir un pequeño hardware adicional. No se puede meter sin mas por un puerto Serie. Ademas trabaja con un protocolo bastardo de 9 bits a diferencia de los comunes de 8 bits y eso hace que sea un coñazo tener que adaptarlo a través de software.
Entonces... dado que necesitamos fabricar un pequeño, mínimo, hardware extra y que era malo de implementar por culpa de los 9 bits, las soluciones se decantaron por pequeñas piezas de hardware que implementaban tanto la captura de datos como la conversion a NMEA0183 asi como un puerto serie-USB integrado.
Esos son los aparatitos de toda índole que comentas tu y que traducen toda clase de datos, Claro que lo hacen a través de hardware como microcontroladores programados a 9 bits o arduinos. Personalmente opino que el Seatalk tiene los días contados. El Propio Raymarine hace mucho ya que no lo fabrica y para los aficionados Signal K va a ser el camino definitivo. A NMEA0183 le auguro todavia cierto recorrido dada su compatibilidad y extensión de uso.
Con este aparatito y software simplemente hemos añadido un complemento extra a openplotter que muchos aún demandaban, pero no será tan sencillo, Aún implica un circuito de hardware extra que adquirir y montar y eso va a echar para atrás a ciertos usuarios.
Buenas tardes a todos y perdon por cambiarles el tema. Soy nuevo y necesitaria de su ayuda en lo posible. Tengo un plotter raymarine RL70C que me dicen que tiene antena integrada de GPS. de ser asi me podrian ayudar como debo setear el equipo para utilizarla? Tengo una antena Raystar 120 que dejo de funcionar y quisiera probar funciona con la antena interior. Muchas gracias
Y hay algo mas con SeaTalk y la reaspberry y es que aunque puedas leer las sentencias, hay que gestionarlas, y si no lo haces se te puede saturar el canal y bloquearte el flujo de datos. Para hacer la gestión del puerto tienes que tirar de RAM, y priorizar el puerto seatalk , frenando otros programas que están corriendo.
Para agilizar la gestión del puerto SeaTalk habría que programar en otro lenguaje que Python. Python es el lenguaje en el que esta escrito OpenPlotter. Esto no sería un gran problema ya que Python puede leer bibliotecas escritas en C.
Si se escribe la rutina en C, solo podrías hacer la rutina de lectura, pero la gestion la tienes que hacer en Python, que es precisamente la que te va a consumir resourcen.
Si escribes todo en C, iría más rápido, pero perderías control con Python. Con lo cual tendrías que escribir en Python una rutina de gestión que lo frenaria.
El problema de Python, es que es un lenguaje interpretado. Es decir va leyendo las líneas del programa y las ejecuta .
El lenguaje C es compilado, es decir el código se transforma en un programa ejecutable de bajo nivel , estando este , por así decirlo, disponible para el procesador sin intermediarios , como el caso de Python.
Habría que dedicarle muchísimo tiempo, y como ha dicho Pinguino es un protocolo que se dejara de usar.
Yo lo llevo en mi barco porque la electronica ST50 trabaja con SeaTalk. Mientras funcione, que lo hace muy bien, ahí se va a quedar.
Aunque escribí una rutina en C para leer SeaTalk, al final lo abandone porque para terminarlo hubiera necesitado mucho tiempo. Ese tiempo lo necesitaba para el proyecto del autopiloto.
La solución ha sido uno de esos aparatos que traducen todo con todo y encima tiene un mando a distancia, no solo para controlar el autopiloto, si no también para el control del molinete y muestra de los datos de navegacion.
Este verano le montare una Red Nmea2000 y si necesito algo lo comprare ya en este standard.
Gesendet von meinem SM-G988B mit Tapatalk
(01-08-2020, 09:53 PM)cesar.nigrelli escribió: [ -> ]Buenas tardes a todos y perdon por cambiarles el tema. Soy nuevo y necesitaria de su ayuda en lo posible. Tengo un plotter raymarine RL70C que me dicen que tiene antena integrada de GPS. de ser asi me podrian ayudar como debo setear el equipo para utilizarla? Tengo una antena Raystar 120 que dejo de funcionar y quisiera probar funciona con la antena interior. Muchas gracias
Por lo que he buscado por la red no he encontrado a nadie que confirme que tu
raymarine RL70C tenga antena GPS incorporada. Todos hablan de necesitar una antena externa bien sea Seatalk o NMEA0183.
No obstante lo ideal es que si alguno tiene el mismo dispositivo que tu te lo pueda confirmar de primera mano. Lo malo es que al poner tu mensaje en medio de este hilo probablemente lo verán muy pocos. Mejor abre un hilo nuevo poniendo en el tema tu pregunta a la vista de todos por si aparece algún usuario de tu plotter y te puede ayudar.
Hoy me han llegado los cacharritos y he hecho las pruebas. Lamentablemente no ha funcionado. Los dispositivos creo que si estaban trabajando bien pero me da la impresión de que hay algo del software que no funciona y el motivo se me escapa. En mi opinión los datos y las instrucciones facilitadas en la pagina del proyecto no son lo suficientemente claros como para que cualquiera lo haga con facilidad.
Sailoog dice que con el tiempo sacara una aplicación con una función añadida para controlar esto y evitar conflictos. Supongo que con ella será mas fácil, pero con las instrucciones que puse al principio yo no he obtenido resultados.
Como lo has conectado con el optoacoplador? o has probado tambien el circuito sin optoacoplador?
En cualquier caso esos circuitos son raros. Para ver si entran datos han puessto a la entrada de Seatalk en el emisor del diodo que va a masa un circuito de resistecia y LED. Yo lo hubiera puesto en paralelo con la entrada de seatalk y el emisor directo a masa. Prueba a quitar el resistor de 3 K y el LED y lo conectas directamente a masa.
La placa que me hice utilice de optoacoplador und LTV-847 con 4 optoacopladores. En la entrada so lo una resistencia de 2.4Kohm y emisor a masa. La salida tambien por divisor de tension 1K y 10K . la de 10K va a los 3.3V de la Raspberry.
Aqui el circuito:
En el circuito directo usan un transistor NPN. Yo probe el montaje de Knauf con PNP que funciona.
Aqui lo tienes
http://www.thomasknauf.de/rap/seatalk3.htm#Uni
En cuento pueda lo meto en el programa para ver que hace en la simulacion
En cuanto al hardware no tengo muchas dudas. Las señales entraban a unos 13 volt desde seatalk y salían tras el optoacoplador a alrededor de 3 volt. Los led de las placas parpadeaban correctamente al ritmo de seatalk. Leyendo mas en openmarine creo que era un conflicto con otro servicio que ni siquiera sabia que estaba allí llamado chronoghraf y que parece que hay que modificar para que no entre en pugna con gpiod.
También probé el montaje con un BC547 NPN y funcionaba igual. Estoy bastante seguro de que se trataba del conflicto ya que no me entraba nada, ni datos buenos ni porqueria. Aquí se usa el NPN por que se invierte la señal pero también funcionaria con PNP y configurandolo como señal sin invertir. O al menos eso supongo.
He puesto un mensaje en openmarine a ver si me dicen como cambiarle el puerto a chronograf para salir de dudas. La verdad es que yo no tengo ni idea. Por cierto que construí el circuito de Thomas Knauf hace como unos diez años y funcionaba, solo que no había donde meter esos datos. Ni opencpn los entiende ni tampoco existía signal k para usarlos y transformarlos. ¡Que tiempos!
Yo también lo monte para intentar leer los datos con la raspi, y funcionaba muy bien.
Como comente en otro hilo, al final lo abandone. Conseguí leer algo, pero acababa siempre bloqueandose.
Si entra un bit corrupto, se desincroniza la lectura, supongo que lo hubiera solucionado, pero realmente, se comia muchos resourcen de las raspi.
Gesendet von meinem SM-G988B mit Tapatalk
(08-08-2020, 10:30 PM)gypsylyon escribió: [ -> ]Yo también lo monte para intentar leer los datos con la raspi, y funcionaba muy bien.
Como comente en otro hilo, al final lo abandone. Conseguí leer algo, pero acababa siempre bloqueandose.
Si entra un bit corrupto, se desincroniza la lectura, supongo que lo hubiera solucionado, pero realmente, se comia muchos resourcen de las raspi.
Al final logré algunos resultados, pero el montaje se complicaba ya que hay que manejar el hardware y eso no esta en la mente de la mayoria de usuarios. Ademas, me leía sentencias de viento y temperatura del agua pero no de sonda. No terminaba de funcionar como esperaba y hay conflictos con otras herramientas de openplotter.
Y sí. Se come todo el poder de proceso de uno de los 4 núcleos de la rpi, demasiado para mi gusto.
(12-08-2020, 01:30 PM)pinguino escribió: [ -> ]Al final logré algunos resultados, pero el montaje se complicaba ya que hay que manejar el hardware y eso no esta en la mente de la mayoria de usuarios. Ademas, me leía sentencias de viento y temperatura del agua pero no de sonda. No terminaba de funcionar como esperaba y hay conflictos con otras herramientas de openplotter.
Y sí. Se come todo el poder de proceso de uno de los 4 núcleos de la rpi, demasiado para mi gusto.
La solucion es un procesador dedicado a convertir seatalk y salida a nmea183 o nmea2000 o ambas. Se puede hacer con el arduino (ATM), pero mejor algo más rápido como los stm.
El hard no es problema, pero programarlo si que lleva tiempo. Por eso yo mismo he preferido comprar algo terminado.
Además me conozco, si lo hago yo, estaría todo el día haciendole modificaciones.
Gesendet von meinem SM-G988B mit Tapatalk
Bueno, hay ciertos avances.
Lo primero es decir que funciona con Openplotter en su version de 32 bits, la normal. Si alguno usa la de 64 bits que sepa que todavía no funciona.
Lo segundo es que necesitaremos un circuito como este:
https://es.aliexpress.com/item/327199577...63c0AT6Q3a
que nos costará unos 3 € puesto en casa. Ademas necesitaremos una resistencia extra que nos podemos agenciar desmontandola de cualquier circuito electrónico viejo de entre 4k7 a 10K. Las podemos comprar a bajo precio en aliexpress pero en lotes de 200. Veo mas factible desmontar una cualquiera y probarla, casi seguro que vale.
El montaje quedaría tal que así:
Ahora la cuestión de software. primero instalaremos lo necesario con:
Código:
sudo apt update && sudo apt install pigpio python-pigpio python3-pigpio
Despues activaremos el servicio que hemos instalado para leer los pines GPIO con:
Código:
sudo systemctl enable pigpiod && sudo systemctl restart pigpiod
Tras esto ya podemos ir al servidor de signal K y crear una conexion como esta:
En esta imagen se ve que se ha escogido el pin GPIO 4. Yo he preferido usar el 26 por que esta justo al lado de un pin GPIO de masa o negativo. El 4 también esta junto a un negativo pero en mi caso lo tengo ocupado con el compás electrónico por eso cambie al 26. Pero si lo teneis libre podeis usar el 4. Aquí teneis la lista de pines:
¡Importante!
--Si tenéis instalado algún servicio para mostrar gráficos como grafana u otro que use el servicio cronograf tendréis problemas de conflicto, puede que no os funcione.
--Hay un error en el software que hace que los datos de sonda no se muestren en Signal K por lo que no los tendremos. Hay que esperar que lo solucionen.
--Hay otro bug relativo al uso de recursos de cpu que es desmesurado. Sailoog ha publicado una solución.
Esperemos que la apliquen pronto ya la han subido a la rama principal. Si notáis que se come muchos recursos ya sabéis a que se debe. Si queréis ver la solución de Sailoog podéis leerla aquí:
https://forum.openmarine.net/showthread....8#pid15518
Mis opiniones han ido variando al respecto. Al principio me parecía demasiado complejo y poco efectivo, especialmente por el alto consumo de cpu. Sin embargo si se solucionan los problemas de cpu -cosa que parece que ya esta lograda- y de la falta de datos de sonda puede ser interesante para los usuarios mas manitas. No se yo si estará al alcance de una mayoría ya que hay que hacer montajes electrónicos simples. También puede suponer un problema los conflictos con cronograf, aunque sailoog dice que publicara pronto una aplicación para gestionarlos. Veamos como evoluciona.
Hola,
Refloto el hilo para saber si hay algun avance.
¿Se podria controlar un piloto automatico Autohelm 1000?
Saludos.