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

o que vc pretende amigo? o que vai controlar com  o arduino?

Boa noite jose, tudo bem?

Cara, eu incialmente preciso apenas ligar e desligar uma saída do Arduino, o problema maior é colocar isso no PHP e Arduino.

Boa noite Manoel, 

Acredito que para solicitar auxilio da comunidade, eu tenha pesquisado alguns itens, como a sua pesquisa no Google. Obrigado pela ajuda.

Puts .. só agora que vi o seu comentário que me toquei ... colei o link errado, era para ter colado o que eu usei para fazer a minha aqui, eu também uso PHP + MySQL + Arduino, eu mando o comando para o arduino e ele manda dados para o php e armazena estes dados no banco.

Chegando em Caso dou uma olhada novamente e posto aqui ... minhas desculpas .. 

Olá, ajudaria muito também se vc falasse exatamente onde está encontrando problema.

Vc já conseguiu fazer o básico, como por exemplo rodar algum sketch para que o ethernet shield funcione como webserver, para ser possível acessar o IP do ethernet shield usando o navegador do pc? 

Seu shield ethernet é w5100 ou o ENC28J60? Pessoalmente prefiro o w5100 porque as bibliotecas oficiais do arduino funcionam sem necessitar de qualquer adaptação.

Desculpe-me a falta nos detalhes.

Estou usando o W5100, a minha aplicação final é ativar ou desativar zonas de horários pré-configurados em um sistema embarcado biométrico, porém, a idea geral é apenas escrever do PHP, para o Arduino, através de ethernet.

O meu Shield Ethernet ta rodando bem, sem nenhum problema. Hoje consigo normalmente (através do shield) mandar dados para o PHP, e monta-los num BD Mysql que está rodando no Raspberry Pi.

Eu consigo enviar dados para o PHP (e ele armazenar no MySQL) através desta string (PHP)

// Recebe o dado via Ethernet, e prepara para enviar ao banco de dados
$SQL = "INSERT INTO datalog (logs) VALUES ('".$_GET["logs"]."')";

Para o arduino enviar, uso este código:

client.print("GET /Arduino/add_data.php?");
client.print("login=");

Olá, consegui captar que vc já domina o caminho arduino==>php, ou seja, arduino + ethernet shield agindo como client. 

Agora vc precisa dominar o caminho contrário, isto é, fazer o arduino + ethernet shield funcionarem como webserver. Só assim é que o PHP irá conseguir enviar comandos pro arduino através de requisições POST ou GET por exemplo.

Nesse tutorial é apresentada essa funcionalidade: http://labdegaragem.com/profiles/blogs/tutorial-como-utilizar-o-eth...

Ou seja, o ethernet shield está rodando como server. Entenda o conceito por trás disso, arranque os trechos que não te interessam (por exemplo leitura de sensores) e implante aquilo que vc necessita

Depois de dominadas ambas as funcionalidades do ethernet shield (funcionando como client e funcionando como server), vc junta as duas funcionalidade num sketch só para ser aplicado ao seu projeto.

E por fim, vc precisará saber sobre como separar as várias variáveis passadas pelo php dentro do arduino, por exemplo, se o php acessar o ethernet shield através de IP_shield/?luzSala=on&luzQuarto=off&luzCozinha=off&ventilador=on, vc precisará fazer com que seu sketch separe apropriadamente cada um dos comandos

Vou te dar um exemplo de como faço aqui: 

1) no meu pc, tenho windows 7. Nele, eu instalei o VMWare Workstation para tornar possível eu ter um linux rodando em maquina virtual. Eu me sinto a vontade de usar o linux CentOS 6.5, que é gratuito e melzinho na chupeta pra instalar. (Não gostei do CentOS 7.x porque ainda é muito novo e não lançaram todos os pacotes que uso, então não é adequado pra mim ainda). No CentoOS, o básico pro seu projeto funcionar bem seria instalar servidor apache, php, mysql, phpmyadmin e samba. Seria bom também pra ajudar se vc instalasse o webmin, assim terá uma interface via navegador para gerenciar vários recursos do servidor linux (samba, apache, php, cron, gerenciador de arquivos).

2) todos os scripts php responsáveis pelo acionamento do arduino estariam acessíveis para edição através do compartilhamento gerenciado pelo samba. Isso facilitaria demais sua vida porque vc faria tudo através do seu windows e o linux ficaria apenas ali rodando em background no vmware workstation

3) o cron (ou cronjob) do centos seria responsável pela execução dos scripts php nos horários pré-determinados. Esse cron é a versão linux do agendador de tarefas do windows.

4) logicamente, seriam necessários vários "ajustezinhos" pro centos rodar direitinho. Instalar é fácil, mas vc perderá algumas horas/dias/semanas para deixar tudo configurado redondinho. Mas vc estará num outro patamar quando dominar isso. O google vai te ajudar demais se optar por esse caminho.

Eu não entendo nada de Raspberry Pi, apenas sei que ele tem linux. Mas desconheço se ele permite instalar os demais pacotes necessários pro seu projeto funcionar legal e ser facilmente gerenciável

Obrigado imhugo, vou verificar cada passo deste tutorial. 

Pelo que vi por cima, este tutorial monta uma pagina dentro do arduino?!

O meu caso é diferente, mas vi que ele usa algo legal para diferenciar a string recebida..algo como concat.

Em casa vejo com mais calma este tuto. Mas permaneço pesquisando. Valeu!!

O tutorial que citei ( http://labdegaragem.com/profiles/blogs/tutorial-como-utilizar-o-eth... )  faz isso mesmo, monta uma página dentro do arduino. Mas é importante vc perceber que esse é o caminho para chegar a aquilo que vc deseja, ou seja, enquanto o arduino estiver servindo uma página no ethernet shield, a sua aplicação php será capaz de passar comandos pro arduino. Em outras palavras: enquanto o ethernet shield estiver funcionando como server, ele será capaz de detectar se há alguma conexão proveniente do seu script php. Aí é só programar o sketch para tratar a string que o script php enviou pro arduino (via GET ou via POST, vc que decide)

Eu não uso aquele trecho do sketch do tutorial citado onde ocorre o tratamento da string recebida.

No início é legal pra vc captar o conceito, mas talvez vc queira aprimorar isso no futuro, de forma que seu sketch seja capaz de separar algo do tipo: IP_shield/?luzSala=on&luzQuarto=off&luzCozinha=off&ventilador=on, ou seja, vamos chamar isso de alto nível (por ser humanamente possível de ser entendido, e não porque é mais rebuscado, ok). 

No sketch do tutorial citado, a string recebida seria algo do tipo IP_shield/0001 ou IP_shield/0101, ou seja, vamos chamar isso de baixo nível (por ser binário 0 ou 1, e não porque é simplório, ok). Nesse cenário de baixo nível, o tratamento é feito através de endsWith("0001") ou endsWith("0101") e assim em diante, ficando facinho de entender como aplicar isso ao seu projeto

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço