ENCENDER UN BOMBILLA EN FORMA REMOTA (IOT) DESDE EL MÓVIL U ORDENADOR USANDO LA RASPBERRY PI Y UN RELÉ OPTOACOPLADO
Cómo se hizo
Materiales
- Alargador
- Tabla de prototipos con cable IDE
- Cable con conector macho
- Porta bombilla y bombilla de 50W 220AC
- Raspberry Pi (controlará el interruptor del relé)
- Board de relés de 4 canales (solo se necesita 1 canal). Acoplará la salida de la Pi (5VAC) para el circuito de potencia (230 VAC, 10 A).
- Tres jumpers macho hembra
- Herramientas básicas para cortar, atornillar y pelar cables
- Polímetro o tester para verificar la corriente.
Procedimiento
1) Instalación de la bombilla
2) El cable de AC220V, está formado por dos cables dentro de un forro, cortamos uno de ello el marrón o el azul (cualquiera de ellos) para colocar el relé en serie a manera de interruptor en dos de sus bornes. El común siempre se conecta.
Cable de AC230V cortado |
Colocación en los bornes del relé, en este caso NC y C |
Si perdemos el control del relé, se apaga la Raspberry Pi, o por el motivo que sea, la bombilla quedará apagada.
Cuando la bombilla este apagada, no tenemos consumo de energía en la Pi para accionar la bobina del relé.
3) Conectamos a la board de relés: el cable jumper negro a GND, el cable jumper marrón IN1 y cable rojo a VCC
Conexionado de la tabla de prototipado "breadboard" o protoboard a la tabla de relés |
En la raspberry Jumper rojo a la salida de 5VCC, jumper negro a GND y jumper marrón a GPIO12 |
Optoacopladores, son las cajitas negras |
Programar el GPIO desde la bash
Bash es la consola por defecto en la mayoría de
sistemas Linux.
Estos apuntes están basados en Geekytheory.
Es la manera más larga e incómoda a la hora de hacerlo, pero funciona perfectamente. Sirve para probar que todo funciona. Más abajo escribiremos un pequeño programa que facilita el uso, en el lenguaje de programación Python.
Hacer accesible el GPIO 4 "export"
La manera de la que vamos a acceder a los GPIO (en este caso al 12) es como si fuesen directorios. Podemos utilizar comandos como 'ls', 'cat' o 'echo', entre otros, para conocer la estructura y contenidos de los directorios.
Ahora mismo no tenemos ningún pin accesible. Ni de entrada ni de salida. Tenemos que crearlo nosotros mismos. Queremos tener acceso al GPIO 12, así que introducimos el siguiente comando:
Ahora mismo no tenemos ningún pin accesible. Ni de entrada ni de salida. Tenemos que crearlo nosotros mismos. Queremos tener acceso al GPIO 12, así que introducimos el siguiente comando:
echo 4 > /sys/class/gpio/export
Hacer el pin de salida "echo out"
Tras esto, el sistema ha creado un archivo con una estructura GPIO que corresponde al número 12. A continuación, tenemos que informar a la Raspberry Pi de si el pin va a ser de salida o de entrada. Como lo que queremos es encender una bombilla, el GPIO 17 será de salida. Introducimos el siguiente comando:
Asignarle un valor al pin (apagado o encendido)"echo 0" o "echo 1"
Tras esto, el sistema ha creado un archivo con una estructura GPIO que corresponde al número 12. A continuación, tenemos que informar a la Raspberry Pi de si el pin va a ser de salida o de entrada. Como lo que queremos es encender una bombilla, el GPIO 17 será de salida. Introducimos el siguiente comando:
echo out > /sys/class/gpio/gpio4/direction
Asignarle un valor al pin (apagado o encendido)"echo 0" o "echo 1"
Con esto, el sistema ya sabe que el pin será de salida. Ahora tendremos que darle valores. Existen dos posibles: 0 (apagado), 1(encendido)
Nota: dependerá de como este conexionado a los bornes del relé.
Para encenderla bombilla "1"
Para apagar la bombilla"0"
Todos juntos
echo 4 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio4/direction
echo 1 > /sys/class/gpio/gpio4/value
echo 4 > /sys/class/gpio/unexport
Eliminar el acceso al GPIO 4 "unexport"
Nota: dependerá de como este conexionado a los bornes del relé.
Para encenderla bombilla "1"
echo 1 > /sys/class/gpio/gpio4/value
Para apagar la bombilla"0"
echo 0 > /sys/class/gpio/gpio4/value
Todos juntos
echo 4 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio4/direction
echo 1 > /sys/class/gpio/gpio4/value
echo 4 > /sys/class/gpio/unexport
Eliminar el acceso al GPIO 4 "unexport"
Una vez hayamos acabado de encender y apagar la bombilla, tendremos que eliminar la entrada GPIO creadas, es decir, el GPIO 12. Para ello introduciremos el siguiente comando:
echo 4 > /sys/class/gpio/unexport
Con esto, ya sabemos crear, eliminar y cacharrear con los pines GPIO para encender y apagar la bombilla. Todos sabemos que esto es algo incómodo, así que lo ideal sería crear un programa, por ejemplo en Python, que nos ayude a gestionar nuestros GPIO.
Programación en sh (bash)
Se puede ejecutar desde la consola directamente o crear u script desde
nano y guardarlo con la extensión .sh, debería uno para encender y otro
para apagar.
Programación en python
PASO 1. INSTALACIÓN DE LA LIBRERÍA GPIO PARA PYTHON EN LA RASPBERRY
Fuente: Rasperry Pi Fundation
GPIO
Usando Pythonen tu Raspberry Pi abriras la oportunidad de conectar al mindo real a través de los pins GPIO. Esto lo puedes hacer con la librería RPi GPIO. Esta preinstalada en las imagenes recientes de Rasbian, pero si tienes una versión vieja puedes instalarla con:
sudo apt-get install python-rpi.gpio
Osudo apt-get install python3-rpi.gpio
Para acceder a los pines GPIO tú tendrás que acceder como "root" so run sudo python, sudo ipython or sudo idle &.
In your Python script (or in the REPL), import the GPIO module, set the board mode to that of your preference, set up the pins you want to use and turn them on:
Dentro de tu script, deberás importar el módulo, configurar el modo que tú prefieras de tú tarjeta, configurar los pines a usar y encenderlos:
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM) # set board mode to Broadcom
GPIO.setup(17, GPIO.OUT) # set up pin 17
GPIO.setup(18, GPIO.OUT) # set up pin 18
GPIO.output(17, 1) # turn on pin 17
GPIO.output(18, 1) # turn on pin 18
Installing Python packages
PASO 2: PROGRAMA PYTHON PARA HACER UN ENCENDIDO DE LA BOMBILLA EL TIEMPO DESEADO
Programa en lenguaje python, escrito con nano "editor de texto" y guardado como "encender_bombilla.py". Recuerda la extensión al final del nombre ".py"
## SALIDA GPIO 17
## Encender una bombilla durante un tiempo programable en minutos
# Creado por Carlos Avalos
# https://chitoraspberrypi.blogspot.com.es
# El rele estara conectado a los bornes C, NC
#CONFIGURACIONES
import RPi.GPIO as GPIO #importamos la libreria GPIO
import time # importamos modulo de tiempo
GPIO.setmode(GPIO.BCM) # configuramos los GPIO con la disposicion BCM
GPIO.setup(17, GPIO.OUT) ## GPIO 17 sera de salida
tiempo = float(input("Indique el tiempo encendida (en minutos)?: "))# entrad$
GPIO.output(17, 1) ## Hace el GPIO 17 de salida con 5VCC (HIGH)
print "Bombilla encendida" #estado actual de la bomilla
time.sleep(tiempo*60)# para el programa el tiempo indicado
# tiempo * 60 para utilizar minutos en vez de segundos
GPIO.output(17, 0) ## corta el flujo de 5VCC, apaga la bombilla
print "Bombilla apagada"# muestra el estado de la bombilla
GPIO.cleanup() ## limpieza de los GPIO y fin de programa
print "ten un buen dia"
print "visita https://chitoraspberrypi.blogspot.com.es"
Fuentes consultadas
- Módulo de 4 relés para Arduino. Profetolocka (Argentina). http://www.profetolocka.com.ar/2015/05/09/modulo-de-4-reles-para-arduino/
- TUTORIAL RASPBERRY PI - GPIO [PARTE 1]: CONTROL DE UN LED. Geekytheory. Fuente: https://geekytheory.com/tutorial-raspberry-pi-gpio-parte-1-control-de-un-led/
- interactive pinout diagram.
- Phyton. Raspberry Pi Foundation. Fuente: https://www.raspberrypi.org/documentation/usage/python/README.md
- Instalando Paquetes de Python. Fundación Raspberry Pi. https://www.raspberrypi.org/documentation/linux/software/python.md
- Implementando un sistema domótico asequible Raspberry PI y los pines GPIO .Peatonet. Fuente: http://www.peatonet.com/series/raspberry-pi-y-los-pines-gpio/
- Área Tecnología. Recursos, Conocimientos y Temas de Tecnología, Tecnologia Industrial y Electrotecnia. Fuente: http://www.areatecnologia.com
- Installing Phyton packages. Raspberry Fundation. Fuente: https://www.raspberrypi.org/documentation/linux/software/python.md
- Raspberry Pi Pinout. Interactive pinout diagram. Fuente: http://pinout.xyz/#
- Raspberry PI y los pines GPIO. Peatonet. Fuente: http://www.peatonet.com/series/raspberry-pi-y-los-pines-gpio/
- Raspberry y GPIO. PROMETEC. fuente. http://www.prometec.net/rpi-gpio/
Comentarios
Publicar un comentario