### 5.11 Webgesteuerte Smart Farm #### 5.11.0 Verbinden Sie das ESP32 Board mit dem Netzwerk Das ESP32 Board ist mit Wi-Fi (**2.4G**) und Bluetooth (4.2) ausgestattet, wodurch es sich einfach mit WiFi verbinden und mit anderen Geräten im Netzwerk kommunizieren kann. Was Sie vorbereiten müssen: -Ein **2.4 GHz** WiFi (Es kann ein mobiler Hotspot oder ein Router sein) -Den WIFI-Namen und das Passwort -Ein Telefon/IPAD/Computer, das sich mit demselben WiFi verbinden kann. **Arduino IDE stellt Ihnen die Bibliotheksdatei zur Verfügung, die Wi-Fi-Konfigurationen und die Überwachung des ESP32 Wi-Fi-Netzwerks unterstützt.** A. **Basisstationsmodus** (STA oder Wi-Fi Client-Modus): In diesem Modus verbindet sich ESP32 mit dem Wi-Fi Hotspot (AP). B. **AP-Modus** (Soft-AP oder Wi-Fi Hotspot-Modus): In diesem Modus verbinden sich andere Wi-Fi-Geräte mit ESP32. C. **AP-STA-Modus**: In diesem Modus ist ESP32 sowohl ein Wi-Fi Hotspot als auch ein Wi-Fi-Gerät, das sich mit einem anderen Wi-Fi Hotspot verbindet. D. Diese Modi sind kompatibel mit mehreren sicheren Modi, wie WPA, WPA2 und WEP. E. Es ist in der Lage, nach Wi-Fi Hotspots zu suchen, einschließlich aktiver und passiver Scans. F. Es unterstützt den Promiscuous-Modus zur Überwachung von IEEE802.11 Wi-Fi Paketen. **Für weitere Details zu WLAN, siehe:** https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/network/esp_wifi.html Offizielle ESPRESSIF-Website: https://www.espressif.com.cn/en/home Öffnen Sie den Code **5.11.0Connect-the-ESP32-to-the-Network** mit der 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() { } ``` Ändern Sie `your_SSID` im Code in den Namen Ihres WLANs und `your_PASSWORD` in das WLAN-Passwort ```c const char* ssid = "your_SSID"; const char* password = "your_PASSWORD"; ``` Wählen Sie das Board **ESP32 Dev Module** und den **COM**-Port und laden Sie den Code hoch. ![5458448](../media/5458448.png) **Testergebnis:** Laden Sie den Code hoch, und das Board verbindet sich mit dem Wi-Fi-Netzwerk und zeigt die IP-Adresse auf dem seriellen Monitor an. ![image-20250417153507142](../media/image-20250417153507142.png) #### 5.11.1 Eine Website einrichten - HELLOWORLD Solange eine Verbindung zum Wi-Fi besteht, kann die Webserver-Bibliothek des ESP32 Webseiten bereitstellen. Im folgenden Beispielcode richten wir eine einfache Website ein, die „Hello, World!“ anzeigt. Öffnen Sie den Code **5.11.1WiFi-HTML-HELLOWORLD** mit der 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(); } ``` Ändern Sie `your_SSID` im Code in den Namen Ihres WLANs und `your_PASSWORD` in das WLAN-Passwort. Laden Sie dann den Code hoch. ```c const char* ssid = "your_SSID"; const char* password = "your_PASSWORD"; ``` Wählen Sie das Board **ESP32 Dev Module** und den **COM**-Port und laden Sie den Code hoch. ![5458448](../media/5458448.png) **Testergebnis:** In diesem Beispielcode richten wir einen Webserver mit der WebServer-Bibliothek auf ESP32 ein. Die Funktion handleRoot() fordert die Verarbeitung im Stammverzeichnis an und sendet die HTML-Antwort „Hello, World!“ an den Client. Dann richtet setup() die Stammroute ein und server.begin() startet den Webserver. Klicken Sie auf den seriellen Monitor, um die IP-Adresse anzuzeigen: ![image-20250417155849702](../media/image-20250417155849702.png) **HINWEIS: Wenn PC, Mobiltelefone und ESP32-Board mit einem Netzwerk verbunden sind, können Sie diese Website gleichzeitig auf PC und Telefonen besuchen.** Greifen Sie auf die IP im PC-Browser oder Telefon-Browser zu: ![image-20250417155955349](../media/image-20250417155955349.png) Hinweis: Erfordert 2,4 GHz WLAN, nicht 5G. Der PC oder das Mobiltelefon, das auf die IP-Adresse zugreift, muss mit demselben WLAN wie das ESP32-Board verbunden sein. ![image-20250417160135272](../media/image-20250417160135272.png) #### 5.11.2 Webgesteuerte Smart Farm ![flo11](../media/flo11.png) Öffnen Sie den Code **5.11.2WiFi-HTML-Smart-Farm** mit der 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