Prezados, antes de colocar este post andei pesquisando no fórum, porém não encontrei um tópico que me ajudasse realmente. A situação é a seguinte: Estou desenvolvendo um projeto para a faculdade, nesse primeiro momento preciso enviar uma informação do sistema WEB para o arduino. O sistema que estou desenvolvendo é em Grails, como posso pegar uma informação? através da URL com?
Percei que o arduino quando acesso o sistema ele faz o papel de navegador, ler os dados HTML. Porém preciso passar para o arduino uma informação, tipo 0 ou 1.
Se fores à pasta de exemplos do Arduino tens um exemplo para colocá-lo como cliente (ou seja como um browser) e um exemplo de como colocá-lo como servidor (acedes ao Arduino através do teu browser no computador).
Concordo que a pesquisa do fórum é má... mas uma pesquisa na net devolve resultados suficientes sobre como fazê-lo. Olha aqui:
Não percebi o que era o Grails... ou o que é a linguagem de programacão groovy e assumo que JVM seja Java Virtual Machine. Nesse campo, infelizmente, não te consigo ajudar.
Experimenta estes exemplos que meti em cima e vê se já serve para o que pretendes. Experimenta primeiro com um browser e/out tenta aceder a um servidor externo e depois interliga com o tal Grails.
Se tiveres mais dúvidas, coloca aqui.
Prezado bubulindo, muito obrigado pela resposta. A minha situação é a seguinte, no exemplo 2 que você me sugeriu, o próprio arduino é a página que tem os valores a serem passados. Porém eu preciso que o servidor seja um outro computador, um outro endereço.
É isso mesmo, preciso me conectar a um servidor. O problema é que eu preciso pegar uma informação desse servidor, tipo "On" ou "Off", para ligar ou desligar o LED.
Os exemplos que vejo a página HTML está no próprio Arduino, mas eu quero que o arduino acesse uma URL e pegue essa informação. Entende? Não sei como fazer isso.
é diferente do teu... no meu caso, eu ligo-me a um dos servidores do google, peco para fazer uma pesquisa por Arduino e devolvo os resultados para o ecrã.
Se não tens o exemplo, fica aqui:
/*
Web client
This sketch connects to a website (http://www.google.com)
using an Arduino Wiznet Ethernet shield.
Circuit:
* Ethernet shield attached to pins 10, 11, 12, 13
created 18 Dec 2009
modified 9 Apr 2012
by David A. Mellis
*/
#include <SPI.h>
#include <Ethernet.h>
// Enter a MAC address for your controller below.
// Newer Ethernet shields have a MAC address printed on a sticker on the shield
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress server(173,194,33,104); // Google
// Initialize the Ethernet client library
// with the IP address and port of the server
// that you want to connect to (port 80 is default for HTTP):
EthernetClient client;
void setup() {
// Open serial communications and wait for port to open:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for Leonardo only
}
// start the Ethernet connection:
if (Ethernet.begin(mac) == 0) {
Serial.println("Failed to configure Ethernet using DHCP");
// no point in carrying on, so do nothing forevermore:
for(;;)
;
}
// give the Ethernet shield a second to initialize:
delay(1000);
Serial.println("connecting...");
// if you get a connection, report back via serial:
if (client.connect(server, 80)) {
Serial.println("connected");
// Make a HTTP request:
client.println("GET /search?q=arduino HTTP/1.0");
client.println();
}
else {
// kf you didn't get a connection to the server:
Serial.println("connection failed");
}
}
void loop()
{
// if there are incoming bytes available
// from the server, read them and print them:
if (client.available()) {
char c = client.read();
Serial.print(c);
}
// if the server's disconnected, stop the client:
if (!client.connected()) {
Serial.println();
Serial.println("disconnecting.");
client.stop();
// do nothing forevermore:
for(;;)
;
}
}
Agora, se trocares o servidor pelo que estás a usar agora... e a página pela página que pretendes acessar... consegues algum resultado. Depois apenas tens de ler e fazer parsing da string.
Estou a ver que programação não é o teu forte, então em vez de fazer um exemplo à sorte que em nada te irá ajudar, que tal se meteres aqui o que a página web vai devolver para o Arduino fazer string parsing e eu coloco um código que o faça para experimentares?
Na verdade sou estudante, e estudo programação a pouco tempo, alguns termos ainda não novos para mim.
Bom estou anexando uma tela. Tem um botão ligar e outro desligar. Quero quando apertar o ligar ele envie ao arduino uma informação tipo: "ON" e o Arduino recebendo essa informação ele irá ligar o led. Para ligar o led, essa parte eu sei fazer, o problema é como pegar esse ON e colocar em uma variável. Não estou fazendo o sistema em PHP, estou fazendo em GRAIL (groovy=java).
Porém todos os exemplos que vejo, a página em HTML está dentro do arduino, mas o que eu quero é que um site externo possa passar essa informação ao arduino.
Já consegui que o arduino leia a minha url, só que a palavra "ON" aparece lida pelo arduino, mas como armazena-la numa variável??
}
else {
// kf you didn't get a connection to the server:
Serial.println("connection failed");
}
}
void setup() {
Serial.begin(9600);
Serial.print("Setup LAN ... ");
// give the Ethernet shield a second to initialize:
delay(1000);
Ethernet.begin(mac, ip);
Serial.println("oks");
delay(1000);
connect();
}
void loop(){
if (client.available()) {
char c = client.read();
Serial.print(c);
}
// if the server's disconnected, stop the client:
if (!client.connected()) {
Serial.println();
Serial.println("disconnecting.");
client.stop();
Então, quando eu executo esse código no serial monitor aparece o conteúdo html que eu quero, porém esse conteúdo eu quero colocar dentro de uma variável.
Na minha página, eu faço um if onde a página me retorna 1 ou 0, esse valor aparece no serial monitor,aparece na página (html), porém eu gostaria de colocar esse valor dentro de uma variável.