Procesar ordenes de Arduino a nuestro sistema operativo

pyserialEn esta ocasión te mostrare como ejecutar ordenes en nuestro equipo provenientes desde Arduino.  Para que quede mas claro crearemos un ejemplo sencillo que al presionar un pulsador envie una señal a un pin de arduino luego de ser analizada la señal si es correcta que escriba en el puerto un valor, dicho valor sera leído por un script en pyhon el cual procesara la señal y ejecutara una acción ejemplo expulsar la unidad de cdrom, si no tienes unidad puedes ejecutar el comando que gustes como abrir libreoffice enviar un correo lo que gustes,  este ejemplo se basa en la primer entrada donde te explico como leer y escribir el puerto.

El ejemplo a desarrollar te lo ilustro a continuación

switch

Como puedes observar se ha colocado una resistencia de 10k, para evitar el rebote del pulsador, luego procedemos a crear el Sketch de arduino que enviara la señal cuando alguien presione el pulsador.

#define LED 13
#define BUTTON 7

void setup()
{
  Serial.begin(9600);
  pinMode(LED, OUTPUT);
  pinMode(BUTTON, INPUT);
}

void loop()
{
  int leer=digitalRead(BUTTON);
  if(leer== HIGH)
  {
    Serial.println(leer);
    digitalWrite(LED, HIGH);
    delay(1000);
    digitalWrite(LED, LOW);
  }

}

Como puedes ver se ha agregado un led en el pin 13 para que encienda cuando el interruptor se pulse y escriba en el puerto serial.

Procedemos a crear el script en python que interpretara las señal de arduino y expulsara la unidad de cd-rom o el comando que gustes.

#!/usr/bin/python
import serial
import time
import numpy as np
import os

arduino=serial.Serial('/dev/ttyACM0',baudrate=9600, timeout = 3.0)

                                    
while True:
    time.sleep(0.1)
    while arduino.inWaiting() > 0:
        line = arduino.readline()
        val= np.fromstring(line.decode('ascii', errors='replace'),
                                   sep=',')
        valor= int(val[0])
        print valor
        if valor == 1:
            os.system("eject")
arduino.close()

Usamos la librería numpy y agregamos librería para manipular sistema operativo, se parece al script de la entrada donde leíamos el puerto pero en este caso leemos y limpiamos caracteres que no querremos que se escriban en el puerto para que los datos que viajan hacia el PC sean limpios, luego lo tratamos con numpy para crear un arreglo el cual separa por comas los valores que se van escribiendo en el mencionado puerto. Esto es de gran importancia dado el caso que estés enviando  grandes cantidades de datos numéricos en intervalos cortos de tiempo e iros apilando para tratarlos mediante llegan, este problema también se podría resolver también con programación por hilos el cual tocaremos en las próximas entradas.

Solo resta cargar el sketch y ejecutar el script de python en terminal, pulsar el interruptor y la unidad de cd-rom tendría que ser expulsada, puedes intentar con otros comando con la librería os tienes acceso completo al sistema.

 

Comparte este contenido!.Tweet about this on TwitterShare on Google+Share on FacebookEmail this to someone

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *