User Tools

Site Tools


tecnologia:agua:proyecto

ESP32 con sensor de ultrasonidos que mide el agua de los depósitos.

El código es:

#include <WiFi.h>
#include <ESPAsyncWebServer.h>
#include <AsyncElegantOTA.h>
#include <HTTPClient.h>

const char* ssid     = "xxxxxxxxxx";
const char* password = "xxxxxxxxxxx";

IPAddress ip(192,168,1,80);     
IPAddress gateway(192,168,1,1);   
IPAddress subnet(255,255,255,0); 
IPAddress dns(8,8,8,8);

AsyncWebServer server(80);


//Your Domain name with URL path or IP address with path
String serverName = "http://bateriaseko.lobo99.com/agua2.php";

#define uS_TO_S_FACTOR 1000000ULL  //Conversion factor for micro seconds to seconds
#define TIME_TO_SLEEP  3600        //Time ESP32 will go to sleep (in seconds)
RTC_DATA_ATTR int bootCount = 0;


///////////////////////////////////////////////
////                                      /////
////     Variables lector ultrasonido     /////
////                                      /////
///////////////////////////////////////////////
const int trigPin = 5;
const int echoPin = 18;
  
//define sound speed in cm/uS
#define SOUND_SPEED 0.034
#define CM_TO_INCH 0.393701

long duration;
float distanceCm;
float distanceInch;
  

void setup() {
  Serial.begin(115200);
  delay(10);
  Serial.println('\n');

  // Definimos pin ultrasonido
  pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output
  pinMode(echoPin, INPUT); // Sets the echoPin as an Input
  
  WiFi.begin(ssid, password);
  WiFi.config(ip, gateway, subnet, dns);

  Serial.print("Conectando a ");
  Serial.print(ssid);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print('.');
  }

  Serial.println('\n');
  Serial.println("Conectado correctamente");  
  Serial.print("IP:\t");
  Serial.println(WiFi.localIP());

  server.on("/", HTTP_GET, [](AsyncWebServerRequest *request) {
    request->send(200, "text/plain", "V1.0 Primer OTA");
  });

  AsyncElegantOTA.begin(&server);    // Start AsyncElegantOTA
  server.begin();
  Serial.println("HTTP server started");
  delay(1000);

  enviaLectura();

  esp_sleep_enable_timer_wakeup(TIME_TO_SLEEP * uS_TO_S_FACTOR);
  Serial.println("Setup ESP32 to sleep for every " + String(TIME_TO_SLEEP) + " Seconds");

  //Go to sleep now
  esp_deep_sleep_start();
}

void loop() {}


String enviaLectura() { 

    // Clears the trigPin
    digitalWrite(trigPin, LOW);
    delayMicroseconds(2);
    // Sets the trigPin on HIGH state for 10 micro seconds
    digitalWrite(trigPin, HIGH);
    delayMicroseconds(10);
    digitalWrite(trigPin, LOW);
    
    // Reads the echoPin, returns the sound wave travel time in microseconds
    duration = pulseIn(echoPin, HIGH);
    
    // Calculate the distance
    distanceCm = duration * SOUND_SPEED/2;

    
    //Check WiFi connection status
    if(WiFi.status()== WL_CONNECTED){
      HTTPClient http;

      String serverPath = serverName + "?agua=" + distanceCm;
      
      // Your Domain name with URL path or IP address with path
      http.begin(serverPath.c_str());
      
      // Send HTTP GET request
      int httpResponseCode = http.GET();
      
      if (httpResponseCode>0) {
        Serial.print("HTTP Response code: ");
        Serial.println(httpResponseCode);
        String payload = http.getString();
        Serial.println(payload);
      }
      else {
        Serial.print("Error code: ");
        Serial.println(httpResponseCode);
      }
      // Free resources
      http.end();
    }
    else {
      Serial.println("WiFi Disconnected");
    }
  delay(1000);
  return "OK";
}
tecnologia/agua/proyecto.txt · Last modified: by jose