5.11 Granja inteligente controlada por web
5.11.0 Conectar la placa ESP32 a la red
La placa ESP32 está equipada con Wi-Fi (2.4G) y Bluetooth (4.2), lo que le permite conectarse fácilmente a Wi-Fi y comunicarse con otros dispositivos en la red.
Qué necesitas preparar:
-Un 2.4 GHz WiFi (Puede ser un punto de acceso móvil o un router)
-El nombre y la contraseña del WIFI
-Un teléfono/IPAD/computadora que pueda conectarse al mismo WiFi.
Arduino IDE te proporciona el archivo de biblioteca <WiFi.h>, que soporta configuraciones de Wi-Fi y monitoreo de red Wi-Fi de ESP32.
A. Modo estación base (STA o modo cliente Wi-Fi): En este modo, ESP32 se conecta al punto de acceso Wi-Fi (AP).
B. Modo AP (Soft-AP o modo punto de acceso Wi-Fi): En este modo, otros dispositivos Wi-Fi se conectan a ESP32.
C. Modo AP-STA: En este modo, ESP32 es un punto de acceso Wi-Fi y un dispositivo Wi-Fi que se conecta a otro punto de acceso Wi-Fi.
D. Estos modos son compatibles con múltiples modos seguros, como WPA, WPA2 y WEP.
E. Es capaz de escanear puntos de acceso Wi-Fi, incluyendo escaneo activo y pasivo.
F. Soporta el modo promiscuo para monitorear paquetes Wi-Fi IEEE802.11.
Para detalles de wifi, por favor refiérase a:
https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/network/esp_wifi.html
Sitio web oficial de ESPRESSIF: https://www.espressif.com.cn/en/home
Abra el código 5.11.0Connect-the-ESP32-to-the-Network con Arduino IDE.
#include <WiFi.h>
const char* ssid = "your_SSID";
const char* password = "your_PASSWORD";
void setup() {
Serial.begin(9600);
//Initialize Wifi
WiFi.begin(ssid, password);
//Scan for wifi. If connection fails, stay in connecting, and execute "while" loop
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi...");
}
//Connected. Print the IP address
Serial.println("Connected to WiFi");
Serial.println(WiFi.localIP());
}
void loop() {
}
Cambie your_SSID en el código por el nombre de su wifi, y your_PASSWORD por la contraseña del wifi.
const char* ssid = "your_SSID";
const char* password = "your_PASSWORD";
Elija la placa ESP32 Dev Module y el puerto COM, y suba el código.

Resultado de la prueba:
Suba el código, y la placa se conectará a la red Wi-Fi e imprimirá la dirección IP en el monitor serie.

5.11.1 Configurar un sitio web-HELLOWORLD
Siempre que se conecte a Wi-Fi, la biblioteca del servidor web de ESP32 es capaz de proporcionar páginas web. En el siguiente código de ejemplo, configuramos un sitio web simple para mostrar “Hello, World!”.
Abra el código 5.11.1WiFi-HTML-HELLOWORLD con Arduino IDE.
#include <WiFi.h>
#include <WebServer.h>
const char* ssid = "your_SSID";
const char* password = "your_PASSWORD";
WebServer server(80); //Set the server port to 80. Enter the website by IP address rather than the port number.
//Initialize the website
void handleRoot() {
//Used to send HTTP to the client-side for response, sending 200 means success.
server.send(200, "text/html", "<h1>Hello, World!</h1>");
}
void setup() {
Serial.begin(9600);
//Initialize wifi
WiFi.begin(ssid, password);
//Scan for wifi. If connection fails, stay in connecting, and execute "while" loop
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi...");
}
//Connected. Print the IP address
Serial.println("Connected to WiFi");
Serial.println(WiFi.localIP());
server.on("/", handleRoot);
//Start server
server.begin();
Serial.println("Web server started");
}
void loop() {
server.handleClient();
}
Cambie your_SSID en el código por el nombre de su wifi, y your_PASSWORD por la contraseña del wifi. Luego suba el código.
const char* ssid = "your_SSID";
const char* password = "your_PASSWORD";
Elija la placa ESP32 Dev Module y el puerto COM, y suba el código.

Resultado de la prueba:
En este código de ejemplo, establecemos un servidor web mediante la biblioteca WebServer en ESP32. La función handleRoot() solicita el procesamiento en la ruta raíz y envía una respuesta HTML de “Hello, World!” al lado del cliente. Luego, setup() establece la ruta raíz, y server.begin() inicia el servidor web.
Haga clic en el monitor serie para ver la dirección IP:

NOTA: Cuando la PC, los teléfonos móviles y la placa ESP32 estén conectados a una red, puede visitar este sitio web en la PC y en los teléfonos al mismo tiempo.
Acceda a la IP en el navegador de la PC o del teléfono:

Nota: Requiere WIFI de 2.4 GHz, no 5G. La PC o el teléfono móvil que accede a la dirección IP debe estar conectado al mismo WIFI que la placa ESP32.

5.11.2 Granja inteligente controlada por web

Abra el código 5.11.2WiFi-HTML-Smart-Farm con Arduino IDE.
#include <Arduino.h>
#include <WiFi.h>
#include <WebServer.h>
#include <LiquidCrystal_I2C.h>
#include <dht11.h>
#include <ESP32Servo.h>
// Pin Definitions
#define DHT11PIN 17 // Temperature and humidity sensor pin
#define LEDPIN 27 // LED pin
#define SERVOPIN 26 // Servo pin
#define FANPIN1 19 // Fan IN+ pin
#define FANPIN2 18 // Fan IN- pin
#define STEAMPIN 35 // Steam sensor pin
#define LIGHTPIN 34 // Photoresistor pin
#define SOILHUMIDITYPIN 32 // Soil humidity sensor pin
#define WATERLEVELPIN 33 // Water level sensor pin
#define RELAYPIN 25 // Relay pin
// Initialize sensors and components
dht11 DHT11;
LiquidCrystal_I2C lcd(0x27, 16, 2);
Servo myservo; // Servo object to control the servo
// WiFi credentials
const char *SSID = "your_SSID";
const char *PASS = "your_PASSWORD";
// Create WebServer object
WebServer server(80);
// Variables for controlling states
static int A = 0;
static int B = 0;
static int C = 0;
// HTML Web page content
const char index_html[] PROGMEM = R"raw