Fonte: https://ferpinheiro.wordpress.com/2011/08/18/arduino-e-php-controlando-seu-arduino-atraves-da-internet/
O post de hoje procura demonstrar de maneira fácil e rápida como é possível criar uma aplicação para controlar o arduino através de uma pagina web utilizando HTML e PHP. Como ainda não possuo o shield ethernet, farei um exemplo utilizando apenas a placa arduino. Os componentes para isso são:
– Um computador com o Ubuntu 10.10.
– Um Arduino.
– Alguns Leds.
Para criar a aplicação o usuário deverá ter o mínimo de conhecimento em :
– PHP.
– C/C++.
– Html.
– Linux.
Precisará também ter instalado o Apache e PHP para poder rodar os scripts em PHP. Caso não saiba como fazer isso veja o link AQUI.
Figura ilustrado o processo que será criado através dos códigos e o arduino:
Inicialmente criaremos a pagina HTML contendo os botões responsáveis por acender os leds. Veja as TAGS (“código”) abaixo.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | <html><head><meta http-equiv="Content-Language" content="pt-br"><meta http-equiv="Content-Type" content="text/html; charset=windows-1252"><title>Controle de Leds com Arduino</title></head><body><div align="center"> <table border="0" width="15%" cellpadding="0"> <tr></tr><tr><td><!--------------POST DO BOTAO LIGAR AMARELO------------------------><form method="POST" action="arduino.php"><p> <input type="hidden" value="Amarelo" name="estado" > <input type="submit" value="Ligar Led Amarelo" name="amarelo"></p></form> </td></tr><tr><!--------------POST DO BOTAO LIGAR AZUL---------------------------><form method="POST" action="arduino.php"> <input type="hidden" value="Azul" name="estado" > <td><input type="submit" value=" Ligar Led Azul " name="azul"></td></form> </tr><tr><td><!-------------POST DO BOTAO LIGAR LARANJA-------------------------><form method="POST" action="arduino.php"><p> <input type="hidden" value="Laranja" name="estado" > <input type="submit" value=" Ligar Led Laranja" name="laranja"></p></form> </td></tr><tr><!------------POST DO BOTAO LIGAR VERDE---------------------------><form method="POST" action="arduino.php"> <input type="hidden" value="Verde" name="estado" > <td><input type="submit" value=" Ligar Led Verde " name="verde"></td></form> </tr> </table></div></body></html> |
Copie o código em um arquivo e salve com o nome de index.html
Vamos ao código PHP.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | /*********************************Autor: Fernando Krein PinheiroData: 18/08/2011Linguagem: PHP========= IMPORTANTE ===========O código esta livre para usar,citar e compartilhar desde quemantida sua fonte e seu autor.Obrigado.********************************/<?php$port = fopen("/dev/ttyUSB0", "w");if ($_POST['estado']=="Amarelo"){ echo "Ligou o Amarelo"; fwrite($port, "a");} if ($_POST['estado']=="Azul") { echo "Ligou o Azul"; fwrite($port, "z"); } if ($_POST['estado']=="Laranja") { echo "Ligou o Laranja"; fwrite($port, "l"); } if ($_POST['estado']=="Verde") { echo "Ligou o Verde"; fwrite($port, "v"); }fclose($port);?> |
Copie o código em um arquivo e salve com o nome de arduino.php
Copie o codigo HTML e o PHP para o diretorio www para poder executa-los pelo browser.
Para isso você poderá usar o comando: cp index.html arduino.php /var/www
De permissão de execução para os arquivos: chmod 755 index.html arduino.php
E para finalizar criaremos o código do arduino.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | /*********************************Autor: Fernando Krein PinheiroData: 18/08/2011Linguagem: C (Wiring)========= IMPORTANTE ===========O código esta livre para usar,citar e compartilhar desde quemantida sua fonte e seu autor.Obrigado.********************************/int ledPin13 = 13;int ledPin11 = 11;int ledPin9 = 9;int ledPin7 = 7;void setup() { Serial.begin(9600); pinMode(ledPin13, OUTPUT); pinMode(ledPin11, OUTPUT); pinMode(ledPin9, OUTPUT); pinMode(ledPin7, OUTPUT);}void loop(){ char caracter; caracter = Serial.read(); //se pressionado "v" liga o led verde if(caracter == 'v') { digitalWrite(ledPin13, HIGH); } else //Se pressionado "z" liga o led azul if(caracter == 'z') { digitalWrite(ledPin11, HIGH); } else //S pressionado "l" liga o led laranja if(caracter == 'l') { digitalWrite(ledPin9, HIGH); } else //Se pressionado "a" liga o led amarelo if(caracter == 'a') { digitalWrite(ledPin7, HIGH); } delay(1000);} |
Uma breve explicação sobre a porta serial no Linux.
Os dispositivos como portas seriais, usb, mouse, teclado etc…, são representados através de arquivos, logo é possível que o programador possa manipula-los de uma forma “rudimentar” utilizando funções para manipulação de arquivos encontradas nas linguagens de programação como PHP e C/C++.
As duas linguagens possuem a função fopen() que serve para a manipulação de arquivos, então torna-se possível abrir a porta serial, ler e escrever na mesma utilizando essa função. Veja no código PHP abaixo.
1 | $port = fopen("/dev/ttyUSB0", "w"); |
Existe uma variável chamada $port que recebe o retorno da função fopen().
A função fopen() recebe como parâmetro o caminho da porta “/dev/ttyUSB0” e ainda o parâmetro “w” que significa write (escrever).
Dessa maneira abrimos a porta serial e avisamos há ela que será escrito algum tipo de dado.
Concluída a parte de códigos, vamos ao esquema de montagem dos leds no Arduino.
Faça o upload do código para o arduino.
Com tudo pronto só nos resta testar os códigos para ver se ocorreu tudo conforme o esperado. Mas antes disso vamos dar permissão de leitura e escrita na porta serial, para isso acesse o terminal do ubuntu como root e digite o comando:
sudo chmod a+rw /dev/ttyUSB0
Um erro muito comum para quem esta começando a manipular a porta serial é esquecer de dar as permissões necessárias para leitura e escrita, por isso nunca esqueça de dar a permissão acima antes de executar seu projeto.
Após isso abra um browser e acesse seu localhost. VOce deverá ver uma tela como essa:
Teste os botões e veja o resultado… Confira o vídeo de demonstração:
Download dos códigos comentados e esquema de hardware do arduino.
Bem então é isso, qualquer duvida entre em contato!!
OBSERVAÇÃO:
Muitas pessoas reportam um erro comum quando usam essa solução. O erro parece ser mais comum em usuários Windows.
O que ocorre é que ao tentarem ligar os leds através da pagina HTML+PHP o led apenas pisca e não se mantém ligado como mostrado no vídeo, isso ocorre devido ao modo com que a porta serial (USB) está configurada. Quando um sinal é enviado para o arduino através do PHP o mesmo é resetado e volta ao seu estado inicial, ou seja apenas pisca e fica apagado.
Um dos leitores do blog encontrou uma solução simples e que foi testada por ele mesmo, mostrando-se eficaz na correção desse problema. Segue um trecho do email enviado por ele:
” O Windows (e somente alguns unix) envia um sinal para dar um reset no Arduino pela comunicação serial. Existe um método que você desabilita configurando o sistema operacional, na configuração da porta, ou então, você desabilita esse reset no próprio Arduino via hardware. O que eu tive que fazer foi ligar um resistor de 110 ohms entre o pino reset e o vcc do arduino. Agora o meu código esta funcionando normalmente sem o reset!“
“PABLO DUTRA”
A solução em negrito foi testada por mais um leitor que usou um resitor com resistência diferente a 110 ? e obteve o mesmo resultado….
Fonte: https://ferpinheiro.wordpress.com/2011/08/18/arduino-e-php-controlando-seu-arduino-atraves-da-internet/