Como enviar dados de um sensor de corrente acs712 através modulo wifi esp8266-1 para um servidor web


#1

Ola pessoal, estou com duvidas em respeito ao esp8266-1. Estou tentando liga-lo a um sensor de corrente acs712 onde o modulo esp8266 receberia os dados do sensor e enviaria para um sensor web mas ainda não consegui. Os dados seriam enviados para o dweet.io e posteriormente para o freeboard.io para gerar o grafico.

// Importando as bibliotecas necessarias
#include “ESP8266WiFi.h”
//#include “SoftwareSerial.h”
//SoftwareSerial ESPserial(2,3);

//Definindo as Variaveis de corrente
int corrente;
int PinoCorrente = 2; //PINO DE LEITURA DO SENSOR DE CORRENTE
int tensao = 127; //contante de tensao

//Nome da sua rede Wifi
const char* ssid = “minharede”;
//Senha da rede Wifi
const char* password = “minhasenha”;

// Site que receber� os dados
const char* host = “dweet.io”;
//IP do ESP (para voce acessar pelo browser)
IPAddress ip(192, 168, 0, 151);
//IP do roteador da sua rede wifi
IPAddress gateway(192, 168, 0, 1);
//Mascara de rede da sua rede wifi
IPAddress subnet(255, 255, 255, 0);
//Criando o servidor web na porta 80
WiFiServer server(80);

void setup(){
// Serial.begin(9600);
// ESPserial.begin(9600);
// Iniciando o DHT
// dht.begin();
// corrente = determineVQ(PinoCorrente); //Quiscent output voltage - the average voltage ACS712 shows with no load (0 A)
// Conectando na rede wifi
//Conectando a� rede Wifi
WiFi.config(ip, gateway, subnet);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
}

               //Iniciando o servidor Web
            server.begin();

}

void loop() {

///////////////////////////////////////////////////////////////////////
//Verificando se o servidor esta pronto.
WiFiClient client = server.available();
if (!client) {
return;
}

//Verificando se o servidor recebeu alguma requisicao
while (!client.available()) {
delay(1);
}

//Obtendo a requisicao vinda do browser
String req = client.readStringUntil(’\r’);
client.flush();

//Iniciando o buffer que ira conter a pagina HTML que sera enviada para o browser.
String buf = “”;
//////////////////////////////////////////////////////////////////////////

float leitura_corrente = readCurrent(PinoCorrente);//CHAMADA DA FUNÇAO PARA O CALCULO DA CORRENTE
// Serial.println(“Enviando dados:”);
//Serial.println(“Corrente:”);
// Serial.println(leitura_corrente);
executarWifi(leitura_corrente);
float potencia=(tensao*leitura_corrente);
String url=String(“GET /dweet/for/medidor_consumo?”)
+ “leitura_corrente=”+ String(leitura_corrente)
+ “&potencia=” + String(potencia)
+ " HTTP/1.1\r\n" + "Host: " + host + “\r\n” + “Connection: close\r\n\r\n”;

buf += “HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n\r\n\r\n”;
buf += “<meta http-equiv=“refresh” content=“5”>”;
buf += “”;
buf += “

ESP8266 Servidor Web

”;
buf += “

LED <a href=”?function=led2_on">LIGA<a href="?function=led2_off">DESLIGA

";
buf += " CORRENTE:

“+String(leitura_corrente)+”

";
buf += “URL REQUEST:

”+url+"

";
buf += “”;
buf += “\n”;

//Enviando para o browser a ‘pagina’ criada.
client.print(buf);
client.flush();
delay(100);
}

//read corrente
float readCurrent(int PinoCorrente) {
int current = 0;
int sensitivity = 66;//change this to 100 for ACS712-20A or to 66 for ACS712-30A
//read 5 samples to stabilise value
for (int i=0; i<200; i++) {
current += abs(random(5,10));
delay(1);
}
current = map(current/200, 0, 1023, 0, 5000);
// Serial.println(“variavel de teste”);
// Serial.println(current);
return float(current)/sensitivity;
}

//funcao wifi
void executarWifi(float leitura_corrente){

// Criando uma conexao TCP
WiFiClient client;
const int httpPort = 80;
if (!client.connect(host, httpPort)) { return; }

//CALCULO DA POTENCIA
float potencia=(tensao*leitura_corrente);
// Serial.println(“potencia:”);
// Serial.println(potencia);
String url=String(“GET /dweet/for/medidor_consumo?”)
+ “leitura_corrente=”+ String(leitura_corrente)
+ “&potencia=” + String(potencia)
+ " HTTP/1.1\r\n" + "Host: " + host + “\r\n” + “Connection: close\r\n\r\n”;
// Serial.println(“url:”);
// Serial.println(url);
// Enviando para o dweetb as leituras efetuadas
client.print(url);

// Repetindo a cada 6 segundos
delay(6000);

}