Un Arduino puede enviar valores numéricos de un sensor por medio del conector USB en forma Serial (secuencial).
Los datos recibidos por una computadora mediante el puerto USB pueden procesarse usando Python. Para ésto debe conocer el puerto "com" y la velocidad de transmisión en los baudios usada por el arduino.
Ejemplo:
Se muestra una lectura de valores numéricos enteros, a partir del cual se puede modificar otros requerimientos.
El ejemplo usa los resultados de la sección Morse para el receptor: TxRx Inalambrico 433Mhz ASK/OOK
0 0 0 1017 1017 1018 1021 1017 1019 1018 1018 1016 1018 1016 1017 1019 1018 1016 1020 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1017 1017 1016 1017 1016
Instrucciones en Python
# Datos desde puerto Serial
# generados desde arduino
import numpy as np
import matplotlib.pyplot as plt
import serial, time
# INGRESO
puerto = 'com5'
baudios = 9600
ventana = 200 # tamaño ventana datos
datos=[] # vector para graficar
# 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
while True:
#esperar hasta recibir un dato
while (arduino.inWaiting()==0):
pass
# lee linea desde puerto serial
lectura = arduino.readline()
# binario a texto, elimina /r/n
texto = lectura.decode().strip()
valor = int(texto)
datos.append(valor)
# mantiene el tamaño "ventana" de datos
if (len(datos)>=ventana):
datos.pop(0)
print(valor)
# Cerrar el puerto serial.
serial.Serial.close