Bom dia, pesquisando   achei esse progama no site Engenheirando ,encontrei um erros e estudando mudei eles , aceitou ( estou iniciando ainda no Arduino), então logo depois tem o codigo em PHP , não manjo nada disso , o site sugeriu para hospedar num tal  XAMPP, que notei abaixo , que foi atualizado em 22/08/2012, o site ainda funciona normalmente.

   Minha duvida esta assim, aqui abaixo esta codigo da progamação , que ainda não alterei ip ,nada disso.


//retirado erro de atualizaç~oes em bibliotecas 28/08

#include <SPI.h>
#include <Ethernet.h>

//Configurações do Ethernet Shield
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192,168,2, 22 }; // ip que o arduino assumirá
byte gateway[] = { 192,168,2, 1 }; // ip do roteador
byte subnet[] = { 255, 255, 0, 0 };

// String que representa o estado dos dispositivos
char Luz[7] = "0000L#";


EthernetServer server (80); // cria servidor na porta 80 (estava errado biblioteca e  porta)

// String onde é guardada as msgs recebidas
char msg[7] = "0000L#";

void setup() {
Ethernet.begin(mac, ip, gateway, subnet);
server.begin();
pinMode(A0,OUTPUT);
pinMode(A1,OUTPUT);
pinMode(A2,OUTPUT);
pinMode(A3,OUTPUT);
pinMode(A4,OUTPUT);
pinMode(A5,OUTPUT);
}

void loop() {
EthernetClient client=server.available(); ( estava errado  biblioteca )
// SE receber um caracter...
if (client) {
// guarda o caracter na string 'msg'
msg[1]=msg[2]; msg[2]=msg[3]; msg[3]=msg[4]; msg[4]=msg[5]; msg[5]=msg[6];
msg[6] = client.read();

if (msg[6]=='#') {
switch(msg[5]) {
case 'R':
// Se receber o comando 'R#' envia de volta o status dos
// dispositivos. (Que é a string 'Luz')
client.write(Luz);
break;
case 'P':
// Caso P#, aciona o pino do portão pequeno por 1s.
digitalWrite(A4,HIGH);
delay(1000);
digitalWrite(A4,LOW);
break;
case 'G':
// Caso G#, aciona o pino do portão pequeno por 1s.
digitalWrite(A5,HIGH);
delay(1000);
digitalWrite(A5,LOW);
break;
case 'L':
// Caso L#, ele copia os 4 bytes anteriores p/ a
// string 'Luz' e cada byte representa um
// dispositivo, onde '1'=ON e '0'=OFF
Luz[0]=msg[1];
Luz[1]=msg[2];
Luz[2]=msg[3];
Luz[3]=msg[4];
if (Luz[0]=='1') digitalWrite(A0,HIGH); else digitalWrite(A0,LOW);
if (Luz[1]=='1') digitalWrite(A1,HIGH); else digitalWrite(A1,LOW);
if (Luz[2]=='1') digitalWrite(A2,HIGH); else digitalWrite(A2,LOW);
if (Luz[3]=='1') digitalWrite(A3,HIGH); else digitalWrite(A3,LOW);
break;

}
}
}
}

Acima esse codigo testei , não apresentou  erros , a seguir tem o codigo em PHP, minha duvida seguinte , esse  progama , coloco em sequência com  outro acima , no site diz seguinte:

"Esta seção fala da página pela qual você acessará o Arduino. No projeto utilizei PHP e me conectava ao Arduino por socket.
A página poderá estar hospedada tanto em um servidor de hospedagem como no seu computador. Sempre que você acessa a página, ela envia um ‘R#’ para o Arduino e ele responde informando quais dispositivos estão ligados. A página exibe o botão verde para os dispositivos ON e vermelho para OFF.

 

Quando você clica em algum botão na página, ela envia o código correspondente para o Arduino e se atualiza.
Não entrarei em detalhes sobre como criar um servidor WEB no seu computador e hospedar sua página no seu próprio PC, mas você aprende isso em algum tutorial de PHP.

 

Se for seguir esse caminho, eu só indico que use o WebServer XAMPP pois é muito simples e fácil de instalar e já vem com PHP.
Se for hospedar sua página em algum servidor online, será mais simples, já que não vai precisar instalar nada no PC nem configurar PHP nenhum, além de que os bons serviços de hospedagem oferecem suporte.
No Brasil, eu indico a Host.

   ESSE  PROGAMA EM PHP

<html>
<head></head>
<body>

<?php
$sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); erro nessa  linha - stray '$'  in progama
// Se conecta ao IP e Porta:
socket_connect($sock,"187.15.6.131", 8081);

// Executa a ação correspondente ao botão apertado.
if(isset($_POST['bits'])) {
$msg = $_POST['bits'];
if(isset($_POST['Fora' ])){ if($msg[0]=='1') { $msg[0]='0'; } else { $msg[0]='1'; }}
if(isset($_POST['Quarto1'])){ if($msg[1]=='1') { $msg[1]='0'; } else { $msg[1]='1'; }}
if(isset($_POST['Quarto2'])){ if($msg[2]=='1') { $msg[2]='0'; } else { $msg[2]='1'; }}
if(isset($_POST['Sala' ])){ if($msg[3]=='1') { $msg[3]='0'; } else { $msg[3]='1'; }}
if(isset($_POST['Pequeno'])){ $msg = 'P#'; }
if(isset($_POST['Grande' ])){ $msg = 'G#'; }
socket_write($sock,$msg,strlen($msg));
}

socket_write($sock,'R#',2); //Requisita o status do sistema.

// Espera e lê o status e define a cor dos botões de acordo.
$status = socket_read($sock,6);
if (($status[4]=='L')&&($status[5]=='#')) {
if ($status[0]=='0') $cor1 = lightcoral;
else $cor1 = lightgreen;
if ($status[1]=='0') $cor2 = lightcoral;
else $cor2 = lightgreen;
if ($status[2]=='0') $cor3 = lightcoral;
else $cor3 = lightgreen;
if ($status[3]=='0') $cor4 = lightcoral;
else $cor4 = lightgreen;

echo "<form method =\"post\" action=\"PaginaPHP.php\">";
echo "<input type=\"hidden\" name=\"bits\" value=\"$status\">";
echo "<button style=\"width:70; background-color: $cor1 ;font: bold 14px Arial\" type = \"Submit\" Name = \"Fora\">Fora</button></br></br>";
echo "<button style=\"width:70; background-color: $cor2 ;font: bold 14px Arial\" type = \"Submit\" Name = \"Quarto1\">Quarto1</button></br></br>";
echo "<button style=\"width:70; background-color: $cor3 ;font: bold 14px Arial\" type = \"Submit\" Name = \"Quarto2\">Quarto2</button></br></br>";
echo "<button style=\"width:70; background-color: $cor4 ;font: bold 14px Arial\" type = \"Submit\" Name = \"Sala\">Sala</button></br></br></br>";
echo "<button style=\"width:90;font: bold 14px Arial\" type = \"Submit\" Name = \"Pequeno\">Portao Pequeno</button></br></br>";
echo "<button style=\"width:90;font: bold 14px Arial\" type = \"Submit\" Name = \"Grande\">Portao Grande</button></br></br>";
echo "</form>";
}
// Caso ele não receba o status corretamente, avisa erro.
else { echo "Falha ao receber status da casa."; }
socket_close($sock);
?>

</body>

 

 quando coloquei na sequencia  deu erro , na primeira assim ,que não consegui descobrir 

 

esse vai ate o fim , marcando cada linha , outra duvida , tenho que instalar algo no pc para acessar a pagina remotamente , ou seja acesso qualquer outro local ,fora minha rede local , sei que tenho que fazer Arduino conectar com meu ip externo para acesso remoto

 

  Então sou leigo em progamação , sei basico da Internet que estou aprendendo na faculdade , queria ajuda pessoal sobre essa pagina PHP e como posso aumentar as saidas controladas e algo mais futurista , quem sabe poder fazer alguma medida analogica e mostrar no site , como temperatura , até consumo energia 

 

  Obrigado  

 

 

Sergio 

 

Exibições: 3232

Responder esta

Respostas a este tópico

Então cara, PHP é uma linguagem WEB que é processada pelo servidor, e nao pelo navegador, que é o caso do javascript, por exemplo.

Então o servidor processa o PHP e envia o código HTML pro navegador, pra isso voce tem que upar esse PHP em um servidor. O XAMPP serve pra isso, pra criar um servidor local, na sua máquina, pra que o script PHP funcione sem que voce precise de um host.

Os modens e firewalls, geralmente bloqueiam o acesso remoto a sua maquina pela porta 80, então acho que voce teria que usar outra porta, essa parte nao sei direito, pois nunca usei o arduino com ethernet.

O erro que vc esta falando da biblioteca é porque vc esta usando uma versão de IDE mais atual o que o cara que postou o codigo tente implentar com as novas classes ou utilize um IDE mais antigo o 0023.... funciona perfeitamente.

Tente especificar mais suas dúvidas não entendi direito qual é sua dúvida.

grande abraço


Sergio, No arduino troque o ip  e o gateway para:

byte ip[] = { 192,168,1, 110 }; // ip que o arduino assumirá
byte gateway[] = { 192,168,1, 1 }; // ip do roteador

Vc tbm precisa trocar no php na 6º linha a porta igual do arduino que no seu caso é a 80, que vai ficar assim:

socket_connect($sock,"192.168.1.110", 80);

 

Coloquei esses valores de ip pq são geralmente os que vem nos roteares.

Testa ai e me fala..

abraço

Vs salvou o arquivo na pasta htdocs do XAMP?

Não entendi muito bem, Sergio?

o código do arduino está dando erro? vc está usando qual IDE?

IDE 1.01

Uai!! aqui não tive problema come essa linha, o que pode ser?

O Código PHP que voce não deve colocar junto com o primeiro.

Voce cria um arquivo, cola o código e salva no formato php, tipo codigo.php

Ai depois instala o xampp, e coloca esse arquivo na pasta htdocs do xampp.

Ai depois vai no navegador e digita localhost/codigo.php

É isso ai que o Caique disse...

O código PHP salve já com o nome que ele definiu.

PaginaPHP.php

O Leandoro está certo, mas se optar em alterar o nome do arquivo, precisa alterar tbm a linha:

echo "<form method =\"post\" action=\"PaginaPHP.php\">";

 

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço