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