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();
}

Exibições: 1744

Responder esta

Respostas a este tópico

alguem para ajudar com essa programação?

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço