### 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 , 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. ```c #include 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. ```c 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. ![5458448](../media/5458448.png) **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. ![image-20250417153507142](../media/image-20250417153507142.png) #### 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. ```c #include #include 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", "

Hello, World!

"); } 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. ```c 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. ![5458448](../media/5458448.png) **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: ![image-20250417155849702](../media/image-20250417155849702.png) **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: ![image-20250417155955349](../media/image-20250417155955349.png) 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. ![image-20250417160135272](../media/image-20250417160135272.png) #### 5.11.2 Granja inteligente controlada por web ![flo11](../media/flo11.png) Abra el código **5.11.2WiFi-HTML-Smart-Farm** con Arduino IDE. ```c #include #include #include #include #include #include // 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