Pessoal, boa noite.

Estou com dificuldade em encontrar algo sobre PHP>Arduino (via Ethernet). Preciso apenas controlar o arduino. Consigo enviar dados do Arduino>PHP sem problemas. 

Se alguém puder me dar uma luz.

PS: consultei este Tutorial do Lab, mas não funcionou comigo.

Obrigado!

Exibições: 2845

Responder esta

Respostas a este tópico

Fala velho, blz? Cara, eu to quase conseguindo...Mas tem alguns pontos que estão dificultando...

Eu abro o serial monitor para debugar o que estou recebendo, e realmente a string vem o//

Mas ela vem acompanhada deste monte de texto:

GET /TESTE HTTP/1.1
Host: 192.168.1.102
Connection: keep-alive
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.124 Safari/537.36
Accept-Encoding: gzip,deflate,sdch
Accept-Language: pt-BR,pt;q=0.8,en-US;q=0.6,en;q=0.4

Alguem sabe como deixar somente com o GET?

Na verdade, esse monte de texto é chamado de cabeçalho (http header), existente em qualquer comunicação entre cliente/servidor via navegador. Pro usuário, isso é transparente, isto é, ele não vê que esse cabeçalho foi transmitido, o que é naturalmente compreensível. Afinal de contas, pra que o usuário deveria enxergar aqueles textos todos?

Mas vc enxergou porque (como vc mesmo disse) vc abriu o serial monitor pra debugar. No seu sketch provavalmente deve ter algum trecho que manda fazer justamente isso, ou seja, exibir os dados referentes à comunicação entre navegador (client) e server (arduino).

Eu to achando que vc mandou apenas seu sketch dar um client.read e exibir o conteúdo lido.

Agora está faltando armazenar o conteúdo lido dentro de uma variável e depois tratar essa variável (com o conteúdo lido) com algo do tipo if variável.endsWith("TESTE")

Entou deduzindo que a string "TESTE" foi enviada pelo seu php assim: IPdoArduino/TESTE

Cola aí pra nós o seu sketch que resultou nesse monte de texto. Talvez eu consiga te dar uma força.

E, por fim, segue um link que se vc tiver paciência pra ler, vai resolver quase todas suas dúvidas:

http://startingelectronics.com/tutorials/arduino/ethernet-shield-we...

Fala mano, de boa?

Velho, eu fiz realmente a primeira parte que voce disse, mas posteriormente testei com o endsWith, e ainda nao rolou. Mas sei que deve algo bem simples. A noite, quando chegar em casa vou testar melhor, e verificar os resultados.

o skettch é este:

EthernetClient client2 = servidor.available();
if (client2) {
int c = client2.read();
Serial.println(c);
if(c == 'andreandrade'){
Serial.println("recebeu a palavra certa");
}
else {
Serial.println("Não rolou");
}
}

É apenas parte do loop. Eu uso client2, pois tenho outro client para realizar outra tarefa via ethernet. E a palavra "servidor" é a variavel do server.

O link que me mandou, me baseei nele. A principio, meu projeto com integração via ethernet comecou nele. Depois que vi que o Arduino não realiza mult tarefa, precisei hospedar as paginas no RPi mesmo. Mas inicialmente fazia a hospedagem no cartão SD, e o principio de funcionamento, rolava legal.

Acho que sei onde está o erro.

Veja: quando vc meteu o comando if(c == 'andreandrade'), estaria certo se a variável 'c' realmente contivesse somente a palavra procurada, no caso 'andreandrade'

Mas é importante entender que client2.read() fornece dados, caracter a caracter e vc está acumulando em 'c' e depois mandando exibir no seial monitor cada um dos caracteres recebidos. Vc como pessoa enxerga o serial monitor como vindo tudo de uma única vez, simplesmente porque nossos olhos não são tão rápido a ponto de detectar ações rápidas demais. Mas se vc inserir um delay ali logo depois do serial.println(c), por exemplo de meio segundo, perceberá que os caracteres vêm separadamente, um a um.

Isso significa dizer também que a variável 'c', do jeito que vc fez, é zerada a cada ciclo do loop e substituída pelo novo caracter lido em client2.read(). Ou seja, a variável 'c' jamais conseguirá ser igual a 'andreandrade'

É por isso que no sketch dos tutoriais que eu te informei usou-se o concat. Com isso, cada vez que um caracter for recebido em 'c', ele é concatenado numa string (por exemplo chamada 'valPag' ) que vai acumulando todos os 'c' recebidos

Dessa forma, faz-se a pesquisa nessa string 'valPag' através do comando endsWith, e aí sim o arduino será capaz de saber se 'valPag' contém 'andreandrade'

consegui me fazer entender?

Claro, você explica passo-a-passo!!!

Consegui entender o concatenar do Arduino. Acabei de realizar o meu primeiro acionamento "físico" vindo do Browser!!!

Usando o exemplo que você me passou. Vou testar agora via post ou get, do PHP para acionar na página direto. Vou postando aqui o andamento do projeto!

Olá, tudo bem?, gostaria que me desse uma dica, não consigo retornar com o este get que vc colocou no seu post. a pagina não retorna e fica na tela da web a url impressa, porque estou tentando retornar com o valor da variavel de um sensor e não estou conseguindo.

Normalmente estou usando este codigo para retornar o get e dá certo, mais não seu inserir nele a variavel:

 client.println("<script language= \"JavaScript\"> location.href=\"http://192.168.1.105:8080/Retorno.php?sensorluz=1\" </script>");

Você poderia me dar uma ajuda? Obrigado!

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço