Se añade la traducción a texto, letra a letra del alfabeto.
Como referencia se usa la función morsedeco(codigo) descrita en Morse Decodificador, desarrollada en otro curso.
Se añade al ejercicio realizado en Morse Deco – RX mensaje morse/Python
0 31 --- ... ... --- . SOS SO 1015 15 --- ... ... --- .. SOS SO 1 31 --- ... ... --- .. SOS SO 1017 15 --- ... ... --- ... SOS SO 0 128 --- ... ... --- ... SOS SOS
Tarea: usar en el transmisor un mensaje diferente, escrito por teclado, revisar para arduino el uso del puerto Serial - Envia y Recibe texto.
Con el uso del teclado para el mensaje, observar cuando se inicia la tx y recepción para codificar en Tx y decodificar en Rx.
# Deco señal a morse, luego a texto
# generados desde arduino
# Continuación de: TxRx Inalambrico 433Mhz ASK/OOK
# http://blog.espol.edu.ec/edelros/2018/04/11/txrx-inalambrico-433mhz-askook/
import numpy as np
import matplotlib.pyplot as plt
import serial, time
def morsedeco(codigo):
equivale={
'.-':'A', '-...':'B', '-.-.':'C',
'----':'CH', '-..':'D', '.':'E',
'..-.':'F', '--.':'G', '....':'H',
'..':'I', '.---':'J', '-.-':'K',
'.-..':'L', '--':'M', '-.':'N',
'--.--':'Ñ', '---':'O', '.--.':'P',
'--.-':'Q', '.-.':'R', '...':'S',
'-':'T', '..-':'U', '...-':'V',
'.--':'W', '-..-':'X', '-.--':'Y',
'--..':'Z',
'-----':'0', '.----':'1', '..---':'2',
'...--':'3', '....-':'4', '.....':'5',
'-....':'6', '--...':'7', '---..':'8',
'----.':'9',
'.-.-.-':'.', '-.-.--':',', '..--..':'?',
'.-..-.':'"', '--..--':'!', ' ':' ',
' ':' '}
caracter=equivale[codigo]
return(caracter)
# INGRESO
puerto = 'com5'
baudios = 9600
tolera = 100 # rango PIN analógico
ancho = 15 # del mensaje
# PROCEDIMIENTO
arduino = serial.Serial(puerto, baudios)
arduino.setDTR(False)
time.sleep(0.3)
# limpia buffer de datos anteriores
arduino.flushInput()
arduino.setDTR()
time.sleep(0.3)
print('\nEstado del puerto: ',arduino.isOpen())
print('Nombre del dispositivo conectado: ', arduino.name)
print('Dump de la configuración:\n ',arduino)
print('\n###############################################\n')
# Lectura de datos
antes = 0
cuenta = 0
simbolo = ''
morse_msg = ''
morse_letra = ''
mensaje = ''
while True:
# espera hasta recibir un dato
while (arduino.inWaiting()==0):
pass
# lee binario del puerto serial
lectura = arduino.readline()
# binario a texto, elimina /r/n
texto = lectura.decode().strip()
valor = int(texto)
# Busca duración de símbolo
# valor repetido
diferencia = np.abs(valor-antes)
if (diferencia < tolera):
cuenta = cuenta + 1
else:
print(antes,cuenta)
# Revisa espacios
if (antes<(0+tolera)):
# Cambio de simbolo
if (cuenta<(2*ancho+4)):
simbolo = ''
else:
# letra completa
letra = morsedeco(morse_letra)
mensaje = mensaje + letra
morse_letra = ''
if (cuenta<(4*ancho+5)):
simbolo = ' '
else:
# cambio de palabra
simbolo = ' '
mensaje = mensaje + ' '
# Revisa punto o raya
else:
if (cuenta40:
morse_msg = ''
mensaje = ''
antes = valor
# Cerrar el puerto serial.
serial.Serial.close