En este tutorial se agrega el control del puerto GPIO al proyecto que integra Arduino y Pic con Raspberry Pi midiendo y controlado variables físicas a través de WebSockets.
Instrucciones en video:
Prueba de Funcionamiento:
NOTA: Al hacer uso del puerto GPIO, este código solo se puede ejecutar en un Raspberry Pi. Al contrario de los anteriores turoriales, este ejemplo no funciona en Windows.
Instrucciones en video:
NOTA: Al hacer uso del puerto GPIO, este código solo se puede ejecutar en un Raspberry Pi. Al contrario de los anteriores turoriales, este ejemplo no funciona en Windows.
Primero se debe instalar el módulo GPIO con el comando:
Agregar las siguientes líneas de código al archivo tutotor.py
Se importa la librería GPIO y se configura el pin 11 del puerto GPIO como salida y el pin 10 como entrada.
Se configura el pin 10 para que al presionar un pulsador, se produzca una interrupción y llamar la función "pinkCall". Después de disparar este evento, se deben esperar 500 mili segundos para dispararlo de nuevo.
La función "pinkCall" detecta si el Led conectado en el pin 11 se encuentra encendido o apagado, para invertir el estado actual y enviar el mensaje vía WebSockets a todos los clientes conectados a la web.
Las funciones "ledON" y "ledOFF" de la clase "Raspberry" se modifican así:
Al llamar estas funciones desde los botones de la interfaz web, se activa o desactiva el Led conectado al pin 11 del puerto GPIO y se envía un mensaje a vía WebSockets a todos los clientes conectados.
Actualizar la variable ipDir con la dirección IP, asignada por el router, del Raspberry Pi en el archivo /static/scripts/raspberry.js
Iniciar el servidor web.
En el próximo tutorial se conecta Arduino con Raspberry Pi para medir distancia por ultrasonido y mostrar el resultado en tiempo real.
sudo apt-get update sudo apt-get install python-rpi.gpio
Agregar las siguientes líneas de código al archivo tutotor.py
#libreria para usar el puerto GPIO import RPi.GPIO as GPIO #configurando GPIO #pines por el numero impreso en la tarjeta,numeracion distribucion fisica #GPIO.setmode(GPIO.BOARD) #pines por el numero canal de las etiquetas. GPIO.setmode(GPIO.BCM) #Configurando el pin de salida GPIO.setup(11, GPIO.OUT) GPIO.output(11, False) #Configurando el pin de entrada swichtPin = 10 GPIO.setup(swichtPin, GPIO.IN, pull_up_down=GPIO.PUD_UP)
Se importa la librería GPIO y se configura el pin 11 del puerto GPIO como salida y el pin 10 como entrada.
#Interrupcion por hardware def pinkCall(channel): pulsador = Raspberry() inputValue = GPIO.input(11) if(inputValue == True): GPIO.output(11, False) pulsador.notifyCallbacks(0, 'El Led fue apagado por Hardware') if(inputValue == False): GPIO.output(11, True) pulsador.notifyCallbacks(1, 'El Led fue encendido por Hardware') print('Interrupcion por hardware') GPIO.add_event_detect(swichtPin, GPIO.RISING, callback=pinkCall, bouncetime=500)
Se configura el pin 10 para que al presionar un pulsador, se produzca una interrupción y llamar la función "pinkCall". Después de disparar este evento, se deben esperar 500 mili segundos para dispararlo de nuevo.
La función "pinkCall" detecta si el Led conectado en el pin 11 se encuentra encendido o apagado, para invertir el estado actual y enviar el mensaje vía WebSockets a todos los clientes conectados a la web.
Las funciones "ledON" y "ledOFF" de la clase "Raspberry" se modifican así:
def ledON(self): #Encendemos el Led conectado en el pin 11 GPIO.output(11, True) self.notifyCallbacks(1, "Led Encendido") def ledOFF(self): #Apagamos el Led conectado en el pin 11 GPIO.output(11, False) self.notifyCallbacks(0, "Led Apagado")
Al llamar estas funciones desde los botones de la interfaz web, se activa o desactiva el Led conectado al pin 11 del puerto GPIO y se envía un mensaje a vía WebSockets a todos los clientes conectados.
Prueba de funcionamiento.
Actualizar la variable ipDir con la dirección IP, asignada por el router, del Raspberry Pi en el archivo /static/scripts/raspberry.js
Ingresar desde un navegador de internet, no olvidar el puerto.
Dar clic en los botones de la interfaz web y presionar el pulsador conectado al Rasberry Pi.
Diagrama del Circuito
(Creado en Fritzing)
Resultados
(Clic para ampliar las imágenes)
En el próximo tutorial se conecta Arduino con Raspberry Pi para medir distancia por ultrasonido y mostrar el resultado en tiempo real.
No hay comentarios.:
Publicar un comentario