DESARROLLO DE UN SISTEMA CODIFICADOR DE CLAVE MORSE MEDIANTE EL SOFTWARE ESPECIALIZADO “MATHWORKS MATLAB”.
1. INTRODUCCIÓN Desde su inicio la especie humana vio la necesidad de comunicarse primeramente uno con otro en cortas distancias, pero con el pasar del tiempo ti empo los pueblos y ciudades tardaban días en transmitir un mensaje por las dificultades de comunicación, incluso algunas veces los mensajes se perdían hasta llegar a su destino ya que estos eran enviados por mensajeros que hacían viajes de días, semanas o incluso meses para poder hacer posible que un mensaje fuese enviado, muchos eran robados, o no alcanzaban a llegar a su destino. Fue entonces cuando nació la idea de la comunicación a grandes distancias, primero hubo hubo ideas un tanto rupestres como las las señales de humo, humo, pero entonces junto con el telégrafo en 1830 apareció el código morse. El código morse consiste en un alfabeto de números y letras, formado por combinaciones combinaciones de puntos y rayas ra yas que conformaban cada una de los símbolos ya mencionados. Hoy en día el código Morse puede ser representado como combinaciones binarias de 0’s y 1’s y es esto en que nos hemos basado para realizar este proyecto. El proyecto que podrán observar consiste en un codificador de código morse, en dicho programa nos dará la opción de ingresar un mensaje con el alfabeto español, y a continuación el algoritmo hará que lo visualicemos con combinaciones de código morse.
2. JUSTIFICACIÓN JUSTIFICACIÓN DEL PROYECTO La necesidad de obtener un sistema de comunicación de pequeñas dimensiones, que posibiliten originar un sistema de codificación codificación en el que se asigne a una combinación en particular un símbolo (letra, número, incluso incluso palabra, etc.) para para lograr transmitir una idea a través de medios inalámbricos i nalámbricos de transmisión. El algoritmo funciona de manera que la entrada sea el código morse mediante pulsadores (para (para los puntos y rayas) rayas) y pase por por un switch que hará hará una comparación comparación de lo ingresado con su significado en el abecedario, la salida será la traducción del código a lenguaje corriente.
2.1 DELIMITACIÓN DEL PROBLEMA Se desarrollará en la provincia de Chimborazo, ciudad de Riobamba, su importancia radica en que el código morse es perfectamente utilizable hoy en día cuando las existencias de condiciones atmosféricas adversas adversas no permiten el empleo de otros medios más desarrollados. La transmisión de las señales de este código se la realizaba a través de medios físicos, en los cuales, por ejemplo, para larga distancia se requería un sistema grande y complicado. Actualmente se cuenta con diferentes medios de transmisión inalámbricos de señales digitales, por lo tanto, convendría bueno contar con un sistema decodificador para llevar de simples puntos y rayas (señales de voltajes cortos y largos) a un código binario.
3. OBJETIVOS 3.1 OBJETIVO PRINCIPAL Desarrollo de un sistema codificador de clave morse mediante el software especializado “Mathworks Matlab”.
3.2 OBJETIVOS ESPECÍFICOS
Crear un programa en Matlab haciendo uso de funciones. Investigar sobre las aplicaciones de Matlab en diferentes ramas de las l as ciencias. Demostrar el funcionamiento de Arduino conectado al software especializado Matlab.
4. MARCO TEÓRICO 4.1 ANTECEDENTES 4.1.1. DECODIFICADOR DE CÓDIGO MORSE Sistema de conversión de caracteres codificados en código Morse a caracteres del alfabeto latino. La velocidad de entrada de los caracteres codificados codificados es variable mediante selectores; de este modo, es posible ingresar caracteres a velocidades menores para probar el el sistema aún sin dominar dominar la codificación. Es posible utilizar el sistema sistema como herramienta para el estudio de la codificación. Oscar Fernando Gómez Sandoval
4.1.2. Implementación de un codificador y decodificador fuente para un sistema de comunicación digital El objetivo general de este proyecto pro yecto fue implementar un codificador y decodificador fuente utilizando un microcontrolador de la familia MC68HC11. Se hizo una investigación sobre codificación fuente, mostrando la evolución histórica, presentando algunos de los distintos tipos de códigos que existen, sus principios de funcionamiento, diferencias, ventajas y desventajas, y algunos al gunos algoritmos de implementación. Además, realizó el estudio necesario para conocer la forma en que debía programarse el dispositivo que se propuso para éste fin. Se definió como método de codificación el de Hoffman, para un conjunto de 108 símbolos, correspondientes correspondientes a caracteres que normalmente aparecen en los textos en español. Se desarrolló un código fuente de intercambio de datos tanto para el MCU como para la computadora, además de una interfaz con el usuario. Finalmente se procedió a escribir un Manual de usuario para futuras referencias. Entre los resultados alcanzados se obtuvo tasas de compresión de hasta 40%, sin embargo, una de las principales conclusiones fue que el desempeño de la compresión depende del origen del texto, pues el cálculo de las probabilidades de los símbolos se realizó para un texto mayormente constituido por letras minúsculas. En este sentido, se puede obtener tasas de compresión negativas, si los textos t extos a comprimir poseen solamente solamente caracteres en mayúscula. mayúscula. Además, el tamaño tamaño del texto generador generador de las probabilidades debió ser bastante grande para obtener resultados confiables. Finalmente se propone el desarrollo de los demás bloques del sistema de comunicación de manera que se pueda realizar el proceso de transmisión y recepción en su totalidad. Luis Felipe Córdoba Morales
4.2 BASES TEÓRICAS 4.2.1 CÓDIGO MORSE. El código morse, también conocido como alfabeto morse, es un sistema de representación de letras y números mediante señales emitidas de forma intermitente. Fue desarrollado por Alfred Vail mientras colaboraba en 1830 con Samuel Morse en la invención del telégrafo eléctrico. Vail creó un método según el cual cada letra o número era transmitido de forma individual i ndividual con un código consistente en rayas y puntos, es decir, decir, señales telegráficas telegráficas que se diferencian en el tiempo de duración duración de la señal activa. Morse reconoció la idoneidad de este sistema y lo patentó junto con el
telégrafo eléctrico. Fue conocido como American Morse Code y fue f ue utilizado en la primera transmisión por por telégrafo.
4.2.1.1 PARTES DEL CODIGO MORSE 1. corto marca, punto o “dit” (·) - una unidad de largo 2. una marca, guion o “dah” (-) - tres unidades de longitud 3. brecha intra-caracteres intra-caracteres (entre los puntos y rayas en un personaje) - una unidad de largo largo 4. corta brecha (entre las letras) - tres tr es unidades de longitud 5. brecha media (entre las palabras) - siete unidades de longitud El uso actual más popular de código Morse es por operadores de radio aficionados, a pesar de que ya no es un requisito para la concesión de licencias de Aficionados en los EE.UU. y muchos otros países. También se sigue utilizando con fines especializados, incluyendo la identificación de navegación radiobaliza y transmisores móviles terrestres, además de algunos de comunicaciones militares, incluida la luz intermitente Semáforo comunicaciones comunicaciones entre buques en algunos servicios navales. Código Morse está diseñado para ser ser leído fácilmente por por los seres humanos humanos sin sin un ordenador, por lo que es es apropiado apropiado para el envío de datos digitales automatizados en los canales de voz, así como lo que es ideal para la señalización de emergencia, como por medio de las fuentes de energía improvisados que pueden ser fácilmente "tecleó "mediante el suministro y la eliminación de la energía eléctrica (por ejemplo, encender un interruptor o encender una linterna encendido y apagado). En situaciones en las que el pulso sólo puede ser de la misma longitud (por ejemplo, tocando en la madera, o en las paredes de las celdas - en comparación con un tono electrónico), una pausa ligeramente más larga entre latidos se puede utilizar en lugar de un pulso largo ("dah").
4.2.1.2 CÓDIGO MORSE COMO TECNOLOGÍA ASSISTIVE: El código Morse se ha empleado como tecnología assistive, assist ive, de manera que ayuda a personas con incapacidades incapacidades para comunicarse. Morse puede ser usado por personas con inhabilidades severas del movimiento, mientras tengan cierto control mínimo motor. En algunos casos esto significa alternativamente soplar y aspirar en un tubo plástico. Las personas con discapacidades severas de movimiento, además de discapacidades sensoriales (por ejemplo, personas que también son sordos o ciegos) pueden recibir Morse a través de un zumbador piel. Los productos están disponibles que permiten una computadora sistema operativo para ser controlado por código Morse, que permite al usuario el acceso a la Internet y el correo electrónico. En un caso reportado en la revista radio aficionado QST un antiguo operador de radio de a bordo que tenía un derrame cerebral y perdió la capacidad de hablar o escribir era capaz de comunicarse con su médico (radioaficionado) mediante el parpadeo de sus ojos en Morse. Un caso más confirmado ocurrió en 1966, cuando prisionero de guerra Jeremías Denton, traído en la televisión por sus captores norvietnamitas, en Morse-parpadeó la palabra tortura.
4.2.2 MATLAB MATLAB es un entorno de computación y desarrollo de aplicaciones totalmente integrado orientado para llevar a cabo proyectos en donde se encuentren implicados elevados cálculos matemáticos y la visualización gráfica de los mismos. MATLAB integra análisis numérico, cálculo matricial, proceso de señal y visualización gráfica en un entorno completo donde los problemas y sus soluciones son expresados del mismo modo en que se escribirían tradicionalmente t radicionalmente,, sin necesidad de hacer uso de la programación tradicional. tradicional. MATLAB dispone también en la actualidad de un amplio abanico de programas de apoyo especializados, denominados Toolboxes, que extienden significativamente el número de funciones incorporadas en el programa principal. Estos Toolboxes cubren en la actualidad prácticamente casi todas las áreas principales en el mundo de la ingeniería y la simulación, destacando entre ellos el 'toolbox' de proceso de imágenes, señal, control robusto, estadística, análisis financiero, fi nanciero, matemáticas simbólicas, redes neurales, lógica difusa, identificación de sistemas, simulación de sistemas dinámicos, etc. es un entorno de cálculo técnico, que se ha convertido en estándar de la industria, con capacidades capacidades no superadas en computación y visualización numérica. De forma coherente y sin ningún tipo de fisuras, integra los requisitos claves de un sistema de computación técnico: cálculo numérico, gráficos, herramientas para aplicaciones específicas y capacidad de ejecución en múltiples plataformas. Esta familia de productos proporciona al estudiante un medio de carácter único, para resolver los problemas más complejos y difíciles. difíciles.
4.2.2.1 FUNCIONES EN MATLAB Una función en en Matlab es una pieza de código código que acepta un argumento de de entrada del usuario y produce salida al programa. Las funciones le ayudan a programar eficientemente, lo que le permite evitar reescribir el código de computación para cálculos que se realizan con frecuencia. Por ejemplo, la mayoría de los programas de cómputo contienen una función que calcula el seno de un número. En MATLAB, "sin" es el nombre de la l a función que se usa para llamar una serie de comandos que realizan los cálculos necesarios. El usuario necesita proporcionar un ángulo y MATLAB MAT LAB regresa un resultado. No es necesario que el programador sepa cómo MATLAB calcula el valor de sin(x). Por lo cual podemos decir que las funciones en MATLAB es una forma de agilizar los cálculos para los proyectos que vamos a realizar. Todo el proceso que generalmente usamos en MATLAB utilizan funciones desde una suma, hasta procesos más complejos como son las funciones trigonométricas por lo que a continuación revisaremos más a fondo en que consiste el uso de funciones en el software especializado MATLAB.
4.2.2.2 ARDUINO IO Es una extensión de Matlab desarrollada por Mathworks que contiene una serie de librerías y funciones que nos permite conectar Matlab con una placa Arduino y permitiendo así intercambiar intercambiar instrucciones instrucciones entre la Placa y Matlab.
4.2.3 ARDUINO es una compañía de hardware libre y una comunidad tecnológica que diseña y manufactura placas computadora de desarrollo de hardware y software, compuesta respectivamente por circuitos impresos que integran un microcontrolador y un entorno de desarrollo (IDE), en donde se programa cada placa. Arduino se enfoca en acercar y facilitar el uso de la electrónica y programación de sistemas embebidos en proyectos multidisciplinarios1 2 . Toda la plataforma, tanto t anto para sus componentes de hardware como de software, son liberados con licencia de código abierto que permite libertad de acceso a ellos3 . El hardware consiste en una placa de circuito cir cuito impreso con un microcontrolador, usualmente Atmel AVR, puertos digitales y analógicos de entrada/salida,4 , los cuales pueden conectarse conectarse a placas placas de expansión expansión (shields), que amplían amplían las características de funcionamiento de la placa Arduino. Asimismo, posee un puerto de conexión USB desde donde se puede alimentar la placa y establecer comunicación comunicación con el computador. Por otro lado, el software consiste en un entorno de desarrollo (IDE) basado en el entorno de Processing y lenguaje de programación basado en Wiring, así como en el cargador de arranque (bootloader) que es ejecutado en la placa.4 El microcontrolador de la placa se programa mediante un computador, usando una comunicación comunicación serial mediante un convertidor de niveles RS-232 a TTL serial. La primera placa Arduino fue introducida en 2005, ofreciendo un bajo costo y facilidad de uso para novatos y profesionales. Buscaba desarrollar proyectos interactivos con su entorno mediante el uso de actuadores y sensores. A partir de octubre de 2012, se incorporaron nuevos modelos de placas de desarrollo que usan microcontroladores Cortex M3, ARM de 32 bits,5 que coexisten con los originales modelos que integran microcontroladores AVR de 8 bits. ARM y AVR no son plataformas compatibles en cuanto a su arquitectura y por lo que tampoco lo es su set de instrucciones, pero se pueden programar programar y compilar bajo bajo el IDE predeterminado de Arduino sin ningún cambio. Las placas Arduino están disponibles de dos formas: ensambladas o en forma de kits "Hazlo tú mismo" (por sus siglas en inglés "DIY"). Los esquemas de diseño del Hardware están disponibles bajo licencia Libre, con lo que se permite que cualquier persona pueda pueda crear su propia placa Arduino sin sin necesidad de comprar una prefabricada. Adafruit Adafruit Industries estimó a mediados mediados del año 2011 que, alrededor de 300,000 placas Arduino habían sido producidas comercialmente comercialmente y en el año 2013 estimó que alrededor de 700.000 placas oficiales de la empresa Arduino estaban en manos de los usuarios.
Arduino se puede utilizar para desarrollar objetos interactivos i nteractivos autónomos o puede ser conectado a software tal como Adobe Flash, Processing, Max/MSP, Pure Data, etc. Una tendencia tecnológica es utilizar Arduino como tarjeta de adquisición de datos desarrollando interfaces en software como JAVA, Visual Basic y LabVIEW 6 . Las placas se pueden pueden montar a mano o adquirirse. adquirirse. El entorno de desarrollo desarrollo integrado libre se puede descargar descargar gratuitamente. El proyecto Arduino recibió una mención honorífica en la categoría de Comunidades Digitales en el Prix Ars Electrónica de 200.
5. DESARROLLO DEL PROYECTO %ALGORITMO DECODIFICADOR DE CÓDIGO MORSE
5.1 Función Principal 6. a.pinMode(13,'OUTPUT' a.pinMode(13,'OUTPUT') ) ('Ingrese el mensaje que quiere traducir a codigo 7. str=input ('Ingrese morse: \n', \n','s' 's'); );
8. mors={'.----', ,'..---' '..---', ,'...--' '...--', ,'....-' '....-', ,'.....' '.....', ,'-....' '-....', ,'--...' '--...', ,'9. mors={'.----' --..','----.' --..', '----.', ,'-----' '-----', ,'.-' '.-', ,'-...' '-...', ,'-.-.' '-.-.', ,'-..' '-..', ,'.' '.', ,'..-.' '..-.', ,'-.', .' ,'....' '....', ,'..' '..', ,'.---' '.---', ,'-.-' '-.-', ,'.-..' '.-..', ,'--' '--', ,'-.' '-.', ,'---' '---', ,'.--.' '.--.', ,'--.','.-.' '.-.', ,'...' '...', ,'-' '-', ,'..-' '..-', ,'...-' '...-', ,'.--' '.--', ,'-..-' '-..-', ,'-.--' '-.--', ,'--..' '--..', ,'/' '/'}; };
10. 11.
letter={'1' letter={'1', ,'2' '2', ,'3' '3', ,'4' '4', ,'5' '5', ,'6' '6', ,'7' '7', ,'8' '8', ,'9' '9', ,'0' '0', ,'A' 'A', ,'B' 'B', ,'C' ,'D' 'D', ,'E' 'E', ,'F' 'F', ,'G' 'G', ,'H' 'H', ,'I' 'I', ,'J' 'J', ,'K' 'K', ,'L' 'L', ,'M' 'M', ,'N' 'N', ,'O' 'O', ,'P' 'P', ,'Q' 'Q', ,'R' 'R', ,'S' ,'T' 'T', ,'U' 'U', ,'V' 'V', ,'W' 'W', ,'X' 'X', ,'Y' 'Y', ,'Z' 'Z', ,'_' '_'}; };
12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52.
for i=1:length(str) i=1:length(str) for for j=1:length(letter) if if strcmpi(str(i),letter(j))==1 cod=str(i); disp(mors(j));
switch (cod) switch (cod) case '1' punto (a); raya (a); raya (a); raya (a); raya (a); case '2' punto (a); punto (a); raya (a); raya (a); raya (a); case '3' punto (a); punto (a); punto (a); raya (a); raya (a); case '4' punto (a); punto (a); punto (a); punto (a); raya (a); case 'A' punto (a); raya (a); case 'B' raya(a); punto(a); punto(a); punto(a);
53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105.
case 'C' raya(a); punto(a); raya(a); punto(a); case 'D' raya(a); punto(a); punto(a); case 'E' punto(a); case 'F' 'F'; ; punto(a); punto(a); raya(a); punto(a); case 'G' raya(a); raya(a); punto(a); case 'H' punto(a); punto(a); punto(a); punto(a); case 'I' punto(a); punto(a); case 'J' punto(a); raya(a); raya(a); raya(a); case 'K' raya(a); punto(a); raya(a); case 'L' punto(a); raya(a); punto(a); punto(a); case 'M' 'M'; ; raya(a); raya(a); case 'N' raya(a); punto(a); case 'O' raya(a);
106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158.
raya(a); raya(a); case 'P' punto(a); raya(a); raya(a); punto(a); case 'Q' raya(a); raya(a); punto(a); raya case 'R' punto(a); raya(a); punto(a); case 'S' punto(a); punto(a); punto(a); case 'T' raya(a); case 'U' punto(a); punto(a); raya(a); case 'V' punto(a); punto(a); punto(a); raya(a); case
'W'; 'W'; punto(a); raya(a); raya(a);
case 'X' punto(a); raya(a); raya(a); case 'Y ' raya(a); punto(a); raya(a); raya(a); case 'Z' raya(a); raya(a); punto(a); punto(a);
159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198.
5.2 FUNCIÓN PUNTO function []=punto(x) function []=punto(x) x.digitalWrite(13,1); pause(0.5); x.digitalWrite(13,0); pause(0.5); end
5.3 FUNCION RAYA. function []=raya(x) function []=raya(x) x.digitalWrite(13,1); pause(1.5); x.digitalWrite(13,0);
case '0' raya(a); raya(a); raya(a); raya(a); raya(a);
case '5' punto(a); punto(a); punto(a); punto(a); punto(a); case
'6' raya(a); punto(a); punto(a); punto(a); punto(a); case '7' raya(a); raya(a); punto(a); punto(a); punto(a); case '8' raya(a); raya(a); raya(a); punto(a); punto(a); case '9' raya(a); raya(a); raya(a); raya(a); punto(a);
pause(0.5); end
6. PRUEBAS Y RESULTADOS Después de realizar pruebas en el prototipo realizado r ealizado se obtuvo los siguientes resultados:
Cuando se hace la impresión de un punto en el led, este permanecerá prendido durante 0,5 segundos. Cuando se hace la impresión de una raya en el led, este permanecerá prendido durante 1,5 segundos. El intervalo entre un punto y raya en el que el led permanecerá apagado es de 0.5 segundos. El intervalo entre dos letras letr as en donde el led permanecerá p ermanecerá apagado apagado es de 2 segundos.
7. RECOMENDACIONES Y CONCLUSIONES. 7.1 RECOMENDACIONES Se recomienda manipular correctamente la placa Arduino ya que su mal uso puede causar causar daños en los pines. El software especializado Matlab necesita de conocimientos previos de programación para para mayor facilidad en en su uso. Se debe hacer la importación de todas las librearías de Arduino IO a Matlab para poder empezar empezar a trabajar con la placa.
7.2 CONCLUSIONES Se pudo hacer uso de funciones para desarrollar un programa en Matlab. Obtuvimos más conocimientos sobre la aplicación de Matlab en la electrónica. Demostramos el funcionamiento del Arduino en conjunto con Matlab. Se pudo desarrollar un sistema codificador de clave morse en Matlab.
1.
ANEXOS