Este artículo se centra en técnicas para convertir una Raspberry Pi en un servidor web que controle los electrodomésticos. Incluye interfaz gráfica de usuario en el lado del servidor web y electrónica que se utiliza para controlar el sistema eléctrico.
A continuación se muestra un ejemplo simple de cuatro LED controlados por una interfaz web utilizada mediante el servidor web Apache con codificaciones PHP y JAVA para GUI y la electrónica se administra mediante la biblioteca WiringPI.
Diagrama de conexión de LED controlado por web
Requisitos previos y equipo:
Necesitará lo siguiente:
-
Una Raspberry Pi Modelo B o superior.
-
Un adaptador WiFi USB (aquí se utiliza el adaptador nano USB inalámbrico Edimax – 802.11b/g/n).
-
Una tarjeta SD actualizada con el sistema operativo Raspbian (aquí tienes una guía si la necesitas)
-
Acceso a Raspberry mediante teclado y monitor o de forma remota.
Instalación del cableado Pi:
El proyecto Wiring Pi se utiliza aquí para cambiar los pines GPIO entre alto y bajo. Ejecute los siguientes comandos para descargar Wiring Pi e instalarlo.
sudo apt-get instalar git-core
git clon git://git.drogon.net/wiringPi
Cableado CDPi
./rampa arriba
Figura 2: Descargue el cableado Pi a Raspberry Pi
Fig. 3: Instalación del cableado Pi en Raspberry Pi
Analicemos sobre el uso de la biblioteca WiringPi para encender y apagar el primer LED (pin de cableado 0). Primero necesitas definir el pin como salida. Utilice el comando "gpio mode 0 out" para hacer esto. "0" es el número de pin del cableado y "out" es para la salida. Ahora puede usar el comando "gpio write 0 1" para encender su LED. “0” es nuevamente el número de pin y “1” es el estado (1 para ENCENDIDO y 0 para APAGADO). Si todo está bien, deberías ver el LED brillando. Usando el comando "gpio write 0 0" puedes desactivarlo.
Si desea utilizar el número PIN real (GPIO-17) en lugar del número Pi de cableado (0 corresponde a GPIO-17), utilice el indicador -g en su comando. Ej: “gpio -g escribe 17 1” en lugar de “gpio escribe 0 1”.
La “lectura GPIO” se puede utilizar para leer el estado del PIN. Le permite estar seguro del estado del pin cuando no puede ver la salida. Usarlo es tan simple como antes, simplemente escriba "gpio read 0" donde "0" es el número de pin del cableado. El comando devuelve el estado del pin (nuevamente 1 para ENCENDIDO y 0 para APAGADO).
Iniciando el servidor web Apache:
La instalación y configuración del servidor web Apache se analizó bien en artículos anteriores. Iniciar el servidor es simple, simplemente copie los archivos del servidor a la carpeta Apache. Descargue los archivos del servidor web y extráigalos a la carpeta de inicio de Raspberry Pi utilizando el servidor web Samba y los clientes FTP.
Copie estos archivos a la carpeta del servidor web Apache que es /var/www y reinicie el servidor web. Ahora que nuestro sitio web está activo, puede navegar hasta él ingresando la dirección IP de Raspberry Pi.
Control de LED con PHP:
Ahora tenemos nuestro servidor web Apache y una biblioteca Wiring Pi. PHP significa "PHP: preprocesador de hipertexto", que actuará como puente entre ellos y es un lenguaje de programación del lado del servidor. Esto significa que el código PHP se ejecuta una vez (cada vez que se solicita la página) por el servidor y el cliente no puede verlo. La ejecución de comandos del sistema con código PHP se puede realizar con dos funciones diferentes: exec (para ejecutar) y system. En primer lugar, la función "sistema". Se requieren dos parámetros: “sistema (cadena $comando, int $return_var)”. Con esta función puedes ejecutar los comandos “gpio mode 0 out” o “gpio write 0 1”.
Ejemplo:
sistema (“gpio modo 0 fuera”);
sistema (“gpio escribe 0 1”);
?>
Entonces, la función "ejecutiva". Esta función hace exactamente el mismo trabajo que "sistema", pero lee y almacena lo que imprimió el comando. Se requieren tres parámetros: “exec (string $command, array $output, int $return_var)”, nuevamente $command y $return_var son los mismos parámetros y la única diferencia es la matriz $output. Por lo tanto, puede usar esta función si necesita cómo se imprime el comando con el comando " leer desde gpio 0 ".
Ejemplo:
exec(“gpio lectura 0”, $estado);
print_r($estado);
?>
Interfaz gráfica de construcción:
Ya podemos controlar nuestra Raspberry Pi con sencillos scripts PHP, pero la interacción del usuario está pendiente. Esto se puede hacer combinando scripts Java y HTML. Cada imagen/bombilla corresponde a su LED, si haces clic en una de ellas, el LED correspondiente se encenderá/apagará y la imagen también cambiará en consecuencia. El esqueleto de la página se realizará en HTML, las interacciones del servidor con PHP y finalmente JavaScript para gestionar las interacciones entre el usuario y la animación de la página. JavaScript es un lenguaje del lado del cliente que nuestro navegador ejecuta continuamente. Por eso podemos cambiar la apariencia de la página sin recargarla. En primer lugar, necesitamos un archivo "index.php" (la extensión es .php y no .html ya que usaremos código PHP, le ordena al navegador que hay PHP para ejecutar antes de enviar la página). Esta página principal contiene 4 botones con Imagen de Bombilla. Estos botones se generan primero con un "exec ("gpio read ".$i, $output");" y un bucle for para replicar. Para detectar al usuario haciendo clic en cualquiera de estos botones, se utiliza un script Java que se encuentra en un archivo separado llamado “script.js”, aunque todavía está incluido en index.php. El script consiste en agregar un detector de eventos a los cuatro botones y cuando se presiona uno de ellos, usa una función que llama a gpio.php, recibe la respuesta y regresa a JavaScript que cambia el botón a ON o OFF. Puedes descargar los códigos completos directamente aquí.
Figura 4: Construcción de la interfaz gráfica de Raspberry Pi
Código fuente del proyecto
###
//Programa para
###
Código fuente del proyecto
###
//Programa para
###
Diagramas de circuito
Diagrama de circuito de automatización del hogar controlado por web |
Componentes del proyecto
- Arduino ProMini
- CONDUJO
- interruptor de relé
- Transistores BC547
Vídeo del proyecto