sábado, 12 de janeiro de 2013

Arduino - Controlando seu arduino pela internet (4/4)

Ultima parte !  Vamos lá pequeno gafanhoto não vá desistir agora !!
Agora vamos criar uma página em PHP , que pegará o comando vindo da pagina em HTML e enviara via serial para o arduino .

Continuando com o editor de textos .

Abra um documento novo e digite





<?php

// armazena o valor de retorno da função fopen() na variavel $post
// fopen() recebe como parametro o caminho da porta e o parametro para escrever "w" (write)
// Caso voce queira usar esse codigo no windows devera mudar a porta para COM3 |EX: $port = fopen("COM3", "w");
$port = fopen("/dev/cu.usbmodemfa131", "w"); //aquivoce coloca o caminho do seu arduino , aparece no canto inferior direito da ide  , seguido do "w"



//Se  o valor da variavel "estado" for igual a "Amarelo", entao escreve na porta serial o valor "a"
if ($_POST['estado']=="a")
{

//Imprime a mensagem no browser "Ligou o Amarelo"


//função para escrever na porta serial o caracter "a"
fwrite($port, "a");
}


// Daqui em diante a logica é a mesma acima, comparando os valores da variavel estado e escrevendo na porta serial
if ($_POST['estado']=="A")
{

fwrite($port, "A");
}

if ($_POST['estado']=="b")
{

fwrite($port, "b");
}

if ($_POST['estado']=="B")
{

fwrite($port, "B");
}

if ($_POST['estado']=="c")
{

fwrite($port, "c");
}

if ($_POST['estado']=="C")
{

fwrite($port, "C");

}

//Fecha a porta serial


?>
<style type="text/css">
<!--
.style1 {
font-size: 48px
}
-->
</style>

<a href="index.html" class="style1">Voltar</a>


Salve da mesma forma , como documento web . html 
com o nome arduino.html


 O arquivo deverá ficar assim .

Depois de salvo , altere sua extenção para .php



O mac irá pedir se voce realmente quer mudar a extenção para php , marque "usar .php"





Agora com tudo salvo , vá até a pasta onde se encontra o MAMP , lá vai ter uma pasta HTDOCS
Se existir alguma coisa dentro dessa pasta pode apagar sem medo ! 
Crie uma pasta chamada arduino , e coloque dentro dela os 2 arquivos 
- index.html
-arduino.php
Agora acesse do seu navegador 
localhost:8888 ou ipdasuamaquina:8888
Acesse a pasta arduino e se divirta acionando o seu arduino via web !  


Já já eu coloco um video do funcionamento . 

37 comentários:

  1. Olá directamente de Lisboa.
    Será que me podem indicar qual o melhor modulo de bluetooth para poder ligar o Uno via app inventor?
    Obrigado

    ResponderExcluir
    Respostas
    1. Primeiramente , muito obrigado por acompanhar o blog ,
      No site do webtronico voce encontra
      http://www.webtronico.com/modulos/modulo-bluetooth-serial-master.html

      Excluir
  2. Uma dica boa é que ali no final onde tem o codigo para voltar a pagina index.html, tambem daria para colocar < meta http-equiv="refresh" content="0;URL=index.html" > , que ai não precisa ficar clicando para voltar, ele volta automatico.

    ResponderExcluir
  3. Boa ideia ricardo, apanhei um pouco mas intendi oq vc quis dizer, troquei a ultima linha do .php Voltar pelo < meta http-equiv="refresh" content="0;URL=index.html"> e deu certinho!!!

    ResponderExcluir
    Respostas
    1. poderia me explicar como fazer com que ele volte automaticamente ou ate mesmo fica-se da própria pagina ?

      Excluir
  4. Boa noite Victor.Como esta?Victor o software que usou no seu não deu certo no meu, acabei colocando XAMPP, conhece? Mas tudo bem, no caso na programação da pg Php onde esta "COM3" eu mudei o meu para "COM7" que é a porta que meu arduino esta funcionando.Vou no meu navegador e coloco localhost e aparece normal a pasta do arduino ao clicar vejo a interface dos botoes,porem quando clico para acionar qualquer botao.a pagina me mostra o seguinte:
    Objeto não encontrado!

    A URL requisitada não foi encontrada neste servidor. O link na página referida parece estar com algum erro ou desatualizado. Por favor informe o autor desta página sobre o erro.

    Se você acredita ter encontrado um problema no servidor, por favor entre em contato com o webmaster.

    Error 404

    localhost
    Apache/2.4.3 (Win32) OpenSSL/1.0.1c PHP/5.4.7


    Já conferi todo o codigo php e html para ver se tinha algo a ver por eu ter usado outro software e ta de boa.

    Agora quando vc pede para acessar do meu navegador
    localhost:8888 ou ipdasuamaquina:8888
    se eu escrevo exatamente isso da que nao exite.
    pode me ajudar?
    Grato

    ResponderExcluir
  5. Estou fazendo tudo isso no windows. No caso meu arduino esta na COM7. acho q só muda essa parte do codigo.Qual das duas estao corretas?
    EX1:Falando qual porta estou e dpois direcionando.
    <?php
    $port = fopen("COM7", "w");
    $port = fopen("/allan/arduino/teste", "w");

    EX2:Só falar a porta que estou que ele consegue saber
    <?php
    $port = fopen("COM7", "w");

    Valew

    ResponderExcluir
    Respostas
    1. Conseguiu colocar tudo no xampp ?? a pasta é a mesma (HTDOCS) , lembrando que o xampp tem que estar rodando pra funcionar .
      e no php é só $port = fopen("COM7", "w");
      verifique a porta no gerenciador de dispositivos .
      ai só tu dar um localhost:porta php aqui

      Excluir
  6. Olá Victor Motter,
    desta mesma forma eu conseguiria fazer com uma placa eternet shild para que não precise de um pc ligado?
    valeu

    ResponderExcluir
    Respostas
    1. Sim , é exatamente essa a função da ethernet shield . Porem a programação é outra.

      Excluir
    2. Victor, onde acho algum artigo de como fazer essa integração do php com o arduino ethernet shield ? Meu tcc é sobre arduino e preciso desenvolver algo bem parecido com o que foi feito, porem, ao inves de controlar o arduino via USB precisa ser via Internet ...

      Por gentileza, vc pode me ajudar com o caso ?

      Abraço

      Excluir
    3. final de semana eu posto isso , pelo ethernet shield

      Excluir
  7. Olá, boa noite! Bom... Sou novo no mundo do arduino e do PHP, tenho noçao de programaçao em C/C++ apenas. To com problemas aqui, fiz todas as ligaçoes certinhas, conferidas umas 5 vezes, mas quando clico em qualquer um dos botoes, nada acontece, nenhum led acende. já verifiquei a serial, tambem uso mac, a porta é a /dev/tty.usbmodemfd121, já alterei no php mas nada... nem sinal de vida dos leds, alguma dica? Obrigado desde já.

    ResponderExcluir
    Respostas
    1. voce está usando qual server web ?
      já verificou a polaridade dos leds ??
      experimente jogar para a porta 13 do arduino e tente ligar / desligar . o led que fica junto com a porta 13 deverá funcionar

      Excluir
  8. Olá a todos do blog,
    para terminar meu projeto usando o arduino e programação PHP como o exemplo do Bruno, estou precisando fazer com que no arduino eu envie bits de retorno para o PHP e no PHP receba esses bits para que possa determina-los para qual pagina vai ser mandado, ex: enviando o bit 0001 ou 0010 etc… do arduino para o PHP o PHP identifica qual bit recebeu e executa a função determinada, pq fazendo assim irei consegui dizer qual led esta aceso ou apagado.

    abraço.

    ResponderExcluir
    Respostas
    1. só tu trocar o parametro do PHP
      de
      $port = fopen("COM3", w');
      para
      $port = fopen("COM7", 'w+');

      Excluir
  9. Muito obrigado, estava procurando uma maneira de fazer conexão sem o uso da ethernet shield.
    Uso Windows 7 64bits, Funfo certinho

    ResponderExcluir
  10. Boa tarde, estou fazendo isso tudo, alem disso coloquei na pasta www uma pasta arduino e na pasta htdocs outra mesma pasta, clico para ligar o led e o mesmo nao liga. coloquei a mesma pasta nesses locais para corrigir o erro de nao encontrar o endereço para o comando de ligar led. tem alguma ideia do que possa ser o erro?

    ResponderExcluir
  11. Boa tarde, meu arduino nao esta conectando com a php, estou usando o windows 7 tem algum truque? tenho que abilitar algo no php.ini?

    ResponderExcluir
  12. Consegui fazer funcionar depois de muito custo, só uma pergunta. para eu acessar o meu localhost pelo meu celular, como faço? qual o link que devo escrever?

    ResponderExcluir
  13. quando aperto ligar ou desligar led4,6 ou 8 aparece este erro
    ( ! ) Parse error: syntax error, unexpected ';' in C:\wamp\www\arduino.php on line 18

    desde ja agradeco

    ResponderExcluir
  14. Qual COM ta o seu arduino? Se tiver em uma COM acima de 5 força ela a estar entre 1 e 5. No gerenciador de dispositivos da dois cliques na COM do arduino >>avançado>> ai você muda a COM. Nao esqueça de mudar na programação a COM que voce colocou

    ResponderExcluir
  15. Quando desconecto meu arduino do pc e conecto novamente não consigo mais fazer fazer os leds acender, nem pela porta serial da IDE.

    ResponderExcluir
  16. Aqui esta funcionando a comunicação porem quando aperto o botão ligar ele liga e apaga como faço para dar o camando e ele manter ligado ate que eu aperte desligar estou usando o xampp

    ResponderExcluir
  17. OI Victor,
    ontem deu tudo certo, acendeu legal, sem nenhum erro, porem hoje quando eu clico para acender o LED não acende e abre o PHP com o seguinte comando:




    meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
    meta name="author" content="Ahmet YUCEL" />

    Como eu posso resolver este problema?

    ResponderExcluir
    Respostas
    1. Verifique se não existe nenhum arquivo do seu server php danificados

      Excluir
  18. Este comentário foi removido pelo autor.

    ResponderExcluir
  19. Muito Bom cara... Funcionou Perfeitamente... Parabéns .!
    Estava buscando isso a muito tempo ..! Faloo'

    ResponderExcluir
  20. parabéns pelo código funcionou perfeitamente aqui,

    porem gostaria de uma ajuda tem como colocar para o ligar e desligar ser em único botão e ficar na mesma pagina sem dar aquela piscada referente ao cogido ( < meta http-equiv="refresh" content="0;URL=index.html">) ????

    ResponderExcluir
  21. Quando eu insiro os comandos pelo "monitor serial" obedece direitinho, mas quando eu abro a pagina e clico em ascender ele segue normalmente para a próxima pagina de voltar, mas não ascende a luz.

    ResponderExcluir
    Respostas
    1. o meu também esta assim, conseguiu alguma solução ?

      Excluir
  22. bom dia , você colocou o codigo da pagina e o codigo da ide arduino

    ResponderExcluir
  23. aqui nao funcionou windows 10 "com4" com mamp instalado e os aquivos salvo na pasta htdocs e no formato de index.html e arduino.html
    a pagina aparece mas ele nao faz nada
    obs arduino uno
    ps: mudei o arduino arduino pra "com4".. e testei tbm em outras portas mas nao funcionou ..
    o que pode ser ?

    ResponderExcluir
  24. Este comentário foi removido pelo autor.

    ResponderExcluir