Boa tarde, garajeiros !! estou com um problema ao postar os dados de fluxo de dados do arduino na internet, a placa shield esp8266 sparkfun conecta normalmente com o arduino UNO , porém quando está para executar o código para enviar através do método GET para internet o arduino trava !! PS: eu realizei a junção do código de postar na internet e de ler o sensor, o código de postar na internet posta normalmente, com dados aleatórios porém quando pego os dados de leitura do fluxo o arduino trava, e logo após travar, quando vou abrir a Serial novamente , me mostra a mensagem que o arduino não está tendo comunicação com a placa wifi.    

void setup() { // put your setup code here, to run once: int status;
Serial.begin(9600);

// To turn the MG2639 shield on, and verify communication
// always begin a sketch by calling cell.begin().
status = esp8266.begin();
if (status <= 0)
{
Serial.println(F("Unable to communicate with shield. Looping"));
while(1) ;
}

esp8266.setMode(ESP8266_MODE_STA); // Set WiFi mode to station
if (esp8266.status() <= 0) // If we're not already connected
{
if (esp8266.connect(mySSID, myPSK) < 0)
{
Serial.println(F("Error connecting"));
while (1) ;
}
}
pinMode(2, INPUT);
// attachInterrupt(0, incpulso, RISING);
// Get our assigned IP address and print it:
Serial.print(F("My IP address is: "));
Serial.println(esp8266.localIP());

}

void loop() {
// put your main code here, to run repeatedly:

b = postToPhant(vazao);
if (b==1)
{
Serial.println("Numero postado");
}
delay(10000);
}

float postToPhant(float valor)
{
// Create a client, and initiate a connection
ESP8266Client client;
float myip = esp8266.localIP();// ip arduino
if (client.connect(phantServer, 80)<=0 )
{
Serial.println(F("Failed to connect to server."));
return;
} else {
Serial.println("Conectado");
delay(10000);
sensor = medir();// chama a função para medir o fluxo
Serial.println(sensor);// imprime o resultado da função medir

Serial.println("Postando..");// AQUI ACONTECE O ERRO APARECE SÓ "POS" NA SERIAL
String url = "/arduino/salvardados.php?sensor="; // criação da URL
//url += "salvardados.php?sensor=";
//url += "sensor=";
url += sensor;

Serial.print("Requesting URL: ");
Serial.println(url);

// This will send the request to the server (executando a função GET)
client.print(String("GET ") + url + " HTTP/1.1\r\n" +
"Host: " + phantServer + "\r\n" +
"Connection: close\r\n\r\n");

Serial.println(F("Posting to Phant!"));



// available() will return the number of characters
// currently in the receive buffer.
/*while (client.available())
Serial.write(client.read()); // read() gets the FIFO char

// connected() is a boolean return value - 1 if the
// connection is active, 0 if it's closed.*/
}
if (client.connected())
client.stop(); // stop() closes a TCP connection.
return 1;
}
float medir ()
{
for (int x=0; x<4; x++)// for para ler apenas 4 vezes o sensor
{
contaPulso = 0; //Zera a variável para contar os giros por segundos
sei(); //Habilita interrupção
delay (1000); //Aguarda 1 segundo
cli(); //Desabilita interrupção

vazao = contaPulso / 5.5; //Converte para L/min
media=media+vazao; //Soma a vazão para o calculo da media
i++;

Serial.print(vazao); //Imprime na serial o valor da vazão
Serial.print(" L/min - "); //Imprime L/min
Serial.print(i); //Imprime a contagem i (segundos)
Serial.println("s"); //Imprime s indicando que está em segundos

}
Serial.print(vazao);

return vazao; // retorno da vazao para a postagem

}
void incpulso ()
{
contaPulso++; //Incrementa a variável de contagem dos pulsos
}

Exibições: 650

Anexos

Responder esta

Respostas a este tópico

Olá,

Comece atendendo o apelo que fazemos a todos os colegas, veja este link :

http://labdegaragem.com/forum/topics/sugest-o-de-como-postar

Tente usar um exemplo da biblioteca phant, lembre-se também que a placa comunica não pelos pinos TX RX da placa Arduino, e sim pelos pinos 8 e 9 que a biblioteca softserial se encarrega de cria, e eu não vejo a declaração destes pinos no seu codigo.

Aqui informações sobre esta placa https://www.sparkfun.com/products/13287

Boa sorte.

Abs.

CK

Obrigado Carlos, na próxima coloco o código no pastebin, a parte de postagem é do phant, se executar apenas a função de postagem como uma variável qualquer ele posta, o problema é que quando receber a variável da função que está lendo o fluxo ele trava(apenas quando a função faz a leitura do sensor) em uma função normal executa sem erros !! está configurado no pino 2 vou mudar para o pino 9, não sabia dessa !! obrigado !!!     

De nada Natan, poste os resultado depois, abaixo imagem para ilustrar.

Abs.

CK

Anexos

Porém teve um problema a shield não quis conectar com a internet local, quando pluguei o pino na tx

Você esta usando apenas TX? E o RX?

Usei o tx e o rx , o tx não conecta e o rx me conecta no ip da mascara (255.255.255.255).

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço