fonte:http://blog.bsoares.com.br/php/controlling-arduino-with-php
É 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 Twitter Hardware, mas este post é sobre PHP, então vamos lá.
Vou utilizar o exemplo descrito no post “Controlando Led RGB com Arduino e Processing” (trocando o Processing pelo PHP).
A função fopen do PHP da suporte a escrita na porta serial:
Linha 1) Abre a conexão com a COM2 (porta serial onde a minha Arduino está conectada).
Linha 2) Escreve na porta
Linha 3) Fecha a conexão
Código PHP do exemplo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | <?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); } ?> |
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ódigo que 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 mensagem chegar a Arduino (não que isso seja muito tempo), e também para que a Arduino consiga responder:
Código Arduino:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | /** * 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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | <?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 conectar sleep(2); // Envia "1" para o programa na Arduino saber que deve responder fwrite($port, '1'); // Espera para que o dado enviado pelo PHP chegue até a Arduino sleep(1); // Agora que a Arduino "Provavelmente já respondeu", pega // o valor da resposta echo fgets($port); // Fecha a conexão com a porta fclose($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 voltagem do 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 do pino 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, isto geraria 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.
fonte:http://blog.bsoares.com.br/php/controlling-arduino-with-php
Qual seria aos comandos/codigos para colocar o nome de um canal de TV( no html) e com os codigod IR e um IR enviar o codigo para a TV ? - - 11:26 21/04/2017
Responder