Decodifica en python desde el puerto serial los valores del pin del receptor descrito en: Morse Codec - TxRx Inalámbrico 433Mhz ASK/OOK
Se recibe en el puerto serial la señal OOK equivalente al mensaje morse de "SOS".
La lectura del puerto serial continua de lo presentado en Serial - Lectura datos se obtienen los valores entre [0,1023]
El resultado se convierte a símbolos morse ' .-' contando las veces que cada valor se repite "Alto"(1) o "Bajo"(0). Se toma como referencia el ancho de 15 para un simbolo, pues el transmisor usa una DURACION =100. Si se modifican éstos valores, se deben ajustar.
1016 15 --- ... ... 0 63 --- ... ... 1016 47 --- ... ... - 0 32 --- ... ... - 1020 47 --- ... ... -- 0 31 --- ... ... -- 1019 47 --- ... ... --- 0 63 --- ... ... --- 1018 15 --- ... ... --- . 0 31 --- ... ... --- . 1016 15 --- ... ... --- .. 0 31 --- ... ... --- .. 1016 15 --- ... ... --- ...
las instrucciones en python
# Deco señal a morseñ
# 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
# 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 = ''
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)):
if (cuenta<(2*ancho+4)):
simbolo = ''
else:
if (cuenta<(4*ancho+5)):
simbolo = ' '
else:
simbolo = ' '
# Revisa punto o raya
else:
if (cuenta<(ancho+3)):
simbolo = '.'
else:
simbolo = '-'
cuenta = 0
morse_msg = morse_msg + simbolo
print(morse_msg)
if len(morse_msg)>40:
morse_msg = ''
antes = valor
# Cerrar el puerto serial.
serial.Serial.close