Este artigo enfoca as técnicas para fazer um Raspberry Pi como um servidor web que controla os eletrodomésticos. Inclui interface gráfica do usuário no lado do servidor web e parte eletrônica que é usada para controlar o sistema elétrico.
Aqui está um exemplo simples de quatro LEDs controlados pela interface web usados utilizando o servidor web apache com codificações PHP e JAVA para GUI e a parte eletrônica é gerenciada pela biblioteca WiringPI.
Diagrama de conexão de LED controlado pela Web
Pré-requisitos e equipamentos:
Você vai precisar do seguinte:
-
Um Raspberry Pi Modelo B ou superior.
-
Um adaptador USB WiFi (Edimax – adaptador nano USB sem fio 802.11b/g/n é usado aqui).
-
Um cartão SD atualizado com o sistema operacional Raspbian (aqui está um guia se você precisar)
-
Acesso ao Raspberry através de teclado e monitor ou remotamente.
Instalando a fiação Pi:
O projeto Wiring Pi é usado aqui para alternar os pinos GPIO entre alto e baixo. Execute os seguintes comandos para baixar o Wiring Pi e instalar.
sudo apt-get install git-core
git clone git://git.drogon.net/wiringPi
fiação de CDPi
./construir
Figura 2: Baixe a fiação do Pi no Raspberry Pi
Fig. 3: Instalando a fiação Pi no Raspberry Pi
Vamos discutir sobre o uso da biblioteca WiringPi para ligar e desligar o primeiro LED (pino de fiação 0). Primeiro precisa definir o pino como saída. Use o comando “gpio mode 0 out” para fazer isso. “0” é o número do pino da fiação e “out” é para saída. Agora você pode usar o comando “gpio write 0 1” para ligar seu LED. “0” é novamente o número do pino e “1” é o status (1 para ON e 0 para OFF). Se tudo estiver bem, você deverá ver seu LED brilhando. Usando o comando “gpio write 0 0” você pode desligá-lo.
Se você quiser usar o número PIN real (GPIO-17) em vez do número Wiring Pi (0 corresponde ao GPIO-17), use o sinalizador -g em seu comando. Ex: “gpio -g write 17 1” em vez de “gpio write 0 1”.
A “leitura gpio” pode ser usada para ler o status do PIN. Ele permite que você tenha certeza do status do pino quando não conseguir ver a saída. Usá-lo é tão simples quanto antes, basta digitar “gpio read 0” onde “0” é o número do pino de fiação. O comando retorna o status do pino (novamente 1 para ON e 0 para OFF).
Iniciando o servidor web Apache:
A instalação e configuração do servidor web Apache foram bem discutidas em artigos anteriores. Para iniciar o servidor é simples, basta copiar os arquivos do servidor para a pasta apache. Baixe os arquivos do servidor web e extraia-os para a pasta inicial do Raspberry Pi usando o servidor web Samba são clientes FTP.
Copie esses arquivos para a pasta do servidor web apache que é /var/www e reinicie o servidor web. Agora que nosso site está ativo, você pode navegar até ele digitando o endereço IP do Raspberry Pi.
Controlando os LEDs com PHP:
Agora temos nosso servidor web apache e uma biblioteca Wiring Pi. O PHP significa “PHP: Hypertext Preprocessor” que atuará como uma ponte entre eles, e é uma linguagem de script do lado do servidor. Isso significa que o código PHP é executado uma vez (cada vez que a página é solicitada) pelo servidor e não pode ser visto pelo cliente. A execução de comandos do sistema com código PHP pode ser feita com duas funções diferentes: exec (para executar) e sistema. Em primeiro lugar, a função “sistema”. São necessários dois parâmetros: “system (string $command, int $return_var)”. Com esta função você pode executar comandos “gpio mode 0 out” ou “gpio write 0 1”.
Exemplo:
sistema (“modo gpio 0 fora”);
sistema (“gpio write 0 1”);
?>
Então, a função “exec”. Esta função faz exatamente o mesmo trabalho que “sistema”, mas lê e armazena o que o comando imprimiu. São necessários três parâmetros: “exec (string $command, array $output, int $return_var)”, novamente $command e $return_var são os mesmos parâmetros e a única diferença é o array $output. Assim, você pode usar esta função se precisar de como o comando é impresso com o “leitura do gpio 0” comando.
Exemplo:
exec(“gpio leitura 0”, $status);
print_r($status);
?>
Construindo Interface Gráfica:
Agora podemos controlar nosso Raspberry Pi com scripts PHP simples, mas a interação com o usuário está pendente. Isso pode ser feito pela combinação de Java script e HTML. Cada imagem/lâmpada corresponde ao seu LED, se você clicar em um deles, o LED correspondente será ligado/desligado e a imagem também será alterada de acordo. O esqueleto da página será feito em HTML, as interações do servidor com PHP e por fim JavaScript para gerenciar as interações entre o usuário e a animação da página. JavaScript é uma linguagem do lado do cliente que é executada continuamente pelo nosso navegador. É por isso que podemos mudar a aparência da página sem recarregá-la. Primeiramente precisamos de um arquivo “index.php” (a extensão é .php e não .html pois usaremos código PHP, ele comanda o navegador que existe PHP para executar antes de enviar a página). Esta página principal contém 4 botões com Bulb Picture. Esses botões são gerados primeiro com um “exec ( “gpio read “.$i, $output );” e um loop for para replicar. Para detectar o usuário clicando em qualquer um desses botões, é utilizado Java script que está em um arquivo separado chamado “script.js”, embora ainda esteja incluído no index.php. O script consiste em adicionar um ouvinte de evento a todos os quatro botões e quando um deles é pressionado, ele utiliza uma função que chama gpio.php, recebendo a resposta e retornando ao JavaScript que altera o botão para ON ou para DESLIGADO. Você pode baixar os códigos completos diretamente aqui.
Figura 4: Construindo a interface gráfica do Raspberry Pi
Código-fonte do projeto
###
//Program to
###
Código-fonte do projeto
###
//Program to
###
Diagramas de circuito
Diagrama de circuito-automação residencial controlada pela Web |
Componentes do Projeto
- Arduino ProMini
- LIDERADO
- Interruptor de relé
- Transistor BC547
Vídeo do projeto