Sistema de comunicación agua-aire mediante radio y ultrasonidos con geolocalización
Abstract
Grado en Ingeniería de Tecnologías de Telecomunicación
Full text
Escuela T´ecnica Superior de Ingenieros de Telecomunicaci´on Universidad de Valladolid Sistema de comunicaci´on agua-aire mediante radio y ultrasonidos con geolocalizaci´on Water-air communication system by radio and ultrasound with geolocation Autor: Miguel Alonso Felipe Tutor: Ram´on De La Rosa Steinz Valladolid a 10/09/2019
A mi familia, pareja y amigos que han estado presentes en la elaboraci´on de este proyecto y me han apoyado y soportado. Tambi´en a mi tutor y profesor Ram´on por mostrarme los entresijos de la electr´onica anal´ogica y guiarme por sus intrincados senderos. 1
Resumen En este trabajo se van a estudiar y desarrollar los m´etodos que se pueden emplear para establecer una comunicaci´on que atraviese dos medios tan dispares como el aire y el agua. Se analizar´an los distintos modelos te´oricos que caracterizan la propagaci´on ondulatoria en cada uno de los medios de inter´es y los posibles m´odulos funcionales implementables. Se explicar´a y se realizar´a un prototipo pr´actico que mediante un sistema que ejerza de nexo entre ambos medios ofrezca una implementaci´on con las tecnolog´ıas econ´omicamente m´as apropiadas para as´ı lograr, un enlace por el que se puedan transmitir y recibir datos de una forma sencilla y eficaz. Palabras clave: Comunicaci´on subacu´atica, hidr´ofono, transmisor ac´ustico, PLL, geolocalizaci´on, c´odigo Morse, boya, FM, radiocomunicaci´on, comunicaci´on aire-agua 2
Abstract In this work we will study and develop the methods that can be used to establish a communication that propagates through two different means such as air and water. We will analyze the different theoretical models that characterize the wave propagation in each of the means of interest and the possible implementable functional modules. A practical prototype will be explained and developed through a system that acts as a link between the two means, proposing an implementation with the most economically appropriate technologies.This all works towards achieving a link where data can be transmitted and received through in a simple and efficient way. Keywords: Underwater communication, hydrophone, acoustic transmitter, PLL, geolocation, Morse code, buoy, FM, radiocommunication, air-water communication 3
´ Indice general 1. Introducci´on 11 1.1. Motivaci´on.................................. 16 1.2. Objetivos .................................. 18 1.3. Estructura del documento . . . . . . . . . . . . . . . . . . . . . . . . . 20 2. Elecci´on y explicaci´on de las soluciones empleadas 21 2.1. Visi´ongeneral................................ 21 2.2. Elecci´on de los canales de transmisi´on adecuados y de las tecnolog´ıas empleadas.................................. 23 2.2.1. Tecnolog´ıas subacu´aticas . . . . . . . . . . . . . . . . . . . . . . 23 2.2.2. Tecnolog´ıas a´ereas . . . . . . . . . . . . . . . . . . . . . . . . . 33 2.2.3. Tecnolog´ıas electr´onicas complementarias . . . . . . . . . . . . . 43 2.3. Desarrollo y an´alisis del m´odulo de geolocalizaci´on . . . . . . . . . . . . 52 2.4. Desarrollo hardware y software para la generaci´on de tonos . . . . . . . 55 2.4.1. Modalidad de generaci´on de los tonos mediante hardware . . . . 55 2.4.2. Modalidad de generaci´on de los tonos mediante software . . . . 57 3. Explicaci´on detallada del sistema de comunicaci´on basado en boyas 63 3.1. M´odulo transceptor aerotransportado . . . . . . . . . . . . . . . . . . . 63 3.2. M´oduloboya ................................ 69 3.3. M´odulo transceptor ac´ustico submarino . . . . . . . . . . . . . . . . . . 80 4. Pruebas y resultados 86 4.1. Pruebas de subsistemas . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 4.1.1. Pruebas de generaci´on de tonos mediante software . . . . . . . . 86 4.1.2. Transmisi´on-Recepci´on radio en la banda de 2,4 GHz a 2,5 GHz 90 4.1.3. Transmisi´on-Recepci´on radio en la banda de FM . . . . . . . . . 92 4.1.4. Pruebas sobre el funcionamiento del enlace radio entre el avi´on y la boya, incluyendo la detecci´on de tonos en el avi´on . . . . . 93 4.1.5. Amplificaci´on de se˜nales de audio recogidas con el micr´ofono . . 95 4.1.6. Transmisi´on y recepci´on subacu´atica de tonos . . . . . . . . . . 97 4.1.7. Prueba con el generador de tonos basado en VCO . . . . . . . . 99 4.2. Pruebasdesistema............................. 101 4.2.1. Prueba de recepci´on en submarino de mensaje del avi´on . . . . 101 4.2.2. Prueba de recepci´on en avi´on de mensaje del submarino . . . . 102 4.2.3. Prueba de obtenci´on de posici´on GPS . . . . . . . . . . . . . . . 104 4
5. Conclusiones 105 6. L´ıneas de mejora 106 Anexos 109 A. C´odigo para la generaci´on de tonos (transmisi´on del mensaje desde avi´on y desde el submarino) 110 A.1.Octave.................................... 110 A.2.Matlab.................................... 112 A.3.Arduino ................................... 117 B. C´odigo de control de los m´odulos de Arduino 120 B.1. Transmisor en la banda de FM comercial. FM Transmitter v2.0 . . . . 120 B.2. Receptor en la banda de FM comercial. Receptor basado en el m´odulo deradioTEA5767 ............................. 120 B.3. M´odulo transceptor nRF24L01 (2,4GHz-2,5GHz) . . . . . . . . . . . . 121 B.3.1.M´odulo1 .............................. 121 B.3.2.M´odulo2 .............................. 122 C. Esquemas electr´onicos y m´odulos auxiliares 124 C.1. Esquema de amplificador operacional con alimentaci´on simple . . . . . 124 C.1.1. Valores de la etapa de amplificaci´on basada en el integrado TL082 empleada en la caja del avi´on . . . . . . . . . . . . . . . . . . . 126 C.1.2. Valores de la etapa de amplificaci´on doble basada en el integrado TL082 empleada en la caja de la boya y del submarino . . . . . 127 C.2. Esquema electr´onico del conexionado del CD4046B (PLL). Sistemas tipo 1deorden2................................. 128 C.2.1. Valores de los esquemas electr´onicos basados en PLL . . . . . . 131 C.3. Integrado CD4046 (VCO) . . . . . . . . . . . . . . . . . . . . . . . . . 134 C.3.1. Valores del VCO empleados en la caja de la boya . . . . . . . . 135 C.4. Amplificador de potencia . . . . . . . . . . . . . . . . . . . . . . . . . . 136 D. Diagramas de flujo 138 D.1. Diagrama de flujo de generaci´on de c´odigo Morse . . . . . . . . . . . . 138 D.2. Diagrama de flujo del bloque avi´on . . . . . . . . . . . . . . . . . . . . 139 D.3. Diagrama de flujo del bloque boya . . . . . . . . . . . . . . . . . . . . . 139 D.4. Diagrama de flujo del bloque submarino . . . . . . . . . . . . . . . . . 140 E. Informaci´on sobre submarinos 141 E.1. Distribuci´on de antenas por el casco del submarino . . . . . . . . . . . 141 E.2. Tablas de los sistemas de antenas usados por los submarinos . . . . . . 142 E.3. Tabla de frecuencias usadas por los submarinos y su utilidad . . . . . . 144 F. C´odigo de las cajas del avi´on, la boya y el submarino 145 F.1. C´odigo de la caja del avi´on (recepci´on) . . . . . . . . . . . . . . . . . . 145 F.2. C´odigo de la caja de la boya(transmisi´on y recepci´on) . . . . . . . . . . 150 F.3. C´odigo de la caja del submarino (recepci´on) . . . . . . . . . . . . . . . 159 5
´ Indice de figuras 1.1. Situaciones de comunicaci´on en un submarino clase 688 ([14],[15]). . . . 11 1.2. Ejemplos de alargamiento el´ectrico de antenas cortas utilizando el efecto inductivo[15,cap.4]. ............................ 12 1.3. Esquema que muestra las tecnolog´ıas de comunicaci´on t´ıpicas instaladas enlosveh´ıculos................................ 13 1.4. (a) Muestra que un transmisor de radio no puede comunicarse porque las se˜nales de radio sufren demasiado amortiguamiento en el agua. (b) Muestra que las se˜nales ac´usticas se reflejan en la superficie del agua. (c) Muestra que un receptor TARF (Translational Acoustic-RF) emplea un radar para detectar en la superficie vibraciones causadas por ondas de presi´on ac´ustica y las emplea para decodificar el mensaje. . . . . . . 14 1.5. Las vibraciones superficiales se traducen en una modulaci´on de fase. La fase de la reflexi´on inal´ambrica cambia con vibraciones superficiales diminutas[2,p´ag.4]. ............................ 15 1.6. Distribuci´on de antenas en un submarino clase 688. . . . . . . . . . . . 17 1.7. Comunicaci´on entre avi´on y submarino con el sistema de boyas. . . . . 18 1.8. Estructura del documento. . . . . . . . . . . . . . . . . . . . . . . . . . 20 2.1. Esquema del funcionamiento global del sistema de comunicaci´on basado enboyas.................................... 22 2.2. Se muestran dos tipos de enlace utilizando tecnolog´ıa ´optica. En el enlace A se muestran tres situaciones de incidencia; incidencia normal con transferencia total de potencia, incidencia con un θ < θce incidencia con θ > θccon reflexi´on total. En el enlace B se muestra como ser´ıa la tecnolog´ıa ´optica implementada con nuestro sistema boya. . . . . . . . 25 2.3. Penetraci´on de las ondas electromagn´eticas en el agua salada[13]. . . . 26 2.4. Perfil t´ıpico de la velocidad de la propagaci´on del sonido para latitudes medias[9]. .................................. 27 2.5. Variaci´on de la velocidad del sonido obtenida por las ecuaciones de Del Grosso y Chen y Millero con la temperatura[9]. . . . . . . . . . . . . . 28 2.6. Variaci´on del coeficiente de absorci´on con la frecuencia[9]. . . . . . . . . 29 2.7. Micr´ofono piezoel´ectrico con etapa de amplificaci´on. . . . . . . . . . . . 30 2.8. Se muestran un altavoz electromec´anico y un micr´ofono de carb´on de los empleados en la transmisi´on ac´ustica subacu´atica. . . . . . . . . . . 31 2.9. Modulaci´on 2-FSK empleada en el enlace de subida (direcci´on avi´on) y en el enlace de bajada (direcci´on boya). . . . . . . . . . . . . . . . . . . 33 2.10. Transceptor NRF24L01 con antena impresa. . . . . . . . . . . . . . . . 34 2.11. Transceptor NRF24L01 con antena externa. . . . . . . . . . . . . . . . 34 6
2.12. Montaje del sistema transceptor en la banda de 2.4GHz a 2.5GHz. . . . 36 2.13. Captura de pantalla que muestra el funcionamiento del programa para losm´odulosnRF24L01............................ 36 2.14. Esquema de transmisi´on FM. . . . . . . . . . . . . . . . . . . . . . . . 38 2.15. M´etodo para duplicar el tama˜no efectivo de una antena para la banda deFM..................................... 39 2.16. Transmisor FM de la casa ELECHOUSE.................. 39 2.17. Diagrama de bloques del integrado principal del Transmisor FM. Se observa que es un sistema de modulaci´on FM basado en sintetizador de frecuencias, lo que estabiliza la frecuencia portadora. . . . . . . . . . . 40 2.18. M´odulo receptor en la banda de FM TEA5767. ............. 41 2.19. Diagrama de bloques del integrado TEA5767. .............. 42 2.20. M´odulo amplificador de potencia. . . . . . . . . . . . . . . . . . . . . . 44 2.21. M´odulo amplificador de potencia empleado en los montajes. . . . . . . 44 2.22. Esquema de un montaje de dos etapas de amplificaci´on usando el TL082. 45 2.23. Montaje de un amplificador operacional de dos etapas. . . . . . . . . . 46 2.24. Esquema electr´onico del conexionado del integrado CD4046B. . . . . . 47 2.25. Diagrama de bloques del PLL. . . . . . . . . . . . . . . . . . . . . . . . 47 2.26. Funci´on de transferencia del PLL. . . . . . . . . . . . . . . . . . . . . . 48 2.27. Respuesta al escal´on de un sistema tipo I de orden II. . . . . . . . . . . 49 2.28. Montaje del integrado CD4046B para ser usado como PLL. . . . . . . . 50 2.29. Funci´on del filtro a la salida de la patilla 10 del PLL. . . . . . . . . . . 50 2.30. Ilustraci´on del rizado de la se˜nal a la salida de la patilla 10. En amarillo una se˜nal de entrada de 5 KHz (patilla 14), en azul la se˜nal de tensi´on con rizado a la salida de la patilla 10. . . . . . . . . . . . . . . . . . . . 50 2.31. Montaje del m´odulo GPS con la placa Arduino UNO . . . . . . . . . . 53 2.32. Datos recogidos por el m´odulo GPS sin usar la librer´ıa TinyGPS . . . . 53 2.33. Datos recogidos por el m´odulo GPS con la librer´ıa TinyGPS . . . . . . 54 2.34. M´odulo generador de onda cuadrada, triangular y sinusoidal. . . . . . . 55 2.35. Esquema de conexionado del integrado CD4046B empleando su VCO. . 56 2.36. Recreaci´on simplificada de alto nivel de la generaci´on de tonos software. 57 2.37. Diagrama de flujo explicativo de la traducci´on de c´odigo ASCII a Morse mediante tonos de distinta frecuencia. . . . . . . . . . . . . . . . . . . . 58 2.38. Programa de Octave generador de Morse con tonos de distinta frecuencia. 59 2.39. Programa de Matlab generador de Morse con tonos de distinta frecuencia. 60 2.40. Esquema el´ectrico del conexionado del Buzzer............... 60 2.41. Programa de Arduino generador de Morse con tonos de distinta frecuencia. 61 3.1. Diagrama de flujo explicativo de funcionamiento del bloque avi´on. . . . 64 3.2. Funcionamiento del sistema de traducci´on v´ıa software del avi´on. . . . . 65 3.3. Diagrama de conexionado del m´odulo avi´on. . . . . . . . . . . . . . . . 65 3.4. Esquema electr´onico del conexionado del integrado CD4046B. . . . . . 68 3.5. Montaje con una etapa de amplificaci´on usando el TL082. . . . . . . . 68 3.6. Fotos del montaje de la caja del avi´on. . . . . . . . . . . . . . . . . . . 69 3.7. Vista frontal y dorsal de la caja del avi´on. . . . . . . . . . . . . . . . . 69 3.8. Diagrama de flujo explicativo de funcionamiento del m´odulo boya. . . . 70 7
3.9. Se ilustra el m´etodo de codificaci´on empleado. En rojo: se manda el n´umero de d´ıgitos antes de la coma decimal. En azul: se manda el signo de la coordenada, donde pequivale a positivo y na negativo. . . . . . . 71 3.10. Diagrama de conexionado del m´odulo boya. . . . . . . . . . . . . . . . 72 3.11. Esquema electr´onico del conexionado del integrado CD4046B. . . . . . 75 3.12. Esquema de conexionado del integrado CD4046B empleando su VCO. . 75 3.13. Montaje total de dos etapas de amplificaci´on usando el TL082. . . . . . 76 3.14. Se muestra la fuente de alimentaci´on de 12V empleada. . . . . . . . . . 77 3.15. Se muestra el convertidor dc-dc que reduce la tensi´on de 12V a 8V para alimentarelArduino............................. 78 3.16. Fotos del montaje de la caja de la boya. . . . . . . . . . . . . . . . . . 78 3.17. Fotos del exterior de la caja de la boya. . . . . . . . . . . . . . . . . . . 79 3.18. Diagrama de flujo explicativo de funcionamiento del bloque submarino. 80 3.19. Diagrama de conexionado del m´odulo submarino. . . . . . . . . . . . . 81 3.20. Esquema electr´onico del conexionado del integrado CD4046B. . . . . . 83 3.21. Montaje total de dos etapas de amplificaci´on usando el TL082. . . . . . 83 3.22. Fotos del montaje de la caja del submarino. . . . . . . . . . . . . . . . 84 3.23. Fotos del exterior de la caja del submarino. . . . . . . . . . . . . . . . . 85 4.1. Fotograf´ıa de la prueba de ejecuci´on del c´odigo Octave. . . . . . . . . . 87 4.2. Fotograf´ıa de la prueba de la petici´on GPS v´ıa software. . . . . . . . . 87 4.3. Fotograf´ıa de la prueba de ejecuci´on del c´odigo MatLab. . . . . . . . . 88 4.4. Fotograf´ıa de la prueba de ejecuci´on del c´odigo en C++ implementado en el microcontrolador de Arduino. . . . . . . . . . . . . . . . . . . . . 89 4.5. Fotograf´ıa del conexionado del buzzer con el Arduino. . . . . . . . . . . 89 4.6. Fotograf´ıa de la prueba realizada con los m´odulos de transmisi´on radio en la banda de 2,4 GHz a 2,5 GHz. Se se˜nala en verde la recepci´on de datos en el transceptor 1, en azul cuando el transceptor 1 toma el rol de emisor y en rojo el momento en el que el transceptor 2 abandona la comunicaci´on................................. 90 4.7. Fotograf´ıa del montaje de los m´odulos transceptores radio en la banda de2,4GHza2,5GHz. ........................... 91 4.8. Fotograf´ıa de la prueba realizada con los m´odulos de transmisi´on radio en la banda de FM y la antena provisional del transmisor de FM. . . . 92 4.9. Se muestra uno de los tonos transmitidos desde el ordenador (500 Hz). 93 4.10. Se muestra el enganche del PLL a uno de los tonos (1000 Hz). . . . . . 94 4.11. Aplicaci´on m´ovil de Android generando un tono puro de 800 Hz. . . . . 95 4.12. Se muestra el montaje empleado para la recepci´on, amplificaci´on y enganche de un tono de 800 Hz empleando un receptor ac´ustico. . . . . . 96 4.13. Se muestra la pantalla del osciloscopio del laboratorio de docencia, donde se grafica en amarillo el tono de 800 Hz captado por el micr´ofono y en azul la salida de la patilla 14 del PLL. Se recuadra en rojo como la frecuencia de enganche del PLL se corresponde con la transmitida desde eltel´efonom´ovil. .............................. 96 4.14. Se muestra el generador de funciones fijado a una frecuencia de 500 Hz para una onda sinusoidal. El tono se genera sin offset (el cursor est´a desviado) y a m´axima amplitud. . . . . . . . . . . . . . . . . . . . . . . 97 8
por el submarino. En la Figura 1.5 se ilustra el funcionamiento de este sistema. Es interesante resaltar que este sistema solo implementa un enlace de subida (del objeto sumergido al objeto a´ereo). Figura 1.5: Las vibraciones superficiales se traducen en una modulaci´on de fase. La fase de la reflexi´on inal´ambrica cambia con vibraciones superficiales diminutas[2, p´ag. 4]. Inconvenientes del sistema actual: Solo ofrece canal de recepci´on. El submarino sigue sin poder recibir datos de objetos a´ereos o terrestres mientras se encuentra sumergido. Es un sistema complejo y caro. Dif´ıcil seguimiento desde el avi´on. Tanto localizar la comunicaci´on como mantener el l´aser en la zona de emisi´on. Clutter con el rizado de las olas. La comunicaci´on depende del clima y del estado del oleaje. Graves efectos sobre la vida marina debido a las altas potencias de transmisi´on a las que se ve obligado a operar el submarino. 15
1.1. Motivaci´on La idea que impulsa este trabajo nace tras consultar una publicaci´on en una p´agina web de divulgaci´on para ingenieros electr´onicos llamada Electronic Design [1], en ella se encuentra un resumen sobre unos experimentos llevados a cabo por dos miembros del MIT Francesco Tonolini y Fadel Adib [2] (desarrollado en la introducci´on). La publicaci´on trata sobre una serie de pruebas llevadas a cabo para resolver el problema que surge al intentar establecer una comunicaci´on que atraviesa dos medios de propagaci´on distintos, en este caso, entre el aire y el agua. La investigaci´on que se desarrolla a lo largo de la publicaci´on se centra en no comprometer la posici´on de los submarinos cuando estos tienen necesidad de comunicarse con un objeto exterior (p.ej: un avi´on, un dron, etc). Un escenario de comunicaci´on entre dos medios se da tambi´en en los enlaces satelitales, en los que la se˜nal pasa de la atm´osfera terrestre al vac´ıo y donde los principales problemas que degradan la transmisi´on se localizan en el mismo medio de propagaci´on (p.ej: por distancia, interferencias solares o con otras emisiones, reflexiones y cambio de polarizaci´on por la ionizaci´on de la atm´osfera, etc...); sin embargo, la situaci´on que vamos a afrontar presenta graves problemas tanto en la propagaci´on a trav´es del medio (en este caso ser´a el agua), como problemas para atravesar la interfaz que separa ambos medios. Un escenario aire-agua supone un reto de gran envergadura, ya que un cambio de medio con indices de refracci´on tan dispares, supone un desaf´ıo para la transmisi´on de datos, debido a que la onda que los transmite se ver´a severamente afectada en potencia y calidad. Este tipo de comunicaci´on despierta el inter´es por conocer que tipo de tecnolog´ıa puede resolver esta situaci´on y si los conocimientos adquiridos durante la carrera son suficientes como para entenderla y mejorarla en la medida de lo posible. Una vez enmarcado el problema de este sistema de comunicaci´on, se empieza a investigar sobre los submarinos y sobre que tipo de tecnolog´ıa disponen. Se estudia la publicaci´on Submarine Force Strategic Plan, ”Submarine Communications Master Plan, 1995”[14] y de ella se extrae informaci´on de utilidad para conocer las limitaciones y los puntos fuertes que presentan los submarinos como: tipo de modulaciones que utilizan, frecuencias que usan para comunicarse, estructura y distribuci´on de las antenas de que disponen, etc, tal y como se ilustra en la Figura 1.6 y seg´un las tablas que se recogen en el Anexo E. Tras consultar publicaciones sobre las tecnolog´ıas estudiadas para resolver este tipo de comunicaciones, se hace evidente el gran potencial de los submarinos y se comienza a investigar como emplearlo para resolver este complicado enlace de comunicaci´on aire-agua. A ra´ız de la complejidad tecnol´ogica que supone el m´etodo actual propuesto por el MIT (en el cual se hace una lectura de un rizado provocado por el submarino en la superficie del agua mediante un l´aser instalado en el avi´on) y a la vista de que ni siquiera se consigue un enlace bidireccional, surge la inspiraci´on de este TFG, que busca dar una soluci´on con un sistema de comunicaci´on en el que ambos extremos puedan transmitir informaci´on e implementarlo de una forma m´as sencilla, eficiente y robusta. 16
Figura 1.6: Distribuci´on de antenas en un submarino clase 688. Este proyecto supone la oportunidad de cubrir una necesidad personal de afianzar conocimientos sobre todos los campos de las telecomunicaciones estudiados durante la carrera, supliendo as´ı la inquietud de terminar mis estudios sin poner a prueba las habilidades adquiridas en lenguajes de programaci´on, capacidad de desarrollo de montajes electr´onicos y conocimientos sobre sistemas radio y propagaci´on de ondas electromagn´eticas. 17
1.2. Objetivos En este trabajo se busca establecer un enlace aire-agua entre dos nodos de comunicaci´on situados en medios de propagaci´on distintos. Para ello, se pretende dise˜nar un sistema que facilite el paso de la se˜nal de un medio a otro, en este caso, se opta por implementar un sistema de boyas, como se muestra en la Figura 1.7. Estas boyas deben llevar un sistema de comunicaci´on mediante ondas ac´usticas para el medio acu´atico y un sistema radio para el medio a´ereo, adem´as de establecer un v´ınculo entre ambos. Para lograr un montaje seguro, el sistema debe estar completamente impermeabilizado para evitar la intrusi´on de agua que pueda da˜nar los componentes electr´onicos. No obstante, el material que lo componga debe permitir el paso de se˜nales ac´usticas y electromagn´eticas (en este trabajo solo se impermeabilizan los componentes necesarios por falta de recursos). En el desarrollo del trabajo se pretende buscar un compromiso econ´omico entre la electr´onica y la eficiencia en el montaje; por consiguiente se buscar´an soluciones ingeniosas que sustituyan sistemas m´as complejos y econ´omicamente inaccesibles. Figura 1.7: Comunicaci´on entre avi´on y submarino con el sistema de boyas. Este sistema incluir´a adem´as un m´odulo GPS. Este m´odulo ser´a ´util para mantener localizada la boya. Si en el sistema se dispone de varias boyas, se podr´a geolocalizar al transmisor subacu´atico mediante la triangulaci´on de las transmisiones. As´ı pues, una vez explicado de modo general el problema que se pretende resolver y la soluci´on que se va a emplear, pasamos a enumerar de una forma ordenada los objetivos concretos que este trabajo fin de grado pretende conseguir: 1. Sobre competencias adquiridas o reforzadas por el alumno: realizar un proyecto que incluya competencias de gran parte de los campos estudiados en la carrera, con la intenci´on de afianzar los conocimientos previos sobre estos. (i) Adquirir habilidades de dise˜no y construcci´on de circuitos electr´onicos funcionales. 18
(ii) Ampliaci´on de los conocimientos sobre instrumentaci´on de laboratorio. (iii) Desarrollo y dominio software en diversos entornos de programaci´on. (iv) Dominio de herramientas de edici´on de textos y gr´afica para la elaboraci´on de documentos t´ecnicos, diagramas y figuras en proyectos. 2. Dise˜no de un sistema de comunicaci´on aire-agua para enlazar en modo full-duplex un avi´on (u otro elemento situado fuera del agua) y un submarino (u otro elemento situado bajo el agua). (i) Estudiar otros tipos de comunicaciones y establecer una opci´on de mejora con un sustituto econ´omico. (ii) Dise˜nar una estrategia que permita establecer una comunicaci´on full-duplex empleando el sistema. (iii) Elegir las tecnolog´ıas de transmisi´on adecuadas y las tecnolog´ıas electr´onicas m´as convenientes para el desarrollo y construcci´on de un prototipo del sistema. 3. Construcci´on, comprobaci´on y ensamblado de todos los subsistemas (unidades funcionales) necesarios para completar el prototipo de sistema final. (i) Dise˜no y construcci´on de los subsistemas para el prototipo (dise˜nar y construir un transceptor radio funcional, dise˜nar y construir un sistema transceptor subacu´atico econ´omico y dise˜nar y construir el resto de los subsistemas de apoyo necesarios). (ii) Desarrollo del software necesario para el funcionamiento del sistema. (iii) Efectuar diversas pruebas de funcionamiento para comprobar la viabilidad del sistema y de las soluciones tecnol´ogicas escogidas. 19
1.3. Estructura del documento A lo largo del documento se explicar´an gradualmente las tecnolog´ıas empleadas. En primer lugar se dar´a un enfoque global de la soluci´on que se ha ideado para una comunicaci´on aire-agua. Despu´es, tras un punto de vista te´orico sobre las comunicaciones a´ereas y subacu´aticas, se estudiar´an las tecnolog´ıas complementarias que formar´an parte de los m´odulos principales y las distintas opciones contempladas, donde se explica cu´ales han sido escogidas y descartadas por temas de viabilidad y eficiencia. Una vez definidos los bloques adicionales del proyecto se explica el hardware y el software que se emplea en la codificaci´on de la informaci´on a transmitir. Explicadas las tecnolog´ıas que integra el proyecto, se exponen los m´odulos principales que componen el montaje final junto con sus diagramas de funcionamiento. Por ´ultimo, se exponen las pruebas realizadas, las conclusiones extra´ıdas de este trabajo y las l´ıneas de mejora. Adem´as, en este trabajo los Anexos se han definido como una gu´ıa r´apida que facilite la consulta del lector en cualquier momento sobre los componentes electr´onicos empleados. Figura 1.8: Estructura del documento. 20
Cap´ıtulo 2 Elecci´on y explicaci´on de las soluciones empleadas 2.1. Visi´on general En este apartado se explica el principio general de funcionamiento del sistema completo de comunicaci´on entre avi´on y submarino (o bien a´ereo - subacu´atico). La justificaci´on de la elecci´on de los medios de transmisi´on utilizados y de las tecnolog´ıas concretas empleadas se realizar´a en los siguientes apartados. El sistema en su conjunto cuenta con tres bloques fundamentales para la comunicaci´on. El primer bloque emula al sistema de comunicaci´on aerotransportado, donde se dispondr´a de un transceptor radio y el cual se explica m´as en detalle en la secci´on 3.1. El bloque final es el submarino y cuenta con un sistema transceptor ac´ustico. Este bloque se analiza en detalle en la secci´on 3.3. El bloque intermedio y encargado de ser el nexo del primer y ´ultimo bloque es la boya. La boya se encarga de transmitir la comunicaci´on v´ıa radio con el equipo a´ereo y v´ıa ac´ustica con el submarino como se explica en la secci´on 3.2. Tras comentar brevemente las caracter´ısticas de los enlaces y los nodos del sistema de comunicaci´on, se procede a explicar el funcionamiento b´asico de la transmisi´on de datos. Para iniciar la comunicaci´on el avi´on env´ıa un identificador al submarino(este sistema de identificaci´on no se ha implementado en el c´odigo de este proyecto para no complicar m´as la transmisi´on de datos). Si el identificador es correcto se comienza con la transmisi´on de datos entre ambos extremos a trav´es de la boya. El submarino adem´as podr´a pedirle la ubicaci´on GPS a la boya (ubicaci´on que la boya obtendr´a con el m´odulo GPS que lleva instalado). La informaci´on proporcionada por el GPS podr´a ser utilizada por el submarino para saber su ubicaci´on (para mayor precisi´on se podr´ıa realizar triangulaci´on utilizando los datos de ubicaci´on de m´ultiples boyas). Las peticiones de GPS1y los mensajes se escriben en c´odigo ASCII y se codifican en Morse en todas las comunicaciones. La codificaci´on se realiza de manera autom´atica por un programa para cumplir con los requisitos de la comunicaci´on. El c´odigo Morse resultante se traduce a dos tonos de frecuencias distintas para definir el punto y la raya; de este modo, el receptor submarino distinguir´a el c´odigo seg´un la frecuencia que 1De la codificaci´on y transmisi´on de la ubicaci´on GPS se encargar´a ´ıntegramente la boya con el equipo electr´onico que esta incluye. 21
reciba en cada instante de tiempo. En la Figura 2.1 se ilustra el funcionamiento general. Figura 2.1: Esquema del funcionamiento global del sistema de comunicaci´on basado en boyas. La Figura 2.1 explica el funcionamiento b´asico del sistema. Seg´un los trayectos: Trayecto 1-2 (naranja): comunicaci´on radio entre el m´odulo transmisor radio instalado en la caja del avi´on y el m´odulo receptor radio instalado en la boya. Trayecto 3-4 (verde): comunicaci´on mediante ondas ac´usticas entre el m´odulo transmisor ac´ustico instalado en la caja de la boya y el m´odulo receptor ac´ustico instalado en la caja del submarino. Trayecto 5-6 (morado): comunicaci´on mediante ondas ac´usticas entre el m´odulo transmisor ac´ustico instalado en la caja del submarino y el m´odulo receptor ac´ustico instalado en la caja de la boya. Trayecto 5-6 (blanco): comunicaci´on mediante ondas ac´usticas entre el submarino y la boya. Transmite la petici´on de la ubicaci´on GPS. Trayecto 3-4 (negro): comunicaci´on mediante ondas ac´usticas entre la boya y el submarino. Transmite la respuesta con la ubicaci´on GPS pedida por el submarino a la boya. 22
Trayecto 7-8 (marr´on): comunicaci´on radio entre el m´odulo transmisor radio instalado en la caja de la boya y el m´odulo receptor radio instalado en la caja del avi´on. 2.2. Elecci´on de los canales de transmisi´on adecuados y de las tecnolog´ıas empleadas En este apartado se explicar´an los posibles mecanismos f´ısicos de comunicaci´on que podr´ıan emplearse para llevar a cabo el sistema propuesto (v´ıa luz, radio o ac´ustico) tanto en medio a´ereo como en el subacu´atico y se justificar´a la elecci´on realizada anteriormente. Adem´as, se discutir´an diferentes opciones tecnol´ogicas para la materializaci´on de dicha comunicaci´on (tipos de transmisores de radio y soluciones para el enlace ac´ustico), eligiendo justificadamente algunas de ellas. La concreci´on del uso del hardware utilizado y del software necesario para hacerlo funcionar, cumpliendo las especificaciones del sistema marcadas en el apartado de objetivos, se expondr´a despu´es de este apartado. Para lograr este sistema de comunicaci´on entre dos medios se han estudiado y analizado diversas implementaciones posibles. Buscando siempre la soluci´on ´optima se exponen los sistemas desarrollados, tanto los que han sido seleccionados finalmente, como los que han sido descartados por temas referentes a su viabilidad y eficiencia, para dar lugar a la tecnolog´ıa m´as adecuada para cumplir con una labor espec´ıfica en este proyecto. 2.2.1. Tecnolog´ıas subacu´aticas Se comienza analizando sistemas de comunicaciones subacu´aticas, ya que supone el mayor reto tecnol´ogico. Entre los m´ultiples sistemas que se han desarrollado se centra el estudio en dos implementaciones principales. La primera se basa en transmisi´on de informaci´on mediante ondas ac´usticas, las cuales presentan unas carcater´ısticas id´oneas para propagarse largas distancias por el agua. La segunda implementaci´on se basa en transmisi´on mediante ondas electromagn´eticas, tanto dentro como fuera del espectro visible, de las cuales se analizaron en detalle los sistemas actuales disponibles. R´apidamente se descartaron los sistemas radio, dado que las implementaciones actuales precisan antenas terrestres demasiado grandes como para ser aerotransportadas(debido a las largas longitudes de onda que se emplean para que la onda pueda propagarse suficiente distancia en el agua). Descartados los sistemas radio de longitudes de onda elevadas se procede a estudiar qu´e es lo que sucede cuando una onda electromagn´etica en otras longitudes de onda alcanza la interfaz entre los medios. Cuando la onda incide con un ´angulo superior al ´angulo cr´ıtico θc, esta se refleja en su totalidad (v´ease la particularizaci´on de la Ley de Snell en (2.1)) y no es capaz de pasar al segundo medio. Para ´angulos inferiores a θc, se transfiere parte de la potencia de la onda al segundo medio, mientras que el resto se refleja y solo para una incidencia ortogonal al medio se consigue una transferencia casi 23
total de potencia. θc=arcsin(n2/n1) (2.1) Donde n1es el ´ındice de refracci´on del agua, n2el ´ındice de refracci´on del aire (con n1> n2) y donde θces el ´angulo cr´ıtico. Para el caso del agua salada el ´ındice de refracci´on var´ıa seg´un la presi´on, la salinidad, la cloricidad, la temperatura y la longitud de onda. Los valores t´ıpicos var´ıan seg´un las tablas recogidas en el estudio de Roswell W. Austin y George Halikas[17]. Para 10oC, salinidad de 34,998 %, cloricidad de 19,373 % y a presi´on atmosf´erica, se obtiene un n1= 1,35040, para el caso del aire tenemos un n2= 1,00029 (sabiendo que el ´ındice de refracci´on del vac´ıo es n0= 1). Lo que nos da un θc= 47,79416o, ´angulo de incidencia a partir del cual se producir´a reflexi´on total de cualquier tipo de onda electromagn´etica. Y a pesar de que parte de la potencia de la onda se transfiera para ´angulos inferiores al θc, se tendr´a que lidiar con la fuerte atenuaci´on del agua salina. Otro problema debido al cambio de medio es la refracci´on de la onda, que representa la fracci´on de potencia de se˜nal que es capaz de transmitirse al segundo medio y la cual sufre una desviaci´on respecto del ´angulo de incidencia. Es cierto que esto es un problema ´unicamente para un haz muy directivo (como podr´ıa ser el de un l´aser), dado que para la incidencia de una onda plana la informaci´on llegar´ıa a pesar de la refracci´on (suponiendo que la atenuaci´on no acabase con su propagaci´on). En este punto se puede decir que utilizar una comunicaci´on radio ´ıntegra que atraviese de un medio al otro en la banda de frecuencias en cuesti´on no es viable y se procede a estudiar la propagaci´on si el foco de emisi´on se encuentra ya inmerso en el agua. Tras analizar las posibilidades se centra el estudio en la banda de frecuencia m´as prometedora para una comunicaci´on subacu´atica, las ondas electromagn´eticas en el espectro visible generadas directamente dentro del agua, evitando as´ı los problemas de reflexi´on y refracci´on anteriormente comentados. Se muestra en la Figura 2.2 la idea de un enlace ´optico directo y del enlace que se emplear´ıa con nuestro sistema basado en boyas. Para implementar el sistema de comunicaci´on en estas longitudes de onda se pens´o en utilizar LEDs RGB y fotodiodos, es decir, uso de tecnolog´ıa VLC (Visible Light Communication). Para analizar la viabilidad de estos sistemas se consultan las publicaciones de Chao Wang,Hong-Yi Yu,Yi-Jun Zhu, ”A long distance underwater visible light communication system with single photon avalanche diode”[13], Grobe et al, ”High-Speed Visible Light Communication Systems”[10] y Modelos de Propagaci´ on de Se˜ nales Ac´ usticas en Entornos Subacu´ aticos[9] del departamento de electr´onica de la Universidad de Alcal´a. Estas publicaciones arrojan resultados poco esperanzadores en cuanto al empleo de ondas electromagn´eticas para cumplir con las necesidades de nuestro sistema de comunicaci´on, tales como que las ondas electromagn´eticas sufren atenuaciones del orden del dB/m para una frecuencia de 30 KHz, mientras que una onda ac´ustica sufre una atenuaci´on del orden de dB/Km para esa misma frecuencia. Por otro lado, las frecuencias ´opticas se ven altamente 24
Tecnolog´ıa subacu´atica empleada Se utilizar´an entonces para desempe˜nar la labor de comunicaci´on en un entorno subacu´atico micr´ofonos y altavoces impermeabilizados extra´ıdos de tel´efonos antiguos (Figura 2.8). El micr´ofono es de carb´on, por lo que cuenta con una c´apsula con gr´anulos de carb´on cuya resistencia es variable seg´un como se presionen estos gr´anulos. Como las ondas ac´usticas comprimen la capsula con una determinada frecuencia la resistencia de la c´apsula var´ıa a esa frecuencia y por consiguiente var´ıa la corriente que la atraviesa. Precisamente por estar dise˜nados de esta forma estos micr´ofonos no tiene polaridad a tener en cuenta al conectarlos a los equipos del proyecto. El altavoz es electromec´anico, es decir, se basa en un electroim´an que al ser alimentado con una se˜nal anal´ogica con una determinada frecuencia atrae una l´amina met´alica que hace oscilar el aire a esa misma frecuencia. Figura 2.8: Se muestran un altavoz electromec´anico y un micr´ofono de carb´on de los empleados en la transmisi´on ac´ustica subacu´atica. 31
Se escogen los altavoces y micr´ofonos extra´ıdos de los tel´efonos dado que ambos dispositivos son muy resistentes y toleran condiciones extremas, lo cual los convierte en excelentes candidatos para las pruebas a las que van a ser sometidos. Estos elementos ac´usticos no est´an dise˜nados para una transmisi´on subacu´atica y al impermeabilizarlos pierden potencia en la emisi´on y sensibilidad en la recepci´on. Por consiguiente, ambos dispositivos necesitar´an de una amplificaci´on. En cuanto al m´etodo elegido para transmitir la informaci´on se usar´a una doble traducci´on mediante software, en la cual se pasar´a un mensaje escrito en ASCII por el usuario a Morse y el c´odigo Morse se traducir´a por dos tonos de distintas frecuencias asociados al punto y a la raya (tal y como se ha explicado en la secci´on 2.1). Este m´etodo se ha escogido debido a que en un medio acu´atico supone un sistema de comunicaci´on m´as robusto que transmitir la misma frecuencia y distinguir por la duraci´on del tono, tal y como se emplea el c´odigo Morse donde la raya tiene una duraci´on temporal superior a la del punto. Adem´as, optimizando este sistema se puede transmitir a mayor velocidad dado que los tonos duran el mismo tiempo. En cuanto a las frecuencias elegidas para la transmisi´on se han escogido acordes a la respuesta frecuencial que presentan los dispositivos ac´usticos empleados. Dado que fueron dise˜nados para el rango audible (ya que se han extra´ıdo de tel´efonos antiguos) te´oricamente se pueden escoger frecuencias arbitrarias comprendidas entre los 20 Hz y los 20 KHz. En la pr´actica los micr´ofonos y altavoces no tienen una respuesta frecuencial plana y se tendr´an que ajustar las frecuencias elegidas al rango ´optimo de los equipos. Los dispositivos elegidos no cubren todo este rango ya que est´an optimizados de 300 Hz a 3400 Hz, por consiguiente se realizar´a un estudio previo de la respuesta frecuencial de los componentes a emplear antes de escoger las frecuencias 2. Se muestra en la Figura 2.9 un diagrama de frecuencias empleadas en cada canal para cada s´ımbolo. Se ha procurado mantenerse en el rango ´optimo de los equipos, teniendo en cuenta las posibilidades t´ecnicas para desarrollar los montajes a cada frecuencia y la necesidad de separar los canales para evitar que se interfieran. En la Figura 2.9 se representa el rango de frecuencias audible te´orico, en el cual se distribuyen las frecuencias escogidas para nuestros dos s´ımbolos, el punto y la raya (en el sistema Morse implementado). En ambas direcciones la frecuencia m´as baja se emplea para representar el punto y la frecuencia m´as alta para la raya. Si bien recorrer la circunferencia es barrer en frecuencias, esta se utiliza para representar un mismo nivel de tensi´on que es compartido por todos los s´ımbolos, es decir, el sistema no realiza ninguna discriminaci´on por nivel de tensi´on de la se˜nal recibida. De esta forma se determina teniendo en cuenta las limitaciones de los trasnductores escogidos y la separabilidad de las frecuencias en recepci´on: Frecuencia de 1800 Hz: define el s´ımbolo punto en el sistema de codificaci´on Morse en el canal de subida (direcci´on avi´on). Frecuencia de 2800 Hz: define el s´ımbolo raya en el sistema de codificaci´on Morse en el canal de subida (direcci´on avi´on). 2Una mala elecci´on de frecuencias para los equipos que se vayan a emplear puede provocar que el sistema no funcione correctamente 32
Figura 2.9: Modulaci´on 2-FSK empleada en el enlace de subida (direcci´on avi´on) y en el enlace de bajada (direcci´on boya). Frecuencia de 4100 Hz: define el s´ımbolo punto en el sistema de codificaci´on Morse en el canal de bajada (direcci´on boya). Frecuencia de 7000 Hz: define el s´ımbolo raya en el sistema de codificaci´on Morse en el canal de bajada (direcci´on boya). 2.2.2. Tecnolog´ıas a´ereas En este punto por suerte se cuenta con numerosas opciones, dado que la transmisi´on radio a trav´es del aire es un sistema ampliamente extendido. Para estudiar la transmisi´on a´erea y las bandas de radiofrecuencia se consulta el libro Newnes Guide to Radio and Communications Technology[15, cap. 2, 5 y 6]. Para el estudio de los sistemas radio se comenz´o analizando unos m´odulos de transmisi´on inal´ambrica en frecuencias entre 2,4GHz y 2,5GHz (que es el rango de frecuencias de corta distancia en el que se encuentra una de las bandas ICM (industrial, cient´ıfica y m´edica) de uso libre con una alta disponibilidad tecnolog´ıa de bajo coste[15, cap. 11, p´ag. 282]3). En concreto, se analiz´o el m´odulo NRF24L01 [7]. Existen dos versiones de m´odulos que incorporan el NRF24L01, uno con antena integrada y un alcance m´aximo de unos 20-30 metros (Figura 2.10), y la versi´on de alta potencia que incorpora amplificador y antena externa, con un alcance m´aximo de 700-1000 metros (Figura 2.11). Ambos son m´odulos ampliamente empleados y de bajo coste; por tanto, se decide evaluar la aplicaci´on del m´odulo que integra amplificador y cuenta con una antena externa. Un factor de gran relevancia es la alimentaci´on del m´odulo, donde ser´a necesario que 3Las otras bandas m´as empleadas son en 915 MHz y 5 GHz 33
se alimente a 3,3V4. Figura 2.10: Transceptor NRF24L01 con antena impresa. Figura 2.11: Transceptor NRF24L01 con antena externa. El m´odulo de transmisi´on en la banda de 2,4GHz a 2,5GHz tiene un inconveniente: A pesar de ser un m´odulo que integra la capacidad de trabajar como transmisor y receptor, este m´odulo no es completamente full-duplex, dado que intercala el papel de transmisor y receptor con su pareja. Esta ´ultima caracter´ıstica impulsar´a el proyecto a estudios de otros m´odulos para desarrollar el papel de transceptor full-duplex. A pesar de que este m´odulo no sea muy ´util para la aplicaci´on que se busca en el proyecto, cumple perfectamente como transceptor con una tecnolog´ıa de reparto de la capacidad del enlace basada en TDM (Time Division Multiplexing). A continuaci´on, se procede a analizar los puntos m´as relevantes del c´odigo empleado para conectar ambos transceptores. El c´odigo no es muy complejo y se puede encontrar toda la informaci´on pertinente a las funciones utilizadas en GitHub[11]. Se puede localizar el c´odigo al completo en el Anexo B.3. Examinando el c´odigo cabe resaltar unas l´ıneas de especial importancia como las que se adjuntan. 4Se puede alimentar de 1,9V a 3,6V.NO ALIMENTAR A 5V como otros m´odulos del mercado; esto podr´ıa da˜narlo de manera irreversible. 34
1const byte addresses [][6] = {" 00001 " , " 00002 " }; En esta l´ınea se declara un array que puede contener hasta 6 direcciones, donde todas ellas deben compartir los primeros 32 bits y solo el byte menos significativo debe ser distinto (los ceros a la izquierda tambi´en se codifican). Estas direcciones son todas las que el transceptor puede estar escuchando simult´aneamente, y por tanto, establecer comunicaci´on con ellas. En el caso de nuestro sistema podr´ıa usarse para atender m´ultiples peticiones de distintos aviones. No obstante, para probar el funcionamiento del sistema de comunicaci´on radio en la banda de 2,4GHz a 2,5GHz emplearemos ´unicamente dos m´odulos. Para la coordinaci´on entre los m´odulos se emplean las direcciones que se han declarado para determinar qui´en se encuentra en estado de transmisor y qui´en en estado de receptor. Para asignar estas direcciones hay que tener en cuenta que la direcci´on que uno de los m´odulos use para escribir tiene que estar siendo utilizada por el otro m´odulo para escuchar en ese mismo intervalo de tiempo. Se puede apreciar en el c´odigo c´omo para el m´odulo 1 se emplea una direcci´on de escritura 00002 (que se corresponde con la direcci´on de lectura del m´odulo 2) y una de lectura 00001 (que se corresponde con la direcci´on de escritura del m´odulo 2). Adem´as del n´umero de tuber´ıa (se puede elegir 0-5). Se elige el n´umero 1, ya que el n´umero 0 tiene otros usos por parte del programa5. 1// PARA EL MODULO 1 2radio . openWritingPipe ( addresses [1]) ; // 00002 3radio . openReadingPipe (1 , addresses [0]) ; // 00001 4// PARA EL MODULO 2 5radio . openWritingPipe ( addresses [0]) ; // 00001 6radio . openReadingPipe (1 , addresses [1]) ; // 00002 Se adjunta una imagen del montaje y se analiza el conexionado como se muestra en la Figura 2.12. Tambi´en se adjunta una captura de pantalla del montaje funcionando en la Figura 2.13. El cable rojo (pin VCC del m´odulo nRF24L01) se conectar´a a 3.3V. El cable negro (pin GND del m´odulo nRF24L01) a la GND com´un del montaje electr´onico total. El cable morado (pin CE del m´odulo nRF24L01) al pin DIGITAL 7(debe estar declarado en el c´odigo del programa). El cable azul (pin CSN del m´odulo nRF24L01) al pin DIGITAL 8(debe estar declarado en el c´odigo del programa). El cable marr´on (pin MISO del m´odulo nRF24L01) al pin DIGITAL 50. 5Importante: La tuber´ıa numero 0 es usada tambi´en por la tuber´ıa de escritura, con lo cual, antes de escuchar en este n´umero se debe cerrar la escritura. 35
Figura 2.12: Montaje del sistema transceptor en la banda de 2.4GHz a 2.5GHz. El cable blanco (pin MOSI del m´odulo nRF24L01) al pin DIGITAL 51. El cable gris (pin SCK del m´odulo nRF24L01) al pin DIGITAL 52. Figura 2.13: Captura de pantalla que muestra el funcionamiento del programa para los m´odulos nRF24L01. En la captura de pantalla (Figura 2.13), se puede observar c´omo los m´odulos se dividen los tiempos para transmitir y recibir informaci´on. Se muestra la salida Serial 36
de uno de los m´odulos, en este caso el que se ha denotado como m´odulo 1 en el c´odigo (Anexo B.3). El m´odulo 1 toma el rol de transmisor y comienza transmitiendo por el puerto 00002 el mensaje ”TXRX-1”; seguidamente, se pone a escuchar por el puerto 00001. Tras no recibir informaci´on por el puerto 00001 en la ranura de tiempo prefijada en el c´odigo, se muestra por pantalla el mensaje ”No hay nada”. Pasado este tiempo de espera para recibir informaci´on, se pasa de nuevo al estado de transmisor. Una vez transmitido el mensaje en la ranura de tiempo asignada en el c´odigo por el usuario, pasar´a de nuevo a la escucha por el puerto 00001. Esta vez s´ı que recibe informaci´on, y tras notificarlo con un mensaje de ”Hay algo”, se muestra el mensaje recibido (el mensaje transmitido por el m´odulo 2): ”TXRX-2”. La secuencia de intercambio de papeles entre los m´odulos contin´ua indefinidamente. Explicado el funcionamiento del m´odulo se procede a analizar su viabilidad en el proyecto. El m´odulo NRF24L01, a pesar de tener un alcance tan elevado como se ha comentado anteriormente, presenta numerosos factores que pueden llegar a reducir esta distancia hasta unos 2-3 metros, sin embargo no es un factor de gran relevancia en un prototipo que emplea una banda de frecuencias de corta distancia que no se utilizar´ıa en una implementaci´on real (en este caso la banda de VHF-FM se asemeja m´as a las bandas de frecuencia militares que se usar´ıan). Este m´odulo adem´as necesita visi´on directa, pero como se usar´a en espacio abierto este aspecto no dar´ıa ning´un problema en una futura implementaci´on. En cuanto al impacto de dise˜no sobre la boya, se planific´o en una primera aproximaci´on al sistema final, que este contase con la tecnolog´ıa necesaria para traducir a Morse un mensaje transmitido v´ıa radio en ASCII por el m´odulo NRF24L01. Se esogi´o esta estrategia de transmitir caracteres ASCII debido a que el m´odulo NRF24L01 no est´a pensado para proporcionar a su salida se˜nales de audio (en este caso los tonos que diferencian el punto y la raya). Entonces, esto supon´ıa que tanto la tarea de traducir el mensaje en ASCII, como la de generar los tonos6hacia el receptor submarino reca´ıa en la boya y dado que la boya debe de ser un sistema lo m´as econ´omico y eficiente posible, es razonable pensar que la carga computacional debe recaer en el avi´on y en el submarino; con intenci´on de reducir al m´aximo el consumo y asegurar as´ı un mayor tiempo de autonom´ıa a la boya. Es entonces cuando se decide usar el m´odulo transmisor de radio KT0803K en conjunto con el m´odulo receptor de radio TEA5767, los cuales cuentan con un puerto jack para introducir y extraer respectivamente la se˜nal de audio y cuyas prestaciones en cuanto a alcance y consumo son similares. Tecnolog´ıa a´erea empleada Se procede a explicar los m´odulos de transmisi´on y recepci´on de radio empleados, el KT0803K y el TEA5767 respectivamente. Se comienza a desarrollar el m´odulo transmisor que trabaja en la banda de FM comercial, lo cual implica que se usa una banda de frecuencias m´as bajas que el m´odulo NRF24L01 y por consiguiente es m´as robusta ante interferencias por objetos (aunque como ya se ha comentado este sistema se utiliza en espacio abierto). Este m´odulo transmisor radio cuenta con una gama de ver- 6Estos tonos representan el punto y la raya del c´odigo Morse. Se desarrolla m´as en detalle a lo largo del documento. 37
siones que mejoran la SNR y la detecci´on de silencios para mejorar el consumo, como la KT0803M y la KT0803L. Para este proyecto se ha empleado el de menor gama, la versi´on KT0803K ya que consigue cumplir con las especificaciones para operar como sistema de transmisi´on radio en este proyecto. La idea es conseguir una comunicaci´on full-duplex transmitiendo a frecuencias distintas entre los dos extremos de la comunicaci´on RF (avi´on-boya) y recibiendo la informaci´on en sus respectivas frecuencias. De este modo la comunicaci´on entre ambos extremos es constante y no requiere de ning´un sistema que reparta la capacidad del enlace; es decir, ambos transmiten y reciben aprovechando todo el ancho de banda del canal. Se decide as´ı pues, usar la frecuencia f1= 87.5MHz para la comunicaci´on avi´on-boya y la frecuencia f2= 108MHz para la comunicaci´on boya-avi´on, tal y como se presenta la Figura 2.14. Figura 2.14: Esquema de transmisi´on FM. El m´odulo transmisor radio empleado es el modelo FM Transmitter v2.0 (100mW de potencia; 17mA de corriente de operaci´on) de la casa Elechouse que permite un recorrido desde los 70MHz hasta los 108MHz. El m´odulo transmisor utilizado se muestra en la Figura 2.16. Para transmitir se extrae una antena telesc´opica de una radio comercial reutilizada, ya que el m´odulo no cuenta con ninguna. Hasta la obtenci´on de la antena telesc´opica se utiliz´o un cable cuya longitud se puede calcular mediante la ecuaci´on (1.1) ya empleada en la Introduci´on. De modo que λ=c 97,75MHz = 3,0669m y dado que 3m es poco pr´actico al ser demasiada longitud y elevar la impedancia de antena, se emplea un cuarto de onda λ/4 = 76,673cm, que usando un plano de tierra (PEC, conductor perfecto) para duplicar la longitud efectiva se puede reducir a una antena de 38,337cm[15, c´ap. 4]. Se ilustra este efecto en la Figura 2.15. Se adjunta tambi´en el esquema del integrado m´as relevante (Figura 2.17), el KT0803K [5]; encargado de la generaci´on de la portadora, la modulaci´on y la amplificaci´on de 38
Figura 2.15: M´etodo para duplicar el tama˜no efectivo de una antena para la banda de FM. Figura 2.16: Transmisor FM de la casa ELECHOUSE. potencia en el transmisor. En cuanto al software, se recurre al uso de la librer´ıa FMTX7, que simplifica la comunicaci´on con el m´odulo. La frecuencia de transmisi´on se fija en el c´odigo y el Arduino utiliza las salidas anal´ogicas SDA(Serial Data Line) y SCL(Serial Clock Line) (protocolo I2C (Inter-Integrated Circuit)) para controlar la comunicaci´on con el m´odulo transmisor mediante el pin SDA y el clocking (reloj) mediante el SCL. Es pues tarea del m´odulo de FM realizar el proceso de transmisi´on de la se˜nal anal´ogica recibida a trav´es del jack de entrada que incorpora. 7NOTA IMPORTANTE: Debido a un problema de incompatibilidad software de la librer´ıa, esta NO funciona para versiones de IDE de Arduino superiores a la 1.8.8 39
Figura 2.17: Diagrama de bloques del integrado principal del Transmisor FM. Se observa que es un sistema de modulaci´on FM basado en sintetizador de frecuencias, lo que estabiliza la frecuencia portadora. El c´odigo simplificado para el uso en nuestro sistema es realmente sencillo; se adjunta con los comentarios pertinentes para su comprensi´on 8. 1# include <FMTX .h> // Libreria para controlar el transmisor FM 2float fm_freq = 108; // Frecuencia de transmision 3void setup (){ 4Serial.begin(9600);// Inicializa el puerto serie a 9600 baudios ( valor por defecto ) 5Serial . print ("FM - TX TFG \r\n"); // Imprime por el monitor serie 6 7fmtx_init ( fm_freq , EUROPE );// Para transmitir en el rango de frecuencias europeas 8 9Serial . print (" Canal : "); 10 Serial . print (fm_freq ,1) ; 11 Serial . println ("MHz"); 12 } 13 void loop(){ 14 // Podria usarse para controlar constantemente el puerto serie y variar en tiempo real la frecuencia de transmision , por ejemplo . Dado que para nuestro sistema esto no tiene mayor relevancia se deja simplificado el codigo . 15 } 8Tambi´en se encuentra en el Anexo B.1. 40
Figura 2.24: Esquema electr´onico del conexionado del integrado CD4046B. Queda entonces por comentar la funci´on del resto de elementos pasivos del circuito. En primer lugar se analiza el conjunto R3 y C2 (formando un filtro paso bajo) conectado entre las patillas 2 (salida del comparador de fase) y 9 (entrada al VCO). Este conjunto RC (cuya respuesta frecuencial queda definida por la funci´on de transferencia F(s) (2.4)) fija dos par´ametros fundamentales del PLL, que son: la wn(pulsaci´on natural) y la ξ(coeficiente de amortiguamiento). Adem´as este bloque RC integra la salida pulsada del comparador digital de fase (puerta XOR) 10 de forma que se otorga un nivel de tensi´on idealmente continuo11 a la entrada del VCO. Se observa la localizaci´on de este bloque en el diagrama de la Figura 2.25. Figura 2.25: Diagrama de bloques del PLL. F(s) = 1 1 + sRC (2.4) impedancia, el recorrido comienza en 0 Hz. 10Una se˜nal de pulsos cuadrados con anchura variante que indica c´omo de diferente es la fase de la se˜nal de entrada con respecto la fase de la se˜nal de referencia. 11En la pr´actica se puede observar que presenta un rizado. 47
Estos par´ametros afectan al tiempo que tarda el PLL en engancharse a una frecuencia de entrada (que est´e en su recorrido de frecuencias), adem´as de definir la funci´on de transferencia del PLL H(s)(2.5). Esta funci´on de transferencia es tipo paso bajo (como se ilustra en la Figura 2.26) y presenta un codo para la pulsaci´on natural wn. Para frecuencias de entrada superiores a wn(y tratando casos de frecuencias dentro del margen de operaci´on) la amplitud de la excursi´on de fase del PLL se ver´a atenuada por un factor 40dB/d´ecada, es decir, el PLL conseguir´a seguir a la entrada, pero a medida que esta frecuencia se aleje de la pulsaci´on natural, la amplitud de la excursi´on de fase de la se˜nal de salida sufrir´a cada vez una mayor atenuaci´on. Figura 2.26: Funci´on de transferencia del PLL. H(s) = φ0(s) φr(s)=KF(s) s+KF(s), donde K = 2πkdkv 12 (2.5) Siguiendo las f´ormulas (2.6) se puede determinar que a menor pulsaci´on natural wn, es decir, cuanto m´as paso bajo sea la funci´on de transferencia del PLL (Figura 2.26) implicar´a una respuesta m´as lenta por parte del PLL a la hora de engancharse a una frecuencia que est´e dentro de su recorrido. Tambi´en se puede extraer la conclusi´on de que a mayor coeficiente de amortiguamiento ξ, el PLL oscila menos antes de engancharse a la frecuencia de entrada. Este fen´omeno se puede observar en la Figura 2.27, donde se suele considerar que el PLL est´a enganchado para valores entorno a ±0,1 del valor unidad θ0(t) = 1. τ=RC;ωn=sK τ;ξ=1 2τωn (2.6) 12Donde kdes la pendiente de la funci´on de transferencia del comparador de fase en (V/rad)y kvla pendiente de la funci´on de transferencia del VCO en (Hz/V). 48
Figura 2.27: Respuesta al escal´on de un sistema tipo I de orden II. Si ahora se sustituye (2.5) en (2.6): H(s) = ω2 n s2+ 2ξωns+ω2 n (2.7) Por ´ultimo, se comenta el bloque con dos condensadores CF1, CF2 y L. Su funci´on principal es filtrar por completo el rizado (Figura 2.29, Figura 2.30) del nivel de continua que aparece por la patilla 10 (que ser´a 0,7V menor que la de la patilla 9 por ser la misma salida tras un seguidor de emisor). La se˜nal que se obtiene en la patilla 9 est´a relacionada con la salida del filtro del bucle F(s) y dada la naturaleza digital del detector de fase, se produce un rizado digital sobre la componente continua de la se˜nal obtenida cuya frecuencia est´a relacionada con la de la se˜nal de entrada. Este rizado ocasiona errores en la medici´on por parte del Arduino dado que la excursi´on del nivel de tensi´on llega a ser muy significativa y alcanza valores de tensi´on que se alejan mucho del esperado para la frecuencia a la que se encuentra enganchado el PLL. Se adjunta una imagen de ejemplo de uno de los montajes en la Figura 2.28. 49
Figura 2.28: Montaje del integrado CD4046B para ser usado como PLL. Figura 2.29: Funci´on del filtro a la salida de la patilla 10 del PLL. Figura 2.30: Ilustraci´on del rizado de la se˜nal a la salida de la patilla 10. En amarillo una se˜nal de entrada de 5 KHz (patilla 14), en azul la se˜nal de tensi´on con rizado a la salida de la patilla 10. Tras el an´alisis te´orico se procede a explicar el proceso de detecci´on de tonos. Siguiendo el esquema electr´onico de la Figura 2.24 la se˜nal amplificada se introduce en la patilla 14. Esta se˜nal ser´a un tono cuya frecuencia var´ıa dependiendo de si se est´a 50
recibiendo un punto o una raya y debe tener suficiente amplitud como para que el PLL pueda funcionar. El PLL se engancha a la frecuencia de esta se˜nal y genera un nivel de tensi´on proporcional y un´ıvoco para cada frecuencia de entrada a la salida de la patilla 10 (o como ya se ha explicado, de la patilla 9). Dado que estos niveles de tensi´on caracterizan por completo la frecuencia que se est´a recibiendo, se emplea para realizar una lectura con el Arduino y as´ı poder diferencia el c´odigo Morse mediante tonos de distintas frecuencias. Receptor del tono de petici´on GPS Para la solicitud GPS del submarino se emplear´a un esquema PLL como el analizado en el punto anterior 2.2.3. El dise˜no del PLL se adapta para detectar la petici´on del submarino mediante un tono de 500 Hz. El conjunto componentes electr´onicos pasivos empleado en el esquema electr´onico del PLL para poder engancharse a dicha frecuencia se recoge en la Tabla 2.1. CD4046B (para GPS) L 1 mH C1 10 nF C2 6,8 nF CF1 10 nF CF2 100 nF R1 270 KΩ R2 ∞ R3 82 KΩ Tabla 2.1: Los valores RC empleados para el dise˜no del PLL basado en el circuito con el integrado CD4046B para detectar el tono de 500 Hz. 51
2.3. Desarrollo y an´alisis del m´odulo de geolocalizaci´on En este apartado se estudia el modo de integrar un sistema GPS en la boya. Este m´odulo entra en funcionamiento cuando el submarino solicita la ubicaci´on GPS a la boya. Implementar un m´odulo GPS es de especial relevancia en el proyecto, dado que la posibilidad de geolocalizaci´on por parte del submarino es una caracter´ıstica estrat´egica adicional muy importante que a˜nadir al sistema de comunicaci´on. Para implementar esta funcionalidad se emplea un m´odulo comercial GPS, en concreto, el modelo GPS6MV2. Este m´odulo se conecta con el microcontrolador Arduino y de una forma muy sencilla y eficaz se obtienen con precisi´on datos como: la ubicaci´on (coordenadas), la fecha y hora actual, el n´umero de sat´elites visibles, la altitud con respecto a nivel del mar (en este proyecto dado que es un sistema de boyas no ser´a de utilidad13) e incluso la velocidad a la que se desplaza el dispositivo que lo incorpora. Un factor con gran relevancia es la zona donde se use el dispositivo, dado que en zonas de interior el funcionamiento se puede demorar hasta 15 minutos en lo que el m´odulo GPS localiza sat´elites; por tanto, se recomienda su uso en espacio abierto para un funcionamiento m´as din´amico que se ajuste mejor a los cambios que pueda sufrir el m´odulo. Debido a que el m´odulo se utilizar´a en espacio abierto esto no resulta un inconveniente, sin embargo, es un dato a tener en cuenta a la hora de realizar pruebas antes de desplegarlo. En cuanto a la comunicaci´on entre el Arduino y el m´odulo GPS se utilizar´a un puerto serie o se habilitar´an los pines correctos mediante software con la librer´ıa SoftwareSerial [3] 14. Se ha realizado el montaje con las dos placas m´as conocidas y usadas de Arduino (la UNO y la MEGA2560). En la Figura 2.31 se muestra uno de los montajes. El montaje a nivel hardware es realmente sencillo, dado que solo requiere un conexionado b´asico con la alimentaci´on ofrecida por el Arduino (o una fuente independiente15) y con un puerto Serial16 para la comunicaci´on serie bit a bit con la placa Arduino. Para mayor detalle y siguiendo el c´odigo de colores: El cable rojo (pin VCC del m´odulo GPS) se conectar´a a 3,3V o 5V. El cable negro (pin GND del m´odulo GPS) a la GND com´un del montaje electr´onico total. El cable azul (pin TX del m´odulo GPS) al pin DIGITAL 4. 13Para cualquier punto de la superficie terrestre se requiere una calibraci´on manual por parte del usuario. 14No todos los pines se pueden habilitar como puerto serie, dado que no todos permiten interrupciones de cambio. Esto depende de la placa de Arduino en uso, vease el apartado de Limitaciones en [3]. 15Siempre teniendo en cuenta que para el resto de elementos electr´onicos dependientes entre si se debe mantener la misma tierra. 16En este caso y seg´un [3], es necesario utilizar la librer´ıa SoftwareSerial y habilitar dos pines para la transmisi´on serie de datos. 52
Figura 2.31: Montaje del m´odulo GPS con la placa Arduino UNO El cable blanco (pin RX del m´odulo GPS) al pin DIGITAL 3. Sobre el software que permite extraer toda esta informaci´on, cabe resaltar la utilidad de usar la librer´ıa TinyGPS[4]. La necesidad de utilizar esta librer´ıa, surge como consecuencia de la dificultad que conlleva interpretar los datos que el m´odulo GPS env´ıa al Arduino. Se puede apreciar la diferencia en las figuras Figura 2.32 y Figura 2.33. Figura 2.32: Datos recogidos por el m´odulo GPS sin usar la librer´ıa TinyGPS 53
Figura 2.33: Datos recogidos por el m´odulo GPS con la librer´ıa TinyGPS Por ´ultimo, se facilita al lector el c´odigo utilizado para la extracci´on de la ubicaci´on, el dato de inter´es en este proyecto. El resto de datos se pueden extraer de forma an´aloga consultando la informaci´on de la librer´ıa TinyGPS. 1# include < SoftwareSerial .h>// Incluimos la libreria SoftwareSerial que nos permite declarar ciertos pines como puertos serie 2#include <TinyGPS.h>// Incluimos la libreria TinyGPS que nos ayuda a tener una extraccion de datos mas sencilla del modulo GPS 3 4TinyGPS gps;// Declaramos el objeto gps de la clase TinyGPS 5SoftwareSerial serialgps (4 ,3) ;// Declaramos el pin 4 Tx y 3 Rx ( nuevos puertos serie ) 6 7void setup (){ 8Serial . begin (115200) ; // Iniciamos el puerto serie a 115200 baudios , que es la velocidad de simbolos por segundo necesaria para mostrar los datos extraidos del modulo GPS 9serialgps . begin (9600) ;// Iniciamos el puerto serie por el cual se comunican el modulo GPS y el Arduino 10 } 11 12 void loop(){ 13 while ( serialgps . available () ){// Mientras haya datos disponibles en el puerto serie ... 14 int c = serialgps . read (); // Extraemos la informacion del puerto serie 15 16 if( gps . encode (c)){// Devuelve " true " cuando los nuevos datos se han descodificado completamente y se pueden utilizar . 17 float latitude , longitude ; 54
18 gps . f_get_position (& latitude , & longitude );// Obtenemos la latitud y la longitud 19 20 // Se imprime por el monitor serie del ordenador la informacion obtenida 21 Serial . print (" Latitud / Longitud : "); 22 Serial . print ( latitude ,5) ; 23 Serial . print (", "); 24 Serial . println ( longitude ,5); 25 } 26 } 27 } 2.4. Desarrollo hardware y software para la generaci´on de tonos 2.4.1. Modalidad de generaci´on de los tonos mediante hardware En este apartado se buscar´a una soluci´on para la generaci´on de tonos mediante hardware que se usar´a en la boya para transmitir sus coordenadas GPS en caso de que el submarino las pida. Se estudi´o la posibilidad de emplear un m´odulo generador de ondas cuadradas, triangulares y sinusoidales, el m´odulo AD9833, el cual se adjunta en la Figura 2.34. El uso de este m´odulo se desestim´o debido a que realizar esta funci´on con un VCO es un m´etodo m´as transparente (debido al estudio en profundidad que se realiza sobre el integrado CD4046B en este proyecto) y econ´omico. Figura 2.34: M´odulo generador de onda cuadrada, triangular y sinusoidal. Como segunda opci´on y definitiva se realiz´o una implementaci´on con el integrado 55
CD4046B(subsecci´on 2.2.3). Esta vez emple´andolo como un VCO al cual se le aplicar´a una tensi´on en la patilla 9, que estar´a controlada por un PIN digital de Arduino. De este modo, se obtendr´a una se˜nal cuadrada a la salida de la patilla 4 del CD4046B con una frecuencia proporcional a esa tensi´on de entrada. A pesar de ser una se˜nal cuadrada, al transmitir a tan alta frecuencia los tonos, los arm´onicos en los m´ultiplos impares del tono caer´an fuera del rango de enganche del PLL. Adem´as, la respuesta frecuencial del micr´ofono cae para frecuencias muy elevadas, con lo cual, no ser´a preciso filtrar los arm´onicos de la se˜nal cuadrada. Se ilustra el conexionado en la Figura 2.35. Figura 2.35: Esquema de conexionado del integrado CD4046B empleando su VCO. Con respecto a los valores de los componentes electr´onicos pasivos R1, R2 y C1, se escogen para que el VCO se mueva en el rango de frecuencias para una transmisi´on hacia el submarino, es decir 4100 Hz y 7000 Hz tal y como se explica en la subsecci´on 2.2.1. En cuanto a RA, RB y RC se despejan mediante un sistema sencillo en el cual se necesita obtener 1,4V cuando se ponga en alta (5V) un pin digital de Arduino y 3,2V cuando se ponga en baja (0V) este mismo pin. Se fija RB = 10 KΩ y se resuelven los sistemas que se adjuntan (2.8, 2.9). VA=V cc RB//RC RA+RB//RC ;dondeRB= 10KΩ, VA= 1,4V;V cc = 5V(2.8) VB=V cc RB RB+RA//RC , dondeRB= 10KΩ, VB= 3,2V;V cc = 5V(2.9) Los valores de todo el circuito se recogen en la Tabla 2.2: 56
Cap´ıtulo 3 Explicaci´on detallada del sistema de comunicaci´on basado en boyas 3.1. M´odulo transceptor aerotransportado El sistema que ir´a integrado en el avi´on est´a constituido por las tecnolog´ıas de transmisi´on-recepci´on radio en la banda de FM comercial explicadas en la subsecci´on 2.2.2. Si bien es cierto que en una implementaci´on real se usar´ıan bandas militares, para este prototipo se ha decidido utilizar la banda de FM comercial, ya que a efectos pr´acticos arroja los mismos resultados: la adquisici´on de m´odulos que trabajan en estas frecuencias es m´as factible y se prefiere no interferir en las bandas de frecuencias militares realizando pruebas (a pesar de que no se transmita a mucha potencia). El m´odulo tambi´en incluye componentes electr´onicos adicionales necesarios para su funcionamiento, tales como: integrados CD4046B y TL082, ambos localizables en el Anexo C y componentes pasivos RLC. La composici´on y el funcionamiento de este m´odulo viene descrito por el diagrama que se adjunta en la Figura 3.1. Partiendo del canal direcci´on avi´on-boya y siguiendo el diagrama desde el Ordenador, se introduce el mensaje en c´odigo ASCII y se traduce a Morse con alguno de los programas desarrollados y explicados en la subsecci´on 2.4 y cuyo diagrama de bloques se puede localizar en el Anexo D.1. Estos programas realizan la traducci´on del mensaje introducido por el usuario en ASCII a c´odigo Morse. El c´odigo Morse es interpretado por el programa y traducido a su vez a una se˜nal anal´ogica de audio, donde al punto se le asigna una frecuencia de ≈4,1 KHz y a la raya de ≈7 KHz. Hay que tener en cuenta que para las frecuencias de transmisi´on se pueden elegir valores pr´oximos a los descritos, ya que la recepci´on e interpretaci´on de los tonos1se distingue por umbrales de tensi´on definidos en el c´odigo, no por el nivel de tensi´on exacto que da la patilla 9 (o la patilla 10 a 0,7V menos) del PLL. La se˜nal anal´ogica de audio generada tras el proceso de traducci´on se transmite por el puerto jack del Ordenador al del TX Radio instalado en la caja del m´odulo avi´on. Despu´es, el TX Radio modula los tonos en FM con portadora en 108 MHz y se transmiten hacia el RX Boya (receptor radio 1V´ease el c´odigo de recepci´on del submarino en el Anexo. 63
Figura 3.1: Diagrama de flujo explicativo de funcionamiento del bloque avi´on. instalado en la boya). En cuanto al canal direcci´on boya-avi´on, se comienza recibiendo la se˜nal modulada en FM desde TX Boya (transmisor radio instalado en la boya) con portadora en 87,5 MHz, a una frecuencia lo m´as alejada posible de la de transmisi´on a 108 MHz para evitar cualquier tipo de interferencia 2. La se˜nal modulada en FM se desmodula en el RX Radio (receptor de radio en el avi´on) y se amplifica (AMP. DE AUDIO) utilizando una etapa de amplificaci´on3con un TL082 (v´ease Anexo C.1). Tras amplificar la se˜nal hasta saturarla para que la frecuencia de la se˜nal recibida (la cual fue generada en el submarino y tendr´a o bien ≈1,8 KHz ´o ≈2,8 KHz) pueda ser interpretada por la entrada del PLL (dado que si el nivel de tensi´on de la se˜nal es demasiado bajo el PLL no se enganchar´a), la tensi´on de salida de la patilla 10 convenientemente suavizada mediante un filtro paso bajo LC. La tensi´on de salida del PLL se introduce en el PIN anal´ogico A0 del Arduino. Con la lectura del nivel de tensi´on se determinar´a si se ha recibido un punto o una raya y se mostrar´a la secuencia de llegada del mensaje en Morse recibido a trav´es del monitor del Ordenador. Una vez recibido el mensaje y 2Al encontrarse transmisor y receptor implementados tan cerca el uno del otro hay peligro de que parte de la se˜nal del transmisor se pueda acoplar al receptor. 3En este caso al igual que en el submarino bastar´a con una sola etapa de amplificaci´on; no obstante, el resultado tras dos etapas ser´ıa id´entico, basta con que la se˜nal sature de forma que el PLL la interprete. 64
tras esperar el tiempo que se defina en el c´odigo por el usuario, se interpretar´a que el mensaje ha concluido y se mostrar´a por pantalla la traducci´on completa del mensaje Morse a ASCII. Se ilustra el resultado en la Figura 3.2 (v´ease el c´odigo en el Anexo F.1). Figura 3.2: Funcionamiento del sistema de traducci´on v´ıa software del avi´on. Explicado el funcionamiento se procede a analizar el conexionado del montaje. Para ello se adjunta el diagrama de la Figura 3.3. Figura 3.3: Diagrama de conexionado del m´odulo avi´on. Siguiendo el diagrama se explica m´as en detalle punto a punto el conexionado: 65
El cable amarillo del Arduino (PIN de 5V de salida) se usa para alimentar todos los componentes electr´onicos de la caja (etiquetados con VCC en el diagrama). Todos ellos est´an soldados entre s´ı y aislados con un termorretr´actil verde. Los pines de GND del Arduino se utilizan para dar una tierra com´un a todos los elementos de la caja. Todos los cables negros son tierra, exceptuando el del receptor radio que es verde para no confundirlo con la GND del jack out. Los cables marrones se usan para el bot´on de inicio de la transmisi´on (bot´on rojo) conectado al pin RESET de Arduino y a GND. Los cables morados se usan para la salida anal´ogica SDA. Se cortocircuitan las salidas SDA del transmisor y el receptor radio y se conectan al pin SDA del Arduino. Los cables grises se usan para la salida anal´ogica SCL. Se cortocircuitan las salidas SCL del transmisor y el receptor radio y se conectan al pin SCL del Arduino. El cable azul del CD4046B (salida de la patilla 10) se conecta con el pin anal´ogico A0 del Arduino. OUT C (Amplificador de audio a trav´es del condensador) se conecta con un cable amarillo a la entrada IN 14 (patilla 14) del PLL. Este cable conecta la salida de las dos etapas de amplificaci´on a la entrada de enganche del PLL. La salida AUDIO del JACK OUT del receptor de radio se conecta con la entrada a las dos etapas de amplificaci´on del TL082 (cable rojo soldado a un cable amarillo y aislados con un termorretr´actil verde). Se procede ahora a detallar los valores empleados para el montaje de los circuitos electr´onicos auxiliares. Se recogen los valores para el circuito con el integrado CD4046B seg´un el esquema de la Figura 3.4 (v´ease tambi´en Anexo C.2) en la Tabla 3.1. Para el circuito que contiene el integrado TL082 se disponen los valores en la Tabla 3.2 siguiendo el esquema de la Figura 3.5 (v´ease tambi´en el Anexo C.1). Por ´ultimo se adjunta una imagen del montaje en la Figura 3.6. En la foto de la izquierda se puede apreciar la caja del avi´on abierta, mientras que en la foto de la derecha se aprecia la parte frontal de la caja cerrada, donde se encuentra el bot´on para comenzar la transmisi´on y la entrada de jack al transmisor. La caja tambi´en cuenta con dos antenas telesc´opicas. La antena frontal pertenece al transmisor y est´a atornillada a la caja, mientras que la otra antena pertenece al receptor y se puede conectar y extraer de la caja mediante un puerto jack. Junto a la antena del receptor se encuentra una salida jack de audio (de donde se puede escuchar qu´e est´a recibiendo el receptor). A la izquierda del jack de salida del receptor se localiza la alimentaci´on de la caja (alimentaci´on del Arduino MEGA2560 entre 6-12V). 66
CD4046B (PLL) L 1 mH C1 10 nF C2 1 nF CF1 1 nF CF2 100 nF R1 47 KΩ R2 82 KΩ R3 100 KΩ R4 68 KΩ Tabla 3.1: Los valores de los elementos electr´onicos pasivos empleados para el dise˜no del circuito con el integrado CD4046B. TL082 (una etapa) C1 220 nF C2 220 nF R 1,2 KΩ R1 10 KΩ R2 220 KΩ Tabla 3.2: Los valores RC empleados para el dise˜no del circuito con el integrado TL082. 67
Figura 3.4: Esquema electr´onico del conexionado del integrado CD4046B. Figura 3.5: Montaje con una etapa de amplificaci´on usando el TL082. Con objetivo de clarificar las entradas y los elementos que componen el exterior de la caja se adjunta la Figura 3.7. 68
Figura 3.6: Fotos del montaje de la caja del avi´on. Figura 3.7: Vista frontal y dorsal de la caja del avi´on. 3.2. M´odulo boya El m´odulo boya es el sistema con mayor relevancia en este proyecto, dado que es el nexo entre los dos extremos de la comunicaci´on (avi´on y submarino). Este sistema implementa un transceptor radio, un transceptor ac´ustico y un m´odulo GPS, lo que convierte a esta caja en el montaje m´as complejo del proyecto. Para comprender la complejidad que conlleva la tecnolog´ıa implementada en este m´odulo se adjunta su diagrama de funcionamiento en la Figura 3.8. 69
Figura 3.8: Diagrama de flujo explicativo de funcionamiento del m´odulo boya. Siguiendo el diagrama se comienza analizando la recepci´on radio. En el receptor radio (RX RADIO) se reciben los tonos modulados en FM con portadora en la frecuencia de bajada 87,5 MHz (emitidos por el avi´on hacia el submarino). Estos tonos se amplifican mediante el amplificador de potencia (AMP. POT., Anexo C.4) para conseguir un nivel de se˜nal suficiente como para soportar la atenuaci´on que introduce el agua salada sobre la onda ac´ustica que ser´a transmitida por el ALTAVOZ hacia el hidr´ofono del submarino. Con respecto al canal de subida se distinguen dos casos. El primer caso es en el que la boya est´a operando solo como repetidor FM-ac´ustico enviando la informaci´on recibida del avi´on al submarino. El segundo caso es cuando la boya recibe una petici´on de ubicaci´on GPS desde el submarino. Comenzando con el caso en el que la boya opera como repetidor, el proceso comienza con la recepci´on de la se˜nal ac´ustica proveniente del submarino en el hidr´ofono instalado en la boya. La se˜nal recibida se amplifica en al amplificador de audio (AMP. DE AUDIO, implementado con el integrado TL082 cuya informaci´on se encuentra en el Anexo C.1). Tras la etapa de amplificaci´on la se˜nal contin´ua su trayecto introduci´endose en el transmisor radio (TX RADIO) y tambi´en se introduce en la patilla 14 del CD4046B (que es un PLL integrado) que genera un nivel de tensi´on proporcional a la frecuencia de entrada que ser´a le´ıda por el Arduino MEGA2560 que utilizar´a para decodificar el mensaje. Si el mensaje decodificado coin- 70
cide con la cadena en ASCII ”GPS”, entonces la boya obtiene su ubicaci´on del m´odulo GPS que integra. Este m´etodo de petici´on GPS se mejora por una idea que involucra el haber recibido o no un tono de una frecuencia completamente distinta a la que se usa en las comunicaciones4, en este caso se emplea una frecuencia de 500 Hz. De este modo, se consigue un sistema m´as fiable y m´as eficiente, dado que la boya no estar´a continuamente traduciendo los mensajes (idea que se opone a descargar a la boya de trabajo). Una vez obtenida la ubicaci´on, el m´odulo Arduino MEGA2560 se encarga de conmutar la comunicaci´on de la transmisi´on procedente del avi´on con destino al submarino con la transmisi´on de la ubicaci´on GPS de la boya solicitada por el submarino. En esta situaci´on el Arduino MEGA2560 se encarga de codificar las coordenadas extra´ıda del m´odulo GPS a c´odigo Morse. Para ello se dise˜na un m´etodo que simplifica la notaci´on con intenci´on de evitar la necesidad de a˜nadir nuevos s´ımbolos para definir la coma decimal o el signo que pueden llevar las coordenadas GPS, tal y como se ilustra en la Figura 3.9. Una vez traducido a Morse, el Arduino MEGA2560 pone un pin digital (en el caso de este proyecto se usa el pin 13) en alta (5V) o en baja (GND com´un del circuito proporcionado por el Arduino MEGA2560). La salida de este pin digital se usa para introducir un nivel de tensi´on en el VCO (integrado en el CD4046B, cuya informaci´on se encuentra en el Anexo C.2). Dado que el pin solo se puede escribir en alta(5V) o en baja(0V) se emplea un divisor resistivo que proporcione a la entrada del VCO (patilla 9 ´o 10 del CD4046B) la tensi´on necesaria para que este proporcione a su salida (patilla 4) la frecuencia que se requiere para codificar el punto (4100 Hz) o la raya (7000 Hz). La salida de la patilla 4 ser´a una se˜nal cuadrada y por consiguiente cuenta con arm´onicos en los m´ultiplos impares de la frecuencia fundamental, los cuales caen fuera de la frecuencia de enganche de los PLL y no supondr´an ning´un problema. Figura 3.9: Se ilustra el m´etodo de codificaci´on empleado. En rojo: se manda el n´umero de d´ıgitos antes de la coma decimal. En azul: se manda el signo de la coordenada, donde pequivale a positivo y na negativo. 4Recordamos que son 1800 Hz, 2800 Hz, 4100 Hz y 7000 Hz 71
Para conmutar entre la transmisi´on del avi´on y la transmisi´on de las coordenadas GPS de la boya se emplear´a un rel´e, que siendo activado desde el Arduino MEGA2560 podr´a cortar la comunicaci´on proveniente del avi´on mientras se tramite la respuesta de la ubicaci´on GPS de la boya. Se adjunta el diagrama de conexionado del m´odulo boya en la Figura 3.10 con la intenci´on de clarificar el montaje. Figura 3.10: Diagrama de conexionado del m´odulo boya. Siguiendo el diagrama se procede a explicar el conexionado: El cable amarillo (pin Arduino 5V) que se ramifica en cables naranjas para la alimentaci´on de m´odulos de transmisi´on radio y en cables rojos para la alimentaci´on del TL082, CD4046b y VCO. El resto de cables amarillos se usan para extraer el audio del hidr´ofono e introducirlo a las etapa de amplificaci´on y para conectar las etapas de amplificaci´on con los CD4046B. El cable negro (pin Arduino GND) se emplea como masa com´un para todo el circuito. Para el m´odulo GPS el cable rojo (pin Arduino 3.3V) se emplea para la alimentaci´on. De este m´odulo salen adem´as un cable azul (TX) conectado al pin 50 de Arduino y un cable blanco (RX) conectado al pin 51 de Arduino. 72
Figura 3.17: Fotos del exterior de la caja de la boya. 79
3.3. M´odulo transceptor ac´ustico submarino El sistema integrado en el submarino presenta evidentes similitudes con el sistema aerotransportado explicado en la subsecci´on 3.1. La ´unica diferencia es que los sistemas de transmisi´on-recepci´on radio se sustituyen por sistemas ac´usticos. Se adjunta el diagrama de funcionamiento en la Figura 3.18, para una mejor comprensi´on de la evoluci´on del sistema al transmitir o al recibir un mensaje. Figura 3.18: Diagrama de flujo explicativo de funcionamiento del bloque submarino. Se comienza analizando la recepci´on de un mensaje(tonos anal´ogicos transmitidos por ondas ac´usticas) en el hidr´ofono instalado en el submarino. Esta onda ac´ustica llegar´a t´ıpicamente bastante atenuada, por consiguiente ser´a necesario amplificarla con una doble etapa de amplificaci´on basada en el integrado TL082 (AMP. DE AUDIO, v´ease Anexo C.1). Tras ser amplificada y saturada se obtiene una se˜nal cuadrada que entrar´a en la patilla 14 del PLL. Si todo ha ido correctamente y la frecuencia es la adecuada, el PLL se enganchar´a y generar´a a la salida (patilla 9 ´o 0.7V menos en la patilla 10) un nivel de tensi´on proporcional a la frecuencia de la se˜nal cuadrada introducida. Este nivel de tensi´on se introduce en el pin anal´ogico A0 del Arduino y cuya lectura servir´a para interpretar si se ha recibido un punto o una raya. Las frecuencias que se reciben en este m´odulo son las generadas por el transmisor radio del m´odulo del avi´on o bien por la boya al transmitir su localizaci´on GPS, es decir, ≈4,1 KHz y ≈7 KHz. Una vez realizada la traducci´on del mensaje v´ıa software como se 80
recoge en el Anexo F.3, se muestra por la pantalla del Ordenador el mensaje recibido. Si el mensaje se genera desde el Ordenador de abordo del submarino, el proceso comienza con la generaci´on v´ıa software del mensaje Morse ac´ustico mediante tonos de distinta frecuencia (tal y como se recoge en el Anexo A y en el diagrama funcionamien- to del Anexo D.1). Tras generarse el tono anal´ogico se introduce en un amplificador de potencia (AMP. POTENCIA) que consigue un nivel de se˜nal lo suficientemente alto como para que el altavoz genere ondas ac´usticas que alcancen sin problemas y con la calidad suficiente al hidr´ofono instalado en la boya. Se adjunta el diagrama de conexionado del m´odulo submarino en la Figura 3.19 con intenci´on de clarificar el montaje. Figura 3.19: Diagrama de conexionado del m´odulo submarino. Siguiendo el diagrama se procede a explicar el conexionado: El cable rojo del Arduino (PIN de 5V de salida) se usa para alimentar las etapas de amplificaci´on (TL082), el CD4046B y polarizar el micr´ofono. Al TL082 sale el cable naranja y al CD4046 el cable rojo desde el empalme con termorretr´actil verde. El cable negro (PIN GND del Arduino) se utiliza para proporcionar una tierra com´un a todos los elementos electr´onicos del circuito. 81
El cable azul del CD4046B (salida de la patilla 10) se conecta con el pin anal´ogico A0 del Arduino. OUT C (Amplificador de audio a trav´es del condensador) se conecta con un cable amarillo a la entrada IN 14 (patilla 14) del PLL. Este cable conecta la salida de las dos etapas de amplificaci´on a la entrada de enganche del PLL. El cable blanco se utiliza para extraer la se˜nal de audio del hidr´ofono e introducirlo en las etapas de amplificaci´on implementadas con el TL082. El cable morado se utiliza para introducir la salida del amplificador de potencia en el altavoz. El cable rojo que sale del amplificador de potencia se utiliza para alimentar el micr´ofono a 12V y as´ı otorgarle mayor sensibilidad. Se procede ahora a detallar los valores empleados para el montaje de los circuitos electr´onicos auxiliares. Se recogen los valores para el circuito con el integrado CD4046B seg´un el esquema de la Figura 3.20 (v´ease tambi´en Anexo C.2) en la Tabla 3.7. CD4046B (PLL) L 1 mH C1 6,8 nF C2 1 nF C3 100 nF R1 33 KΩ R2 47 KΩ R3 100 KΩ R4 56 KΩ Tabla 3.7: Los valores de los componentes electr´onicos pasivos empleados para el dise˜no del circuito con el integrado CD4046B. Para el circuito que contiene el integrado TL082 se disponen los valores en la Tabla 3.8 siguiendo el esquema de la Figura 3.21 (v´ease tambi´en el Anexo C.1). 82
Figura 3.20: Esquema electr´onico del conexionado del integrado CD4046B. Figura 3.21: Montaje total de dos etapas de amplificaci´on usando el TL082. Para ilustrar el trabajo realizado se adjuntan im´agenes del montaje (Figura 3.22, Figura 3.23), tanto del interior como del exterior de la caja. Se etiqueta tambi´en las entradas y salidas, donde se ha seguido como patr´on situar todas las entradas en el frontal de la caja y la salida en el dorsal. 83
TL082 C1 100 nF C2 220 nF C3 680 pF C4 1 µF R 1,2 KΩ R1 10 KΩ R2 1 220 KΩ R2 2 47 KΩ Tabla 3.8: Los valores RC empleados para el dise˜no del circuito con el integrado TL082. Figura 3.22: Fotos del montaje de la caja del submarino. 84
Figura 3.23: Fotos del exterior de la caja del submarino. 85
Cap´ıtulo 4 Pruebas y resultados En este apartado se recogen los experimentos realizados con el prototipo y los resultados que estos arrojan. Para su mejor comprensi´on se adjuntan, tanto en este documento como en el CD, fotos y v´ıdeos que ilustran su funcionamiento. Dado la gran cantidad de subsistemas que componen el sistema global, se detallar´an las pruebas individuales de cada elemento y despu´es las pruebas de comunicaci´on desde el avi´on al submarino y viceversa. Por ultimo, la prueba de geolocalizaci´on entre submarino y boya. 4.1. Pruebas de subsistemas 4.1.1. Pruebas de generaci´on de tonos mediante software En esta subsecci´on se llevar´an a cabo las pruebas de generaci´on de tonos con los distintos programas desarrollados en Octave, MatLab y C++ (Arduino). Finalmente se acaba empleando y afinando el c´odigo de Octave, pero se adjuntan las distintias pruebas comprobando la correcta ejecuci´on del c´odigo en otros lenguajes por si fuese de utilidad en una futura implementaci´on. Todo el c´odigo desarrollado se encuentra analizado con m´as detalle en la secci´on 2.4. Generaci´on de tonos empleando Octave Empleando el c´odigo que se recoge en el Anexo A.1 se transmite el mensaje ”Hola Mundo” reproduciendo los tonos del c´odigo morse resultantes de la traducci´on del programa con un altavoz la salida del puerto jack del ordenador. El mensaje introducido por el usuario es traducido car´acter a car´acter a c´odigo Morse y seguidamente a tonos para interpretar el punto y la raya. La secuencia de traducci´on se va imprimiendo por pantalla y los tonos se escuchan en el altavoz correctamente. Se muestra en la Figura 4.1 una fotograf´ıa extra´ıda de la prueba de funcionamiento. En el transcurso del TFG se a˜nade una funcionalidad que mejora la eficiencia del montaje. Esta mejora trata de poder solicitar la ubicaci´on GPS al sistema boya mediante un tono de 500 Hz. Todo esto implica una modificaci´on en el c´odigo y se ilustra 86
la prueba de funcionamiento en la Figura 4.2. Figura 4.1: Fotograf´ıa de la prueba de ejecuci´on del c´odigo Octave. Figura 4.2: Fotograf´ıa de la prueba de la petici´on GPS v´ıa software. 87
Generaci´on de tonos empleando MatLab Se comprueba el funcionamiento del entorno gr´afico desarrollado para implementar el traductor de ASCII a tonos mediante c´odigo Morse. Se introduce el mensaje y se pulsa en ”Send”. El mensaje introducido se muestra en todo momento y en la casilla de ”Ascii process” se muestra el transcurso de la traducci´on, del mismo modo que en la casilla ”Morse process” se muestra el proceso de reproducci´on de cada car´acter mediante su correspondiente traducci´on. Figura 4.3: Fotograf´ıa de la prueba de ejecuci´on del c´odigo MatLab. 88
4.1.5. Amplificaci´on de se˜nales de audio recogidas con el micr´ofono Los subsistemas involucrados en este experimento son: generador de tonos ac´usticos (un m´ovil en este caso), micr´ofono de carb´on, amplificador de 2 etapas basado en TL082 y PLL descodificador de los tonos transmitidos. Se simula una comunicaci´on entre la boya y el submarino mediante se˜nal ac´ustica, aunque en este caso en medio a´ereo. Seg´un la teor´ıa presentada en el cap´ıtulo 2, la comunicaci´on a trav´es del agua (situaci´on real) ser´ıa a´un m´as favorable por realizarse en un medio m´as denso. De todos modos tambi´en se realizar´a, posteriormente, un experimento para comprobar la transmisi´on de se˜nales ac´usticas a trav´es del agua. En esta prueba se ilustra como el receptor ac´ustico consigue captar un tono de audio generado con una aplicaci´on desde un tel´efono m´ovil1. Tras captar el tono, la salida de este micr´ofono se introduce en un amplificador de dos etapas basado en un integrado TL082 explicado en el apartado 2.2.3 y el Anexo C.1. Una vez obtenida la se˜nal con un nivel de tensi´on adecuado se introduce en la patilla 14 de un PLL. La figura ilustra la sinusoide en amarillo (tono reproducido desde el tel´efono m´ovil captado por el micr´ofono) y en azul la salida de la patilla 4 del PLL enganchado a la frecuencia de 800 Hz. Esta fue una de las pruebas m´as relevantes del proyecto, ya que arroj´o resultados muy prometedores a favor de la recepci´on ac´ustica empleando el micr´ofono extra´ıdo del tel´efono antiguo. Figura 4.11: Aplicaci´on m´ovil de Android generando un tono puro de 800 Hz. 1Se comprob´o previamente con el osciloscopio que la salida del tel´efono m´ovil fuese un tono puro. 95
Figura 4.12: Se muestra el montaje empleado para la recepci´on, amplificaci´on y enganche de un tono de 800 Hz empleando un receptor ac´ustico. Figura 4.13: Se muestra la pantalla del osciloscopio del laboratorio de docencia, donde se grafica en amarillo el tono de 800 Hz captado por el micr´ofono y en azul la salida de la patilla 14 del PLL. Se recuadra en rojo como la frecuencia de enganche del PLL se corresponde con la transmitida desde el tel´efono m´ovil. 96
4.1.6. Transmisi´on y recepci´on subacu´atica de tonos En esta prueba se lleva a cabo la transmisi´on ac´ustica subacu´atica de un tono de 500 Hz extra´ıdo del generador de funciones. Se pretende demostrar la viabilidad de dicha transmisi´on, a´un cuando ya ha sido te´oricamente justificada con anterioridad en el apartado 2.2.1. Adem´as, tambi´en se comprueba la eficiencia de los altavoces y micr´ofonos elegidos para el prototipo (aunque a distancias cortas o moderadas). El tono se introduce en el altavoz sumergido y este comienza a generar una oscilaci´on de esta misma frecuencia en su membrana mediante un electroim´an que ejerce un campo magn´etico variable con la corriente que le atraviesa. Esta oscilaci´on se traslada al revestimiento pl´astico empleado para impermeabilizarlo y de este pasa al agua. La onda se propaga transmitiendo la oscilaci´on a trav´es de las part´ıculas del agua y es recogida por un micr´ofono de carb´on impermeabilizado. Las ondas ac´usticas presionan la c´apsula de carb´on, donde los gr´anulos que encierra se comprimen y expanden a causa de las variaciones de las paredes de la c´apsula. La concentraci´on de los gr´anulos de carb´on se traduce en variaciones de la resistencia de la c´apsula y por consiguiente en variaciones de la corriente que la atraviesa. Por ´ultimo se visualiza en el osciloscopio la salida del micr´ofono, donde se observa el efecto sobre la se˜nal el´ectrica de salida de la variaci´on de presi´on ac´ustica en el agua captada por la c´apsula de gr´anulos de carb´on. Se adjuntan y explican a continuaci´on fotograf´ıas tomadas del experimento. Figura 4.14: Se muestra el generador de funciones fijado a una frecuencia de 500 Hz para una onda sinusoidal. El tono se genera sin offset (el cursor est´a desviado) y a m´axima amplitud. 97
Figura 4.15: Se muestran el transmisor y el receptor ac´ustico impermeabilizados estableciendo el enlace de transmisi´on del tono de 500 Hz bajo el agua. Figura 4.16: Se muestran la doble etapa de amplificaci´on basada en el integrado TL082. Figura 4.17: Se muestran la frecuencia de 500 Hz extra´ıda del receptor ac´ustico y amplificada con la doble etapa de amplificaci´on basada en el integrado TL082. 98
4.1.7. Prueba con el generador de tonos basado en VCO Para demostrar el funcionamiento de este subsistema, que es capaz de generar dos tonos de diferente frecuencia controlado por una salida digital del Arduino (0V o 5V), alimentamos el VCO expuesto en el apartado 2.4.1 (Anexo C.3) y aplicamos manualmente a la red resistiva que se conectar´ıa a la salida digital del Arduino los voltajes de 0V y de 5V. En el experimento se midieron con un mult´ımetro las salidas de voltaje esperadas (para las cuales fue dise˜nada la red de tres resistencias) y de ello pudo observarse tambi´en en el osciloscopio las correspondientes salidas digitales de onda cuadrada de (muy aproximadamente) 4,1 KHz y de 7 KHz que el VCO deb´ıa ser capaz de generar. Se adjuntan las im´agenes del montaje (Figura 4.18) y de la prueba de generaci´on de tonos (Figura 4.19 y Figura 4.20). Figura 4.18: Se muestra el VCO insertado en el z´ocalo con su red resistiva a la entrada de la patilla 9. 99
Figura 4.19: Se muestra en el osciloscopio la salida de la patilla 4 del VCO al aplicar una tensi´on de 5V a la entrada de la red resistiva. Figura 4.20: Se muestra en el osciloscopio la salida de la patilla 4 del VCO al aplicar una tensi´on de 0V a la entrada de la red resistiva. 100
4.2. Pruebas de sistema Estos experimentos se realizaron para comprobar el funcionamiento conjunto de los subsistemas montados en las 3 cajas: aerotransportada, boya y submarina. Figura 4.21: Se muestra una visi´on general del montaje total del sistema. 4.2.1. Prueba de recepci´on en submarino de mensaje del avi´on Los subsistemas que est´an involucrados en este experimento son los siguientes: En la caja del avi´on 1. Ordenador y software Octave. 2. Transmisor FM KT0803K. En la caja de la boya 3. Receptor FM TEA5767. 4. Amplificador de potencia. 101
5. Altavoz impermeabilizado. En la caja del submarino 6. Micr´ofono impermeabilizado. 7. Amplificador de dos etapas basado en el AO TL082. 8. Detector de tonos de 4100 Hz y de 7000 Hz basado en PLL. 9. Arduino MEGA2560. 10. Ordenador y software en C++ (Arduino). El sistema se mont´o completamente y se aliment´o a trav´es del USB del PC la caja del avi´on, de una alimentaci´on de 12V externa la boya, la caja del submarino, a trav´es del USB del PC de control del submarino y de la fuente externa de 12V. Se presenta una foto del sistema totalmente montado en la fig xx, y con una cubeta conteniendo el micr´ofono y el altavoz impermeabilizados simulando el medio acu´atico. Se procedi´o como sigue: tras arrancar los correspondientes programas en los dos PC y habilitar la transmisi´on mediante el bot´on de reset se escribe un mensaje en el PC del avi´on y se env´ıa. Se comienza a escuchar el sonido de los tonos procedente del agua de la cubeta y se puede observar la recepci´on correcta del mensaje en PC el submarino. 4.2.2. Prueba de recepci´on en avi´on de mensaje del submarino Los subsistemas que est´an involucrados en este experimento son los siguientes: En la caja del submarino 1. Ordenador y software Octave. 2. Amplificador de potencia. 3. Altavoz impermeabilizado. En la caja de la boya 4. Micr´ofono impermeabilizado. 5. Amplificador de dos etapas basado en el AO TL082. 6. Detector de tonos de 1800 Hz y de 2800 Hz basado en PLL. 7. Transmisor FM KT0803K. En la caja del avi´on 8. Receptor FM TEA5767. 9. Amplificador de una etapa basado en el AO TL082. 10. Detector de tonos de 1800 Hz y de 2800 Hz basado en PLL. 102
11. Arduino MEGA2560. 12. Ordenador y software en C++ (Arduino). El montaje y el procedimiento para realizar la prueba es an´alogo al explicado en el apartado 4.2.1 a excepci´on de la direcci´on de la transmisi´on, dado que en este caso se emplea el canal de subida (desde el submarino hacia el avi´on). Se observa el mensaje recibido en el ordenador conectado a la caja del avi´on a trav´es del Serial de Arduino. 103
4.2.3. Prueba de obtenci´on de posici´on GPS Los subsistemas que est´an involucrados en este experimento son los siguientes: En la caja del submarino 1. Ordenador y software Octave. 2. Amplificador de potencia. 3. Altavoz impermeabilizado. En la caja de la boya 4. Micr´ofono impermeabilizado. 5. Amplificador de dos etapas basado en el AO TL082. 6. Detector del tono de 500 Hz basado en PLL. 7. Arduino MEGA2560. 8. VCO para generar tonos de 4100 Hz y 7000 Hz. 9. Amplificador de potencia. 10. Altavoz impermeabilizado. En la caja del submarino 11. Micr´ofono impermeabilizado. 12. Amplificador de dos etapas basado en el AO TL082. 13. Detector de tonos de 4100 Hz y de 7000 Hz basado en PLL. 14. Arduino MEGA2560. 15. Ordenador y software en C++ (Arduino). El montaje es an´alogo al explicado en el apartado 4.2.1, sin embargo, la caja del avi´on no interfiere en esta prueba. Se introduce el mensaje en ASCII ”GPS” en el software desarrollado en Octave y se genera el tono de 500 Hz asociado a esta petici´on. La petici´on de coordenadas GPS se recibe en la boya y el Arduino conmuta las comunicaciones procedentes del avi´on a las de la transmisi´on de la ubicaci´on GPS de la boya. Las coordenadas GPS se reciben en el ordenador del submarino y se muestran por el Serial de Arduino. 104
18 % Declaramos la cadena que almacenara todos los caracteres segun se mandan 19 completado_ascii = ’’; 20 completado_morse =’’; 21 22 % Comprobamos que posicion ocupa el caracter en nuestra cadena de codigo morse 23 for i =1: length ( cadena ) 24 caracter = cadena (i); 25 if( caracter >= ’a’ && caracter <= ’z’ ) 26 recorridoCadena ( MorseABC { caracter - ’a’ + 1} , caracter ); 27 elseif ( caracter >= ’A’ && caracter <= ’Z’ ) 28 recorridoCadena ( MorseABC { caracter - ’A’ + 1} , caracter ); 29 elseif ( caracter >= ’0’ && caracter <= ’9’ ) 30 recorridoCadena ( Numeros {( caracter - ’0’) + 1}, caracter ); 31 elseif ( caracter == ’ ’ ) 32 display(’ ------------------------------------------’); 33 pause (1); 34 end 35 end 36 display(’------------------------------------------’); 37 display ( ’ Message Successfully Transmitted !’); 38 display(’------------------------------------------’); 39 end 40 41 % Esta funcion se encarga de desglosar el caracter traducido a morse para poder procesarlo como sonido 42 function recorridoCadena ( char_morse , caracter ) 43 printf ([ ’ ’,caracter ,’ >> ’]); 44 % Barremos todos los elementos del caracter en morse 45 for i =1: length ( char_morse ) 46 if( char_morse (i) == ’.’) 47 printf ( char_morse (i)); 48 tono (1800 ,0.8) ; % Para el submarino sera de 4100 49 elseif ( char_morse (i) == ’-’) 50 printf ( char_morse (i)); 51 tono (2800 ,0.8) ; % Para el submarino sera de 7000 52 end 53 end 54 pause (2); % Tiempo entre caracteres 55 display ( ’’); 56 end 57 58 % Esta funcion recibe la orden de reproducir el punto o la raya 111
59 function tono (Hz , tiempo_espera ) 60 % Generamos los tonos para transmitir el punto y la raya 61 fs=8000; % Frecuencia de muestreo 62 duracion = tiempo_espera ; % Duracion del tono 63 freq1 =1800; freq2 =2800; % Frecuencias de los tonos a reproducir (4100 y 7000 para el submarino ) 64 val =0:1/ fs: duracion ; % Creamos un vector temporal para la reproduccion del sonido con el numero de muestras necesario 65 66 % Generamos ambos tonos 67 a1= sin (2* pi* freq1 * val ); 68 a2= sin (2* pi* freq2 * val ); 69 70 % Distinguimos segun el la frecuencia el sonido a reproducir 71 if(Hz == 1800) % 4100 para el submarino 72 sound (a1 , fs ); 73 elseif ( Hz == 2800) % 7000 para el submarino 74 sound (a2 , fs ); 75 end 76 end A.2. Matlab 1% Esta funcion se genera automaticamente por Matlab al usar GUI . 2% Esta funcion NO se modifica y declara los parametros basicos de la interfaz grafica . 3function varargout = morse_tfg ( varargin ) 4% Begin initialization code - DO NOT EDIT 5gui_Singleton = 1; 6gui_State = struct (’ gui_Name ’, mfilename , ... 7’gui_Singleton ’, gui_Singleton , ... 8’gui_OpeningFcn ’, @morse_tfg_OpeningFcn , ... 9’gui_OutputFcn ’, @morse_tfg_OutputFcn , ... 10 ’gui_LayoutFcn ’, [] , ... 11 ’gui_Callback’, []); 12 if nargin && ischar ( varargin {1}) 13 gui_State . gui_Callback = str2func ( varargin {1}) ; 14 end 15 16 if nargout 17 [ varargout {1: nargout }] = gui_mainfcn ( gui_State , varargin {:}) ; 18 else 19 gui_mainfcn ( gui_State , varargin {:}) ; 20 end 21 % End initialization code - DO NOT EDIT 22 end 112
23 24 % Esta funcion se genera automaticamente por Matlab al usar GUI . 25 % En esta funcion se declaran las variables globales definidas como handles de forma que puedan ser usadas y modificadas en las funciones del fichero a las que se les pase como parametro . 26 function morse_tfg_OpeningFcn ( hObject , eventdata , handles , varargin) 27 % ------------------- Declaramos los handles -------------------- 28 handles . cadena = ’’; % Declaramos la cadena que almacenara el mensaje escrito por el usuario. 29 30 % Se generan los tonos 31 amp =10; % Amplitud del tono 32 handles . fs =8000; % Frecuencia de muestreo ( suficiente para cumplir Nyquist y buena calidad de reproduccion ). 33 duration =5; % Duracion del tono 34 freq=[500,1000]; % Frecuencias del tono 35 36 val =0:1/ handles . fs : duration ; % Valores del tono 37 38 % Se declaran los handles que portan los tonos 39 handles . x1= amp *sin (2* pi* freq (1) *val ); 40 handles . x2= amp *sin (2* pi* freq (2) *val ); 41 42 %----fin de las modificaciones realizadas en esta funcion ------ 43 44 % Choose default command line output for morse_tfg 45 handles . output = hObject ; 46 47 % Update handles structure 48 guidata ( hObject , handles ); 49 end 50 51 % Esta funcion se genera automaticamente por Matlab al usar GUI 52 % La salida de esta funcion se devuelven a la linea de comandos . 53 function varargout = morse_tfg_OutputFcn (hObject , eventdata , handles) 54 varargout {1} = handles . output ; 55 end 56 57 % Esta funcion se genera automaticamente por Matlab al declarar un bloque de texto donde se introduce el mensaje a traducir. 58 function ascii_Callback ( hObject , eventdata , handles ) 59 handles . cadena =get( hObject ,’ String ’); % Recogemos el mensaje y lo almacenamos en el handle . 60 guidata ( hObject , handles ); % Grabamos las modificaciones realizadas en el handle para que esten presentes en el resto 113
de funciones que usen el handle despues . 61 end 62 63 % Esta funcion se genera automaticamente por Matlab al declarar un bloque de texto . Esta define la apariencia de este bloque . 64 function ascii_CreateFcn ( hObject , eventdata , handles ) 65 if ispc && isequal(get( hObject ,’ BackgroundColor ’), get (0 ,’ defaultUicontrolBackgroundColor’)) 66 set (hObject ,’ BackgroundColor ’,’white ’); 67 end 68 end 69 70 71 % Esta funcion se genera automaticamente por Matlab al declarar el boton "Send" usado para comenzar la traduccion . 72 function Send_Callback ( hObject , eventdata , handles ) 73 ascii2morse ( handles ); % Al pulsar el boton se llama a la funcion principal del programa y se le pasan los handles para que pueda usarlos . 74 end 75 76 % Esta funcion se genera automaticamente por Matlab al declarar un bloque de texto donde se ira escribiendo que caracter se esta traduciendo en cada momento (en ASCII ) 77 function completado_Callback ( hObject , eventdata , handles ) 78 end 79 80 % Esta funcion se genera automaticamente por Matlab al declarar el bloque de texto definido encima. Esta define la apariencia de este bloque . 81 function completado_CreateFcn ( hObject , eventdata , handles ) 82 if ispc && isequal(get( hObject ,’ BackgroundColor ’), get (0 ,’ defaultUicontrolBackgroundColor’)) 83 set (hObject ,’ BackgroundColor ’,’white ’); 84 end 85 end 86 87 % Esta funcion se genera automaticamente por Matlab al declarar un bloque de texto donde se ira escribiendo que caracter se esta traduciendo en cada momento (en Morse ), es decir los puntos y las rayas . 88 function morse_completado_Callback ( hObject , eventdata , handles ) 89 end 90 91 % Esta funcion se genera automaticamente por Matlab al declarar el bloque de texto definido encima. Esta define la apariencia de este bloque . 92 function morse_completado_CreateFcn ( hObject , eventdata , handles ) 114
93 if ispc && isequal(get( hObject ,’ BackgroundColor ’), get (0 ,’ defaultUicontrolBackgroundColor’)) 94 set (hObject ,’ BackgroundColor ’,’white ’); 95 end 96 end 97 98 % Se define la funcion principal del programa . 99 function ascii2morse ( handles ) 100 % Array con datos ya escritos ,que son la traduccion del abecedario en codigo Morse . 101 MorseABC = { ’.- ’,’ -... ’,’ -.-. ’,’ -.. ’,’.’,’.. -. ’,’ --. ’,’ .... ’,’ .. ’,’.--- ’,’ -.-’,’. -.. ’,’--’,’ -.’,’ ---’,’.--.’,’ --.- ’,’. -. ’,’ ... ’,’-’,’.. - ’,’... - ’,’.-- ’,’ -.. -’,’ -.-- ’,’ - -.. ’}; 102 103 % Array con datos ya escritos , que son los numeros en codigo Morse 104 Numeros = {’ -----’,’.----’,’..--- ’,’... -- ’,’.... - ’,’..... ’,’ -.... ’,’ - -... ’,’ ---.. ’,’ ----.’}; 105 106 % Declaramos el caracter para extraer del array uno a uno 107 caracter = ’’; 108 109 % Declaramos la cadena que almacenara todos los caracteres segun se mandan 110 completado_ascii = ’’; 111 completado_morse =’’; 112 113 for i =1: length ( handles . cadena ) % Se usa un bucle para recorrer todos los caracteres de la cadena 114 caracter = handles . cadena (i); % Se extrae el iesimo caracter de la cadena 115 completado_ascii = [ completado_ascii , caracter ]; % Se va concatenando el caracter actual para irlo mostrando por al cuadro de texto 116 set ( handles . completado ,’ String ’, completado_ascii ); % Se muestra la cadena concatenada en el cuadro de texto 117 118 % Conjunto de sentencias que evaluan en que rango se encuentra el caracter para compararlo con su valor ASCII 119 if( caracter >= ’a’ && caracter <= ’z’ ) 120 completado_morse = [ completado_morse ,’ | ’,MorseABC { caracter - ’a’ + 1}]; % Se concatena el progreso de puntos y rayas 121 set ( handles . morse_completado , ’String ’, completado_morse ); % Se muestra la cadena concatenada en el cuadro de texto 122 123 recorridoCadena ( handles , MorseABC { caracter - ’a’ + 1}); % Se llama a la funcion recorridoCadena () y se le pasan los parametros necesarios para su funcionamiento . Se evalua en la cadena la posicion que le corresponde restando al valor ASCII el valor ASCII correspondiente al primer caracter , de 115
forma que si es la ’a’ - ’a’ = 0 y dado que en Matlab el indice 0 no existe en los array se le suma 1. De esta forma se elige de la cadena de Morse el conjunto de puntos y rayas que corresponden al caracter ’a ’. 124 125 elseif ( caracter >= ’A’ && caracter <= ’Z’ ) 126 completado_morse = [ completado_morse ,’ | ’,MorseABC { caracter - ’A’ + 1}]; 127 set ( handles . morse_completado , ’String ’, completado_morse ); 128 129 recorridoCadena ( handles , MorseABC { caracter - ’A’ + 1}); 130 131 elseif ( caracter >= ’0’ && caracter <= ’9’ ) 132 completado_morse = [ completado_morse ,’ | ’,MorseABC { caracter - ’0’ + 1}]; 133 set ( handles . morse_completado , ’String ’, completado_morse ); 134 135 recorridoCadena ( handles , MorseABC {( caracter - ’0’) + 1}); 136 137 elseif ( caracter == ’ ’ ) % Acaba una palabra y comienza otra 138 completado_morse = [ completado_morse , ’ | ’,’// ’]; % Se introduce una doble barra para separar las palabras 139 set ( handles . morse_completado , ’String ’, completado_morse ); 140 141 pause (3); % Espera entre palabras en segundos , en este caso 3 seg . 142 end 143 end 144 end 145 146 % Funcion que recorre los puntos y las rayas de cada caracter en Morse para traducirlo a sonidos . 147 function recorridoCadena ( handles , char_morse ) 148 % Se recorre con un bucle todos los simbolos de cada caracter traducido a Morse . 149 for i =1: length ( char_morse ) 150 if( char_morse (i) == ’.’) % Si es punto 151 tono ( handles ,500 ,1) ; % Se manda hacer sonar un tono de 500 Hz 152 elseif ( char_morse (i) == ’-’) % Si es raya 153 tono ( handles ,1000 ,1) ; % Se manda hacer sonar un tono de 1000 Hz 154 end 155 pause (0.3) ; % Espera entre puntos y rayas 156 end 157 end 158 159 % Funcion que reproduce el tono cuya frecuencia recibe como parametro y durante el tiempo que se le ordena . 160 function tono (handles ,Hz , tiempo_espera ) 161 % Distinguimos segun la variable Hz la frecuencia el sonido a reproducir 116
162 if(Hz == 500) 163 sound ( handles .x1 , handles .fs); % Se reproduce el tono a la frecuencia de muestreo que se genero 164 elseif ( Hz == 1000) 165 sound ( handles .x2 , handles .fs); 166 end 167 pause ( tiempo_espera ); % Tiempo que estara sonando el tono 168 clear sound ; % Tras la espera se silencia el tono por completo 169 end A.3. Arduino 1# define SERIAL_BUFFER_SIZE 256 // Para evitar desbordamiento del buffer 2 3const int pinBuzzer = 11; // Declaramos el pin al que esta conectado el Buzzer 4 5// Array con el abecedario en codigo Morse 6char * MorseABC [] = {".-" ," -... "," -. -."," -.." ,"." ," .. -. "," --." ," .... ","..",".---"," -.-",". -..","--"," -.","---",".--."," --.-", ".-.","...","-","..-","... -",".--"," -..-"," -.--"," --.."}; 7 8// Array con los numeros en codigo Morse 9char * Numeros [] = {" -----",".----","..---","...- -",".... -"," ..... " ," -.... "," - -..." ," - --.." ," ----."}; 10 11 void setup () 12 { 13 Serial.begin(9600);// Declaramos la velocidad de simbolos por segundo del monitor serie 14 } 15 16 void loop() 17 { 18 19 char caracter ; // Variable que almacena el caracter 20 21 if( Serial . available () ){// Esperamos a que haya datos que leer del monitor serie 22 caracter = Serial . read () ;// Lee caracter a caracter del monitor serie 23 24 // Para mostrar por pantalla el caracter actual 25 if( caracter == ’ ’) 26 Serial . println (" ---------------------------"); 27 else{ 117
28 Serial . print ( caracter ); 29 Serial . print (" >> "); 30 } 31 32 // Comprobamos que correspondencia tiene el caracter con el codigo Morse 33 if( caracter >= ’a’ && caracter <= ’z’ ) 34 { 35 recorridocadena ( MorseABC [ caracter - ’a’]); 36 } 37 else if( caracter >= ’A’ && caracter <= ’Z’ ) 38 { 39 recorridocadena ( MorseABC [ caracter - ’A’]); 40 } 41 else if( caracter >= ’0’ && caracter <= ’9’ ) 42 { 43 recorridocadena ( MorseABC [ caracter - ’0’]); 44 } 45 else if ( caracter == ’ ’ ) 46 { 47 delay (3000) ;// Espera entre palabras en ms 48 } 49 } 50 51 } 52 53 // Funcion que recorre las posiciones de las cadenas usando como variable un puntero de tipo char. 54 void recorridocadena ( char * posicion ) 55 { 56 Serial . println ( posicion ); 57 int i = 0; // Variable contador para recorrer los valores del array 58 while ( posicion [i] != NULL ){// Hasta recorrer todos los elementos ( puntos y rayas ) 59 if( posicion [i] == ’.’){ 60 tone ( pinBuzzer , 500 , 500) ; // Genera tono de 500 Hz durante 500 ms 61 delay (1000) ; 62 noTone ( pinBuzzer ); 63 } 64 else if ( posicion [i] == ’-’){ 65 tone (pinBuzzer , 1000 , 500);// Genera tono de 1000 Hz durante 500 ms 66 delay (1000) ; 67 noTone ( pinBuzzer ); 68 } 69 i++; 70 } 71 delay (1000) ;// Espera entre caracteres en ms 118
72 } 119
Anexos B C´odigo de control de los m´odulos de Arduino B.1. Transmisor en la banda de FM comercial. FM Transmitter v2.0 1# include <FMTX .h> // Libreria para controlar el transmisor FM 2float fm_freq = 108; // Frecuencia de transmision 3void setup (){ 4Serial.begin(9600);// Inicializa el puerto serie a 9600 baudios ( valor por defecto ) 5Serial . print ("FM - TX TFG \r\n"); // Imprime por el monitor serie 6 7fmtx_init ( fm_freq , EUROPE );// Para transmitir en el rango de frecuencias europeas 8 9Serial . print (" Canal : "); 10 Serial . print (fm_freq ,1) ; 11 Serial . println ("MHz"); 12 } 13 void loop(){ 14 // Podria usarse para controlar constantemente el puerto serie y variar en tiempo real la frecuencia de transmision , por ejemplo . Dado que para nuestro sistema esto no tiene mayor relevancia se deja simplificado el codigo . 15 } B.2. Receptor en la banda de FM comercial. Receptor basado en el m´odulo de radio TEA5767 1# include < radio .h > 2#include <TEA5767.h> 120
C.1.2. Valores de la etapa de amplificaci´on doble basada en el integrado TL082 empleada en la caja de la boya y del submarino Se adjuntan los valores empleados para la generaci´on de dos etapas de amplificaci´on implementadas en la caja de la boya y del submarino. Este montaje se utiliza para acondicionar la se˜nal en recepci´on a la entrada de sus respectivos PLL. TL082 C1 100 nF C2 220 nF C3 680 pF C4 1 µF R 1,2 KΩ R1 10 KΩ R2 1 220 KΩ R2 2 47 KΩ Tabla C.2: Los valores RC empleados para el dise˜no del circuito con el integrado TL082. 127
C.2. Esquema electr´onico del conexionado del CD4046B (PLL). Sistemas tipo 1 de orden 2 El integrado CD4046B[12] tiene una gran importancia en el funcionamiento del sistema, dado que es una pieza fundamental para poder interpretar los tonos en la recepci´on y tambi´en para generar tonos (se˜nales cuadradas) de la frecuencia que nosotros queramos transmitir sin la necesidad de usar otro tipo de m´odulos o un ordenador. Dicho esto, queda por comentar la funci´on de los elementos electr´onicos pasivos que se utilizan y se pueden observar en la Figura C.3. El CD4046B incluye un bloque interno para construir el oscilador controlado por voltaje (VCO) requerido en un PLL. El rango de frecuencias de funcionamiento del VCO se ajusta con tres componentes externos, R1, R2 y C1. Fijando el valor de C1 es posible establecer la frecuencia m´ınima de oscilaci´on del VCO calculando R1 y la m´axima calculando R2 seg´un las especificaciones del fabricante1. Entonces, a menor R1 tendremos una mayor frecuencia de salida m´axima y a menor R2 tendremos una mayor frecuencia de salida m´ınima2. Figura C.3: Esquema electr´onico del conexionado del integrado CD4046B. Queda entonces por comentar la funci´on del resto de elementos electr´onicos pasivos. En primer lugar se analiza el conjunto R3 y C2 (formando un filtro paso bajo) conectado entre las patillas 2 (salida del comparador de fase) y 9 (entrada al VCO). Este conjunto RC (cuya respuesta frecuencial queda definida por la funci´on de transferencia F(s) (C.2)) fija dos par´ametros fundamentales del integrado, que son: la wn 1R2 tiene una influencia de segundo orden sobre la frecuencia m´axima, lo que implica que afecta en menor medida que R1. 2Si dejamos la patilla 12 sin conectar a tierra a trav´es de una resistencia R2, es decir, en alta impedancia; el recorrido comienza en 0 Hz. 128
(pulsaci´on natural) y la ξ(coeficiente de amortiguamiento). Adem´as este bloque RC integra la salida pulsada del comparador digital de fase (puerta XOR) 3de forma que se otorga un nivel de tensi´on idealmente continuo4a la entrada del VCO. Se observa la localizaci´on de este bloque en el diagrama de la Figura C.4. Figura C.4: Diagrama de bloques del PLL. F(s) = 1 1 + sRC (C.2) Estos par´ametros afectan al tiempo que tarda el PLL en engancharse a una frecuencia de entrada (que est´e en su recorrido de frecuencias), adem´as de definir la funci´on de transferencia del PLL H(s)(C.3). Esta funci´on de transferencia es tipo paso bajo (como se ilustra en la Figura C.5) y presenta un codo para pulsaci´on natural wn. Para frecuencias de entrada superiores a wn(y tratando casos de frecuencias dentro del margen de operaci´on) la salida del PLL se ver´a atenuada por un factor 40dB/d´ecada, es decir, el PLL conseguir´a seguir a la entrada, pero a medida que esta frecuencia se aleje de la pulsaci´on natural, la se˜nal de salida sufrir´a cada vez una mayor atenuaci´on. Figura C.5: Funci´on de transferencia del PLL. 3Una se˜nal de pulsos cuadrados que indica c´omo de diferente es la fase de la se˜nal de entrada con respecto la fase de la se˜nal de referencia. 4En la pr´actica se puede observar que presenta un rizado. 129
H(s) = φ0(s) φr(s)=KF(s) s+KF(s), donde K = 2πkdkv 5(C.3) Siguiendo las f´ormulas (C.4) se puede determinar que a menor pulsaci´on natural wn, es decir, cuanto m´as paso bajo sea la funci´on de transferencia del PLL (Figura C.5) implicar´a una respuesta m´as lenta por parte del PLL a la hora de engancharse a una frecuencia que est´e dentro de su recorrido. Tambi´en se puede extraer la conclusi´on de que a mayor coeficiente de amortiguamiento ξ, el PLL se enganchar´a antes a la frecuencia de entrada. Este fen´omeno se puede observar en la Figura C.6, donde se suele considerar que el PLL est´a enganchado para valores entorno a ±0,1 del valor unidad θ0(t) = 1. τ=RC;ωn=sK τ;ξ=1 2τωn (C.4) Si ahora se sustituye (C.3) en (C.4): H(s) = ω2 n s2+ 2ξωns+ω2 n (C.5) Por ´ultimo, se comenta el bloque con dos condensadores CF1, CF2 y L. Su funci´on principal es filtrar por completo el rizado del nivel de continua que aparece por la patilla 10 (que ser´a 0.7V menor que la de la patilla 9 por ser la misma salida tras un seguidor de emisor). Este rizado ocasiona errores en la medici´on por parte del Arduino dado que la excursi´on del nivel de tensi´on llega a ser muy significativa y alcanza valores de tensi´on que se alejan mucho del esperado para la frecuencia a la que se encuentra enganchado el PLL. 5Donde kdes la pendiente de la funci´on de transferencia del comparador de fase en (V/rad)y kvla pendiente de la funci´on de transferencia del VCO en (Hz/V). 130
Figura C.6: Respuesta al escal´on de un sistema tipo I de orden II. C.2.1. Valores de los esquemas electr´onicos basados en PLL En esta subsecci´on se recogen todos los valores empleados en los montajes que incluyen un esquema electr´onico con PLL. Valores de PLL en la caja del avi´on Este dise˜no se emplea para detectar las frecuencias de 1800 Hz y 2800 Hz. Estas frecuencias son las utilizadas por el canal de subida (submarino-avi´on). 131
CD4046B (PLL - AVI´ ON) L 1 mH C1 10 nF C2 1 nF CF1 1 nF CF2 100 nF R1 47 KΩ R2 82 KΩ R3 100 KΩ R4 68 KΩ Tabla C.3: Los valores de los elementos electr´onicos pasivos empleados para el dise˜no del circuito con el integrado CD4046B en la caja del avi´on. Valores de PLL en la caja de la boya Este dise˜no se emplea para detectar las frecuencias de 1800 Hz y 2800 Hz. Estas frecuencias son las utilizadas por el canal de subida (submarino-avi´on). Este dise˜no se emplea para detectar la frecuencia de 500 Hz empleada para la solicitud de GPS del submarino a la boya. 132
CD4046B (PLL - BOYA) L 1 mH C1 10 nF C2 1 nF CF1 1 nF CF2 100 nF R1 47 KΩ R2 82 KΩ R3 100 KΩ R4 68 KΩ Tabla C.4: Los valores de los elementos electr´onicos pasivos empleados para el dise˜no del circuito con el integrado CD4046B en la caja de la boya. CD4046B (BOYA - para GPS) L 1 mH C1 10 nF C2 6,8 nF CF1 10 nF CF2 100 nF R1 270 KΩ R2 ∞ R3 82 KΩ Tabla C.5: Los valores RC empleados para el dise˜no del PLL basado en el circuito con el integrado CD4046B para detectar el tono de 500 Hz en la caja de la boya. 133
Valores de PLL en la caja del submarino Este dise˜no se emplea para detectar las frecuencias de 4100 Hz y 7000 Hz. Estas frecuencias son las utilizadas por el canal de bajada (avi´on-submarino). CD4046B (PLL) L 1 mH C1 6,8 nF C2 1 nF C3 100 nF R1 33 KΩ R2 47 KΩ R3 100 KΩ R4 56 KΩ Tabla C.6: Los valores de los elementos electr´onicos pasivos empleados para el dise˜no del circuito con el integrado CD4046B en la caja del submarino. C.3. Integrado CD4046 (VCO) En esta configuraci´on, al aplicar una tensi´on de entrada en la patilla 9 se obtendr´a una se˜nal cuadrada a la salida de la patilla 4 del CD4046B con una frecuencia proporcional a esa tensi´on de entrada. Se ilustra el conexionado en la Figura C.7. Figura C.7: Esquema de conexionado del integrado CD4046B empleando su VCO. 134
C.3.1. Valores del VCO empleados en la caja de la boya Estos valores se emplean para la generaci´on de tonos de 4100 Hz (punto) y 7000 Hz (raya) (canal de bajada avi´on-submarino). Este VCO se emplea para la generaci´on de la respuesta a la petici´on de la ubicaci´on GPS por parte del submarino mediante los tonos correspondientes al c´odigo Morse de las coordenadas. CD4046B (VCO) C1 6,8 nF R1 47 KΩ R2 82 KΩ RA 12,86 KΩ →12 KΩ RB 10 KΩ RC 10 KΩ Tabla C.7: Los valores RC empleados para el dise˜no del VCO basado en el circuito con el integrado CD4046B. 135
C.4. Amplificador de potencia El amplificador de potencia empleado en la transmisi´on ac´ustica. Para amplificar la se˜nal de audio antes de transmitirla por el altavoz a trav´es del agua, se utiliza un amplificador de potencia de clase D. Que sea de clase D implica que utiliza el modo conmutado de los transistores (corte y saturaci´on) para regular la entrega de potencia, esto hace que se pierda menos energ´ıa y consigue que el sistema de amplificaci´on sea m´as eficiente. De esta forma, dado que ir´an integrados en la boya (adem´as de en el submarino), se conseguir´a alargar la vida ´util de esta. Este m´odulo cuenta con un potenci´ometro que regula la amplificaci´on de la salida, una entrada de alimentaci´on, una entrada de se˜nal de audio mediante un puerto jack y salidas mediante un conector de 4 puertos para obtener una amplificaci´on mono (empleando solo una salida) o est´ereo (empleando las dos salidas). Se ilustra el m´odulo empleado en la Figura C.8. Figura C.8: M´odulo amplificador de potencia. Otras caracter´ısticas de este m´odulo son: una potencia nominal de salida de 10W, unas frecuencias de operaci´on de 20 Hz a 50 KHz (m´as que suficiente para el rango que se emplea en nuestro sistema), con un voltaje de funcionamiento de entre 7.5V y 15V (el fabricante recomienda alimentarlo con fuentes de alimentaci´on de 9V ´o 12V) y una corriente de reposo de 20 mA. En el proyecto se acaba empleando un m´odulo de caracter´ısticas de conexionado similares, con la mitad de potencia (5W) y con una alimentaci´on de 1.8V a 12V. Se escoge definitivamente este m´odulo ya que facilita la integrabilidad en las cajas y cumple perfectamente con los niveles de amplificaci´on necesarios para el altavoz. Se adjunta en la Figura C.9. 136
Figura E.3: Tipo de sistemas de antenas usado en un submarino (2 de 2). 143
E.3. Tabla de frecuencias usadas por los submarinos y su utilidad Figura E.4: Bandas de frecuencia utilizadas para la comunicaci´on en un submarino. 144
Anexos F C´odigo de las cajas del avi´on, la boya y el submarino En este Anexo se recoge el c´odigo utilizado para la recepci´on e interpretaci´on del mensaje Morse (mediante tonos) que ha generado uno de los extremos de la comunicaci´on (avi´on o submarino). El c´odigo utilizado para la transmisi´on se recoge en el Anexo A. En este Anexo tambi´en se localiza el c´odigo empleado en la boya para transmitir al submarino su localizaci´on GPS y recibir las peticiones que genere el submarino. F.1. C´odigo de la caja del avi´on (recepci´on) 1// --------------- Bibliotecas TX -FM --------------------- 2# include <FMTX .h> 3 4// --------------- Bibliotecas RX -FM --------------------- 5# include < radio .h > 6#include <TEA5767.h> 7 8# define FIX_BAND RADIO_BAND_FM // Sintonizamos FM 9# define FIX_STATION 10800 // En la freq de 108 MHz 10 11 TEA5767 radio ; // Creamos una instancia de radio 12 13 float fm_freq = 87.50; // Frecuencia FM inicial 14 15 // Array con el abecedario en codigo Morse 16 int MorseABC [] = {12,2111,2121,211,1,1121,221,1111,11,1222,212,1211,22,21,222, 17 1221,2212,121,111,2,112,1112,122,2112,2122,2211}; 18 19 // Array con los numeros en codigo Morse 20 int Numeros [] = {22222 ,12222 ,11222 ,11122 ,11112 ,11111 ,21111 ,22111 ,22211 ,22221}; 145
21 22 // Array vacia para almacenar la palabra 23 String cadena; 24 25 // Array que contiene el mensaje final 26 String mensaje ; 27 28 // Declaramos una cadena auxiliar (un valor entero ) 29 int cadenaux ; 30 31 // Declaramos variables auxiliares 32 int flag = 0; int cont = 0; int inicio = 0; int paso = 0; int barra = 0; 33 34 void setup () { 35 // Parte de RX 36 radio . init () ; // Inicializar el objeto radio 37 radio . setBandFrequency ( FIX_BAND , FIX_STATION ); // Seleccionamos la emisora 87.50 38 radio . setVolume (15) ; // De 0 a 15 39 radio . setMono ( true ); 40 Serial.begin(9600); // Inicializa Serial con 9600 baud rate( valor por defecto ) 41 Serial . println (" MODULO AVION : "); 42 43 // Parte de TX 44 fmtx_init ( fm_freq , EUROPE ); // Para transmitir en el rango de frecuencias europeas , inicializa el transmisor para enviar el mensaje generado por el ordenador 45 } 46 47 void loop() { 48 // Leemos la entrada analogica del pin A0 49 int sensorValue = analogRead (A0); 50 // Convertimos la entrada analogica (que va de 0 - 1023) a un voltaje (0 - 5V): 51 float voltage = sensorValue * (5.0 / 1023.0); 52 // Se introduce un retardo para la coordinacion entre el transmisor y el receptor 53 delay (625) ; 54 55 // Comenzamos detectando si es un tono u otro 56 if(voltage <= 0.50 && inicio == 1){ // Detectamos el tono , el punto (vemos que nivel de tension se le asigna ) 57 cadena = cadena + "1"; // Almacenamos un punto en la iesima posicion de la cadena 58 Serial . print ("."); 59 flag = 1; // Indica que se han recibido datos 60 cont = 0; // Se reinicia el contador al recibir datos para no pasar al siguiente caracter 146
61 barra = 0; // Se reinicia la barra para comenzar el nuevo mensaje 62 } 63 else if(voltage >=1 && inicio == 1){ // Detectamos el tono , la raya 64 cadena = cadena + "2"; // Almacenamos una raya en la iesima posicion de la cadena 65 Serial . print ("-"); 66 flag = 1; // Indica que se han recibido datos 67 cont = 0; // Se reinicia el contador al recibir datos para no pasar al siguiente caracter 68 barra = 0; // Se reinicia la barra para comenzar el nuevo mensaje 69 } 70 else if( flag == 1){// Si la flag = 1, quiere decir que ya se han comenzado a recibir datos 71 cont ++; 72 if(cont >3) {// Cuenta el numero de ciclos que pasan sin recibir un punto o una raya (si pasan mas de 3 ciclos se considera que se ha acabado de transmitir el caracter) 73 Serial . print ("/");// Se imprime un separador entre los caracteres en Morse 74 cont = 0; // Se reinicia el contador 75 paso = 1; // Se tiene en cuenta que ha pasado de caracter para que pueda entrar a evaluar el codigo recogido con el correspondiente codigo ASCII 76 if( barra == 1) {// Si la barra = 1 quiere decir que han pasado 6 ciclos sin recibir ningun dato y se considera que se ha acabado el mensaje 77 barra = 0; // Se reinicia la barra 78 Serial . println ( mensaje );// Se imprime el mensaje total recogido 79 mensaje = " ";// Se limpia la cadena 80 flag = 0; // Se reinicia el flag para esperar la siguiente llegada de datos 81 } 82 barra = 1; // Se pone a 1 tras el paso de 3 ciclos sin recibir datos 83 } 84 } 85 86 inicio = 1;// Para comenzar la recepcion de datos sin que se imprima basura por el serial antes de que se 147
quiera iniciar el programa 87 88 if(paso == 1){// Si paso = 1 quiere decir que se termino el caracter Morse transmitido y se pasa a evaluar su correspondencia 89 paso = 0; 90 cadenaux = ""; 91 cadenaux = cadena . toInt () ; // Convertimos a entero la cadena para evaluarla 92 cadena = ’ ’; 93 94 // Comparamos los disntitos casos 95 if( MorseABC [0] == cadenaux ){ 96 mensaje = mensaje + ’a’; 97 } 98 else if ( MorseABC [1] == cadenaux ){ 99 mensaje = mensaje + ’b’; 100 } 101 else if ( MorseABC [2] == cadenaux ){ 102 mensaje = mensaje + ’c’; 103 } 104 else if ( MorseABC [3] == cadenaux ){ 105 mensaje = mensaje + ’d’; 106 } 107 else if ( MorseABC [4] == cadenaux ){ 108 mensaje = mensaje + ’e’; 109 } 110 else if ( MorseABC [5] == cadenaux ){ 111 mensaje = mensaje + ’f’; 112 } 113 else if ( MorseABC [6] == cadenaux ){ 114 mensaje = mensaje + ’g’; 115 } 116 else if ( MorseABC [7] == cadenaux ){ 117 mensaje = mensaje + ’h’; 118 } 119 else if ( MorseABC [8] == cadenaux ){ 120 mensaje = mensaje + ’i’; 121 } 122 else if ( MorseABC [9] == cadenaux ){ 123 mensaje = mensaje + ’j’; 124 } 125 else if( MorseABC [10] == cadenaux ){ 126 mensaje = mensaje + ’k’; 127 } 128 else if( MorseABC [11] == cadenaux ){ 129 mensaje = mensaje + ’l’; 130 } 131 else if( MorseABC [12] == cadenaux ){ 132 mensaje = mensaje + ’m’; 148
133 } 134 else if( MorseABC [13] == cadenaux ){ 135 mensaje = mensaje + ’n’; 136 } 137 else if( MorseABC [14] == cadenaux ){ 138 mensaje = mensaje + ’o’; 139 } 140 else if( MorseABC [15] == cadenaux ){ 141 mensaje = mensaje + ’p’; 142 } 143 else if( MorseABC [16] == cadenaux ){ 144 mensaje = mensaje + ’q’; 145 } 146 else if( MorseABC [17] == cadenaux ){ 147 mensaje = mensaje + ’r’; 148 } 149 else if( MorseABC [18] == cadenaux ){ 150 mensaje = mensaje + ’s’; 151 } 152 else if( MorseABC [19] == cadenaux ){ 153 mensaje = mensaje + ’t’; 154 } 155 else if( MorseABC [20] == cadenaux ){ 156 mensaje = mensaje + ’u’; 157 } 158 else if( MorseABC [21] == cadenaux ){ 159 mensaje = mensaje + ’v’; 160 } 161 else if( MorseABC [22] == cadenaux ){ 162 mensaje = mensaje + ’w’; 163 } 164 else if( MorseABC [23] == cadenaux ){ 165 mensaje = mensaje + ’x’; 166 } 167 else if( MorseABC [24] == cadenaux ){ 168 mensaje = mensaje + ’y’; 169 } 170 else if( MorseABC [25] == cadenaux ){ 171 mensaje = mensaje + ’z’; 172 } 173 else if ( Numeros [0] == cadenaux ){ 174 mensaje = mensaje + ’0’; 175 } 176 else if ( Numeros [1] == cadenaux ){ 177 mensaje = mensaje + ’1’; 178 } 179 else if ( Numeros [2] == cadenaux ){ 180 mensaje = mensaje + ’2’; 181 } 182 else if ( Numeros [3] == cadenaux ){ 149
183 mensaje = mensaje + ’3’; 184 } 185 else if ( Numeros [4] == cadenaux ){ 186 mensaje = mensaje + ’4’; 187 } 188 else if ( Numeros [5] == cadenaux ){ 189 mensaje = mensaje + ’5’; 190 } 191 else if ( Numeros [6] == cadenaux ){ 192 mensaje = mensaje + ’6’; 193 } 194 else if ( Numeros [7] == cadenaux ){ 195 mensaje = mensaje + ’7’; 196 } 197 else if ( Numeros [8] == cadenaux ){ 198 mensaje = mensaje + ’8’; 199 } 200 else if ( Numeros [9] == cadenaux ){ 201 mensaje = mensaje + ’9’; 202 } 203 } 204 } F.2. C´odigo de la caja de la boya(transmisi´on y recepci´on) 1# include < SoftwareSerial .h>// Incluimos la libreria SoftwareSerial que nos permite declarar ciertos pines como puertos serie 2#include <TinyGPS.h>// Incluimos la libreria TinyGPS que nos ayuda a tener una extraccion de datos mas sencilla del modulo GPS 3# define vcoONOFF 4// Definimos el PIN 4 para habilitar el VCO 4# define vcotono 12 // Definimos el PIN 12 para dar las tensiones que generaran los tonos en el VCO ( puntos y rayas) -> en alta se genera un punto y en baja la raya 5 6// --------------- Bibliotecas TX -FM --------------------- 7# include <FMTX .h> 8 9// --------------- Bibliotecas RX -FM --------------------- 10 # include < radio .h > 11 #include <TEA5767.h> 12 13 # define FIX_BAND RADIO_BAND_FM // Sintonizamos FM 14 # define FIX_STATION 10800 // En la freq de 108 MHz 15 150
16 TEA5767 radio ; // Creamos una instancia de radio 17 18 float fm_freq = 108.00; // Frecuencia FM inicial 19 20 TinyGPS gps;// Declaramos el objeto gps de la clase TinyGPS 21 SoftwareSerial serialgps (50 ,51);// Declaramos el pin 50 Tx y 51 Rx ( nuevos puertos serie para Arduino MEGA2560 ) 22 23 // Declaracion de variables globales 24 // Array para almacenar el mensaje en Morse 25 String GPS_Morse_lon =""; 26 String GPS_Morse_lat =""; 27 28 // Array para almacenar la ubicacion 29 int ubicacion [20]; 30 char signo = ""; 31 32 // Variables para almacenar la ubicacion 33 float latitude = 0, longitude = 0; 34 String cadena_latitud [9]; String latitud_rot [9]= ""; 35 String cadena_longitud [9]; String longitud_rot [9]= ""; 36 37 // Array vacia para almacenar la palabra 38 String cadena; 39 40 // Array que contiene el mensaje final 41 String mensaje ; 42 43 // Array para comparar 44 String num_sig []={"0","1","2","3","4","5","6","7","8","9","n"," p"}; 45 46 // Declaramos una cadena auxiliar (un valor entero ) 47 int cadenaux ; 48 49 // Declaramos variables auxiliares 50 int flag = 0; int cont = 0; int inicio = 0; int paso = 0; int barra = 0; 51 float numero = 0; float numero_aux = 0; int j = 0; int i = 0; int k = 0; float division = 10; double doble = 0; int entero = 0; String numero2 = ""; 52 53 // La variable para comenzar con la obtencion GPS 54 int solicitud_gps = 0; 55 56 void setup (){ 57 Serial . begin (115200) ;// Iniciamos el puerto serie a 115200 baudios para imprimir por el monitor serie la informacion extraida 151
58 serialgps . begin (9600) ;// Iniciamos el puerto serie por el cual se comunican el modulo GPS y TX -RX con el Arduino 59 60 // Parte de RX 61 radio . init () ; // Inicializar el objeto radio 62 radio . setBandFrequency ( FIX_BAND , FIX_STATION ); // Seleccionamos la emisora 108.00 63 radio . setVolume (15) ; // De 0 a 15 64 radio . setMono ( true ); 65 Serial.begin(9600); // Inicializa Serial con 9600 baud rate( valor por defecto ) 66 Serial . println (" MODULO BOYA : "); 67 68 // Parte de TX 69 fmtx_init ( fm_freq , EUROPE ); // Para transmitir en el rango de frecuencias europeas 70 71 } 72 73 void loop(){ 74 // Leemos la entrada analogica del pin A0 75 int sensorValue = analogRead (A0); 76 // Convertimos la entrada analogica (que va de 0 - 1023) a un voltaje (0 - 5V): 77 float voltage = sensorValue * (5.0 / 1023.0); 78 79 //---------------------------------------------------------- 80 // ------------------ OBTENCION UBICACION GPS ----------------- 81 //---------------------------------------------------------- 82 83 // Detectamos si llega un tono de 500 Hz que se corresponde con la peticion de GPS , para ello comprobamos el nivel de tension 84 // a la entrada del pin analogico 0 85 86 if( voltage > 3.3) {// Si se detecta una solicitud de GPS se pasa a obtener la ubicacion 87 solicitud_gps = 0; // Se reinicia la variable 88 while ( latitude == 0 && longitude == 0) { 89 while ( serialgps . available () )// Mientras haya datos disponibles en el puerto serie declarado por software ... 90 { 91 int c = serialgps . read ();// Extraemos la informacion del puerto serie 92 93 if( gps . encode (c)){// Cada byte de datos NEMA debe darse a TinyGPS mediante el uso de encode (). 94 // Devuelve " true" cuando los nuevos datos se han descodificado completamente y se pueden utilizar . 152