controlando a arduino com php via porta serial _ bruno soares

21
18/12/2015 Controlando a Arduino com PHP via porta serial | Bruno Soares http://blog.bsoares.com.br/php/controllingarduinowithphp 1/21 Bruno Soares Pesquisar por: Search Home Fale Comigo Controlando a Arduino com PHP via porta serial Tweet 58 pessoas curtiram isso. Cadastrarse para ver do que seus amigos gostam. Curtir É isso mesmo, o PHP pode escrever ou ler dados da porta serial, e com isso podemos controlar a Arduino . Você pode ligar o seu arcondicionado, cafeteira, luz, etc… via Internet, e de uma forma bem simples. Serialproxy também é uma ótima forma de se conectar a Arduino via Internet, utilizei no projeto Twitter Hardware , mas este post é sobre PHP , então vamos lá.

Upload: bimbo

Post on 15-Feb-2016

46 views

Category:

Documents


3 download

DESCRIPTION

Controlando a Arduino Com PHP via Porta Serial _ Bruno Soares

TRANSCRIPT

Page 1: Controlando a Arduino Com PHP via Porta Serial _ Bruno Soares

18/12/2015 Controlando a Arduino com PHP via porta serial | Bruno Soares

http://blog.bsoares.com.br/php/controlling­arduino­with­php 1/21

Bruno SoaresPesquisar por:

Search

HomeFale Comigo

Controlando a Arduino com PHP via porta serial

Tweet

58 pessoas curtiram isso. Cadastrar­se para ver do que seus amigos gostam.Curtir

É isso mesmo, o PHP pode escrever ou ler dados da porta serial, e com isso podemos controlar a Arduino.

Você pode ligar o seu ar­condicionado, cafeteira, luz, etc… via Internet, e de uma forma bem simples.Serialproxy também é uma ótima forma de se conectar a Arduino via Internet, utilizei no projeto TwitterHardware, mas este post é sobre PHP, então vamos lá.

Page 2: Controlando a Arduino Com PHP via Porta Serial _ Bruno Soares

18/12/2015 Controlando a Arduino com PHP via porta serial | Bruno Soares

http://blog.bsoares.com.br/php/controlling­arduino­with­php 2/21

Vou utilizar o exemplo descrito no post “Controlando Led RGB com Arduino e Processing” (trocando oProcessing pelo PHP).

A função fopen do PHP da suporte a escrita na porta serial:

123

$port = fopen('COM2', 'w');fwrite($port, '1');fclose($port);

Linha 1) Abre a conexão com a COM2 (porta serial onde a minha Arduino está conectada).Linha 2) Escreve na portaLinha 3) Fecha a conexão

Código PHP do exemplo:

12345678910111213141516171819202122232425262728

<?php/** * Arduino + PHP * * @author Bruno Soares * @website www.bsoares.com.br */

$color = $_REQUEST['color'];

if (isset($color) && !empty($color)) $color = hexdec($color); $message = '^' . $color . '$';

// USB Serial Port (COM2) $portAddress = 'COM2'; // Open connection on port $port = fopen($portAddress, 'w'); // Necessary when the Arduino reset after the connection sleep(2); // Send chars fwrite($port, $message); // Close connection fclose($port);

Page 3: Controlando a Arduino Com PHP via Porta Serial _ Bruno Soares

18/12/2015 Controlando a Arduino com PHP via porta serial | Bruno Soares

http://blog.bsoares.com.br/php/controlling­arduino­with­php 3/21

Linha 12) Converte a cor de hexadecimal para decimal.Linha 13) Coloca os caracteres que indicam o inicio e fim da mensagem.Linha 16) Define a variável com o endereço da porta (no meu caso COM2).Linha 19) Abre a “conexão” com a porta serial.Linha 22) Pausa o código por 2 segundo, pois a Arduino costuma reiniciar quando é feita uma conexão a ela.Linha 25) Escreve a mensagem com a cor na porta serial.Linha 28) Fecha a “conexão” com a porta serial.

Update 09/07/2009:Lendo dados:Tenho recebido diversos e­mails e até alguns comentários de pessoas que precisam ler dados de um sensor,potenciometro, ou qualquer coisa conectada a Arduino, e isso via PHP. Então vamos lá, preparei um códigoque faz isso de forma fácil.Acredito que um problema que o pessoal tem tido com esta tarefa é: você deve se dar tempo para a mensagemchegar a Arduino (não que isso seja muito tempo), e também para que a Arduino consiga responder:

Código Arduino:

123456789101112131415161718192021

/** * Arduino + PHP * * @author Bruno Soares * @website www.bsoares.com.br */

#define ANALOG_PIN 4

void setup() Serial.begin(9600);

void loop() if (Serial.available() > 0) if (Serial.read() == '1') Serial.print(analogRead(ANALOG_PIN), DEC);

Código PHP:

Page 4: Controlando a Arduino Com PHP via Porta Serial _ Bruno Soares

18/12/2015 Controlando a Arduino com PHP via porta serial | Bruno Soares

http://blog.bsoares.com.br/php/controlling­arduino­with­php 4/21

12345678910111213141516171819202122232425262728

<?php/** * Arduino + PHP * * @author Bruno Soares * @website www.bsoares.com.br */

// Conecta na porta$port = fopen('COM2', 'w+');

// Em alguns casos a Arduino pode reiniciar, por isso// é bom esperar para enviar informação depois de conectarsleep(2);

// Envia "1" para o programa na Arduino saber que deve responderfwrite($port, '1');

// Espera para que o dado enviado pelo PHP chegue até a Arduinosleep(1);

// Agora que a Arduino "Provavelmente já respondeu", pega// o valor da respostaecho fgets($port);

// Fecha a conexão com a portafclose($port);?>

O que esse código faz?A Arduino fica em loop esperando receber pela porta serial o numero 1, assim que recebido ela lê a voltagemdo pino analógico 4 e escreve na porta serial.O PHP abre a porta serial, escreve “1″, e espera para ler novamente, quando lê novamente encontra o valor dopino analógico 4, assim como a Arduino escreveu.Bom, espero que este exemplo acabe com as dúvidas do pessoal que precise ler dados da Arduino :)

Observações:Caso você precise fazer um projeto onde muitos usuário vão acessar o script que escreve na porta serial, vocêdeve implementar uma fila, de forma a não ter um usuário escrevendo na porta ao mesmo tempo que outro, istogeraria um erro.O código fonte escrito para a Arduino é o mesmo do post Controlando Led RGB com Arduino e Processing

Faça o download do código fonte aqui.

Conteúdo relacionado:Arduino: http://www.arduino.cc/Referência: http://www.arduinoprojects.com/?q=node/10jQuery ColorPicker: http://www.eyecon.ro/colorpicker/

Posts relacionados:

1. Controlando Led RGB com Arduino e Processing2. PianoDuino (Arduino + Processing + SoundCipher)

Page 5: Controlando a Arduino Com PHP via Porta Serial _ Bruno Soares

18/12/2015 Controlando a Arduino com PHP via porta serial | Bruno Soares

http://blog.bsoares.com.br/php/controlling­arduino­with­php 5/21

3. Operações binárias4. Ping Pong com Matriz de Leds 8×85. Classe C++ para controlar Display de 7 seguimentos

Tags: Arduino, Electronics, Led, Led RGB, Open Hardware, PHP, PWM, Techology

This entry was posted on sexta­feira, maio 1st, 2009 at 23:58 and is filed under Arduino, Electronics, PHP. You can follow anyresponses to this entry through the RSS 2.0 feed. You can skip to the end and leave a response. Pinging is currently not allowed.

Comments (65)Trackbacks

1. Bruno Soares disse:16/05/2009 às 21:30

Respondendo a pergunta de Leandro (via contato por e­mail), sim é possível ler dados da porta serial viaphp. O comando file_get_contents, fread, fgets, e outros podem ler esses dados.Mas dependendo da aplicação recomendo usar um Serialproxy (como feito no projeto TwitterHardware). Estou para fazer um post sobre este assunto já faz um bom tempo, só preciso finalizar umoutro experimento para utilizar a arduino na montagem de um post sobre o Serialproxy..

Caso seja melhor para o seu projeto ler a porta via PHP, recomendo que você escreva um bit pedindo odado e prepare a arduino para escrever o valor necessário toda vez que receber esse bit da porta. Você sóprecisa tomar cuidado que a arduino costuma reiniciar quando é feita uma conexão via porta serial.

De qualquer forma, experimente o Serialproxy ;­)

Responder

2. jacob disse:03/07/2009 às 01:41

Could I control the my security cameras with it. debt

Responder

3. Bruno Soares disse:03/07/2009 às 13:39

Olá jacob, você pode sim, mas aconselho a usar serial proxy! tem uma resposta muito boa.

Responder

4. Bruno Soares disse:03/07/2009 às 13:42

Dê uma olhada no post http://blog.bsoares.com.br/arduino/twitter­hardware , você pode usar deexemplo. Fiz um programa em Adobe AIR (ActionScript) que se conecta no serialproxy de umamaquina qualquer para enviar comandos para a Arduino.

Responder

5. Amauri disse:07/07/2009 às 02:54

Ai amigo…sou estudante na area de desenvolvimento…emulei aqui uma porta serial e tudo funcionou….mas só enviando dados…o lance agora é ler….

Page 6: Controlando a Arduino Com PHP via Porta Serial _ Bruno Soares

18/12/2015 Controlando a Arduino com PHP via porta serial | Bruno Soares

http://blog.bsoares.com.br/php/controlling­arduino­with­php 6/21

não acho nenhuma documentação…só me resta vc msm amigo.. srsrsrrsrs…estamos aqui no aguardo…abraços

Responder

6. Bruno Soares disse:09/07/2009 às 00:46

Olá Amauri, então o primeiro comentário responde a sua perguntahttp://blog.bsoares.com.br/php/controlling­arduino­with­php/comment­page­1#comment­1677

Caso seja melhor para o seu projeto ler a porta via PHP, recomendo que você escreva um bit pedindo odado e prepare a arduino para escrever o valor necessário toda vez que receber esse bit da porta. Você sóprecisa tomar cuidado que a arduino costuma reiniciar quando é feita uma conexão via porta serial.

De qualquer forma, experimente o Serialproxy ;­)

Responder

7. Amauri disse:09/07/2009 às 01:47

Blz amigo….vou dar uma estudada …Só mais uma coisa acima vc falou que eu poderia fazer a leitura com fread,fgets e por ai vai…..eu até consigo enviar dados para a serial…mas não ler esses dados…amigo será q vc poderia mandar um exemplo vc iria estar dando uma força e tanto…só o trexo de leitura pq enviar dados eu consigo…abraços e to no aguardo amigo…

Responder

8. Bruno Soares disse:09/07/2009 às 19:51

Salve Amauri! Acabei achando melhor fazer um Update no meu post explicando melhor a sua dúvida,da um olhada, preparei o código e comentei ele para não ter erro :)

[]‘s

Responder

9. Amauri disse:05/08/2009 às 14:52

Opá..amigo obrigado pela explicação…Mas eu quero msm é fazer a troca de dados com relogio de ponto catraca para controle de acesso e tal…e tipo..consigo mandar dados tranquilamente, mas não consigo fazer a leitura..esse tipo de conexão é realizada de forma diferente ?? ou posso usar da msm forma ??

Responder

10. Bruno Soares disse:05/08/2009 às 17:49

Amauri, da uma olhada no post na parte “Lendo dados” que tem um exemplo bem bacana. Presta bematenção no delay que você precisa dar para esperar o dado chegar a porta…

Responder

Page 7: Controlando a Arduino Com PHP via Porta Serial _ Bruno Soares

18/12/2015 Controlando a Arduino com PHP via porta serial | Bruno Soares

http://blog.bsoares.com.br/php/controlling­arduino­with­php 7/21

11. felipe duardo disse:10/08/2009 às 17:48

Olá!

é exatamente isso que eu preciso! ler um porta serial ou usb…só que agora quero saber se a porta serial poderia ser lida doclient ? ou nao tem como?

exemplo o cara vai ter um botão ali que ele clica e pega os dadosda porta que esta na maquina dele, acho que por php nao seria possivelmas quem sabe por js ou sei la sabe me dizer se tem como?

Responder

12. Bruno Soares disse:10/08/2009 às 22:58

Então Felipe, é possível sim, assim como mostro no vídeo…No caso do exemplo deste tutorial estou apenas enviando o RGB para o servidor (via PHP), mas no posttem a explicação de como ler um dado da porta serial via PHP, (Update 09/07/2009: Lendo dados), ecomo você pode utilizar PHP este dados podem estar em um servidor (ou seja, a máquina que controla aarduino tem PHP e um servidor Apache, IIS.. instalado).

Mas antes de fazer qualquer coisa com PHP dê uma olhada no posthttp://blog.bsoares.com.br/arduino/twitter­hardware , você pode usar de exemplo. Fiz um programa emAdobe AIR (ActionScript) que se conecta no serialproxy de uma maquina qualquer para enviarcomandos para a Arduino.

[]‘s

Responder

13. felipe duardo disse:11/08/2009 às 08:37

então bruno…o que estou precisando é para o uso com um periférico que sera desenvolvidoaqui pelo pessoal do hardware da empresa, não se sabe se será usb ou serial,mas por exemplo eu vou ate uma lan house qualquer conecto o periférico, façoum login de acesso restrito a uma pagina e daquela maquina na lan house, queconectei o periférico que vou ter que ler a porta serial ou usb, não no php server…não sei se estava sendo tão esclarecedor…

Responder

14. Bruno Soares disse:11/08/2009 às 11:36

Entendi!, bom dessa forma não da não…E acredito que você não vai conseguir fazer isso sem ter que instalar um software na maquina, seconseguir da um toque! Bom da uma olhana em processing, pois o export do processing é um Applet, evc pode usar isso em uma página HTML, mas acredito que acesso a porta COM1, COM2… você não vaiter via internet, mas você pode tentar, se conseguir me da um toque :)

[]‘s

Responder

Page 8: Controlando a Arduino Com PHP via Porta Serial _ Bruno Soares

18/12/2015 Controlando a Arduino com PHP via porta serial | Bruno Soares

http://blog.bsoares.com.br/php/controlling­arduino­with­php 8/21

15. Daniel disse:26/10/2009 às 16:06

Olá Bruno!Seguinte, eu vou ter que fazer um sistema que envie os dados para um letreiro.Para isso, temo programa VBPainéis.Ainda não sei se este vai ser acessado na porta serial ou pela USB.Foi mepassado o protocolo desse programa e tudo mais, mas a minha dúvida é a seguinte:para eu enviar osdados para esse programa o letreiro tem que estar conectado em alguma porta?

Responder

16. Bruno Soares disse:26/10/2009 às 23:31

Olá Daniel, imagino que você queira utilizar o PHP para enviar estes dados, bom, vc pode tentar enviar ainformação via porta serial sem utilizar o VBPainéis.Caso este software tenha alguma forma de receber informações de diferentes formas, como um xmlsalvo em um determinado diretório ou webservices talvez. Você poderia tentar da forma que ele seentegra com software de terceiros.Boa sorte

Responder

17. Marcos disse:09/12/2009 às 17:55

Bruno tenho tentado de todas as formas enviar dados ao arduino pela porta serial (usb) via PHP.

Tentei com o fwrite e com fputs, mas nenhum dá certo. O RX do arduino nem pisca.Mas se eu vou lá no monitor do arduino e digito qualquer valor, o arduino recebe.

Olha o código PHP que eu estou tentanto:

if ($port = fopen(“COM11″, “w”)) //COM11 é minha porta USB.echo “abriu a porta serial “;if (fwrite($port, ’2′))echo “enviou 2 “;elseecho “não enviou “;elseecho “a porta seral NÃO abriu! “;fclose($port);

Se puder me dar uma força, agradeço muito.Já tentei em dois PCs rodando WinXP + Apache + PHP e nada até agora.

Abraço

Responder

18. Bruno Soares disse:

Page 9: Controlando a Arduino Com PHP via Porta Serial _ Bruno Soares

18/12/2015 Controlando a Arduino com PHP via porta serial | Bruno Soares

http://blog.bsoares.com.br/php/controlling­arduino­with­php 9/21

09/12/2009 às 21:58

Olá Marcos, da uma olhada agora, fiz uma pequena alteração, me parece que você esta tendo umproblema atipico. Dependendo do seu código a Arduino pode reiniciar quando você se conecta a ela,então se você der uma pausa no seu script, ela volta a funcionar e recebe o dado enviado. Tente usar ocomando “sleep” antes de enviar os dados e depois de abrir a porta com a Arduino.

if ($port = fopen(”COM11″, “w”)) //COM11 é minha porta USB.echo “abriu a porta serial “;sleep(2);if (fwrite($port, ‘2′))echo “enviou 2 “;elseecho “não enviou “;elseecho “a porta serial NÃO abriu! “;fclose($port);

Responder

19. Marcos disse:10/12/2009 às 01:32

Bruno, achei o problema!!!!Na verdade o problema não estava em nenhuma das duas programações e sim no Windows.Veja que eu tava usando COM11 (USB serial), no exemplo que eu passei.

Descobri que o Windows atribui sempre valores acima de 10 para a COM, quando esta for uma USB.Não sei porque cargas d’água essa comunicação serial não aceita dois caracteres numéricos na “COM”,então ela funciona somente da COM1 até a COM9.

Vi no site da Microsoft que portas acima de COM9 tem que declarar diferente nas comunicações seriais:“\\.\COM15″, por exemplo. Mas isso não funcionou tb.

Então a solução foi mudar a porta para uma COM disponível abaixo de 10.

Para fazer isso temos que entrar no Gerenciador de Hardware e mudar a COM usada pela “USB SerialPort”. A minha COM2 estava livre, coloquei nela daí o sistema funcionou de primeira.

Coisas de Windows…. Fazer o que, né?Bom agora que deu tudo certo, vou ver se organizo essa informação toda e posto no fórum do Arduino,pois deve ter muita gente apanhando disso.

Mesmo assim te agradeço mto.Marcos

Responder

Vagner Crescencio disse:05/03/2012 às 20:11

Marcos, Valeu pela dica, fiquei 2 dias quebrando a cabeça por causa disso.

Page 10: Controlando a Arduino Com PHP via Porta Serial _ Bruno Soares

18/12/2015 Controlando a Arduino com PHP via porta serial | Bruno Soares

http://blog.bsoares.com.br/php/controlling­arduino­with­php 10/21

Obrigado. :D

Responder

20. Marcos disse:14/12/2009 às 19:03

Bruno, sabe se tem um jeito de ler a porta serial um pouco mais rápido. Sem usar o Sleep(2) e Speep(1)?

Pelo que vc falou ela reseta se não usar. É isso mesmo?Tem como não resetar.

Quanto eu testo pelo Serial Monitor na app do Arduino, consigo fazer praticamente em tempo real. Seique pelo PHP depende de recarregar a página, mas se ficar um pouco mais rápido já melhora bastante.

Abraço

Responder

Edson disse:15/11/2012 às 00:58

Ola,. estou com o seguinte problema , meu arduino não esta conseguindo ler o serial, o php naoconsegui enviar o sinal para o seria, estou usando um arduino uno na com 2 e win 7

Responder

21. Bruno Soares disse:14/12/2009 às 22:19

Salve Marcos, da uma olhada no forum da Arduino, tem outras pessoas com o problema la:http://www.arduino.cc/cgi­bin/yabb2/YaBB.pl?num=1213719666/28#28Não testei mas deve funcionar.

[]‘s

Responder

Wilson disse:21/10/2013 às 17:16

Ola Bruno gostaria de saber se tem como criar uma pagina em php sem ser usando a porta com ouseja a serial e fazer um codigo em php e o outro no arduino separados tambem se fosse possivelsem usar socktes….

Responder

Wilson disse:21/10/2013 às 17:32

eu estou usando o ethernet shield w5100 para comunicaçao

Responder

22. Rudrigo Lima disse:17/03/2010 às 19:34

Caro, Amigo

Page 11: Controlando a Arduino Com PHP via Porta Serial _ Bruno Soares

18/12/2015 Controlando a Arduino com PHP via porta serial | Bruno Soares

http://blog.bsoares.com.br/php/controlling­arduino­with­php 11/21

Estou tentando comunicar com PHP a LPT1(porta paralela) acionar bit’s nos pinos de 2­9 isso é possívelassim como a com(serial)

Responder

23. Lidia disse:04/12/2010 às 16:08

Oi Bruno, seria possível que vc postasse uma img do esquemático pra gente visualizar as ligações?

Obrigada.

Responder

Bruno Soares disse:04/12/2010 às 17:54

Oi Lidia, se você quiser ligar um led rgb via php, dê uma olhada neste outro post para saber comoligar o led.http://blog.bsoares.com.br/processing/controlling­rgb­led­with­arduino­and­processing

Boa sorte

Responder

24. Deann Reese disse:23/12/2010 às 22:10

Amauri, da uma olhada no post na parte “Lendo dados” que tem um exemplo bem bacana. Presta bematenção no delay que você precisa dar para esperar o dado chegar a porta…

Responder

25. Maximiller disse:17/02/2011 às 12:45

Olá,

Poderia dar um exemplo sobre a implementação da fila para conexões de múltiplos usuários. Programoem PHP mas não tenho experiência com este conceito. Grato

Responder

Bruno Soares disse:17/02/2011 às 13:37

Olá, Maximiller, não posso.

Vlw Abraços

Responder

26. Maximiller disse:20/02/2011 às 11:41

Olá Bruno,

Os caracteres que indicam o inicio e fim da mensage colocados por vc na linha 13 do código exemplosão obrigatórios ou foram colocados opcionalmente? Vc faz o tratamento da mensagem no código do

Page 12: Controlando a Arduino Com PHP via Porta Serial _ Bruno Soares

18/12/2015 Controlando a Arduino com PHP via porta serial | Bruno Soares

http://blog.bsoares.com.br/php/controlling­arduino­with­php 12/21

Arduino posteriormente?

Grato

Responder

Bruno Soares disse:22/02/2011 às 11:06

Coloquei os dois caracteres para saber quando começa e termina um comando.

Responder

27. gamezat disse:24/03/2011 às 18:41

hello this is so nice i will translate it to english and post it in arduino forumthank you

Responder

28. Leandro disse:26/06/2011 às 01:19

Tive problemas em executar isso no windows.Procurando, depois de bastante tempo descobri que eram as configurações setadas para a porta que euestava usando no php.Resolvi com o seguinte comando.exec(“mode com3: BAUD=9600 PARITY=n DATA=8 STOP=1 to=on dtr=off rts=off”);meu windows é o xp.Este comando configura a porta corretamente, e deve ser colocado antes dela ter sido aberta com fopen.

Responder

Bruno Soares disse:26/06/2011 às 15:11

Valeu a dica Leandro!

Responder

29. felipe disse:25/08/2011 às 14:05

meu erro

Warning: fopen(COM1) [function.fopen]: failed to open stream: Permission denied inC:\wamp\www\teste\index.php on line 15

porque??

Responder

30. Daniel disse:24/09/2011 às 19:16

Bruno!ta tudo funcionando mas queria pegar o valor que consegui (coloquei um potenciometro no arduino) etransformar esse valor que aparece na pagina numa variavel para jogar numa função if…

Page 13: Controlando a Arduino Com PHP via Porta Serial _ Bruno Soares

18/12/2015 Controlando a Arduino com PHP via porta serial | Bruno Soares

http://blog.bsoares.com.br/php/controlling­arduino­with­php 13/21

Como posso transformar ofgets ($port);em uma variavel?exemplo:echo fgets ($port);retorna510quero que esse 510 seja a variavel$numero

Abraço!!!

Responder

31. Victor disse:04/11/2011 às 00:47

Cara eu estou querendo fazer em vez de LED, fazer com um controlador de temperatura, queria umaajuda pois esta dando muito erro ! =S

Responder

32. Roniere disse:14/01/2012 às 02:13

Funciona do mesmo jeito com o Xampp ou Wamp ????

Responder

Bruno Soares disse:16/01/2012 às 09:36

Sim

Responder

33. cleo disse:06/02/2012 às 08:41

Pessoal,Acesse o site da EMPRETECNET, eles fabricam um KIT com uma placa compatível com arduinoduemilanove, uma placa de rele, de potenciômetro, de sensor de luz, de sensor de luminosidade, debuzzer, de botão e demais componentes que podem ser realizados vários experimentos sem anecessidade de solda. Qualidade excelente!!

Responder

34. Ivo Filho disse:22/04/2012 às 02:50

Prezados… a charada foi resolvida… para portas acima de COM9 e pro reset do arduino.

primeiro use:exec(“mode com13: BAUD=9600 PARITY=n DATA=8 STOP=1 to=on dtr=off rts=off”); no meu casofoi a COM13depois use$port = fopen(‘\\\\.\\COM13′, ‘w+’);isso mesmo com este tantao de barras ai.. (3 horas lutando pra descobrir este vacilo) rss…

Page 14: Controlando a Arduino Com PHP via Porta Serial _ Bruno Soares

18/12/2015 Controlando a Arduino com PHP via porta serial | Bruno Soares

http://blog.bsoares.com.br/php/controlling­arduino­with­php 14/21

Ai amigos é caixa.. funciona mesmo… é só fazer a escrita esperar 1s e ler o que foi devolvido…

Responder

35. Guilherme disse:26/04/2012 às 01:47

Boa noite..Preciso de ajuda para ler os dados da porta COM…Problemas com a função fgets e PIC.

Estou utilizando o PIC 18F4550 no hardware e o cabo USB para conecta­lo ao PC (windows XP).Meu servidor é o Apache 2.2 e PHP 5. (Sou iniciante em PHP e APACHE).

Seguinte:Quando envio o comando para ligar um led (letra ‘L’) através do HyperTerminal, o Led acende eobtenho a resposta do PIC na tela do Hyperterminal. (‘L’ – Ligado, ‘D’ – desligado).

O problema é que, quando utilizo pela WEB, a função php responsável por ligar o LED só funciona seeu tiver utilizado o Hyperterminal antes.Se a função for usada primeiramente, o LED acende, porém, a resposta não é obtida, e a página ficacarregando por um bom tempo, segurando a porta COM aberta.

Segue a função php para ligar o LED:

Função corta a execução do código. mesmo usando fget(), fgets()..etc..

fclose($fp);?>

VOLTAR

Alguém teria alguma idéia do que possa ser???Desconfio que tenha relação com bit menos e mais significativo… o pic envia do LSB e finaliza noMSB. Mas não sei como o PHP trabalha… Li uma vez sobre um problema semelhante, porém, era comJAVA..

Se alguém souber e puder ajudar, agradeço…

Abraços pessoal…

(PARABÉNS PELO POST!!! AJUDOU MUITA GENTE)

Responder

Guilherme disse:26/04/2012 às 01:53

Desculpem, o código da função não saiu… deve ter sido interpretado.. (sou iniciante..rsrsr):

­> começa php

$porta=’COM1′;

`mode com1: BAUD=9600 PARITY=n DATA=8 STOP=1 to=on dtr=off rts=off`;

$fp = fopen($porta, ‘r+’);

if(!$fp)

Page 15: Controlando a Arduino Com PHP via Porta Serial _ Bruno Soares

18/12/2015 Controlando a Arduino com PHP via porta serial | Bruno Soares

http://blog.bsoares.com.br/php/controlling­arduino­with­php 15/21

echo “Não foi possível abrir a porta $porta”;else

fwrite($fp, ‘L’);

echo “RESPOSTA ” . fread($fp,1); ­> Problema está na fread(), fgets();…

fclose($fp);

­> termina php

Responder

Guilherme disse:04/05/2012 às 00:10

Boa noite.. depois de muito apanhar.. mais muito mesmo… consegui resolver oproblema…

utilizei a função dio_open() para abrir a serial… ela trabalha em nível baixo..

ficou assim:

//php começa

$porta=’COM1′;

`mode com1: BAUD=9600 PARITY=n DATA=8 STOP=1 to=on xon=off odsr=offocts=on dtr=on rts=hs idsr=off`;

$fd = dio_open(‘com1′, O_RDWR | O_NOCTTY | O_NONBLOCK);

dio_write($fd,’L');

$RESPOSTA = dio_read($fd,2);

dio_close($fd);//termina php

No PIC, coloquei para enviar a resposta seguida de “\n”

Valeuss.. abraços…

Responder

Bruno Soares disse:04/05/2012 às 10:49

Valeu por compartilhar Guilherme! :)

Responder

fernando disse:22/06/2012 às 11:38

Bom dia,Eu não consegui usar este código para PIC. Parece que a versão do PHP53.8.0 não tem mais estas funçoes dio_.

Page 16: Controlando a Arduino Com PHP via Porta Serial _ Bruno Soares

18/12/2015 Controlando a Arduino com PHP via porta serial | Bruno Soares

http://blog.bsoares.com.br/php/controlling­arduino­with­php 16/21

Se vc puder testar nesta versao… Obrigado.

36. Carlos disse:25/06/2012 às 16:35

Olá amigo,Desculpe­me o encomodo, mas como se da permissao em localhost. nNo meu dá o seguinte erro

Warning: fopen(COM3:) [function.fopen]: failed to open stream: Permission denied inC:\xampp\htdocs\arduino\index2.PHP on line 29

Grato pela compreensão.

Responder

fernando disse:03/07/2012 às 11:35

Vc está usando o Arduino? Verifica se algum outro programa abriu está porta. Utilize outroprograma para testar a comunicação, antes de usar o PHP.

Responder

37. lucas disse:11/09/2012 às 16:55

Boa tarde Bruno,

Primeiro meus parabéns pelo post, acredito que você tenha ajudado muitas pessoas por esse brasil assimcomo iluminou bastante a minha visão sobre esse tipo de comunicação.

Porém gostaria de tirar umas dúvidas com você. A minha idéia é de implementar um controle deiluminação via web. De que maneira? A pessoa podendo ligar e/ou desligar 2 leds. Hoje possuo umarduino uno, uma quantidade boa de leds de alta luminosidade, vários resitores de 1 K e o WAMP. Vocêpoderia me sugerir algum material especifico para me ajudar?

Antes de mais nada obrigado pela ajuda e desculpe pelo incômodo.

Responder

Alessandra disse:28/06/2013 às 17:14

Oi LucasLi sua mensagem no topico de controlando com arduino e acho que é o mesma questao que aminha. Eu preciso orientar um grupo de estudantes em um projeto de feira de ciencias. Conhecoum pouco de PHP e pelo que vi nos códigos Arduino consigo compreender. Mas como fazer asligaçoes, quais placas usar eu estou um pouco perdida. Voce conseguiu fazer o seu projeto !? Podeme dar uma orientacao ou me indicar sites onde eu possa me instruir melhor ( nao sei nada deeletronica ) Grata

Responder

38. Alessandra disse:28/06/2013 às 09:55

Ola,

Page 17: Controlando a Arduino Com PHP via Porta Serial _ Bruno Soares

18/12/2015 Controlando a Arduino com PHP via porta serial | Bruno Soares

http://blog.bsoares.com.br/php/controlling­arduino­with­php 17/21

Sou leiga em eletrônica, mas preciso desenvolver um projeto para feira de Ciencias. A idéia é controlaras luzes, portao eletronico … de uma casa a distancia. Entao eu teria um dispositovo movel de ondeposso controlar de qualquer lugar estas funcionalidade da casa. O que vc sugere !? Ha algum post seuonde eu possa me basear, conheço um pouco de php. Grata

Responder

39. daisy disse:01/08/2013 às 15:48

Boa Tarde. tenho um sistema de arduino que acende luzes atraves de uma pagian php que estahospedada localmente na pasta htdocs do xampp. Ele funciona normalmente apaga e acende as luzesconforme eu esperava. O problema esta qeu eu queria hospedar este meu site php em um servidorexterno tipo a uol pra ser exata, e quando faço isso o site não se comunica com o arduino.Fica dando erros de socket.

Como eu faço para meu site php continuar se comunicando com o arduino mesmo sendo hospedado forado pc?

Responder

Roberto disse:17/08/2013 às 12:50

Daisy, me passa seu código em PHP e seu programa do aruino que eu verifico o que estáacontecendo e te retorno.

Responder

40. Bráulio M disse:10/08/2013 às 17:54

Ei Cara !

Show D+ !!!

Mas estou achando as transmissão muito lenta para acender o LED RGB.

Sugiro, de acordo como seu código em PHP, diminuir o sleep(); para valores bem menores.

Boa ideia !Parabéns !

PS : Amo o PHP e Linux !!!!!!!!!!!!!!!!! :D

Responder

41. Fabiano disse:29/08/2013 às 10:21

Olá Alessandra,ja consegui resolver seu assunto?

Responder

42. Fabiano disse:29/08/2013 às 11:03

Olá a todos do blog,

Page 18: Controlando a Arduino Com PHP via Porta Serial _ Bruno Soares

18/12/2015 Controlando a Arduino com PHP via porta serial | Bruno Soares

http://blog.bsoares.com.br/php/controlling­arduino­with­php 18/21

para terminar meu projeto usando o arduino e programação PHP como o exemplo do Bruno, estouprecisando fazer com que no arduino eu envie bits de retorno para o PHP e no PHP receba esses bitspara 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 fazendoassim irei consegui dizer qual led esta aceso ou apagado.

abraço.

Responder

43. VANESSA LAGO MACHADO disse:28/09/2013 às 15:57

Olá,

Estou com um problema na comunicação serial com o php.

O Sistema trata­se da leitura de TAGs RFID, as quais devem ser lidas pelo PHP.

Porém a leitura está dando o seguinte erro:Warning: fopen(COM4) [function.fopen]: failed to open stream: No such file or directory inC:\xampp\htdocs\SerialArduino\index.php on line 2

Alguém sabe o que gera este erro?

Obrigada

Responder

Vanessa Lago Machado disse:30/09/2013 às 10:04

Olá, Meu erro segue dando, mas ao abrir a porta o erro muda para erro de permissão: Warning:fopen(COM4) [function.fopen]: failed to open stream: Permission denied

Alguém sabe o que fazer? ????

Responder

44. Allan disse:11/12/2013 às 12:02

Para eu acessar do meu celular qual o link que devo colocar?

Responder

João Vitor disse:06/03/2014 às 16:13

[o IP da sua máquina em que o arduino está]:[a porta liberada no seu XAMPP (normalmente 80)]EXEMPLO ==>> 192.168.0.4:80

Responder

45. Diego disse:07/05/2014 às 09:36

Bruno, no caso estou utilizando um sensor de luminosidade conectado no arduino, o código arduino estáok imprimindo o status da luminosidade, quando a luminosidade for baixa o led apaga e imprimi no

Page 19: Controlando a Arduino Com PHP via Porta Serial _ Bruno Soares

18/12/2015 Controlando a Arduino com PHP via porta serial | Bruno Soares

http://blog.bsoares.com.br/php/controlling­arduino­with­php 19/21

código arduino, porém não estou conseguindo transmitir essa informação para o PHP. se possivelpoderia me ajudar:

obrigado cara, e parabens pelo blog

Responder

46. victoria's secret stores europe disse:31/08/2014 às 21:07

Inspiring story there. What occurred after?Good luck!

My web page victoria’s secret stores europe

Responder

47. Thiago disse:08/09/2014 às 02:16

Segue o seguinte problema. Minha porta COM 17 no caso a que eu uso no meu Arduino respondeperfeitamente, porém quando faço o código PHP sem erro, o meu arduino não consegue responder,alguém tem uma ideia do que possa ser ? dei uma olhada tem gente com o mesmo problema ! Estavapensando em trocar a porta COM17 do arduino ! Esperando respostas !

Responder

Leave a Reply

Name (required)

Mail (will not be published) (required)

Website

Submit Comment

Subscribe: Entries | Comments

Sobre Mim

Digite o texto

Page 20: Controlando a Arduino Com PHP via Porta Serial _ Bruno Soares

18/12/2015 Controlando a Arduino com PHP via porta serial | Bruno Soares

http://blog.bsoares.com.br/php/controlling­arduino­with­php 20/21

Bruno Soares é web developer e compartilha aqui um pouco de sua experiência e experimentos.

Twitter / BSoaresFlickr / BSoaresVimeo / BSoaresYouTube / BSoaresComBrLinkedin / BrunoSoaresBSoaresComBr . tumblr.com

Últimos Posts

Jogando Super Nintendo no Android com controle originalPing Pong com Matriz de Leds 8×8PianoDuino (Arduino + Processing + SoundCipher)Operações bináriasVector em AS3 para Flash Player 10Funções do C++ úteis para ArduinoClasse C++ para controlar Display de 7 seguimentosControlando a Arduino com PHP via porta serialControlando Led RGB com Arduino e ProcessingTwitter Hardware

Categorias

ActionScript 3.0Adobe AIRAndroidArduinoASP.NETC++ElectronicsFlashGamePHPProcessingProjectsRemoting

Arquivo

abril 2011julho 2009maio 2009abril 2009março 2009fevereiro 2008

Tags

7 Segments Display 8x8 Led Matrix 4051 ActionScript 3.0 Adobe AIR AMF AMFPHP Android Arduino ASP.NETBlueSMiRF Bluetooth ByteArray C# C++ Demultiplexer Display LCD DIY Electronics Flash Flex Flickr API FluorineFxGame Google Google Analytics Java JPGEncoder Led Led RGB Matemática Multiplexer Open Hardware

Page 21: Controlando a Arduino Com PHP via Porta Serial _ Bruno Soares

18/12/2015 Controlando a Arduino com PHP via porta serial | Bruno Soares

http://blog.bsoares.com.br/php/controlling­arduino­with­php 21/21

Performance PHP PNGEncoder Processing PWM Remoting Serialproxy SNES Sound SoundCipher Techology Twitter© 2015. Bruno Soares. All rights reserved. Powered by WordPress & SimpleX theme.carregando