Pessoal, estou trabalhando em um projeto de coleta de dados e estou com uma dúvida.

Tenho um servidor PHP com um banco de dados e uma API que recebe informações corretamente por meio de acesso HTTP (via acesso como "http://www.servidor.com.br/PARAMETROS").

Meu arduino já coleta as informações. Agora só me resta passar essas informações para o servidor PHP.

Não consigo encontrar uma forma de fazer meu Arduino via ENC28J60 realizar esse acesso ao servidor. Alguém pode me ajudar?!

Exibições: 2273

Responder esta

Respostas a este tópico

Eu fiz esse acesso, não exatamente com esse break: http://automatobr.blogspot.com.br/search?q=internet

Mauro, eu consegui acessar meu arduino assim como no seu projeto e resgatar as informações, mas estou desenvolvendo um coletor de dados que possa alimentar um banco de dados na web.

Estou quebrando a cabeça com os exemplos de WebClient, mas sem resultados até agora.

Eu escrevi uma seria de posts sobre isso no meu blog, da uma olhada que acho que vai poder lhe ajudar.

http://cleitonbueno.wordpress.com/category/arduino/

O próximo e ultimo será a mesma função porem armazenar em um banco de dados e poder visualizar posteriormente os dados coletados.

Cleiton, gostei muito do seu projeto e a minha idéia é similar.

Mas no meu caso, uso o arduino p/ coletar as informações e enviar p/ um servidor na web (ao contrário do seu projeto, que envia as informações fia USB p/ uma máquina local)

Acredito que o caminho seja implementar um WebClient (como eu disse p/ o Mauro anteriormente). E não consigo estabelecer uma conexão. será que preciso configurar algo na minha rede?!

Se alguém tiver algum projeto WebClient e puder me ajudar...  

Ano passado fiz algo com GET e POST mas foi mais para testes mesmo, fiz um código que acho que pode dar certo.

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

byte mac[] = { 0xA0, 0x09, 0xA1, 0xD2, 0xD1, 0xAD }; //Mac Address do EthernetShield
IPAddress ip(192, 168, 10, 200); // End. IP do seu EthernetShield

byte server[] = { 192, 168, 10, 222 }; // End. IP do servidor

EthernetClient webclient;

String varMeth = "GET /consulta?v="; // String basica metodo GET para guardar o valor da temperatura
int varValue; //Ira receber o valor da temperatura
String varHTTP = " HTTP/1.0"; // Necessario para o funcionamento do GET em http


void setup(){

    Ethernet.begin(mac, ip);
    Serial.begin(9600);
}

void loop()
{

    delay(100);

    varValue = analogRead(A0); //Irá ler o valor do sensor de temperatura na porta A0


    String codigo = varMeth + varValue + varHTTP; //O endereço com metodo e valor

    webclient.connect(server,80); // Irá conectar no server que especificamos na porta 80
    webclient.println(codigo); // Envia nossa string http GET
    webclient.println();
    webclient.stop(); // Termina a conexão

    /* Outra forma */
    /*
        if (webclient.connected()) {
              webclient.print("GET /consulta?v=");
              webclient.print(varValue);
              webclient.print(" HTTP/1.0");
              webclient.println();
        }
    */
}








/* Codigo PHP */
<?php
      $VALOR = trim($_GET['v']);
      

    /* Daqui em diante voce pode gravar em um banco ou em um arquivo */
?>

Não testei aqui, mas acho que é pra dar certo, no arduino pelo menos não reportou nenhuma exceção.

Olá Cleiton,

Gostei do seu código... bem claro e objetivo...
Mas não funcionou comigo... acho q estou com algum problema de configuração, pois estou testando também o seguinte código:

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

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};

IPAddress ip(10,0,0,110);

IPAddress myDns(10,0,0,1);

EthernetClient client;

//char server[] = "www.arduino.cc";
IPAddress server(64,131,82,241);

void setup() {
    Serial.begin(9600);
    delay(1000);

    Ethernet.begin(mac, ip, myDns);

    Serial.print("My IP address: ");
    Serial.println(Ethernet.localIP());
}

void loop() {
    if (client.connect(server, 80)) {
        client.println("GET /latest.txt HTTP/1.1");
        client.println("Host: www.arduino.cc");
        client.println("User-Agent: arduino-ethernet");
        client.println("Connection: close");
        client.println();
    }

    if (client.available()) {
        Serial.println();
        Serial.println("conectado");
    }

    if (!client.connected()){
        Serial.println();
        Serial.println("desconectado");
    }

    delay(1000);
}

E o resultado que obtive foi o seguinte (na porta serial):

My IP address: 0.0.0.0

desconectado

desconectado

desconectado

Acredito q o erro está na hora de estabelecer uma conexão e receber um IP válido... ou estou enganado?

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço