Pessoal, tenho um probleminha....

Estou alguns dias tentando fazer meu arduino ser um cliente em uma rede local ethernet.

Estou utilizando o shield ethernet com cartão SD. Gostaria de receber comandos de um site HTML ou PHP, de uma máquina servidor que tenho, que roda o wamp server.

Basicamente...

A idéia seria ligar o arduino em uma rede local e o mesmo virar um cliente, e responder somente aos comandos de um servidor local, neste caso meu wampServer

Como faria esta parte da comunicação entre meu servidor (wamp server) e meu arduino (cliente) com o shield ethernet? Para efeito de exemplo eu queria mesmo acender e apagar um Led, depois posteriormente vou sofisticar.

Por favor, me ajudem!

Fico no aguardo.

Exibições: 2141

Responder esta

Respostas a este tópico

Basicamente...

A idéia seria ligar o arduino em uma rede local e o mesmo virar um cliente, e responder somente aos comandos de um servidor local, neste caso meu wampServer

Amigo, se seu arduino é um cliente numa rede local, vc terá enormes dificuldades pra fazer ele responder a comandos.

O correto seria que o arduino + ethernet shield estejam configurados como webserver, para aí sim algum cliente enviar comandos

segue um exemplo de tutorial que explica como fazer isso: 

http://randomnerdtutorials.com/arduino-webserver-with-an-arduino-et...

Entendido, mas então...

Já fiz alguns testes e modelos utilizando o arduino + shield ethernet como webServer, mas o grande problema que encontrei foi a limitação do desenvolvimento da página HTML.

A página inteira deve ser escrita no arduino, o que limita bastante o horizonte de aplicação e dificulta muito o desenvolvimento de websites tecnológicos e com um bom design.

Agora, se eu estiver com meu webServer em um pc, com as ferramentas adequadas para o desenvolvimento do Web Site, como Dreamweaver, photoshop, ilustrator e etc.... Posso utilizar ainda um wamp Server e fazer muitas coisas com PHP, junto com MySQL.

E eu teria um hardware cliente para atender aos meus controles no meio físico, que seria mais uma atração do meu website. Por isso que eu gostaria de transforma-lo em cliente.

Alguém já fez,  e possui um caminho para este problema?

ola amigo, bem como o tutorial em que o IMHUGO passou voce consegue entender, terminei meu tcc utilizando o arduino + ethernet shield W5100, controlado pelo android, brevemente diretamente de um servidor web, voce pode tentar utilizar um dos provedores que pode facilitar o seu trabalho por exemplo no-ip dyn dns, entre outros, no proprio forum do lab de garagem se nao me engano meses atras fizeram php + arduino + ethernet shield, procure tambem por marcelo cuin e felipe flop eles tambem dao uma explicação sobre a biblioteca do ethernet e como utilizar ela com PHP e com wamp. A programação do arduino integrada ao ethernet voce configura o IP, lembrando que os parametros do roteador tem que estar os mesmos pois se nao o roteador nao ira reconhecer o seu arduino como cliente

qualquer duvida estamos ai :)

Pessoal, consegui!!!!

O sistema que fiz ficou muito simples e bom para ser utilizado! Principalmente para automação, comercial e industrial. Se quiserem, posso postar o código aqui e mostrar passo-a-passo como fiz.

Juntando um pouco que cada um falou cheguei em um sistema compacto e funcional.

- Utilizando um servidor caseiro, por exemplo WampServer, arquivos PHP, e o arduino + ethernet shield como cliente.

Se interessar eu posso postar aqui.

Abraços.

Parabéns cara, ai sim, cara se puder gostaria sim para me aprimorar também, agradeço fera :)

Lucas, bom dia. Tranquilo? Desculpe a demora, mas estou enviando o conteúdo referente àquela nossa conversa sobre o shield ethernet.

Material utilizado:

- Arduino Mega 2560;

- Shield ethernet w5100;

- Cabo ethernet;

- Cabo usb A/B para programar o arduino;

Softwares utilizados:

- ControladorEthernet.ino (Arduino)

- Process.php (Arquivo php que faz a parte server side)

- Um servidor caseiro, neste caso utilizei o WAMP

-------------------------------------------------------------------------------------------------

Arquivo do arduino:

ControladorEthernet.ino


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

byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; //Mac Address
byte ipArduino[] = {192,168,1,78}; //Arduino IP
byte server[] = {192,168,1,45}; //Server IP, Endereço do servidor
String barCode = "123456";

char msg[50];
int x = 0;
char c;
int readState = 0;

String HTTPrequest_value = "GET http://192.168.1.45/programasArduino/arduino_code/process.php?barCode="; // Aqui vai seu endereço da pagina php dentro do servidor
String HTTPrequest_host = "Host: http://192.168.1.45"; // Endereço do servidor

EthernetClient cliente;

void setup() {
 
  Serial.begin(9600);
  Serial.println("System initializing...!");
 
  Ethernet.begin(mac, ipArduino);
  delay(1000);    
  
}


void loop() {
 
  if(cliente.connect(server, 80)) {
    HttpRequestGET(HTTPrequest_value, HTTPrequest_host); 
  };
 
  if(cliente.available() > 0) {
    ReadHTTPAnswer();   
  };


if (!cliente.connected()) {
Serial.println();
Serial.println("disconnecting...");
cliente.stop();
delay(50);
Serial.println("disconnected!");
}

   
   
}

//Funções utilizadas no programa


void HttpRequestGET(String header, String pcServer) {
     
    Serial.println("Sending a HTTP Request...");
    cliente.print(header);
    cliente.print(barCode);
    cliente.println(" HTTP/1.1");
    cliente.println(pcServer);
    cliente.println();
 
}

void ReadHTTPAnswer() {
 
  c = cliente.read();
   
      if(c == '*') {       
        readState = 1;
      } else if(readState == 1) {       
        if(c == ',') {
          readState = 0;
          Serial.print(msg);
          x = 0;
        };       
        msg[x] = c;
        x++;
      };
   } 

-------------------------------------------------------------------------------------------------

Página process.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Menu de controle</title>
</head>

<body bgcolor="#999999">

<?php

$content = $_GET['barCode'];
$data_base_value = "123456,1";

$results = explode(",", $data_base_value);

/*
echo $results[0];
echo "\n";
echo $results[1];
*/

$int = (int)$results[1];

if($int > 4) {
$int = $int - 4.5;
echo "*OK,".$int."%";
} else if($int <= 4) {
echo ("*ERRO,".$int."%");
};

?>

</body>
</html>

-------------------------------------------------------------------------------------------------

Explicação básica sobre o código:

- Primeiro você deve instalar um servidor em alguma máquina local. Neste caso utilizei o wamp;

- Depois, em seguida, deve configurar o servidor como aberto para conexões de qualquer cliente, que seja, LOCAL;

- Uma vez configurado o servidor, você deve criar uma página php, com o código php acima;

- Deve colocar esta página PHP dentro do servidor, em uma pasta acessível, cujo endereço deve ser colocado no arduino, mostrado lá no código;

- Carregar o programa no arduino; (TOMAR CUIDADO, QUE AQUI VOCÊ DEVE CONFIGURAR OS ENDEREÇOS DO ARDUINO E DO SERVIDOR NO CÓDIGO);

- Deve também tomar cuidado o Mac address do seu arduino, muitas vezes muda de acordo com o fornecedor;

- Para ver o IP do servidor, basta ir na máquina que você instalou, e em cmd, digitar ipconfig, IPV4, será o IP do server;

- No arduino, você deve apagar o IP que coloquei, e para descobrir o IP que sua rede local entregou para o arduino (Se for DHCP), basta digitar a linha de comando dentro do void setup(){};

Serial.print(Ethernet.localIP()); //Aqui deverá retornar o IP do arduino;

- Conectar o shield ethernet, e liga-lo no roteador através do cabo ethernet;

Para ver tudo funcionar, basta rodar o serial monitor!

Em relação ao funcionamento, basicamente o sistema funciona assim:

O Arduino é um cliente que se conecta com o servidor e troca pacotes através da rede local.

Para que tudo isso aconteça eu tive que implementar o protocolo HTTP no arduino.

O arduino envia uma requisição HTTP para o servidor buscando o arquivo PHP, pelo método GET, onde no próprio tudo será processado.

O servidor responde para o arduino com o resultado da página php.

Como na página php, já existe um programa, então se tudo estiver coerente, o resultado é devolvido já processado pelo server.

Acontece que na função  ReadHTTPAnswer() do arduino, eu apenas leio o resultado da página, o que na verdade aqui utilizo um artifício... Na página php, eu faço com que o resultado da comunicação entre os dois, retorne o valor entre "*" e ",", desta forma no arduino eu leio tudo o que estiver entre estes dois caracteres, assim filtrando tudo o que o HTTP me retorna (O QUE É BASTANTE COISA).

E desta forma sua criatividade é o limite deste projeto. Aqui você pode criar o que quiser e ir longe!

Precisando estou inteiramente à disposição.

Abraços.

Ivan Galhardoni

E-mail: ivan.system@yahoo.com

Tel: (11) 2641 5721

Cel: (11) 99525 0231

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço