Full text
Puesta en servicio y calibración de la instrumentación para la navegación autónoma de un velero de 2 metros de eslora Trabajo Final de Grado Facultad de Náutica de Barcelona Universidad Politécnica de Cataluña Trabajo realizado por: Oscar Guillén Vicente Dirigido por: Rosa María Fernández Cantí Esteban Francisco Chacón Mosquera Grado en Ingeniería de Sistemas y Tecnología Naval Barcelona, 8 de julio de 2022 Departamento de Ingeniería de Sistemas, Automática e Informática Industrial
Agradecimientos i Agradecimientos La culminación de este proyecto no habría sido posible sin la participación y el apoyo de ciertas personas a las cuales debo agradecer. A Rosa María Fernández Cantí, la tutora de este proyecto, por haberme dado la oportunidad de participar en el proyecto Sensailor, y por su dedicación y ayuda en cada una de las decisiones tomadas. A Esteban Francisco Chacón Mosquera, cotutor de este proyecto y autor de la segunda etapa del mismo, por su magnífica labor en la implementación de la electrónica y por la ayuda prestada para la instalación del nuevo cableado y en especial la ayuda prestada en la programación de la instrumentación. A Carles Manich Vallès y Joan Antoni Sastre Caballol, los autores principales del proyecto Sensailor sin los cuales este proyecto no habría sido posible. A Josep Eudald Mesegué Basallo, predecesor del presente proyecto, por su labor en el rediseño de la vela. A Norbert Geraldo, por su dedicación y apoyo durante las sesiones de taller, por su disponibilidad y cercanía ante cualquier dificultad, por su increíble amabilidad y por hacer del Espai Vela un lugar de trabajo increíble. A Jordi Mateu, por la ayuda y los consejos aportados durante las labores de trabajo con fibra de vidrio. A mi familia, por su apoyo, moral y económico, sin los cuales no habría llegado hasta aquí.
Puesta en servicio y calibración de la instrumentación para la navegación autónoma de un velero de 2 metros de eslora ii Resumen Este proyecto es el cuarto de una serie de trabajos finales de estudios que se han centrado en el diseño y la construcción de un velero autónomo de 2m de eslora, el Sensailor. En este proyecto se busca finalizar el proceso constructivo con el fin de poder realizar pruebas de mar y extraer conclusiones sobre la capacidad de navegar de manera autónoma y sus límites de comportamiento. En el presente documento se detalla el proceso constructivo de una segunda vela, según las especificaciones establecidas en el tercer trabajo, empleando fibra de vidrio en el exterior para darle rigidez y espuma de poliuretano en el interior para darle flotabilidad. También se detalla cómo se han reparado los desperfectos ocasionados por el Temporal Gloria y como ha sido subsanada la junta de estanqueidad situada entre la cubierta y el casco. A demás, también se describe como se ha instalado el nuevo cableado. Finalmente se describen los códigos creados para el gobierno de la embarcación y las pruebas realizadas. Palabras clave: Sensailor, velero autónomo, vela rígida, perfil NACA, comunicación Bluetooth, navegación autónoma
Abstract iii Abstract This project is the fourth in a series of final study projects that have focused on the design and construction of a 2m length autonomous sailboat, the Sensailor. This project seeks to complete the construction process in order to be able to carry out sea tests and draw conclusions about the ability to navigate autonomously and its behavior limits. This document details the construction process of a second sail, according to the specifications established in the third work, using fiberglass on the outside to give it rigidity and polyurethane foam on the inside to give it buoyancy. It also details how the skeg that was damaged during Storm Gloria has been repaired and how the sealing gasket located between the deck and the hull has been replaced. In addition, it is also described how the new wiring has been installed. Finally, the codes created for the government of the boat and the tests carried out are described. Keywords: Sensailor, autonomous sailboat, rigid sail, NACA profile, Bluetooth communication, autonomous navigation
Puesta en servicio y calibración de la instrumentación para la navegación autónoma de un velero de 2 metros de eslora iv Tala de contenidos AGRADECIMIENTOS ................................................................................................................................. 1 RESUMEN .............................................................................................................................................. 2 ABSTRACT .............................................................................................................................................. 3 TALA DE CONTENIDOS .............................................................................................................................. 4 LISTADO DE FIGURAS ............................................................................................................................... 7 LISTADO DE TABLAS ............................................................................................................................... 11 LISTADO DE ABREVIACIONES Y SÍMBOLOS .................................................................................................. 12 CAPÍTULO 1. INTRODUCCIÓN ................................................................................................... 1 1.1. MOTIVACIÓN ............................................................................................................................ 1 1.1.1. PRIMER PROYECTO ...................................................................................................... 1 1.1.2. SEGUNDO PROYECTO ................................................................................................... 6 1.1.3. TERCER PROYECTO ....................................................................................................... 8 1.2. OBJETIVOS ................................................................................................................................ 9 1.3. ORGANIZACIÓN DE LA MEMORIA ................................................................................................ 10 CAPÍTULO 2. EL VELERO SENSAILOR ........................................................................................ 13 2.1. DESCRIPCIÓN GENERAL ............................................................................................................. 13 2.1.1. CASCO ..................................................................................................................... 14 2.1.2. APÉNDICES ............................................................................................................... 14 2.1.3. CUBIERTA ................................................................................................................ 14 2.1.4. VELA Y ALERÓN (PRIMER PROTOTIPO) ........................................................................... 15 2.2. ESTADO INICIAL DEL VELERO ...................................................................................................... 15 2.2.1. DESPERFECTOS EN EL CASCO ........................................................................................ 15 2.2.2. SISTEMA DE CONTROL E INSTRUMENTACIÓN .................................................................. 16 2.2.3. ESTADO DE LA VELA ................................................................................................... 17 CAPÍTULO 3. INSTRUMENTACIÓN ........................................................................................... 19 3.1. PROCESADORES ....................................................................................................................... 19 3.1.1. RASPBERRY PI 4 ........................................................................................................ 19 3.1.2. ARDUINO UNO ........................................................................................................ 20 3.1.3. ESP32 .................................................................................................................... 21 3.2. SENSORES............................................................................................................................... 23
Tala de contenidos v 3.2.1. GPS ........................................................................................................................ 23 3.2.2. MAGNETÓMETRO ..................................................................................................... 23 3.2.3. ANEMÓMETRO ......................................................................................................... 24 3.2.4. VELETA .................................................................................................................... 24 3.2.5. SENSOR UV ............................................................................................................. 25 3.2.6. SENSOR LDR/FOTORRESISTOR .................................................................................... 25 3.2.7. SONDA DE TEMPERATURA ........................................................................................... 25 3.2.8. LIDAR .................................................................................................................... 26 3.3. ACTUADORES .......................................................................................................................... 27 3.3.1. SERVOMOTORES DE LOS TIMONES ................................................................................ 27 3.3.2. SERVOMOTOR DEL ALERÓN ......................................................................................... 27 3.4. ALIMENTACIÓN ....................................................................................................................... 28 3.5. OTROS COMPONENTES ............................................................................................................. 28 3.5.1. LUZ DE TODO HORIZONTE ........................................................................................... 28 3.5.2. CABLES Y CONEXIONES ............................................................................................... 29 3.5.3. CAJAS ESTANCAS ....................................................................................................... 30 CAPÍTULO 4. CONSTRUCCIÓN DE LA VELA, INSTALACIÓN DEL CABLEADO Y PUESTA A PUNTO . 31 4.1. CONSTRUCCIÓN DE LA NUEVA VELA ............................................................................................ 31 4.1.1. DATOS DE LA VELA Y EL ALERÓN ................................................................................... 31 4.1.2. PROCESO CONSTRUCTIVO DE LA VELA ........................................................................... 32 4.2. MONTAJE DEL NUEVO CABLEADO ............................................................................................... 58 4.2.1. MONTAJE DE LOS CONECTORES ESTANCOS ..................................................................... 58 4.2.2. MONTAJE DEL CABLEADO PARA LOS SENSORES ............................................................... 59 4.2.3. OBSERVACIONES ....................................................................................................... 62 4.3. REPARACIÓN DE DESPERFECTOS ................................................................................................. 62 CAPÍTULO 5. PROGRAMACIÓN DE LOS DISPOSITIVOS ACTUADORES ....................................... 67 5.1. NAVEGACIÓN AUTÓNOMA ........................................................................................................ 67 5.2. OBJETIVOS DEL PROGRAMA ....................................................................................................... 68 5.3. CAPTACIÓN DE LA INFORMACIÓN DE LOS SENSORES ....................................................................... 68 5.4. PROTOCOLOS DE COMUNICACIÓN ............................................................................................... 69 5.5. PROGRAMACIÓN EN PYTHON..................................................................................................... 70 5.5.1. CONTROL DE LA VELA ................................................................................................. 70 CAPÍTULO 6. PLAN DE PRUEBAS Y RESULTADOS EXPERIMENTALES ......................................... 73 6.1. COMO TRABAJAR CON LA RASPBERRY .......................................................................................... 73 6.1.1. CONEXIÓN POR CABLE ................................................................................................ 73
Puesta en servicio y calibración de la instrumentación para la navegación autónoma de un velero de 2 metros de eslora vi 6.1.2. CONEXIÓN POR WI-FI ................................................................................................ 74 6.2. PRUEBAS DE LA INSTRUMENTACIÓN ............................................................................................ 76 6.2.1. PRUEBA DE DATOS ..................................................................................................... 76 6.2.2. PRUEBA DE LOS ACTUADORES ...................................................................................... 78 6.3. PRUEBAS DE MAR .................................................................................................................... 79 6.3.1. PRUEBA DE ESTABILIDAD ............................................................................................. 79 CAPÍTULO 7. PRESUPUESTO ................................................................................................... 83 CAPÍTULO 8. CONCLUSIONES Y LÍNEAS FUTURAS .................................................................... 85 BIBLIOGRAFÍA Y REFERENCIAS ................................................................................................ 87 ANEXO 1. ESQUEMAS DE CONEXIONES .............................................................................. 89 A1.1. ESQUEMA ELÉCTRICO ............................................................................................................... 90 A1.2. CONEXIONES DEL TOPE DE MÁSTIL .............................................................................................. 91 A1.3. CABLEADO DEL ALERÓN ............................................................................................................ 93 A1.4. PLANO GENERAL DEL CABLEADO ................................................................................................. 94 A1.4.1. PLANO GENERAL DEL CABLEADO (SECCIÓN 1) ................................................................. 95 A1.4.2. PLANO GENERAL DEL CABLEADO (SECCIÓN 2) ................................................................. 96 A1.4.3. PLANO GENERAL DEL CABLEADO (SECCIÓN 3) ................................................................. 97 A1.4.4. PLANO GENERAL DEL CABLEADO (SECCIÓN 4) ................................................................. 98 A1.5. ESQUEMA DE COLORES DEL CABLEADO DE LOS CONECTORES ............................................................ 99 A1.6. ESQUEMA DE COLORES DEL CABLEADO DEL TOPE DE MÁSTIL .......................................................... 100 ANEXO 2. CÓDIGO DE LOS DIFERENTES PROCESADORES ................................................... 101 A2.1. ARDUINO ............................................................................................................................. 101 A2.1.1. ALMACENAMIENTO DE DATOS ................................................................................... 101 A2.2. RASPBERRY ........................................................................................................................... 111 A2.2.1. ALMACENAMIENTO EN ARCHIVO .TXT ......................................................................... 111 A2.2.2. CONTROL AUTOMÁTICO DE LA VELA ............................................................................ 112 A2.2.3. CONTROL MANUAL DE LA VELA .................................................................................. 114 A2.2.4. CONTROL MANUAL DE LOS TIMONES ........................................................................... 114
Listado de figuras vii Listado de figuras Figura 1. Velero Sensailor. Fuente: ¡Error! No se encuentra el origen de la referencia. .................... 1 Figura 2. Vista posterior del modelo “SmallYacht_1Surface”. Fuente: [7] ......................................... 3 Figura 3. Herramienta de transformación paramétrica. Fuente: [7] ................................................. 3 Figura 4. Aparejo vélico. Fuente: Propia ............................................................................................ 4 Figura 5. Placa Arduino Uno. Fuente: [7] ........................................................................................... 4 Figura 6. Soporte de los sensores. Fuente: [3] .................................................................................... 5 Figura 7. Taller del Espai Vela tras el paso de la Borrasca Gloria. Fuente: Facultad de Náutica de Barcelona ........................................................................................................................................... 6 Figura 8. Raspberry Pi 4 modelo B+, 8GB. Fuente: [3] ....................................................................... 7 Figura 9. Espuma de la vela. Fuente: Propia ...................................................................................... 8 Figura 10. Skeg izquierdo con desperfecto. Fuente: Propia ............................................................. 15 Figura 11. Junta de estanqueidad con desperfectos. Fuente: Propia ............................................... 16 Figura 12. Cableado interno inicial. Fuente: Propia ......................................................................... 16 Figura 13. Raspberry Pi 4B+. Fuente: https://acortar.link/IweHTM ................................................ 20 Figura 14. Arduino UNO. Fuente: https://acortar.link/jYV5Nh ........................................................ 21 Figura 15. ESP32. Fuente: https://acortar.link/IXlATt ..................................................................... 22 Figura 16. Procesadores, sensores y actuadores. Fuente: [4] .......................................................... 22 Figura 17. Antena activa de interfaz IPX y módulo GPS. Fuente: https://acortar.link/Uyieng ........ 23 Figura 18. Magnetómetro MPU-9250. Fuente: https://acortar.link/MHl0FJ .................................. 23 Figura 19. Anemómetro. Fuente: [7] ................................................................................................ 24 Figura 20. Veleta. Fuente: Propia ..................................................................................................... 24 Figura 21. Fotorresistor (izquierda) y sensor UV (derecha). Fuente: Propia .................................... 25 Figura 22. Sonda de temperatura DS18b20. Fuente: https://acortar.link/SpqzA3 .......................... 26 Figura 23. LIDAR. Fuente: Propia...................................................................................................... 26 Figura 24. Servomotor EMAX ES3005: Fuente: https://acortar.link/IZNZYH ................................... 27 Figura 25. Servomotor DS-561WP. Fuente: https://acortar.link/xYPllM ......................................... 27 Figura 26. Batería principal. Fuente: https://acortar.link/PH3Cpt .................................................. 28 Figura 27. Luz de todo horizonte. Fuente: Propia ............................................................................ 29
Puesta en servicio y calibración de la instrumentación para la navegación autónoma de un velero de 2 metros de eslora xiv TCP Protocolo de control de transmisión (Transmission Control Protocol) Tx Transmisión en telecomunicaciones USB Puerto de seriado universal (Universal Serial Bus) UV Ultravioleta V Volt VCC Voltaje en corriente continua VGA Matriz de gráficos de vídeo (Video Graphics Array) W Watt Wi-Fi Fidelidad Inalámbrica (Wireless Fidelity) Δ Desplazamiento
Capítulo 1. Introducción 1 Capítulo 1. Introducción 1.1. Motivación El Proyecto Sensailor es un proyecto de la Facultad de Náutica de Barcelona consistente en el diseño, construcción y automatización de un velero autónomo de 2 metros de eslora por medio de la realización de diferentes trabajos de fin de grado y máster. Figura 1. Velero Sensailor. Fuente: ¡Error! No se encuentra el origen de la referencia. 1.1.1. Primer proyecto El proyecto lo iniciaron los estudiantes Carles Manich y Joan Sastre. Su idea era desarrollar y construir un dron marino con propulsión a vela que fuera capaz navegar de manera autónoma y de
Puesta en servicio y calibración de la instrumentación para la navegación autónoma de un velero de 2 metros de eslora 2 recoger datos para su estudio [7]. Para ello, realizaron un estudio de buques similares que ya se encontraban en funcionamiento y establecieron los parámetros que aplicarían en su diseño. Nombre del barco Eslora (m) Manga (m) Calado (m) Desplazamiento (kg) Tipo de vela y aparejo A-Tirma 2 0,4 0,6 40 Doble, rígida, trimado por escota Sailbuoy 2 0,52 N/A 60 Rígida, sin control de ángulo Force 12 Xplorer 2,5 N/A N/A 50 Doble, rígida, sin control de ángulo FAST 2,5 0,67 1,25 60 Aparejo Marconi Beagle B 3,5 N/A N/A N/A Rígida, palo giratorio Maribot Vane 4,2 0,8 1 216 Rígida, trimado por alerón Saildrone 7 N/A 2,5 750 Rígida, trimado por alerón N/A: no se dispone de datos Tabla 1. Comparativa de barcos autónomos. Fuente: [7] Tras dicho estudio, y buscando que fuera fácil de desmontar y transportar, establecieron que la eslora se fijaría en 2m, ya que de este modo cumplía además con los criterios para participar en regatas de veleros autónomos como la International Robotic Sailing Regatta [10], la World Robotic Sailing Championships [9] y la Microtransat Challenge [11]. Del mismo modo establecieron que la manga debía ser inferior a 0,8m, el puntal de máximo 0,4m para albergar la instrumentación y un desplazamiento máximo de entre 50 y 55kg. Para el diseño del casco, emplearon el programa Bentley Maxsurf Modeler y usando un modelo matemático NURB (Non Uniform Rational B-Splines) ajustaron un modelo de casco de velero del propio programa a sus parámetros. Una vez establecidas las formas y los coeficientes, calcularon las resistencias y optimizaron el modelo para el rango de velocidades establecido.
Capítulo 1. Introducción 3 Figura 2. Vista posterior del modelo “SmallYacht_1Surface”. Fuente: [7] Figura 3. Herramienta de transformación paramétrica. Fuente: [7] Tras el diseño, calcularon la estabilidad mediante el programa Bentley Maxsurf Stability, el cual permite ajustar los pesos del buque. Una vez finalizado el modelo, procedieron al diseño estructural. Diseñaron los apéndices y calcularon donde irían instalados con el fin de reforzar dichas secciones. Aunque por eslora no era de obligado cumplimiento, siguieron la normativa UNE-EN ISO 11215 para la distribución de los refuerzos y el cálculo del escantillonado. A continuación, procedieron a realizar el cálculo de presiones en cada uno de los paneles y una vez obtenidos los valores procedieron a elegir el tipo de laminado y el proceso de fabricación. Para el sistema propulsivo, tras analizar varios tipos de vela y distintos métodos de control, se decantaron por implementar una vela rígida con perfil alar y controlada por un alerón. Esta elección vino establecida por la simplicidad de los elementos necesarios para su control y porque ofrecía la
Puesta en servicio y calibración de la instrumentación para la navegación autónoma de un velero de 2 metros de eslora 4 posibilidad de neutralizar la fuerza generada por la vela en condiciones climatológicas extremas. Para darle forma construyeron un armazón con madera y lo forraron con tela impermeable. Figura 4. Aparejo vélico. Fuente: Propia En cuanto al gobierno de la embarcación, con el fin de que fuera capaz de navegar autónomamente, instalaron una serie de sensores (anemómetro, veleta, módulo GPS y módulo de orientación) que transmitían datos a un microcontrolador ATMEGA328P-PU (incorporado en una placa Arduino Uno) y, mediante un programa en lenguaje C, este era capaz de reaccionar en consecuencia a través de los servos que controlaban los timones y el alerón. Además, también instalaron un sistema de radiocontrol (RC) por si fuera necesario. Figura 5. Placa Arduino Uno. Fuente: [7]
Capítulo 1. Introducción 5 Para alimentar el sistema de gobierno, y como el buque debía ser capaz de navegar durante períodos prolongados sin ser reabastecido, hicieron una comparativa de distintas fuentes energéticas como la eólica y la mareomotriz. Pero debido al reducido tamaño de la embarcación determinaron que la energía debería obtenerse mediante paneles solares. Para la recogida de datos, instalaron un fotorresistor, un sensor UV y un sensor de temperatura que almacenaba los datos mediante un microcontrolador Arduino Nano. A demás, cuando se detectaba falta de luz (condiciones nocturnas) el Arduino encendía un led empleando un transistor TIP120. Una vez finalizaron con la fase de diseño, empezaron con la construcción del Sensailor. Para la construcción del casco y los apéndices, fabricaron moldes con madera y fibra de poliuretano y los laminaron según los cálculos para obtener los espesores deseados. Una vez endurecido, retocaron las superficies con masilla y lijando hasta que obtuvieron un buen acabado y los finalizaron con pintura náutica. Con el fin de posicionar los sensores lo más elevados posible, hicieron una pieza mediante impresión 3D que iría instalada en la parte superior del mástil. Figura 6. Soporte de los sensores. Fuente: [3] Cuando el barco estuvo terminado, Carles y Joan realizaron pruebas de estanqueidad y navegación mediante RC para comprobar el resultado de su trabajo, pero el Temporal Gloria y posteriormente el Covid-19 condujeron a que no pudieran finalizar la programación para la navegación autónoma ni, por tanto, las pruebas de mar relacionadas. Cuando la Borrasca Gloria azotó la costa de Barcelona, el agua del mar consiguió saltar por encima del rompeolas que protege la bocana del puerto e irrumpió en el interior del Espai Vela arrancando las puertas. El agua empujó las maderas, las embarcaciones y el mobiliario del taller hacia el fondo
Puesta en servicio y calibración de la instrumentación para la navegación autónoma de un velero de 2 metros de eslora 6 formando un parapeto gracias al cual el Sensailor, que se encontraba en la zona más profunda, resulto prácticamente ileso con tan solo algunos desperfectos en el acabado de la pintura y en uno de los skeg. Figura 7. Taller del Espai Vela tras el paso de la Borrasca Gloria. Fuente: Facultad de Náutica de Barcelona 1.1.2. Segundo proyecto En este segundo proyecto, el estudiante de máster Esteban Francisco Chacón inicialmente realizó una serie de pruebas para comprobar el estado en que se encontraban los sistemas y se percató de ciertos problemas que impedían la correcta comunicación entre los sensores y los microcontroladores, lo cual dificultaba la implementación de una IA (inteligencia artificial) capaz de gobernar la embarcación. Dispositivo Instalación de hardware Controladores y software Estado Arduino UNO Implementado Implementado Funciona Arduino NANO Implementado No implementado No funciona Servomotor del timón Implementado Implementado Funciona Servomotor de la vela Implementado Implementado Funciona
Capítulo 1. Introducción 7 Veleta Implementado pero dañado Implementado No funciona Anemómetro Implementado Implementado Funciona Magnetómetro Implementado Implementado Funciona GPS Implementado Implementado Funciona LDR Implementado No implementado No funciona Sensor ultravioleta Implementado pero dañado No implementado No funciona Sensor de temperatura Implementado parcialmente No implementado No funciona Tabla 2. Funcionamiento de los dispositivos al inicio del segundo proyecto. Fuente: [3] Para solucionar dichos problemas, optó por sustituir el Arduino Uno por una Raspberry Pi 4 debido a su mayor capacidad de procesamiento y dejar la placa inicial para las funciones secundarias como por ejemplo la lectura de sensores. Figura 8. Raspberry Pi 4 modelo B+, 8GB. Fuente: [3] Otro problema que detectó fue que el cable mediante el cual se accionaba el servo instalado en la vela bajaba a través del mástil hasta la placa, lo cual impedía que la vela pudiera girar 360o sin la consecuente torsión del cable. La solución fue crear un segundo circuito con un chip ESP32 capaz de conectarse la Raspberry Pi 4 mediante conexión bluetooth, a fin de eliminar el cable.
Puesta en servicio y calibración de la instrumentación para la navegación autónoma de un velero de 2 metros de eslora 8 También se percató de que, para navegar con seguridad, era necesario instalar nuevos sensores como el LIDAR para ser capaz de detectar obstáculos y evitar así posibles colisiones. Una vez desarrollados los nuevos circuitos y adquiridos los nuevos sensores, procedió a realizar los códigos necesarios para el control de cada uno de los elementos. 1.1.3. Tercer proyecto Durante el primer proyecto, el perfil que se escogió para la vela buscaba que fuera capaz de impulsar la embarcación en la mayoría de situaciones y demostrar así su viabilidad, pero durante las pruebas de mar se puso de manifiesto que, en algunas condiciones, se perdía la facultad de gobierno y el aparejo no terminaba de responder. Por lo que en este tercer proyecto se buscó diseñar y fabricar una vela que fuera más óptima y que permitiera navegar con un rango de viento más amplio. Para ello el estudiante Josep Eudald Mesegué empezó su proyecto realizando un estudio de distintos perfiles NACA con el fin de determinar cuál de adaptaba mejor a las circunstancias. El perfil escogido fue el NACA 0021. Con el perfil establecido, procedió a la construcción de la vela y alerón. La vela debía ser impermeable y con un coeficiente de flotación positivo, por lo que empleó espuma de poliuretano para darle forma y posteriormente se debía aplicar una capa de fibra de vidrio. Se decidió no llevar a cabo esta segunda fase a la espera de decidir cuál debía ser la instrumentación a incorporar en el interior de la vela (caja con servos, receptor bluetooth, etc.), y quedó pendiente para el siguiente proyecto. En este tercer proyecto también se analizaron las distintas alternativas para permitir el giro de 360º del mástil, lo cual era una limitación del primer proyecto que, no solo provocaba la torsión de los cables internos, sino que limitaba la capacidad de maniobra del velero para ciertos ángulos de incidencia del viento. Figura 9. Espuma de la vela. Fuente: Propia
Capítulo 1. Introducción 9 1.2. Objetivos El objetivo principal del presente proyecto es la puesta en marcha definitiva del Sensailor para conseguir la navegación totalmente autónoma puesto que, como ya se ha comentado, los proyectos predecesores se centraron en aspectos particulares (diseño, construcción, mejora de la instrumentación y estudio de la mejora de la propulsión) pero en ninguno de ellos se llegó a integrar el funcionamiento y la programación de todos los elementos. Para cumplir el objetivo general de este proyecto es necesario: • realizar una revisión, reparación y puesta a punto de todos los elementos estructurales y de instrumentación, e instalación de nuevos sensores; • construir una nueva vela y alerón en fibra de vidrio; • llevar a cabo a partir de cero la programación del algoritmo de control de los servomotores en Python teniendo en cuenta los nuevos procesadores y sensores; • comprobar el correcto comportamiento de todos los elementos mediante un plan de pruebas; • realizar los ajustes necesarios a la vista del comportamiento observado. A continuación, se explican con más detalle estos objetivos específicos: Objetivo 1. Revisión, reparación y puesta a punto de todos los elementos estructurales y de instrumentación, e instalación de nuevos sensores, El primer paso es realizar las tareas necesarias para reparar los desperfectos ocasionados por el Temporal Gloria y reemplazar la junta de estanqueidad entre el casco y la cubierta. En el momento de iniciar este trabajo, el cableado interno del velero está compuesto por un entramado de cables en todas direcciones, lo cual dificulta el poder distinguir a qué elemento va conectado cada uno y por consiguiente saber qué cables son de señal y cuáles de alimentación. Además, en caso de que se produzca una filtración de agua, los cables están completamente expuestos con el consiguiente riesgo de cortocircuito. El segundo paso es reemplazar el cableado interno sustituyéndolo por cables resistentes al agua. Inicialmente hay sensores que parecen no funcionar como la veleta o el sensor de UV y hace falta instalar otros como el LIDAR. El tercer paso es verificar el funcionamiento de todos los sensores e instalar los que faltan.
Puesta en servicio y calibración de la instrumentación para la navegación autónoma de un velero de 2 metros de eslora 16 Figura 11. Junta de estanqueidad con desperfectos. Fuente: Propia 2.2.2. Sistema de control e instrumentación Aunque el velero no se encontraba operativo porque algunos sensores todavía no estaban instalados en el momento de iniciar este proyecto, la configuración de los circuitos electrónicos realizada a lo largo del segundo proyecto era muy idónea y ya estaba concebida para permitir la ampliación y comunicación de la nueva instrumentación. Una vez analizada la instrumentación, se pone de manifiesto la necesidad de impermeabilizar la electrónica tanto como sea posible a pesar de encontrarse en un compartimento estanco. Para ello se decide reemplazar el cableado y las entradas de este a la caja que alberga la Raspberry y el Arduino por otros resistentes al agua. De este modo también se consigue un acabado más limpio del cableado y se facilita la trazabilidad. A demás, se decide incluir cajas de registro para realizar las conexiones y de este modo manipular lo menos posible la caja de control. Figura 12. Cableado interno inicial. Fuente: Propia
Capítulo 2. El velero Sensailor 17 2.2.3. Estado de la vela Para la nueva vela, en el tercer proyecto se establecieron los materiales y cómo debía hacerse, pero no se llegó a incorporar la instrumentación en su interior, consistente en el servo que controla el alerón y la caja donde se encuentran el chip y la batería. La espuma es muy blanda y fácil de trabajar, de ahí su elección, pero el servomotor debe estar sujeto firmemente dentro de la vela para obtener un buen control del alerón. Si se instala el servo directamente en la espuma, es muy probable que, debido a las inclemencias climáticas, la fuerza ejercida por el alerón acabe arrancándolo de su emplazamiento. Por lo que es necesario crear una pieza, unificada con la fibra de vidrio del exterior, a la cual poder fijar el servomotor. Del mismo modo, el nuevo diseño no tiene en cuenta los puntos de unión entre los tubos que sujetan el alerón y la placa solar al cuerpo de la vela. Si únicamente se instalan los tubos directamente en la vela, la única unión fuerte que poseerán serán los pocos milímetros de la fibra de vidrio, con lo que es muy posible que debido a los movimientos acaben generando holguras, tanto en la espuma como en la fibra, y caigan. Por estos motivos se decide construir una nueva vela. Una basada en costillas como en el primer proyecto, pero con el perfil estudiado en el tercer proyecto y recubierta con fibra de vidrio.
Capítulo 3. Instrumentación 19 Capítulo 3. Instrumentación En este capítulo se listan y describen los elementos electrónicos (procesadores, sensores) que constituyen la instrumentación del Sensailor y que son los que permiten la navegación autónoma de este. En el anexo A1 se presenta el esquema de conexiones y la situación de los mismos. 3.1. Procesadores 3.1.1. Raspberry Pi 4 La Raspberry Pi es un ordenador de bajo coste y del tamaño de una tarjeta de crédito que opera en su mayoría con sistemas operativos libres basados en Linux. Para su uso se ha desarrollado una versión de Linux denominada Raspberry Pi OS, antes denominada como Raspbian. Esta versión de Linux viene con un software preinstalado para administrar los conectores GPIO y los controladores específicos para su hardware. La primera Raspberry Pi se lanzó al mercado en 2012 con el objetivo de promover y enseñar informática en los centros educativos a un bajo coste, en torno a 30$. Actualmente, el modelo más sencillo, la Raspberry Pi Zero, se puede adquirir por el módico precio de 5,4€. Para este proyecto se adquirió la versión más potente, la Raspberry Pi 4B+ que cuenta con una CPU Quad-core ARM Cortex-A72 de 64 bits a 1,5 GHz y 8 GB de RAM. En este proyecto, la Raspberry recibe directamente los datos del LIDAR y combinándolos con el resto de información que le proporciona el Arduino ejecuta los comandos necesarios para la navegación autónoma.
Puesta en servicio y calibración de la instrumentación para la navegación autónoma de un velero de 2 metros de eslora 20 Figura 13. Raspberry Pi 4B+. Fuente: https://acortar.link/IweHTM 3.1.2. Arduino UNO Arduino es una plataforma de creación de electrónica de código abierto que surgió en 2003 con el propósito de facilitar el acceso y uso de la electrónica y la programación a los estudiantes, pero su tamaño reducido y versatilidad hacen que pueda ser empleado en una gran variedad de proyectos, tanto educacionales como de empresas. Se escogió el Arduino UNO versión 3 para este proyecto por ser la opción más robusta, más usada y por consiguiente con mayor cantidad de documentación de toda la familia Arduino. Es posible acceder a los drivers de terceras empresas que conectan su hardware con Arduino a través de Arduino IDE. Esta placa se basa en un microcontrolador ATmega328P de 8 bits. Dispone de 14 pines de entrada y salida digital (de los cuales 6 pueden usarse con PWM), seis entradas analógicas, un cristal de 16MHz, un puerto USB, un conector Jack de alimentación, terminales para conexión ICSP y un botón de reseteo. El Arduino UNO dispone de una ventaja respecto a la Raspberry, y es esta no permite entradas analógicas en su GPIO. Debido a que muchos de los sensores del Sensailor proporcionan datos analógicos, el Arduino funciona como un DAQ. En este proyecto el Arduino se usa para recoger la información de los sensores que se listan a continuación: • Veleta • Sensor UV
Capítulo 3. Instrumentación 21 • Fotorresistor • Anemómetro • Sonda de temperatura • GPS • Magnetómetro Figura 14. Arduino UNO. Fuente: https://acortar.link/jYV5Nh 3.1.3. ESP32 El ESP32 es un chip económico y de bajo consumo que integra módulos Wi-Fi y Bluetooth y es compatible con Arduino IDE. Debido a sus características, un tamaño reducido y la facilidad de uso, hace que sea empleado ampliamente en proyectos IoT (Internet of Things). Este chip es capaz de conectarse a redes Wi-Fi, pero a su vez también puede funcionar como un punto de acceso creando su propia red, presentando a su vez una pila de protocolos TCP/IP integrada que le permiten funcionar como un servidor web. Con respecto al Bluetooth, es compatible con Bluetooth BLE (Bluetooth Low Energy), el cual también se usa para aplicaciones IoT. En este proyecto, el procesador ESP32 se emplea para controlar el alerón que gobierna la vela y es controlado por la Raspberry Pi a la cual se conecta mediante conexión Bluetooth.
Puesta en servicio y calibración de la instrumentación para la navegación autónoma de un velero de 2 metros de eslora 22 Figura 15. ESP32. Fuente: https://acortar.link/IXlATt El esquema representado en la Figura 16 muestra de manera simplificada las conexiones entre los distintos sensores y los elementos de control. Figura 16. Procesadores, sensores y actuadores. Fuente: [4]
Capítulo 3. Instrumentación 23 3.2. Sensores 3.2.1. GPS El sensor GPS es un modelo RCmall FZ2922 que transmite los datos en formato estándar NMEA y se conecta al Arduino mediante una conexión serie. Para ello se han configurado los pines D5 y D8 como Rx/Tx. Este módulo devuelve la posición GPS en tiempo real con una tasa de refresco de 9600 baudios, así como la distancia y rumbo al waypoint. Figura 17. Antena activa de interfaz IPX y módulo GPS. Fuente: https://acortar.link/Uyieng 3.2.2. Magnetómetro El magnetómetro instalado es un modelo MPU-9250 conectado al puerto I2C (SDA/SCL) del Arduino y permite conocer el rumbo del Sensailor para posteriormente compararlo con la información del GPS. Este dispositivo incorpora un acelerómetro que permite a su vez monitorizar y controlar la escora de la embarcación. Figura 18. Magnetómetro MPU-9250. Fuente: https://acortar.link/MHl0FJ
Puesta en servicio y calibración de la instrumentación para la navegación autónoma de un velero de 2 metros de eslora 24 3.2.3. Anemómetro El anemómetro se conecta a través de un diodo al pin D2. La salida del anemómetro es un tren de pulsos cuya frecuencia es proporcional a la velocidad del viento. A fin de evitar el efecto de rebote se ha decidido detectar los pulsos por flanco ascendente. Figura 19. Anemómetro. Fuente: [7] 3.2.4. Veleta La veleta empleada para medir la dirección del viento viene con una salida digital RS485 y se alimenta a 12V. Figura 20. Veleta. Fuente: Propia
Capítulo 3. Instrumentación 25 3.2.5. Sensor UV El sensor de rayos UV es un modelo ML8511 conectado al pin A1 del Arduino. 3.2.6. Sensor LDR/Fotorresistor El sensor LDR se conecta mediante un divisor de tensión al pin A2 del Arduino. Está calibrado de tal modo que cuando la tensión que mide la luminosidad baja de 700mV se encienda la luz de posición. Figura 21. Fotorresistor (izquierda) y sensor UV (derecha). Fuente: Propia 3.2.7. Sonda de temperatura La sonda de temperatura empleada es un modelo DS18b20, OneWire, conectado a la placa a través de una resistencia de 4kΩ.
Puesta en servicio y calibración de la instrumentación para la navegación autónoma de un velero de 2 metros de eslora 32 4.1.2. Proceso constructivo de la vela Tubo de fibra de vidrio La vela estará expuesta al ambiente marino, por lo que para evitar que el agua que se pueda filtrar entre la vela y el mástil alcance la espuma de poliuretano y los componentes eléctricos, se decide crear una pieza de fibra de vidrio a partir del mástil la cual conformará el núcleo de la estructura. Para ello, primero se protege toda la superficie de la cubierta para evitar posibles incrustaciones causadas por el goteo de la resina con film transparente y se fija con cinta de carrocero al casco. Figura 31. Protección de la cubierta con film transparente. Fuente: Propia Con el fin de poder retirar con facilidad la pieza de fibra de vidrio del mástil, se aplica una capa de cera desmoldante con una esponja sobre la superficie de este y se deja curar durante 20min. Tras este tiempo se retira el exceso con un papel y se repite el proceso. En total se aplican 4 capas de cera. Una vez trascurridos los últimos 20min se aplica una capa de film sobre la superficie del mástil para asegurar un fácil desmoldeo de la pieza.
Capítulo 4. Construcción de la vela, instalación del cableado y puesta a punto 33 Figura 32. Mástil tras aplicar la cera y el film transparente. Fuente: Propia A continuación, se corta una pieza de tela roving de 300g/m² con unas dimensiones suficientes para cubrir la superficie del mástil y se prepara la zona de trabajo protegiendo la mesa con plástico. Una vez finalizada la preparación de los elementos necesarios, se extiende el roving sobre la mesa y se procede a mezclar la resina con el catalizador. Figura 33. Elementos necesarios para trabajar con resina. Fuente: Propia
Puesta en servicio y calibración de la instrumentación para la navegación autónoma de un velero de 2 metros de eslora 34 Para realizar la pieza se estima que serán necesarios aproximadamente unos 500ml de resina, por lo que se procede a pesar dicha cantidad empleando una báscula digital. Según el fabricante, la proporción de catalizador durante el invierno debe ser del 2,5%, por lo que se añaden a la resina 12,5g de catalizador y se mezclar durante 3min. Se opta por usar este porcentaje por la temperatura ambiente. Figura 34. Preparación de la resina y superficie de trabajo con el roving. Fuente: Propia Trascurrido este tiempo y tras una inspección visual de que la mezcla tiene un color uniforme, se procede a verterla en pequeñas cantidades sobre el tejido y se esparce por toda la pieza con una espátula de plástico. Una vez la pieza está completamente impregnada de resina, lo cual se aprecia porque el tejido adquiere el color verde de la resina, se procede a enrollar la tela con la resina sobre el mástil y se aprieta para evitar la aparición de burbujas.
Capítulo 4. Construcción de la vela, instalación del cableado y puesta a punto 35 Figura 35. Mástil con la fibra de vidrio aplicada. Fuente: Propia La pieza se deja curando durante todo el fin de semana. Trascurrido el tiempo mencionado, se inspecciona la pieza para verificar el correcto curado de la resina y como el resultado es positivo se procede a su desmoldeo. Figura 36. Mástil y tubo de fibra de vidrio. Fuente: Propia
Puesta en servicio y calibración de la instrumentación para la navegación autónoma de un velero de 2 metros de eslora 36 Gracias a las capas de cera y al film este proceso se realiza con gran facilidad. Una vez extraído el tubo, se marca el espacio que debe ocupar la vela y se corta el exceso con una sierra dejando unos centímetros de margen. Figura 37. Extremos superior e inferior del tubo de fibra de vidrio. Fuente: Propia A continuación, se comprueba que la fibra ha adquirido la forma del mástil de manera muy ajustada y debido a esto, el tubo no es capaz de girar libremente sobre este, por lo que es necesario realizar una corrección del interior de la pieza producida. Para ello se fija un papel de lija de grano 80 entre dos listones y se procede a lijar toda la superficie interna del tubo con el fin de agrandar el diámetro interno. A medida que se va lijando, se va comprobando el ajuste para no desgastar en exceso la pieza. Figura 38. Montaje para lijar el interior del tubo. Fuente: Propia
Capítulo 4. Construcción de la vela, instalación del cableado y puesta a punto 37 Tras obtener un resultado satisfactorio con el movimiento del tubo, se procede a la fabricación de la estructura. Obtención del perfil NACA 0021 Para dar forma y resistencia a la vela, es necesario hacer unas costillas con el perfil y las dimensiones indicas en el apartado 4.1.1. Para ello, se obtienen los puntos de control del perfil NACA 0021 de la página web http://airfoiltools.com y se copian a una página del bloc de notas. Al copiar los valores, las coordenadas de los puntos aparecen juntas, por lo que es necesario separarlas con una coma. Tras esto se escribe en la parte superior el comando SPLINE para indicar al programa AutoCAD que debe hacer con los valores y se guarda el documento en formato SCR. A continuación, se abre un archivo nuevo en AutoCAD y se ejecuta el comando SCRIPT, tras lo cual se pide seleccionar el archivo a ejecutar, en este caso el archivo creado anteriormente. Tras esto se escala el perfil a tamaño real y se imprime para obtener la plantilla. Figura 39. Proceso para obtener la plantilla. Fuente: Propia
Puesta en servicio y calibración de la instrumentación para la navegación autónoma de un velero de 2 metros de eslora 38 Costillas Con la plantilla, se traza el contorno del perfil sobre un tablero contrachapado fenólico de 8mm de espesor 5 veces y se cortan las piezas con una sierra de calar. Figura 40. Trazado del perfil con la plantilla madera fenólica. Fuente: Propia Una vez obtenidas las piezas, se unen todas con dos sargentos y se pulen los bordes con papel de lija de grano 80 para igualar los contornos. Figura 41. Costillas sujetas con sargentos para igualar contornos. Fuente: Propia
Capítulo 4. Construcción de la vela, instalación del cableado y puesta a punto 39 Una vez uniformadas las piezas, se procede a realizar los orificios para su posicionamiento en el tubo de fibra de vidrio. Para ello, primero se les marca el centro de giro, que está situado a 11,9cm desde el borde de ataque y sobre la cuerda. A continuación, se mide el diámetro del tubo en cada una de las posiciones donde irán posicionadas las piezas y se trazan los círculos en ellas. Seguidamente se perforan las piezas con un taladro y una broca de 10mm, la medida más grande de que se dispone, y se terminan de hacer los orificios con una multiherramienta con cabeza cilíndrica de lija. Debido a solapamientos de la fibra, los diámetros no son uniformes, por lo que es necesario ir puliendo y comprobando el encaje periódicamente. Figura 42. Estructura con las costillas presentadas en sus respectivas posiciones. Fuente: Propia Con todos los elementos preparados, se procede al montaje de la estructura. Estructura Primero se cortan 8 listones de cartón con una longitud algo superior a la altura de la vela, se les realiza una línea recta en el centro, se marcan las posiciones de las costillas y se realiza un pequeño orificio con un clavo en dichos puntos. Estas piezas servirán para sujetar las costillas en su posición de manera paralela.
Puesta en servicio y calibración de la instrumentación para la navegación autónoma de un velero de 2 metros de eslora 40 Figura 43. Listones de cartón. Fuente: Propia A continuación, se sujetan los perfiles de madera juntos y se les realizan 8 orificios, 4 en cada lado, con un clavo en la misma posición. Figura 44. Costilla donde se aprecia orificio en el lateral. Fuente: Propia Tras esto se procede a posicionar las costillas en sus respectivas posiciones y se sujetan entre ellas mediante los listones de cartón y tornillos para madera.
Capítulo 4. Construcción de la vela, instalación del cableado y puesta a punto 41 Figura 45. Estructura con los listones atornillados. Fuente. Propia Finalmente se posiciona la estructura de manera vertical sobre dos trozos de madera para garantizar la horizontalidad de la primera costilla, la inferior; se apoya el borde de ataque de todos los perfiles sobre una superficie vertical, en este caso un armario para garantizar la verticalidad de los bordes; con una escuadra se comprueba que todos los bordes de fuga están alineados y se procede a fijar las costillas al tubo con una pistola de pegamento caliente. Una vez enfriado el pegamento se comprueban una última vez las distancias entre los perfiles y tras un resultado positivo se procede a desatornillar los listones. Figura 46. 1. Estructura nivelada en la base; 2. Costilla fijada al tubo con pegamento caliente; 3. Estructura alineada verticalmente. Fuente: Propia
Puesta en servicio y calibración de la instrumentación para la navegación autónoma de un velero de 2 metros de eslora 48 Tras aplicar los refuerzos, superior e inferior, se aprecia que la fibra se despega generando burbujas. por lo que se decide sujetarla con tiras de cinta adhesiva blue tape. También se procede a laminar el alerón, lo cual se realiza el dos etapas. En la primera etapa se lamina la superficie lateral de la pieza y se deja curar la resina durante la noche. Al día siguiente se procede con la segunda etapa. En esta se corta el excedente de fibra del alerón y se procede a laminar los extremos superior e inferior. Tras cortar el excedente del borde de fuga, se aprecia una holgura en toda la sección, la cual se rellena con resina mezclada con un aditivo espesante con base de sílice. Figura 57. Primera y segunda etapa del laminado del timón. Fuente: Propia Después de dejar endurecer la vela y el alerón, se recortan los excedentes de la fibra de vidrio y se procede a enmasillar ambas piezas. La masilla empleada es masilla fina de poliéster. Para hacer la mezcla de masilla y catalizador, se emplea la aproximación del volumen de una nuez de masilla con el volumen de un guisante de catalizador y se mezcla hasta que el color rojo de este desaparece. Se mezcla en pequeñas cantidades, tres nueces cada vez, y se aplica por todas las superficies con una espátula.
Capítulo 4. Construcción de la vela, instalación del cableado y puesta a punto 49 Figura 58. Vela y alerón tras aplicas masilla. Fuente: Propia Una vez endurecida la masilla se procede a lijar las superficies. Para ello se emplea una pulidora excéntrica con papel de liza de grano 80 y se va desgastando la masilla hasta conseguir un acabado liso. Figura 59. Antes y después de lijar. Fuente: Propia
Puesta en servicio y calibración de la instrumentación para la navegación autónoma de un velero de 2 metros de eslora 50 Tras el primer lijado, se detectan zonas donde la fibra ha sido pulida en exceso y por consiguiente ha quedado debilitada. Para subsanarlo se pulen todavía más dichas secciones para retirar la fibra dañada y se rellenan los agujeros resultantes con masilla. Después de dejarla secar se lija hasta conseguir un acabado uniforme. Figura 60. Poro saneado cerca del soporte de la placa solar. Fuente: Propia Después de realizar un segundo lijado con papel de lija de grano 240 se procede a realizar las aberturas para la electrónica. Primero se marcan los contornos de los cajeados a partir de las medidas de la caja de control del alerón y del servo y se precede a cortarlas con la multiherramienta y un disco de corte. Tras realizar el corte en la superficie, se aprecia que la fibra está pegada a la espuma, por lo que es necesario cortar la espuma a través de las incisiones hasta el centro de la vela con un cúter para poder extraer las tapas. Figura 61. Vela antes y después de realizar las incisiones. Fuente: Propia
Capítulo 4. Construcción de la vela, instalación del cableado y puesta a punto 51 Con las piezas extraídas, se procede a vaciar el interior de los orificios hasta conseguir un correcto encaje de la caja de control y el servomotor. También se recorta la espuma adherida a las tapas dejando 1cm de espesor. Figura 62. Vela con la caja de control y el servo posicionados. Fuente: Propia Para mantener el servo en su posición, se le construye un soporte empleando tres piezas de madera, atornilladas entre ellas y se fijan en la posición adecuada a la costilla con pegamento caliente. Figura 63. Soporte del servomotor del alerón. Fuente: Propia
Puesta en servicio y calibración de la instrumentación para la navegación autónoma de un velero de 2 metros de eslora 52 Una vez acomodada la electrónica, se procede a pintar la vela. Para ello se emplea pintura bicomponente naranja de uso náutico, la misma empleada en la obra viva de la embarcación. Se escoge pintar la vela de este color para que sea más visible en el agua. Figura 64. Vela pintada. Fuente: Propia En total se aplican al conjunto tres manos de pintura. Un aspecto positivo de esta pintura es que, tras dejarla secar, la apariencia y textura es como si fuera silicona, por lo que además de proteger sella todos los poros que pudiera haber en la superficie. Pero el hecho de tratarse de una pintura que requiere un componente endurecedor, hace que tras su aplicación deba desecharse el pincel empleado para su aplicación, con el consiguiente sobrecoste. Tras dejar secar la última capa de pintura, se procede a montar el alerón. En el tercer proyecto se estableció que el brazo del alerón debía ser de 57,5cm, por lo que se procede a cortar los tubos de soporte para obtener dicho brazo. Primero se introducen ambos tubos en sus respectivas posiciones en la vela. Para obtener el punto de corte, se sigue la siguiente correlación. Se sabe que el punto de rotación de la vela está situado al 75% de la cuerda respecto del borde de fuga, esta distancia es de 35,6cm. Hasta la longitud del brazo necesario todavía restan 21,9cm. Esta última longitud se mide desde el borde de fuga y se plasma sobre los tubos. Ese punto corresponde al centro de rotación del alerón. Para dejar algo de margen se añaden 2cm a cada uno.
Capítulo 4. Construcción de la vela, instalación del cableado y puesta a punto 53 Después de cortar los tubos con una sierra de metal se les realizan los orificios para pasar el eje del alerón con una broca de 4mm y se monta todo el conjunto para verificar que cumple con la longitud necesaria. Figura 65. Vela con alerón montado. Fuente: Propia Seguidamente se posiciona el alerón en su posición, se pasan los cables a través de los tubos instalados en los laterales y se fijan al alerón con una cierta tensión de manera que éste quede a la vía. A continuación, se procede a comprobar el correcto giro del alerón. Para ello se conecta el servo a la caja de control de la vela y mediante la aplicación móvil Serial Bluetooth Terminal, que se conecta con el ESP32 mediante conexión bluetooth, se le envían una serie de ángulos de giro al servomotor.
Puesta en servicio y calibración de la instrumentación para la navegación autónoma de un velero de 2 metros de eslora 54 Figura 66. Serial Bluetooth Terminal. Fuente: Propia Con ello se verifica el correcto funcionamiento del montaje, pero debido a la tensión que ejerce el alerón al servo a través de los cables, éste se sale de su posición. Figura 67. Servo fuera de su posición. Fuente: Propia
Capítulo 4. Construcción de la vela, instalación del cableado y puesta a punto 55 Para solventarlo, se corta una sección de 1cm de una guía de aluminio, se le da forma de “L” y posteriormente se atornilla al soporte del servo en su parte posterior. Figura 68. Pletina de aluminio durante el conformado y tras su instalación. Fuente: Propia Con el servomotor fijado, se procede a pasar los cables de alimentación a través de los tubos instalados en la parte frontal y a soldar cada uno de los hilos, dos de la placa solar y tres del servomotor, al conector respetando las conexiones realizadas en su parte opuesta instalada en la caja. Cada soldadura se protege con material termorretráctil. Figura 69. Montaje del conector de la vela. Fuente: Propia
Puesta en servicio y calibración de la instrumentación para la navegación autónoma de un velero de 2 metros de eslora 56 Después de montar el conector y conectarlo a la caja de control, se prosigue a montar el panel solar. Para ello, inicialmente se corta el tubo de aluminio que sujeta la placa de manera que ésta queda pegada a la vela. Pero al comprobar la estabilidad, se aprecia una clara decantación hacia la parte posterior. Para corregirlo, se añaden plomos al panel, pero es tal la cantidad de lastre necesario que resulta inviable. Por consiguiente, se decide probar con un tubo de soporte más largo. Se realizan dos orificios a la otra sección de tubo restante, se le atornilla el soporte con el panel solar y se posiciona en la vela para verificar la estabilidad. Tras ello, todavía se aprecia una pequeña desviación, pero añadiendo un peso de 375g se consigue una nivelación ideal. Figura 70. Panel solar con lastre fijado. Fuente: Propia Debido al peso de la placa solar más el lastre, el tubo de soporte flecta. Para reforzarlo, te atornilla una argolla en la parte superior de la vela y se bajan dos hilos, de sedal de pescar, que se unen al soporte del panel solar a ambos lados mediante un nudo corredero. Se opta por fijarlo de este modo para así poder ser desmontado.
Capítulo 4. Construcción de la vela, instalación del cableado y puesta a punto 57 Figura 71. Vela montada y ampliación de las fijaciones de los hilos de refuerzo. Fuente: Propia Con el conjunto montado, se instala el ultimo conector estanco para la alimentación procedente de la placa solar. Figura 72. Conexión de la placa solar a la vela. Fuente: Propia
Puesta en servicio y calibración de la instrumentación para la navegación autónoma de un velero de 2 metros de eslora 64 Juntas de estanqueidad Para reparar la junta de estanqueidad, primero se retira toda la goma antigua tirando de ella. Figura 78. Sección donde una de las gomas ya ha sido retirada. Fuente: Propia Una vez retiradas todas las gomas, se procede a sanear los bordes. Para ello se retira la Sika antigua cortándola con la hoja de un cúter y se raspa toda la superficie con ella para retirar tanto material cómo es posible sin llegar a desgastar la fibra de vidrio. Este proceso se realiza en la junta exterior del casco, la junta de la fogonadura y las zonas de contacto de la cubierta.
Capítulo 4. Construcción de la vela, instalación del cableado y puesta a punto 65 Figura 79. Antes y después del saneado. Fuente: Propia Con las zonas limpias, se procede a aplicar la Sika nueva. Para no manchar la pintura del casco, primero se aplica una capa de cinta adhesiva blue tape a todo el perímetro exterior. A continuación, mediante una pistola de silicona, se aplican dos cordones en cada una de las juntas, uno interior y otro exterior, y posteriormente se posiciona sobre ellos las nuevas gomas. Para que no se muevan en ciertos puntos, las gomas se sujetan con más trozos de blue tape en la posición adecuada.
Puesta en servicio y calibración de la instrumentación para la navegación autónoma de un velero de 2 metros de eslora 66 Figura 80. Instalación de las juntas. Fuente: Propia Después de dejar secar la Sika durante 24 horas, se aplica un nuevo cordón en los extremos exteriores de las juntas para proporcionar un mayor apoyo a la goma y se esparce con el dedo para que penetre y quede uniforme y se deja secar otras 24 horas. Figura 81. Aplicación de más Sika. Fuente: Propia
Capítulo 5. Programación de los dispositivos actuadores 67 Capítulo 5. Programación de los dispositivos actuadores 5.1. Navegación autónoma Siempre que se navega a vela es necesario conocer la dirección del viento para evitar de este modo los rumbos no navegables. Estos rumbos en los cuales un velero, o cualquier transporte que sea impulsado por el viento, comprenden una franja, con el barco aproado al viento, de aproximadamente unos 45° a ambos lados tal y como se muestra en la Figura 82. Esta limitación hace que, si quiere navegar en contra del viento, sea necesario realizar bordos en rumbos de ceñida hasta llegar al punto objetivo. Figura 82. Rumbos de navegación a vela. Fuente: https://acortar.link/jrH5Ju, https://acortar.link/HqEGFd En una embarcación tradicional, una persona seria la encargada de controlar la dirección del viento, el rumbo y la posición de las velas, pero en el Sensailor, estas funciones debe realizarlas exclusivamente la Raspberry.
Puesta en servicio y calibración de la instrumentación para la navegación autónoma de un velero de 2 metros de eslora 68 Para ello es necesario crear algoritmos que establezcan las tareas que debe seguir la Raspberry en función de los datos proporcionados por los sensores. 5.2. Objetivos del programa Debido a la complejidad de trabajar con automatismos, inicialmente se establecen dos objetivos imprescindibles para que el Sensailor pueda navegar. El primer objetivo es que el programa controle la posición del alerón en función de la dirección del viento y del rumbo que sigue el velero. El segundo objetivo es que el Sensailor mueva los timones a conveniencia para alcanzar un waypoint. Después de alcanzar estos dos objetivos principales, los siguientes objetivos serán: • que sea capaz de seguir una trayectoria marcada por distintos waypoints; • que busque la forma más rápida de llegar a dichos waypoints; • que evite obstáculos detectados mediante un LIDAR; • que sea capaz de mantenerse en unas determinadas coordenadas. 5.3. Captación de la información de los sensores Para que el código de Arduino fuera más fácil de comprender, se modificó siguiendo una estructura modular. En dicha estructura todas las definiciones se muestran al inicio, por lo que el funcionamiento del programa se gestiona en la cabecera del archivo, evitando así el ir y venir constantemente en el código como se hacía anteriormente. Los sensores se leen de forma independiente y la información se almacena en una matriz de datos, sin interferir entre sí mediante el uso de temporizadores individuales para cada sensor. Se utilizó un delay cualquier para evitar tiempos de procesamiento muertos, lo que permitió que los controladores estuvieran siempre listos para enviar y recibir datos de los sensores y otros dispositivos. Por lo tanto, los datos de los sensores que se envían a la Raspberry Pi se toman de la matriz de datos y no directamente de los sensores, con lo que se consigue una cierta independencia.
Capítulo 5. Programación de los dispositivos actuadores 69 5.4. Protocolos de comunicación Para el intercambio de información entre el Arduino, que recibe los datos de los sensores de 5V, y la Raspberry Pi, que se encarga de generar las señales de control, se diseñó una trama específica que se transmite cada segundo por medio de la conexión USB entre las dos placas. Se trata de una transmisión por multiplexación en el tiempo síncrona de manera que cada dispositivo tiene asignada una franja de tiempo fija de 50ms. Debido a que la frecuencia de adquisición de datos varia de un sensor a otro, los campos se actualizan únicamente cuando hay nuevos valores, mientras estos no cambien, se mantiene la lectura anterior. La Tabla 5 muestra el campo asignado a cada uno de los sensores instalados en el velero. Id Dispositivo A Veleta B Anemómetro C Magnetómetros D GPS velocidad E GPS latitud F GPS longitud G Sensor UV H Sensor LDR I Sensor DS18b20 temperatura J Rumbo a destino K Distancia a destino Tabla 5. Campos de la trama de valores. Fuente: [4] La Figura 83 muestra el diseño de la trama. Cabe destacar que se dejó margen para la implementación de nuevos sensores.
Puesta en servicio y calibración de la instrumentación para la navegación autónoma de un velero de 2 metros de eslora 70 Figura 83. Configuración de la trama. Fuente: [4] 5.5. Programación en Python 5.5.1. Control de la vela Para el control de la vela, se decide implementar un algoritmo en Python, puesto que es más sencillo establecer los parámetros de este modo. El algoritmo toma los datos de rumbo y dirección del viento para realizar los cálculos y obtener de este modo el valor óptimo del ángulo del servo ubicado la vela. Posteriormente se transmite dicho valor mediante conexión bluetooth al ESP32 que comanda el servo. Algoritmo 1. Se calculan los 16 rumbos posibles, a intervalos de 22,5 grados (para que coincida con la veleta) hasta llegar a 360 grados. 2. Para cada una de las 16 posiciones de la veleta en cada rumbo antes mencionado, a intervalos de 22,5 grados, se introducen los ángulos que debe adoptar el servo para cada una de las situaciones, donde solo se podrá mover entre 45° o 135° en función del lado de incidencia y 90° para las situaciones de rumbo no navegable. 3. Con la tabla creada anteriormente de 16x16 valores y la posición óptima de ángulo para el servomotor para cada caso de la tabla, se procede a buscar el vecino más próximo utilizando la Ecuación 1 entre los valores de la tabla y los valores de rumbo y dirección de viento actual. 𝐾𝑁𝑁=√(𝑅𝑢𝑚𝑏𝑜𝑖𝑛𝑡𝑟𝑜𝑑𝑢𝑐𝑖𝑑𝑜 −𝑅𝑢𝑚𝑏𝑜𝑟𝑒𝑓𝑒𝑟𝑒𝑛𝑐𝑖𝑎)2+(𝐷.𝑉𝑖𝑒𝑛𝑡𝑜𝑖𝑛𝑡𝑟𝑜𝑑𝑢𝑐𝑖𝑑𝑜 −𝐷.𝑉𝑖𝑒𝑛𝑡𝑜𝑟𝑒𝑓𝑒𝑟𝑒𝑛𝑐𝑖𝑎)2 Ecuación 1. Formula k vecinos más próximos
Capítulo 5. Programación de los dispositivos actuadores 71 4. Se busca el valor mínimo posible de KNN entre la tabla y los datos y se toma el ángulo de servomotor para ese rumbo y dirección de viento. En la siguiente figura se muestra una parte del Excel generado con un ejemplo para comprender el algoritmo implementado en Python. En este caso se han introducido unos valores de rumbo 5° y dirección de viento 100°. Ambos valores no coinciden con los de referencia, pero mediante el vecino más próximo el Excel es capaz de indicarnos que el valor del ángulo de servo más próximo es 135°, el cual aparece en la línea 6. Figura 84. Excel de control del alerón. Fuente: Propia Código Python para control manual de la vela A pesar de que la Raspberry controla la vela de forma automática, por seguridad también puede ser controlada de manera remota. La vela puede ser controlada desde el móvil con la aplicación Serial Bluetooth Terminal, que se conecta directamente al ESP32 por bluetooth; o desde el
Puesta en servicio y calibración de la instrumentación para la navegación autónoma de un velero de 2 metros de eslora 72 escritorio remoto de la Raspberry ejecutando otro código. En este código “secundario” se introduce el ángulo de servo deseado y al ejecutarlo la Raspberry lo envía al ESP32 por bluetooth.
Capítulo 6. Plan de pruebas y resultados experimentales 73 Capítulo 6. Plan de pruebas y resultados experimentales 6.1. Como trabajar con la Raspberry La Raspberry es un ordenador, por lo que se requiere conectarla a un monitor para poder ver lo que sucede, y un teclado y un ratón para poder trabajar ella. El teclado y el ratón se pueden conectamos directamente a los puertos USB de que dispone, pero conectar el monitor es un poco más complejo y se puede hacer de dos maneras, mediante cable o por Wi-Fi. 6.1.1. Conexión por cable La mayoría de los monitores actuales transmiten por cable HDMI, pero la Raspberry dispone de dos puertos micro HDMI, por lo que es necesario un adaptador para poder conectarlos. Si el monitor es más antiguo, como en este caso, la señal se transmite por un cable VGA, por lo que además se requiere un adaptador de HDMI a VGA. Figura 85. Adaptador HDMI a micro HDMI y adaptador HDMI a VGA. Fuente: https://acortar.link/7sEiaN y https://acortar.link/5FJNat
Puesta en servicio y calibración de la instrumentación para la navegación autónoma de un velero de 2 metros de eslora 80 Para ello, se abarloa el Sensailor a la neumática y desde la parte superior de la vela se tira para generar una cierta escora y ver su comportamiento. Tras ello se comprueba que el velero se adriza con rapidez y se mantiene estable. Figura 94. Prueba de estabilidad. Fuente: Propia Aprovechando las olas que generan las Golondrinas (barcos de paseo) a su paso por la bocana del puerto, se comprueba el comportamiento del Sensailor ante este movimiento de agua. El resultado resulta ser satisfactorio, puesto que, a pesar de tratarse de olas cercanas a los 40cm, el Sensailor apenas muestra alteraciones en la escora.
Capítulo 6. Plan de pruebas y resultados experimentales 81 Figura 95. Sensailor navegando. Fuente: Propia
Capítulo 7. Presupuesto 83 Capítulo 7. Presupuesto En este capítulo se detalla el presupuesto asociado al presente trabajo. En todo proyecto es imprescindible realizar un estudio económico de los gastos que supone llevarlo a cabo. Estos costes se han dividido en dos categorías: el coste del personal y las materias primas. Dentro de cada categoría se desglosan los distintos gastos. Cabe remarcar que no se tiene en cuenta el alquiler de un taller equipado como es el Espai Vela, propiedad de la Facultad de Náutica de Barcelona, ni el sueldo de los trabajadores del mismo. Para el coste del personal, se considera a la tutora y al cotutor como ingenieros superiores. En la tabla siguiente se muestran los costes: Coste personal Concepto Cantidad Precio (€/h) Horas (h) Total (€) Ingeniero junior 1 20 900 18000 Tutora 1 40 100 4000 Cotutor 1 40 100 4000 Total 26000 Materiales Concepto Cantidad Precio (€/h) Horas (h) Total (€) Sikaflex 290 DC PRO, Negro, Sellador de poliuretano para el calafateado en juntas de cubierta tradicionales de madera en la construcción de barcos y yates, 300 ml 2 15,80 31,61 Batería Li-Po 3.7V, 1.8A, 8x41x74 1 16,14 16,14 WPM321 Cargador Batería Litio 1A 1 6,64 6,64
Puesta en servicio y calibración de la instrumentación para la navegación autónoma de un velero de 2 metros de eslora 84 Porta hembras JST SM 2.54 2CTS 3 0,05 0,15 Porta machos JST SM 2.54 2CTS 3 0,12 0,36 Porta hembras JST SM 2.54 3CTS 1 0,12 0,12 Porta machos JST SM 2.54 3CTS 1 0,12 0,12 Terminal JST Hembra Serie SMP 12 0,03 0,37 Terminal JST Macho Serie SMP 12 0,09 1,05 Cable 0.20m M/H USB-A 1 1,14 1,14 Servo Impermeable EMAX ES3005 11kg. Metálico 2 33,40 66,79 Waveshare Industrial USB to RS485 Converter with Original FT232RL 300-921600bps Baudrate Built-in Embedded Protection Circuits, Resettable Fuse, ESD Protection, TVS diode 1 17,80 17,80 Fibra de vidrio, tejido silionne 290g/m² 5 12,46 62,32 Resina de poliéster (5kg + 100g (endurecedor)) 1 12,48 12,48 Batería solar de gel U-POWER 12V 26Ah 1 59,95 59,95 Tubo aluminio 1 1,39 1,39 Tablero contrachapado fenólico okume de 60x120x1 cm 1 24,79 24,79 Cola blanca rápida CEYS 250 gr 1 2,59 2,59 Total 305,79 Coste total 26305,79 Tabla 6. Presupuesto del proyecto. Fuente: Propia
Capítulo 8. Conclusiones y líneas futuras 85 Capítulo 8. Conclusiones y líneas futuras Como resultado de este proyecto, el Sensailor dispone de una nueva vela que solventa los problemas detectados en el anterior modelo, el cableado ahora es totalmente estanco, se han reparado los desperfectos ocasionados por el Temporal Gloria y cuenta con un sistema de gobierno inalámbrico, por lo que se han cumplido todos los objetivos planteados. A pesar de que la parte práctica del trabajo no era muy compleja, si ha resultado ser muy laboriosa. La falta de experiencia ha hecho que algunas tareas parecieran ser difíciles de realizar, pero que una vez en faena han resultado ser bastante sencillas. Una de dichas tareas ha sido el trabajo con fibra de vidrio. A pesar de ya haber trabajado anteriormente con este material, la manera en cómo se ha aplicado si ha sido nueva. El trabajo con fibra no ha resultado difícil, pero si ha requerido de una gran capacidad de atención, puesto que las mezclas de resina y endurecedor debían ser muy precisas y su aplicación debía hacerse de manera rápida y uniforme prestando especial atención en que no quedaran burbujas. El montaje del nuevo cableado ha sido interesante, pero el hecho de hacerlo una sola persona lo hace muy difícil si no se dispone de un segundo par de manos para realizar las uniones soldadas. Reparar el skeg dañado y subsanar la junta de estanqueidad han resultado ser las tareas más sencillas de este proyecto, pero esta segunda ha requerido más tiempo del previsto. La parte del proyecto que ha resultado más complicada de realizar ha sido la programación. El hecho de no haber trabajado nunca con Python ha hecho que sea necesario navegar por internet durante muchas horas, buscando información y mirando videos, para finalmente poder implementar los algoritmos necesarios. El hecho de que la IP del Wi-Fi cambie, supuso un problema al inicio pues para cada nueva conexión se debía conectar un monitor a la Raspberry para conocer su nueva IP, lo cual suponía cada vez montar y desmontar la pantalla, del PC para el que se usaba, para usarla en el Sensailor. La solución a este problema fue emplear un programa de escáner de IP con el cual se obtienen la dirección de los dispositivos conectados a la red Wi-Fi.
Puesta en servicio y calibración de la instrumentación para la navegación autónoma de un velero de 2 metros de eslora 86 El código que se empleaba inicialmente para el control de los servos de los timones daba problemas. Esto era debido a interferencias que se generaban al enviar la señal de control a los servomotores simultáneamente. Este problema se solucionó programando un segundo algoritmo en el cual la señal se les envía primero a uno y después al otro dejando un pequeño intervalo de tiempo entre ambas señales para permitir al primer servo llegar a la posición objetivo. En las pruebas de mar, se aprecia que el Sensailor, a pesar del aumento de peso de la vela, todavía cuenta con un brazo adrizante suficiente para mantenerse y recuperar la estabilidad rápidamente en caso de escora. También se aprecia que la nueva vela, debido al peso y a la fricción con el mástil, gira con dificultad respecto a éste requiriendo cerca de 10kn para empezar a girar. Posiblemente se podría solucionar esta limitación con un alerón de mayor tamaño. Líneas futuras El velero actualmente ya es capaz de navegar y de ir a un cierto punto con unas condiciones de viento favorables, pero no es capaz de seguir un rumbo marcado por varios puntos. Se debería modificar la programación para que fuera capaz de ello. Una vez conseguido esto, se podría programar para que buscara la ruta más rápida hasta dichos puntos. El rango de viento de la nueva vela parte aproximadamente de 10kn. Se podría diseñar y construir un segundo alerón para la nueva vela con el fin de reducir dicha cifra. En el circuito eléctrico del casco está prevista la instalación de un LIDAR en proa y de una cámara de infrarrojos para la detección de obstáculos. Se debería buscar la manera como instalarlos en el velero y se debería desarrollar el algoritmo. También está prevista la instalación de una placa solar en popa para la alimentación de la batería principal. Finalmente, y orientando el velero a poder participar en regatas, se podría desarrollar un código que haga que el Sensailor se mantenga en unas determinadas coordenadas.
Bibliografía y referencias 87 Bibliografía y referencias [1] Airfoil tools [en línea]. [Consulta: 25 abril 2022]. Disponible en: http://airfoiltools.com/ [2] Barnatt C. ExplainingComputers.com: Raspberry Pi Servo Motor Control. [en línea]. [Consulta: 09 junio 2022]. Disponible en: https://www.explainingcomputers.com/pi_servos_video.html [3] Chacón Mosquera, EF. Autonomous Sailboat Prototype Sensors and Electronics Implementation with Machine Learning for Navigation [en línea]. Proyecto Final de Máster Oficial, UPC, Escuela Técnica Superior de Ingeniería de Telecomunicación de Barcelona, Departamento de Ingeniería de Sistemas, Automática e Informática Industrial, 2021. [Consulta: 14 marzo 2022]. Disponible en: http://hdl.handle.net/2117/344154 [4] Chacón, E. [et al.]. Desarrollo e instrumentación de un velero autónomo de 2 metros de eslora para la recogida de datos oceanográficos. A: Jornadas de Automática. "42ª Jornadas de Automática: Libro de actas: Castelló, 1-3 de septiembre de 2021" [en línea]. A Coruña: Universidad de da Coruña. Servicio de Publicaciones, 2021, p. 13-20. ISBN 978-84-9749- 804-3. [Consulta: 11 mayo 2022]. Disponible a: http://hdl.handle.net/2117/366173 [5] Cómo trabajar con archivos Excel utilizando Python. Programación en Castellano. [en línea]. [Consulta: 14 junio 2022]. Disponible en: https://programacion.net/articulo/como_trabajar_con_archivos_excel_utilizando_python _1419 [6] Guerrero R. Machine learning en excel (KNN (nearest neighbours)) [video]. YouTube. 7 de agosto de 2019 [Consulta: 14 junio 2022]. Disponible en: https://www.youtube.com/watch?v=OEiUyxWG1CA [7] Manich Vallès, C.; Sastre Caballol, JA. Disseny i construcció d´un dron de navegació automàtica a vela [en línea]. Trabajo Final de Grado, UPC, Facultad de Náutica de Barcelona, Departamento de Ingeniería de Sistemas, Automática e Informática Industrial, 2020. [Consulta: 14 marzo 2022]. Disponible en: http://hdl.handle.net/2117/328659 [8] Mesegué Basallo, JE. Disseny i construcció del sistema propulsiu d’un veler autònom de 2 m d’eslora [en línea]. Trabajo Final de Grado, UPC, Facultad de Náutica de Barcelona, Departamento de Ingeniería de Sistemas, Automática e Informática Industrial, 2021. [Consulta: 14 marzo 2022]. Disponible en: http://hdl.handle.net/2117/355617
Puesta en servicio y calibración de la instrumentación para la navegación autónoma de un velero de 2 metros de eslora 88 [9] World Robotic Sailing Championship [en línea]. [Consulta: 28 marzo 2022]. Disponible en: https://www.roboticsailing.org/ [10] SailBot, International Robotic Sailing Regatta [en línea]. [Consulta: 28 marzo 2022]. Disponible en: https://www.sailbot.org/ [11] The Microtransat Challenge [en línea]. [Consulta: 28 marzo 2022]. Disponible en: https://www.microtransat.org/ [12] Use Python para leer y modificar archivos de Excel (incluidos archivos xls y xlsx) basados en módulos xlrd, xlwt y openpyxl. Programador clic [en línea]. [c Consulta: 14 junio 2022]. Disponible en: https://programmerclick.com/article/9740120496/
Anexo 1. Esquemas de conexiones 89 Anexo 1. Esquemas de conexiones
Puesta en servicio y calibración de la instrumentación para la navegación autónoma de un velero de 2 metros de eslora 96 A1.4.2. Plano general del cableado (Sección 2)
Anexo 1. Esquemas de conexiones 97 A1.4.3. Plano general del cableado (Sección 3)
Puesta en servicio y calibración de la instrumentación para la navegación autónoma de un velero de 2 metros de eslora 98 A1.4.4. Plano general del cableado (Sección 4) + - Señal Panel Solar Sonda Temperatura
Anexo 1. Esquemas de conexiones 99 A1.5. Esquema de colores del cableado de los conectores Conector Nº Cable Señal Color en el conector Color en la caja 3 1 1 Temperatura Marrón Marrón 2 SCL (Magnetómetro) Blanco Blanco 3 SDA (Magnetómetro) Gris Morado 4 Fotorresistor Rosa Azul 5 UV Amarillo Verde 6 Anemómetro (GND) Verde Amarillo 2 7 Servo 2 Blanco Amarillo 8 Servo 1 Marrón Marrón 9 Tx (GPS) Verde Azul 10 Rx (GPS) Amarillo Verde 11 Luz Todo horizonte (GND) Rosa Negro 3 12 Tx (LIDAR) Rosa Naranja 13 Rx (LIDAR) Amarillo Amarillo 14 MOTOCTL (LIDAR) Verde Verde 15 A (Veleta) Blanco Morado 16 B (Veleta) Gris Gris 4 17 12V (VCC) Amarillo Rojo 18 12V (GND) Blanco Naranja 19 5V (GND) Marrón Negro 20 5V (VCC) Verde Blanco Tabla 7. Esquema de colores del cableado de los conectores. Fuente: Propia
Puesta en servicio y calibración de la instrumentación para la navegación autónoma de un velero de 2 metros de eslora 100 A1.6. Esquema de colores del cableado del tope de mástil Cable Señal Color Sensores Anemómetro Marrón Fotorresistor Verde UV Blanco Luz todo horizonte Amarillo 5V (VCC) Rojo 5V (GND) Negro 12V (VCC) Gris / Azul Veleta A Amarillo B Azul 12V (VCC) Marrón 12V (GND) Negro Tabla 8. Esquema de colores del cableado del tope de mástil. Fuente: Propia
Anexo 2. Código de los diferentes procesadores 101 Anexo 2. Código de los diferentes procesadores A2.1. Arduino A2.1.1. Almacenamiento de datos #include <SoftwareSerial.h> #include "TinyGPS++.h" #include <Wire.h> #include <OneWire.h> #include <DallasTemperature.h> //#define DEBUG 1 #define pinWindVane A0 //Wind vane analog input #define pinUV A1 //Ultraviolet analog input #define pinLDR A2 //Light dependent resistor analog input #define pinAnemo 7 //Anemometer input #define pinTemperature 9 //Temperature DS18b20 #define nightLight 3 //Led light output #define pinSerialRxGPS 4 //Virtual Rx port GPS #define pinSerialTxGPS 8 //Virtual Tx port GPS //Sensors position definition # define SENSOR_NUMBER 11 # define WIND_DIRECTION 0 //A Vane # define WIND_SPEED 1 //B Anemometer # define BOAT_DIRECTION 2 //C Magnetometer # define BOAT_SPEED 3 //D GPS speed # define GPS_COOR_LAT 4 //E GPS latitude # define GPS_COOR_LON 5 //F GPS longitude # define ULTRAVIOLET 6 //G UV sensor # define LIGHT_RESISTOR 7 //H LDR sensor # define TEMPERATURE 8 //I DS18b20 sensor # define COURSE2GO 9 //J Course to destination point # define DISTANCE2GO 10 //K Distance to destination point //Timeouts # define SDINFO_TIMEOUT 50L # define SDBLOCK_TIMEOUT 1000L //# define GPS_TIMEOUT 50L # define GPS_TIMEOUT 10L # define ReadMag_TIMEOUT 3000L
Puesta en servicio y calibración de la instrumentación para la navegación autónoma de un velero de 2 metros de eslora 102 # define ANEM_TIMEOUT 2000L # define RS_TIMEOUT 100L # define READ_RS_TIMEOUT 1000L //Constants # define CALIB_OFFSET 0.705 # define CONST_MS2KN 1.943 # define LATITUDE_POS 0 # define LONGITUDE_POS 1 //Sizes # define VANE_MEAN 5 # define ReadMag_MEAN 5 //Sensors definitions # define MPU9250_address 0x68 # define Mag_address 0x0C //Read Magnetometer # define COEFICIENT_UV 1.07526881720430107527 //Variable definition int indx = 0; int LightState = 0; int countSensors = 0; bool sendingBlock = false; //Timers current time unsigned long currentTime = 0; unsigned long gpsPrevTime = 0; unsigned long rsPrevTime = 0; unsigned long rdRsPrevTime = 0; unsigned long ReadMagPrevTime = 0; unsigned long anemoPrevTime = 0; unsigned long SendInfoPrevTime = 0; unsigned long SendBlockPrevTime = 0; unsigned long checkLightPrevTime = 0; //Strings to send data over I2C String sensorData[SENSOR_NUMBER] = {"15.2","0.8","23","20","41.389311","2.112141","70","70","45","70","45"}; String sensorMSG[SENSOR_NUMBER] = {"A","B","C","D","E","F","G","H","I","J","K"}; String myData[SENSOR_NUMBER] = {"No Data","No Data","No Data","No Data","No Data","No Data","No Data","No Data","No Data","No Data","No Data"}; String sendText = "*"; SoftwareSerial serial2GPS(pinSerialRxGPS, pinSerialTxGPS); //Sensor variables TinyGPSPlus gps; // GPS data
Anexo 2. Código de los diferentes procesadores 103 float waypoints [2]; float gpsLat = 0; float gpsLon = 0; float gpsSpeed = 0; float gpsCourseTo = 0; float gpsDistanceTo = 0; // Vane variables float vaneVal; int vaneReadings[VANE_MEAN]; int vaneReadIndx = 0; int vaneTotal = 0; // Magnetometer variables float ReadMagVar = 0; int readingsMag[ReadMag_MEAN]; int vaneReadIndxMag = 0; int vaneTotalMag = 0; int averageMag = 0; // Anemometer variables volatile int cntPulses = 0; float windSpeed = 0; // Sensors variables float uvs = 0; float ldr = 0; float temp = 0; int cntSensors = 1; float tot_aux_uvs = 0; float tot_aux_ldr = 0; float var_uvs = 0; float var_ldr = 0; OneWire oneWireObjeto(pinTemperature); DallasTemperature sensorDS18B20(&oneWireObjeto); void setup() { Serial.begin(9600); serial2GPS.begin(9600); pinMode(pinAnemo, INPUT_PULLUP); pinMode(nightLight, OUTPUT); digitalWrite(nightLight, LOW); sensorDS18B20.begin(); waypoints [LATITUDE_POS] = 42.380359; waypoints [LONGITUDE_POS] = 2.184730; SendBlockPrevTime = millis();
Puesta en servicio y calibración de la instrumentación para la navegación autónoma de un velero de 2 metros de eslora 104 Wire.begin(); I2C_escriptura(MPU9250_address, 0x37, 0x02); I2C_escriptura(Mag_address, 0x0A, 0x02); //Start the interruption here to avoid issue while configuring other sensors attachInterrupt(digitalPinToInterrupt(pinAnemo), anemoVal, RISING); Serial.println("Program starts"); } void loop() { currentTime = millis(); ReadGPS(); smartDelay(GPS_TIMEOUT); ReadMagVar = ReadMagnetometer(); ReadVane(); readAnemometer(); readRSensors(); mastheadLight(); sensorData[WIND_DIRECTION] = String(vaneVal,4); sensorData[WIND_SPEED] = String(windSpeed,2); sensorData[BOAT_DIRECTION] = String(ReadMagVar,4); sensorData[BOAT_SPEED] = String(gpsSpeed); sensorData[GPS_COOR_LAT] = String(gpsLat,6); sensorData[GPS_COOR_LON] = String(gpsLon,6); sensorData[ULTRAVIOLET] = String(uvs,2); sensorData[LIGHT_RESISTOR] = String(ldr,2); sensorData[TEMPERATURE] = String(temp,2); sensorData[COURSE2GO] = String(gpsCourseTo,2); sensorData[DISTANCE2GO] = String(gpsDistanceTo,4); UpdateDataBlock(); } void readSerial(){ String content = ""; String valueRcv; char character; while(Serial.available()) { content = Serial.readString(); if(content.charAt(0) == 'w'){ valueRcv = content.substring(1,10); waypoints [LATITUDE_POS] = valueRcv.toFloat(); valueRcv = content.substring(12,22); waypoints [LONGITUDE_POS] = valueRcv.toFloat(); Serial.println(content);
Anexo 2. Código de los diferentes procesadores 105 // Serial.println(String(waypoints [LATITUDE_POS],6)); // Serial.println(String(waypoints [LONGITUDE_POS],6)); } } } float ReadGPS(){ float gpsCourse2WP; #ifdef DEBUG String gpsInfo; #endif if( gps.location.isValid() ){ gpsLat = gps.location.lat(); gpsLon = gps.location.lng(); gpsCourseTo = gps.courseTo(gpsLat, gpsLon, waypoints[LATITUDE_POS], waypoints[LONGITUDE_POS]); gpsDistanceTo = gps.distanceBetween(gpsLat, gpsLon, waypoints[LATITUDE_POS], waypoints[LONGITUDE_POS])/1000.0; #ifdef DEBUG gpsInfo = "Lat:" + String(gpsLat,6) + " Lon:" + String(gpsLon,6); Serial.println(gpsInfo); gpsInfo = "Course:" + String(gpsCourseTo) + " Distance:" + String(gpsDistanceTo,4); Serial.println(gpsInfo); #endif } gpsCourse2WP = gpsCourseTo; if( gps.speed.isValid() ){ gpsSpeed = gps.speed.knots(); #ifdef DEBUG gpsInfo = "GPS speed: " + String(gpsSpeed); Serial.println(gpsInfo); #endif } return gpsCourse2WP; } //Magnetometer// float ReadMagnetometer() { uint8_t ST1; if (currentTime - ReadMagPrevTime > READ_RS_TIMEOUT) { do { currentTime = millis(); I2C_lectura(Mag_address, 0x02, 1, &ST1); if (currentTime - ReadMagPrevTime > ReadMag_TIMEOUT) { ReadMagPrevTime = currentTime; break; } } while (!(ST1 & 0x01));
Puesta en servicio y calibración de la instrumentación para la navegación autónoma de un velero de 2 metros de eslora 112 print("now") UTCDate = datetime.utcnow() cDate = UTCDate.strftime("%Y-%m-%d") cTime = UTCDate.strftime("%H:%M:%S") with open(FileSensor, "r") as sensorFile: sDate = json.load(sensorFile) cLat = sDate["GPS_Coord_Lat"] cLon = sDate["GPS_Coord_Lon"] cUV = sDate["Ultraviolet"] cLDR = sDate["Light_Resistor"] cTemp = sDate["Temperature"] with open(FileName, "r") as theFile: theDate = json.load(theFile) if cDate not in theDate: theTime = {cTime:{"LAT": cLat, "LON": cLon, "UVS": cUV, "LDR": cLDR, "TEM": cTemp}} theDate[cDate]=theTime else: theTime = theDate[cDate] theTime[cTime] = {"LAT": cLat, "LON": cLon, "UVS": cUV, "LDR": cLDR, "TEM": cTemp} theDate[cDate] = theTime json_object = json.dumps(theDate, indent = 4) with open(FileName, "w") as outfile: outfile.write(json_object) outfile.close() append2File() A2.2.2. Control automático de la vela import json import threading import math #import ServoVela #import ServoVela #Algoritmo de la vela updateTime = 5 # in seconds
Anexo 2. Código de los diferentes procesadores 113 def updateServoAngle(): threading.Timer(updateTime, updateServoAngle).start() with open("sensorData.txt", "r") as boatData: jData = json.load(boatData) windAngle = int(jData["Wind_Direction"]) heading = int(jData["Boat_Direction"]) # print("wind angle is " + str(windAngle)) # print("boat heading is " + str(heading)) headNum = 0.0 windNum = 0.0 srvNum = 0 minKNN = 360 aServo = [90, 90, 135, 135, 135, 135, 135, 135, 135, 45, 45, 45, 45, 45, 45, 90, \ 90, 90, 90, 135, 135, 135, 135, 135, 135, 135, 45, 45, 45, 45, 45, 45, \ 45, 90, 90, 90, 135, 135, 135, 135, 135, 135, 135, 45, 45, 45, 45, 45, \ 45, 45, 90, 90, 90, 135, 135, 135, 135, 135, 135, 135, 45, 45, 45, 45, \ 45, 45, 45, 90, 90, 90, 135, 135, 135, 135, 135, 135, 135, 45, 45, 45, \ 45, 45, 45, 45, 90, 90, 90, 135, 135, 135, 135, 135, 135, 135, 45, 45, \ 45, 45, 45, 45, 45, 90, 90, 90, 135, 135, 135, 135, 135, 135, 135, 45, \ 45, 45, 45, 45, 45, 45, 90, 90, 90, 135, 135, 135, 135, 135, 135, 135, \ 135, 45, 45, 45, 45, 45, 45, 90, 90, 90, 135, 135, 135, 135, 135, 135, \ 135, 135, 45, 45, 45, 45, 45, 45, 90, 90, 90, 135, 135, 135, 135, 135, \ 135, 135, 135, 45, 45, 45, 45, 45, 45, 90, 90, 90, 135, 135, 135, 135, \ 135, 135, 135, 135, 45, 45, 45, 45, 45, 45, 90, 90, 90, 135, 135, 135, \ 135, 135, 135, 135, 135, 45, 45, 45, 45, 45, 45, 90, 90, 90, 135, 135, \ 135, 135, 135, 135, 135, 135, 45, 45, 45, 45, 45, 45, 90, 90, 90, 135, \ 135, 135, 135, 135, 135, 135, 135, 45, 45, 45, 45, 45, 45, 90, 90, 90, \ 90, 135, 135, 135, 135, 135, 135, 135, 45, 45, 45, 45, 45, 45, 90, 90 ] for head in range(16): for wind in range(16): knn = math.sqrt( math.pow((heading-headNum),2) + math.pow((windAngle-windNum),2)) if( knn < minKNN ): servoAngle = aServo[srvNum] #print("index " + str(srvNum) + " min val" + str(minKNN)) minKNN = knn srvNum += 1 windNum += 22.5 windNum = 0 headNum += 22.5 print("servo angle is " + str(servoAngle)) # ServoVela.setBTServo(servoAngle) updateServoAngle()
Puesta en servicio y calibración de la instrumentación para la navegación autónoma de un velero de 2 metros de eslora 114 A2.2.3. Control manual de la vela import os isBT_Enable = False BTServoAngle = 90 prevBTServoAngle = 0 def initBTServo(): os.system('sudo systemctl start bluetooth') os.system('sudo rfcomm bind 0 10:52:1C:5D:57:86') isBT_Enable = True def setBTServo(angle): os.system('echo ' + str(angle) + '> /dev/rfcomm0') if isBT_Enable == False: initBTServo() if prevBTServoAngle != BTServoAngle: setBTServo(BTServoAngle) prevBTServoAngle = BTServoAngle A2.2.4. Control manual de los timones import RPi.GPIO as GPIO import time GPIO.setmode(GPIO.BOARD) GPIO.setwarnings(False) # Set pin 32 and 33 as outputs, and define as servo1 and servo 2 as PWM pins GPIO.setup(32,GPIO.OUT) GPIO.setup(33,GPIO.OUT) servo1 = GPIO.PWM(32,50) # pin 32 for servo1, pulse 50Hz servo2 = GPIO.PWM(33,50) servo1.start(0) servo2.start(0) try:
Anexo 2. Código de los diferentes procesadores 115 while True: #Ask user for angle and turn servo to it angle = float(input('Enter angle between 45 & 135: ')) if angle in range(44,136): servo1.ChangeDutyCycle(2+(angle/18)) time.sleep(0.5) servo1.ChangeDutyCycle(0) servo2.ChangeDutyCycle(2+(angle/18)) time.sleep(0.5) servo2.ChangeDutyCycle(0) else: print('Enter angle between 45 & 135: ') finally: #Clean things up at the end servo1.stop() servo2.stop() GPIO.cleanup() print("Goodbye!")