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.
Tags:
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
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por