Quais são as alternativas para receber dados do Arduino em uma página da internet?

Estou fazendo um projeto um pouco grande, com PHP, Javascript, Ajax para ligar ambos e um banco de dados para salvar tudo, então a página não pode ficar no Arduino, fica em um servidor, enviar dados para o Arduino não é difícil, fiz em PHP tranquilamente.

O problema é a volta, encontrei alguns códigos em PHP, testei no windows e se eu tento receber dados da porta serial ela acaba travando e tenho que reiniciar o computador para voltar a utilizar a porta, no ubuntu não funciona, a página não recebe os dados.

Alguém conhece alguma alternativa?

O que vai acontecer é a cada vez que a página for aberta um comando iria ser enviado ao Arduino para ele enviar dados a página e atualizar o banco de dados, para dai ser carregada.

Obrigado.

Exibições: 917

Responder esta

Respostas a este tópico

use por exemplo um ethernet shield pra fazer tudo funcionar via tcp/ip, usando recursos de webserver e webclient ao mesmo tempo no ethernet shield.

Rode o exemplo da própria ide do arduino chamada webserver e depois webclient. Tente entender como aquilo funciona e depois aprenda a juntar os 2 sketches num só. Daí vc será capaz de fazer seu arduino conectar ao PHP, bem como o contrário, isto é, o PHP se conectar ao arduino

Faltou eu explicar que isso está via USB, transmitindo para o computador onde está o servidor. No caso tenho um CubieBoard, conectaria o Arduino via USB nele e rodaria o servidor pelo CubieBoard.

Pensei em fazer com o ethernet shield, mas vai aumentar um componente para fazer algo que muitos códigos demonstram que podem ser feito sem ele.

Tem códigos assim: "fgets($port);", tem códigos assim: "fread($port, 1024);" e ambos dão problema, até entendo o fread estar esperando um determinado tamanho de código, mas ele nunca destrava, deixei rodando por alguns minutos, mandando caracteres sem parar, o fgets também não responde e trava a porta o que eu achei estranho.

Obrigado.

bom, aí já não sei o que te falar. Não conheço esse CubieBoard. 

Mas fica a dica: vc mesmo já viu a encrenca que é fazer as coisas dessa maneira que vc vem fazendo. Se porventura achar que não vale mais a pena insistir na comunicação serial, considere em fazer tudo isso da forma que te falei. Com certeza vc irá adiar a sua calvície.

O cubieboard é semelhante ao Raspberry, a grande diferença é um maior número de pinos, mas o funcionamento é semelhante.

Vou pesquisar mais um pouco, encontrei um site explicando bem a conexão entre o Arduino e o Raspberry, se não conseguir isso acho que terei que adicionar um módulo ethernet ao projeto.

Valeu.

A solução é você descobrir como desativar o envio do sinal de reset. 

http://playground.arduino.cc/Main/DisablingAutoResetOnSerialConnection

Utilizo um capacitor para isso.

O problema está na ida dos dados do arduino ao php, o contrário é fácil, só colocar o capacitor e não falha, mas essa volta depois de algumas horas consegui fazer funcionar esporadicamente, ele lê alguns caracteres e não é sempre, me pareceu erro de sincronização.

Eu tenho uma solução que é construir um programa em java, c#, delphi, etc., que fica instalado no computador que receberá os dados do Arduino pela USB. Este programa deverá gravar estes dados no banco de dados que sua página php irá consultar de tempos em tempos para apresentação.

Agora, se você quer que o Arduino só mande os dados quando receber um comando, faça este programa instalado no computador ficar verificando uma tabela com campo de sinalização deste comando no banco de dados. Sua página deverá gravar o comando neste campo e o programa ao verificar a sinalização enviará o comando ao Arduino.

Ter um programa instalado no computador fica mais fácil para manipular a porta USB. 

Pior que acho que terei que seguir algo assim, no final de semana vou testar algumas coisas como a comunicação serial entre o Arduino e o Cubie e verei o que faço, qualquer coisa faço um programa em C para ler e e exportar para TXT e faço o PHP ler isso.

Depois de vários testes consegui fazer o sistema rodar algumas vezes no ubuntu de forma correta, mas ainda assim falha bastante, me pareceu erro de sincronia, o que estou fazendo é chamar a função do Arduino assim que carrega a página, o Arduino prontamente dá uma resposta e envia de volta para a página, a próxima função do PHP após abrir a comunicação é tentar ler. Vou testar com delay e ir variando para ver quando consegue ficar tudo correto.

E quanto ao comando, o php_serial.class.php tem um sistema de leitura "9600-8-N-1", detalhado abaixo:

$serial->confBaudRate(9600); //Baud rate: 9600
$serial->confParity("none"); //Parity (this is the "N" in "8-N-1")
$serial->confCharacterLength(8); //Character length (this is the "8" in "8-N-1")
$serial->confStopBits(1); //Stop bits (this is the "1" in "8-N-1")
$serial->confFlowControl("none");

Basicamente tentei incluir um bit de paridade (o que penso eu ser um bit para iniciar a leitura) e um bit de parada, ainda assim não funciona corretamente.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço