Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Erick Ferreira

Receber dados por Socket

Recommended Posts

Ola

 

Gostaria de saber se tem alguma maneira de minha pagina php receber dados aleatoriamente de um microcontrolador (arduino) por socket? Por exemplo, no arduino conecto um sensor e caso o sensor mude o seu status ele envia para o php e mostra o resultado. Consegui fazer algo parecido mas eu precisava sempre fazer com que o php enviasse uma requisicao para o arduino pedindo o status.

Andei pesquisando e li sobre o socket_bind(), socket_listen() e socket_accept() mas ainda consegui algo concreto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

hinom, nao sei se entendi bem o q vc quis dizer mas vc sugeriu eu fazer uma funcao (no php) pra enviar para o arduino e assim receber a resposta? Se for isso q entendi respondendo, eu fiz porem o problema eh q ainda nao consegui fazer uma logica boa para que o php enviasse sempre requisicao (num tempo de 2 seg ao menos)

 

while(true){
    socket_write($sock, 'P', 1);
    sleep(2);
    $aux = socket_read($sock, 1);
    echo "aux: " . $aux . "\n";
    if($aux != $status){
        echo "<meta http-equiv=\"refresh\" content=\"2;URL=novorequest.php\">";
        //echo "status anteriormente:" . $status . "\n";
        $status = $aux;
        //echo "novo status: " . $status;     
    }
  break;
} 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sugeri o contrário...

 

Acesse o chip do Arduino com uma IDE e programe-o para enviar as requisições desejadas.

 

Isso é bem melhor do que criar uma escuta (listen).

 

 

Que projeto está fazendo com Arduino?

Robótica? Transmissão de dados ? Raio laser ? Mecatrônica ?

 

 

... vou tentar desenhar porque acho que vc está meio confuso.. rsrs

 

 

 

Um exemplo, enviando um sinal de um controle remoto para o Arduino que então processa o sinal e envia requisição para a API externa (escrita em PHP):

[RC] (controle remoto, pressiona tecla 1 que é recebida pelo receptor e transfere para o arduino)
  .. 
  ..
 \../
  \/
[RC receiver]
  |
  |
[---------] Obviamente que o chip não entende o sinal.  
[ arduino ] É necessário programá-lo para receber esse sinal.
[---------]
  ..
  ..
 \../ (envia para a API escrita em PHP.. sacou?
  \/

-------
| PHP |
| API | (recebe a requisição e prossegue com o que deseja fazer..
-------

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estou tentando fazer automação, e é essa mesma ideia que vc sugeriu que estou fazendo..

No meu caso, estou utilizando um sensor LDR para verificar se uma lampada esta acesa/apagada. Caso o sensor verifique que foi modificado o status da lampada o arduino enviaria para o php. O problema esta que o php não se sabe ao certo quando vai ser modificado o status.. no php utilizo o socket_read() porem sei quando receber o status.

 

Nao sei se deu pra entender o que quis dizer e o que eu estou querendo :assobiando:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara.. vc não entendeu nada...

 

vc já trabalhou com arduino ou qq outro similar ?

 

O que estou dizendo é para vc criar uma rotina dentro do chip do Arduino.

Não tem nada a ver com PHP.

Você mesmo acessa e compila até mesmo o kernel do Arduino...

 

Com essa rotina dentro do chip, o próprio Arduino enviará o sinal para uma API externa que desejar.

 

exemplo

 

[arduino:lampada_apagou] -> envia sinal para a API http://localhost/api/ledOff (essa url é um exemplo)

 

só isso é o suficiente... A linguagem é C++

 

Uma IDE adequada para fazer isso, está nos posts acima..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dê um get numa url pelo arduino, deve ter como fazer né? se tem como fazer um socket, da pra vc implementar um get nisso.

 

No PHP essa url recebe por parametro o status (vc deve implementar algo para segurança, pra garantir que quem esta acessando a url é o arduino msm).

 

Assim você não precisa deixar o php com o socket aberto em espera aguardando a conexão do arduino.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.