Ebben az ESP32-es cikkben megvizsgáljuk, hogyan csatlakoztathatunk egy ESP32-es kártyát egy hozzáférési ponthoz, és hogyan tervezhetjük meg a webszerverét. A webszerver segítségével LED-eket és váltóáramú készülékeket fogunk vezérelni egy relémodul segítségével.
Tartalom:
- ESP32 webszerver
- ESP32 webszerver létrehozása Arduino IDE használatával
- ESP32 webszerver kód
- ESP32 webszerver IP-címe
- LED-ek vezérlése ESP32 webszerver használatával
- Asztali felület
- Mobil interfész
- AC készülékek vezérlése ESP32 webszerver használatával
- Következtetés
1. ESP32 webszerver
A webszerver rendelkezik egy speciális programmal, amely képes weboldalakat feldolgozni és elküldeni a webklienseknek. Weboldal megnyitásához webböngészőt használunk. Ezt a böngészőt webkliensnek is nevezik. A megtekinteni kívánt webhely egy másik számítógépen, úgynevezett webszerveren van tárolva.
Az egymással való beszélgetéshez a webszerver és a webkliens egy közös HTTP-nyelvet használ. Ez így működik: a webkliens HTTP kéréssel kér egy weboldalt a webszervertől. A webszerver visszaküldi a kért weboldalt. Ha a weboldal nincs jelen, hibaüzenetet fog látni.
Az ESP32-ben webszervert tervezhetünk, mivel az ESP32 nem csak hálózaton keresztül tud kapcsolódni más eszközökhöz, hanem létrehozhatja webszerverét és válaszolhat a beérkezett kérésekre. Mindez azért lehetséges, mert az ESP32 három különböző üzemmódban tud működni:
- Állomás
- Hozzáférési pont
- Állomás és hozzáférési pont egyaránt
Megtekintheti ezt a cikket, hogy betekintést nyerjen az ESP32 mindhárom módjába:
ESP32 hozzáférési pont (AP) beállítása Arduino IDE használatával
2. ESP32 webszerver létrehozása Arduino IDE használatával
ESP32 webszerver Arduino IDE használatával történő létrehozásához csatlakoztathatja az ESP32-t egy hozzáférési ponthoz, és létrehozhat egy IP-címet a webszerver számára. Használhat némi HTML-t és CSS-t a kiszolgáló felületének kialakításához.
Miután megértette az ESP32 hozzáférési pont működését, könnyen megtervezhet egy ESP32 webszervert az Arduino IDE kód segítségével. Az ESP32 webszerver kódja az ESP32 Wi-Fi könyvtárat használja. Ez megkönnyíti a munkánkat, mivel ez a könyvtár tartalmazza az összes fontos funkciót, amely az ESP32 hozzáférési ponthoz történő csatlakoztatásához szükséges.
Tervezzünk meg egy ESP32 webszervert Arduino IDE kóddal.
3. ESP32 webszerver kód
Az ESP32 webszerver kódja magában foglalja az ESP32 kapcsolatot a hozzáférési ponttal, és megkapja a szerver IP-címét. Miután megkapta az IP-címet, csatlakoznia kell ugyanahhoz a hálózathoz az ESP32 webszerver eléréséhez. Innen vezérelheti a LED-eket és egyéb eszközöket.
Nyissa meg az Arduino IDE-t, és csatlakoztassa az ESP32 kártyát:
Az ESP32 kártya telepítése az Arduino IDE-ben
Az ESP32 kártya csatlakoztatása után töltse fel a következő kódot a kártyára.
/**************Linuxhint.com
ESP32 webszerver LED-ek vezérléséhez
**************/
// Importálja a könyvtárat számára Wi-Fi kapcsolat
#include
// Adja meg Wi-Fi nevét és jelszavát
const char * ssid = 'ESP32' ;
const char * jelszó = '123456789' ;
// Válassza ki a port számát számára a webszerver
WiFiServer szerver ( 80 ) ;
// Hozzon létre egy változót a webes kérés tárolásához
String fejléc;
// Hozzon létre változókat a kimenetek állapotának tárolására
String output26State = 'KI' ;
String output27State = 'KI' ;
// Rendelje hozzá a kimeneti lábakat a változókhoz
const int output26 = 26 ;
const int output27 = 27 ;
unsigned long currentTime = millis ( ) ;
unsigned long previousTime = 0 ;
// Válaszd a idő határ számára a webes kérés ban ben ezredmásodperc
const long timeoutTime = 2000 ;
üres beállítás ( ) {
Serial.begin ( 115200 ) ;
// Állítsa be a kimeneti érintkezőket mint kimenetek
pinMode ( output26, OUTPUT ) ;
pinMode ( output27, OUTPUT ) ;
// Kapcsolja ki a kimeneteket
digitalWrite ( output26, LOW ) ;
digitalWrite ( output27, LOW ) ;
// Csatlakozzon a Wi-Fi hálózathoz
Serial.print ( 'Csatlakozás' ) ;
Serial.println ( ssid ) ;
WiFi.begin ( ssid, jelszó ) ;
// Várjon amíg a kapcsolat létrejön
míg ( WiFi.status ( ) ! = WL_CONNECTED ) {
késleltetés ( 500 ) ;
Serial.print ( '.' ) ;
}
Serial.println ( '' ) ;
Serial.println ( 'WiFi csatlakoztatva.' ) ;
Serial.println ( 'IP-cím: ' ) ;
Serial.println ( WiFi.localIP ( ) ) ;
szerver.begin ( ) ;
}
üres hurok ( ) {
WiFiClient kliens = server.available ( ) ; // Jelölje be számára új ügyfelek
ha ( ügyfél ) { // Ha kliens csatlakozik,
jelenlegi idő = millis ( ) ;
previousTime = jelenlegi idő;
Serial.println ( 'Új ügyfél.' ) ; // Értesítse a soros portot
String currentLine = '' ; // Hozzon létre egy karakterláncot az ügyféladatok tárolására
míg ( client.connected ( ) && currentTime - previousTime = 0 ) {
Serial.println ( 'GPIO 26 bekapcsolva' ) ;
output26State = 'TOVÁBB' ;
digitalWrite ( output26, MAGAS ) ;
} más ha ( header.indexOf ( 'KAP /26/kedvezményt' ) > = 0 ) {
Serial.println ( 'GPIO 26 off' ) ;
output26State = 'KI' ;
digitalWrite ( output26, LOW ) ;
} más ha ( header.indexOf ( 'GET /27/on' ) > = 0 ) {
Serial.println ( 'GPIO 27 bekapcsolva' ) ;
output27State = 'TOVÁBB' ;
digitalWrite ( kimenet27, MAGAS ) ;
} más ha ( header.indexOf ( 'KAP /27/kedvezményt' ) > = 0 ) {
Serial.println ( 'GPIO 27 off' ) ;
output27State = 'KI' ;
digitalWrite ( output27, LOW ) ;
}
client.println ( '' ) ;
client.println ( '' ) ;
client.println ( '' ) ;
// CSS a gombok stílusának beállításához
client.println ( '