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 Pinheiro Data: 18/08/2011 Linguagem: PHP ========= IMPORTANTE =========== O código esta livre para usar, citar e compartilhar desde que mantida 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 Pinheiro Data: 18/08/2011 Linguagem: C (Wiring) ========= IMPORTANTE =========== O código esta livre para usar, citar e compartilhar desde que mantida 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/