Hoy hemos querido utilizar uno de los sensores que menos aparece en los artículos, pero no por ello es menos importante: el sensor de sonido. Veremos cómo emplearlo para realizar código morse NXT.
Este sensor es capaz de medir intensidad sonora, ya sea valor directo (0-1024) o valor escalado (0-100). Esto nos puede permitir, por ejemplo, programar nuestros robots para avanzar cuando demos una palmada (valor de sonido más alto que el umbral) o tener un robot bailarín que se queje cuando bajamos la música (valor de sonido por debajo del valor umbral). En este caso utilizaremos el sensor para que nuestro NXT muestre en pantalla código morse en función del mensaje que estemos recibiendo.
Este experimento utiliza como base de comunicación el código morse. Este código permite representar todos los números y letras del alfabeto como secuencias de puntos y rayas.
Esta imagen es una representación del primer alfabeto morse internacional, en este primer alfabeto no existían signos de puntuación ni letras que no aparecieran en el alfabeto inglés (como la CH o la Ñ), que sí aparecerían más adelante, junto con signos de puntuación como: ?, . , ”
1. Una raya equivale a 3 puntos.
2. El espacio entre las partes de una misma letra es de 1 punto.
3. El espacio entre dos letras es de 3 puntos.
4. El espacio entre palabras es de 5 puntos.
Es decir, para hacer posible la comunicación se establece como unidad de medida la duración (en tiempo) de un punto, por lo que una raya equivale en duración a haber mandado 3 puntos, etc…
Aquí tenéis la tabla actual, extraída de Wikipedia, en este caso, se puede observar la inclusión de símbolos nuevos, tal y como comentábamos antes:
Signo | Código | Signo | Código | Signo | Código | ||
---|---|---|---|---|---|---|---|
A | · — | N | — · | 0 | — — — — — | ||
B | — · · · | Ñ | — — · — — | 1 | · — — — — | ||
C | — · — · | O | — — — | 2 | · · — — — | ||
CH | — — — — | P | · — — · | 3 | · · · — — | ||
D | — · · | Q | — — · — | 4 | · · · · — | ||
E | · | R | · — · | 5 | · · · · · | ||
F | · · — · | S | · · · | 6 | — · · · · | ||
G | — — · | T | — | 7 | — — · · · | ||
H | · · · · | U | · · — | 8 | — — — · · | ||
I | · · | V | · · · — | 9 | — — — — · | ||
J | · — — — | W | · — — | . | · — · — · — | ||
K | — · — | X | — · · — | , | — — · · — — | ||
L | · — · · | Y | — · — — | ? | · · — — · · | ||
M | — — | Z | — — · · | “ | · — · · — · |
Convenciones: — : raya (señal larga) · : punto (señal corta)
Sí se comete un error al transmitir el mensaje en morse, la señal «error» son ocho señales cortas (. . . . . . . .)
¿Para qué se utiliza?
Samuel Morse tardó 7 días en enterarse de la muerte de su esposa en 1832, debido a lo penoso de las comunicaciones a larga distancia en aquella época, tras este desgraciado hecho se decidió a inventar un dispositivo que agilizara ese tipo comunicaciones. El 6 de enero de 1833, Morse realizaría la primera demostración pública de su telégrafo.
Una vez presentado el invento, se concentró en la tarea de construir un telégrafo práctico y despertar el interés del público y del gobierno en el aparato para luego ponerlo en marcha. En 1835 apareció el primer modelo telegráfico que desarrolló Morse.
El funcionamiento del dispositivo es el siguiente:
Durante este tiempo, Morse desarrolla junto con el telégrafo un código de señales para facilitar la comunicación, dicho código se perfecciona durante 1838, y toma el nombre de Código Morse.
Intentó implantar líneas telegráficas primero en Estados Unidos y luego en Europa pero ambos intentos fracasaron. Por fin, Morse consiguió que el Congreso de su país aprobara un proyecto de ley para proporcionar 30.000 dólares designados a construir una línea telegráfica de 60 km. Varios meses después el proyecto fue aprobado, y la línea se extendería a lo largo de 37 millas entre Baltimore y Washington.
Ya hemos visto un poquito de historia, ahora… el experimento.
A forma de rudimentario telégrafo inalámbrico, donde la duración de los pulsos la marca el operador según las normas que veíamos más arriba, hemos construido dos robots, emisor y receptor, que se comunican mediante código morse.
El robot emisor cuenta con un sensor de contacto
y un sencillo programa en el cual emitimos un sonido (una nota musical) mientras nos mantengan presionado el sensor.
con un programa algo más largo que le permitirá mostrar en pantalla puntos o rayas en función de la intensidad del sonido.
Nótese que miramos la intensidad del sonido y no su duración, de tal manera que a cada vuelta de bucle comprobaremos si hay o no sonido, pintando puntos cuando sí que haya.
De esta manera si recibimos sonido durante varias iteraciones de bucle pintaremos varios puntos juntos o, lo que es lo mismo, una raya.
Además hay una línea de control continua que nos permite comprobar que el programa está en marcha, aunque no esté recibiendo señal. Esta línea se pinta en X=Numérica, Y=0, donde Numérica es la varible que representa la posición de X en función del tiempo, se obtiene de dividir el valor del temporizador entre 100 .
Mientras que el mensaje se muestra en X=Numérica, Y=30.
Por último, indicar que, para evitar que la información se solape en pantalla, debemos borrar la pantalla cuando Numérica alcance el máximo que admite la pantalla de ancho, es decir 99.
Aquí tenéis un vídeo del funcionamiento
Esperamos que os haya gustado el artículo y os anime a experimentar con nuevos proyectos, además de buscar nuevas funcionalidades para nuestro set de robótica.