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