Boas galera...estou com um projetinho de monitorar niveis da minha caixa de agua utilizando nodemcu.
o que eu desejo é que o nodemcu possa ler os sensores de nivel e enviar ao thingspeak.com e tambem acionar um relê. Para que possa entender melhor o que eu quero fazer vou deixar link com um esquema que mostra tudo.
link do esquema do projeto: http://prntscr.com/czrxbn
link do sensor utilizado: http://prntscr.com/czs77g
utilizei um codigo do Pedro como base, o exemplo de uso do nodemcu com o dht22 enviando para o thingspeak.
só que tem erro nessa alteração que fiz no codigo pois nao envia nenhum dado ao servidor.
se alguem puder me ajudar nessa parte da programação segue codigo abaixo:
/*
* Este programa envia os dados coletados do DHT11 para a plataforma de IoT
* thingspeak.com
* Data: 16 de Setembro de 2015
* Author: Pedro Minatel
* Website: http://pedrominatel.com.br
*/
//Include da lib de Wifi do ESP8266
//#include
//Include da lib do sensor DHT11 e DHT22
#include "ESP8266WiFi.h";
//Define do pino a ser utilizado no ESP para o sensor = GPIO4
#define CX_N1_PIN 3 //GPIO 0
#define CX_N2_PIN 10 //GPIO 1
#define CX_N3_PIN 4 //GPIO 2
#define CX_N4_PIN 9 //GPIO 3
#define CX_N5_PIN 2 //GPIO 4
#define RES_N1_PIN 1 //GPIO 5 NIVEL RESERVATORIO
#define MOTOR_PIN 6 //GPIO 12 BOMBA DE AGUA
//#define DHTTYPE DHT11
//Definir o SSID da rede WiFi
const char* ssid = "lg-g2";
//Definir a senha da rede WiFi
const char* password = "12345678";
//Colocar a API Key para escrita neste campo
//Ela é fornecida no canal que foi criado na aba API Keys
String apiKey = "6V4P4XKVXP1L16CI";
const char* server = "api.thingspeak.com";
//DHT dht(DHT_DATA_PIN, DHTTYPE);
WiFiClient client;
byte aciona = 0;//
void setup() {
//Configuração da UART
Serial.begin(115200);
//Inicia o WiFi
WiFi.begin(ssid, password);
//Espera a conexão no router
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
pinMode(D3, INPUT);
pinMode(D10,INPUT);
pinMode(D4, INPUT);
pinMode(D9, INPUT);
pinMode(D2, INPUT);
pinMode(D1, INPUT);
pinMode(D6, OUTPUT);
// dht.begin();
//Logs na porta serial
Serial.println("");
Serial.print("Conectado na rede ");
Serial.println(ssid);
Serial.print("IP: ");
Serial.println(WiFi.localIP());
}
void loop() {
//Espera 20 segundos para fazer a leitura
delay(20000);
//Leitura de umidade
//float umidade = dht.readHumidity();
//Leitura de temperatura
// float temperatura = dht.readTemperature();
//Se não for um numero retorna erro de leitura
// if (isnan(umidade) || isnan(temperatura)) {
// Serial.println("Erro ao ler o sensor!");
// return;
// }
int SENSOR1 = digitalRead(D3); //caixa superior NIVEL 1
int SENSOR2 = digitalRead(D10); //caixa superior nivel 2
int SENSOR3 = digitalRead(D4); //caixa superior nivel 3
int SENSOR4 = digitalRead(D9); //caixa superior nivel 4
int SENSOR5 = digitalRead(D2); //caixa superior nivel 5
int SENSOR6 = digitalRead(D1); //reservatorio
if (SENSOR5 == LOW && SENSOR6 == HIGH) // Caixa VAZIO, Cisterna cheia, Bomba Ligada
{
aciona = 0;
}
else if (SENSOR5 == HIGH && SENSOR6 == HIGH) // Caixa CHEIA, Cisterna CHEIA, Bomba DESLIGADA
{
aciona = 1;
}
else if (SENSOR5 == HIGH && SENSOR6 == LOW) // Caixa CHEIA, Cisterna sem agua, Bomba DESLIGADA
{
aciona = 2;
}
else if (SENSOR5 == LOW && SENSOR6 == LOW) // Caixa VAZIA, Cisterna VAZIA, Bomba DESLIGADA
{
aciona = 3;
}
switch (aciona)
{
case 0:
aciona = 0;// aciona 0
delay(1000);
digitalWrite(D6, HIGH);
Serial.println("Bomba Ligada");
break;
case 1:
aciona = 1;// aciona 1
delay(1000);
digitalWrite(D6, LOW);
Serial.println("Bomba DESLIGADA");
break;
case 2:
aciona = 2;//aciona2
delay(1000);
digitalWrite(D6, LOW);
Serial.println("Bomba desligada");
break;
case 3:
aciona = 3;//aciona3
delay(1000);
digitalWrite(D6, LOW);
Serial.println("Bomba desligada");
break;
if (SENSOR1 == HIGH)
{
SENSOR1=1;
}
else
{
SENSOR1=0;
};
if (SENSOR2 == HIGH)
{
SENSOR2=1;
}
else
{
SENSOR2=0;
};
if (SENSOR3 == HIGH)
{
SENSOR3=1;
}
else
{
SENSOR3=0;
};
if (SENSOR4 == HIGH)
{
SENSOR4=1;
}
else
{
SENSOR4=0;
};
if (SENSOR5 == HIGH)
{
SENSOR5=1;
}
else
{
SENSOR5=0;
};
//Inicia um client TCP para o envio dos dados
if (client.connect(server,80)) {
}
String postStr = apiKey;
postStr +="&field1=";
postStr += String(SENSOR1);
postStr +="&field2=";
postStr += String(SENSOR2);
postStr +="&field3=";
postStr += String(SENSOR3);
postStr +="&field4=";
postStr += String(SENSOR4);
postStr +="&field5=";
postStr += String(SENSOR5);
postStr +="&field6=";
postStr += String(SENSOR6);
postStr += "\r\n\r\n";
client.print("POST /update HTTP/1.1\n");
client.print("Host: api.thingspeak.com\n");
client.print("Connection: close\n");
client.print("X-THINGSPEAKAPIKEY: "+apiKey+"\n");
client.print("Content-Type: application/x-www-form-urlencoded\n");
client.print("Content-Length: ");
client.print(postStr.length());
client.print("\n\n");
client.print(postStr);
//Logs na porta serial
Serial.print("NIVEL 01: ");
Serial.print(SENSOR1);
Serial.print(" NIVEL 02: ");
Serial.print(SENSOR2);
Serial.print(" NIVEL 03: ");
Serial.print(SENSOR3);
Serial.print(" NIVEL 04: ");
Serial.print(SENSOR4);
Serial.print(" NIVEL 05: ");
Serial.print(SENSOR5);
Serial.print(" NIVEL 06: ");
Serial.print(SENSOR6);
}
client.stop();
}
Tags:
alguem para ajudar com essa programação?
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por