Está en la página 1de 16

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 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 ideas un tanto rupestres como las señales de 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 de puntos y rayas 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 DEL PROYECTO
La necesidad de obtener un sistema de comunicación de pequeñas dimensiones, que
posibiliten originar un sistema de codificación en el que se asigne a una combinación en
particular un símbolo (letra, número, incluso palabra, etc.) para lograr transmitir una
idea a través de medios inalámbricos de transmisión.
El algoritmo funciona de manera que la entrada sea el código morse mediante
pulsadores (para los puntos y rayas) y pase por un switch que hará una 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 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 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 es variable
mediante selectores; de este modo, es posible ingresar caracteres a velocidades menores
para probar el sistema aún sin dominar la codificación. Es posible utilizar el 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 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 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 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 a comprimir
poseen solamente caracteres en mayúscula. Además, el tamaño del texto 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 con un código consistente en rayas y
puntos, es decir, señales telegráficas que se diferencian en el tiempo de 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 utilizado en la
primera transmisión 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 (entre los puntos y rayas en un personaje) - una unidad de largo
4. corta brecha (entre las letras) - tres 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 entre buques en algunos servicios navales. Código Morse está diseñado
para ser leído fácilmente por los seres humanos sin un ordenador, por lo que es 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, de manera que ayuda a
personas con 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, sin necesidad de hacer uso de la
programación 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, 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 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.
4.2.2.1 FUNCIONES EN MATLAB
Una función en Matlab es una pieza de código que acepta un argumento 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 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 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 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 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 impreso con un microcontrolador,


usualmente Atmel AVR, puertos digitales y analógicos de entrada/salida,4 , los cuales
pueden conectarse a placas de expansión (shields), que 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 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 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 y compilar 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 crear su propia placa Arduino sin necesidad de comprar una
prefabricada. Adafruit Industries estimó a mediados del año 2011 que, alrededor de
300,000 placas Arduino habían sido producidas 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 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 montar a mano o adquirirse. El entorno de desarrollo integrado libre se
puede 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')
7. str=input ('Ingrese el mensaje que quiere traducir a codigo
morse: \n','s');
8.
9. mors={'.----','..---','...--','....-','.....','-....','--...','-
--..','----.','-----','.-','-...','-.-.','-..','.','..-.','--
.','....','..','.---','-.-','.-..','--','-.','---','.--.','--.-
','.-.','...','-','..-','...-','.--','-..-','-.--','--..','/'};
10.
11. letter={'1','2','3','4','5','6','7','8','9','0','A','B','C'
,'D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S'
,'T','U','V','W','X','Y','Z','_'};
12.
13. for i=1:length(str)
14. for j=1:length(letter)
15. if strcmpi(str(i),letter(j))==1
16. cod=str(i);
17. disp(mors(j));
18.
19.
20. switch (cod)
21. case '1'
22. punto (a);
23. raya (a);
24. raya (a);
25. raya (a);
26. raya (a);
27. case '2'
28. punto (a);
29. punto (a);
30. raya (a);
31. raya (a);
32. raya (a);
33. case '3'
34. punto (a);
35. punto (a);
36. punto (a);
37. raya (a);
38. raya (a);
39. case '4'
40. punto (a);
41. punto (a);
42. punto (a);
43. punto (a);
44. raya (a);
45. case 'A'
46. punto (a);
47. raya (a);
48. case 'B'
49. raya(a);
50. punto(a);
51. punto(a);
52. punto(a);
53.
54. case 'C'
55. raya(a);
56. punto(a);
57. raya(a);
58. punto(a);
59. case 'D'
60. raya(a);
61. punto(a);
62. punto(a);
63. case 'E'
64. punto(a);
65. case 'F';
66. punto(a);
67. punto(a);
68. raya(a);
69. punto(a);
70. case 'G'
71. raya(a);
72. raya(a);
73. punto(a);
74. case 'H'
75. punto(a);
76. punto(a);
77. punto(a);
78. punto(a);
79.
80. case 'I'
81. punto(a);
82. punto(a);
83. case 'J'
84. punto(a);
85. raya(a);
86. raya(a);
87. raya(a);
88. case 'K'
89. raya(a);
90. punto(a);
91. raya(a);
92. case 'L'
93. punto(a);
94. raya(a);
95. punto(a);
96. punto(a);
97. case 'M';
98. raya(a);
99. raya(a);
100. case 'N'
101. raya(a);
102. punto(a);
103.
104. case 'O'
105. raya(a);
106. raya(a);
107. raya(a);
108.
109. case 'P'
110. punto(a);
111. raya(a);
112. raya(a);
113. punto(a);
114. case 'Q'
115. raya(a);
116. raya(a);
117. punto(a);
118. raya
119. case 'R'
120. punto(a);
121. raya(a);
122. punto(a);
123. case 'S'
124. punto(a);
125. punto(a);
126. punto(a);
127.
128. case 'T'
129. raya(a);
130. case 'U'
131. punto(a);
132. punto(a);
133. raya(a);
134. case 'V'
135. punto(a);
136. punto(a);
137. punto(a);
138. raya(a);
139.
140. case 'W';
141. punto(a);
142. raya(a);
143. raya(a);
144.
145. case 'X'
146. punto(a);
147. raya(a);
148. raya(a);
149. case 'Y '
150. raya(a);
151. punto(a);
152. raya(a);
153. raya(a);
154. case 'Z'
155. raya(a);
156. raya(a);
157. punto(a);
158. punto(a);
159.
160. case '0'
161. raya(a);
162. raya(a);
163. raya(a);
164. raya(a);
165. raya(a);
166.
167.
168. case '5'
169. punto(a);
170. punto(a);
171. punto(a);
172. punto(a);
173. punto(a);
174.
175. case '6'
176. raya(a);
177. punto(a);
178. punto(a);
179. punto(a);
180. punto(a);
181. case '7'
182. raya(a);
183. raya(a);
184. punto(a);
185. punto(a);
186. punto(a);
187. case '8'
188. raya(a);
189. raya(a);
190. raya(a);
191. punto(a);
192. punto(a);
193. case '9'
194. raya(a);
195. raya(a);
196. raya(a);
197. raya(a);
198. punto(a);
5.2 FUNCIÓN PUNTO
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)
x.digitalWrite(13,1);
pause(1.5);
x.digitalWrite(13,0);
pause(0.5);
end

6. PRUEBAS Y RESULTADOS

Después de realizar pruebas en el prototipo realizado 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 en donde el led permanecerá 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 daños en los pines.
 El software especializado Matlab necesita de conocimientos previos de
programación para mayor facilidad en su uso.
 Se debe hacer la importación de todas las librearías de Arduino IO a Matlab para
poder 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