(02-02-2021, 08:34 AM)unbilba escribió: [ -> ]He estado investigando un poco y creo que la opción más factible es implementar las tramas de signalK en el arduino. He visto que son tipo JSON (he hecho algún proyectito en el pasado y creo que me acuerdo) y que puedo declarar la estructura de datos que necesito. Además, se me simplifica el envío de todos los datos que quiero centralizar en el arduino (tº, agua de sentina, nivel de batería, alarmas,...)
No entendía lo que era un parsun, pero ahora lo entiendo.
Pero ahora se me plantea la siguiente duda (igual este hilo está tomando una deriva de otro hilo u subforo, si esa si decirme y lo cambiamos a otro o lo continuo en el hilo de mi barco):
-como doy de alta este nuevo modelo de datos? Como puedo visualizarlo o crear un instrumento para ello?
Gracias a todos!
Cuando tu creas la cadena json, tienes que ponerle la cabecera correspondiente de la sentencia de signal K que vas a utilizar.
Supongo que tendrás una biblioteca para hacer el parser con arduino. En python la hay. La biblioteca para parser de nmea183 se llama pinmea y la función es asi
hdg = pynmea2.HDG('OS', 'HDG', (str(heading_m),'','','',''))
En este caso es la informacion del compas. Como ves los datos se pasan a texto.
Tienes que convertir todos los valores a texto para introducirlos en la correspondiente función de la biblioteca.
Luego lo mandas al puerto serie.
Cuando conectes el arduino con la raspi, en openplotter creas una nueva conexión con el puerto serie conectado a arduino. Le pones tipo signalK y los datos deben de verse en openplotter.
Como esta información no es vital, ni cambia rápidamente, te recomiendo que la generes cada 5 minutos. Tambien puedes utilizar una gpio de arduino, para detectar que el motor esta en marcha y así activar la lectura de deposito cada 2 o 3 minutos y con motor apagado cada 10 min.
Desgraciadamente del mundo arduino estoy un poco pez.
Pero como se programa tambien en C , aquí hay bibliotecas.
Buenas dias y champan para todos!!!!!
Ya lo tengo! Ya puedo enviar deltas de Signal K desde el arduino a openplotter y que este los muestre en el panel de instrumentos!!!
IUJUUUU!!!!
Aunque me pasa una cosa curiosa que debo investigar. Resulta que si envío las tramas (o deltas) a través del usb del arduino conectado directamente al usb de la raspy, funciona perfectamente, pero si lo envío a través de los pines TX y RX del arudino y a través del conversor USB-232 de la raspy, no funciona. Y he comprobado con putty que trafico llega.
Alguno podrías decir, "pues déjalo a través del usb". Pero me gustaria dejar el puerto usb del arduino libre para mantenimientos, análisis, carga de nuevos programas... Ademas que si conectas y desconectas el usb de la raspy, en cada conexión asigna un puerto distinto y hay que volver a configurar todo.....
Se os ocurre porque puede ser?
[
attachment=4708]
Tienes que definir el puerto rs con baudios, bits i paridad
Si si, lo he hecho. Y veo trafico a traves del puerto pero me llega ruido.
Creo que es porque el puerto serie de arduino a través de los pines de I/O es UART.
Puede ser?
Otra opción seria a traves de los pines gpio de la raspy, no? Pero tendría que anular bluetooth por lo que he leído y no me gusta mucho la idea.
Aunque también he estado pensado que esta comunicación solo se va a producir con la raspy encendida, asi que quizas podria hacerlo por wifi.....
Qué os parece?
(06-02-2021, 04:24 PM)unbilba escribió: [ -> ]Si si, lo he hecho. Y veo trafico a traves del puerto pero me llega ruido.
Creo que es porque el puerto serie de arduino a través de los pines de I/O es UART.
Puede ser?
Otra opción seria a traves de los pines gpio de la raspy, no? Pero tendría que anular bluetooth por lo que he leído y no me gusta mucho la idea.
Aunque también he estado pensado que esta comunicación solo se va a producir con la raspy encendida, asi que quizas podria hacerlo por wifi.....
Qué os parece?
Los pines GPIO son serie a nivel TTL, no Rs232, debes poner 1 conversor tipo MAX232 a la salida del arduino, o conectar los pines del arduino directos a los GPIO de la raspy. El "ruido" que ves, es la señal invertida.
Eso es lo que me temía....
Pero por lo que tengo entendido, si lo conecto directamente a los GPIO, tengo que anular el Bluetooth y esto no me gusta demasiado.
Miraré el MAX232 que dices...
(06-02-2021, 04:57 PM)unbilba escribió: [ -> ]Eso es lo que me temía....
Pero por lo que tengo entendido, si lo conecto directamente a los GPIO, tengo que anular el Bluetooth y esto no me gusta demasiado.
Miraré el MAX232 que dices...
Puedes usar otros GPIOs y convertirlos por software en puerto serie. Hay bibliotecas al respecto, pero consume muchos recursos de la raspi.
Lo mejor es usar un conversor rs422 a USB. Estos sirven también para rs232