Διακομιστής Ιστού ESP32 με χρήση Arduino IDE

Diakomistes Istou Esp32 Me Chrese Arduino Ide



Το ESP32 είναι μια πλακέτα μικροελεγκτή που μπορεί να συνδεθεί με πολλές συσκευές χρησιμοποιώντας τις ακίδες GPIO. Διαθέτει επεξεργαστή διπλού πυρήνα με ενσωματωμένο Wi-Fi και διεπαφή Bluetooth. Και τα δύο αυτά χαρακτηριστικά καθιστούν το ESP32 έναν κατάλληλο πίνακα για το σχεδιασμό έργων IoT. Ένα από τα κύρια χαρακτηριστικά της πλακέτας ESP32 είναι η ικανότητά της να συνδέεται με το υπάρχον σημείο πρόσβασης. Όχι μόνο αυτό, αλλά μπορεί επίσης να δημιουργήσει το σημείο πρόσβασής του, ώστε άλλες συσκευές να μπορούν να συνδεθούν μαζί του.

Σε αυτό το άρθρο του ESP32, θα διερευνήσουμε πώς μπορούμε να συνδέσουμε μια πλακέτα ESP32 με ένα σημείο πρόσβασης και να σχεδιάσουμε τον διακομιστή ιστού της. Χρησιμοποιώντας αυτόν τον διακομιστή web, θα ελέγξουμε τα LED και τις συσκευές AC με τη βοήθεια μιας μονάδας ρελέ.

Περιεχόμενα:

1. Διακομιστής Ιστού ESP32

Ο διακομιστής Web έχει ένα ειδικό πρόγραμμα που μπορεί να επεξεργάζεται και να στέλνει ιστοσελίδες σε πελάτες web. Για να ανοίξουμε έναν ιστότοπο, χρησιμοποιούμε ένα πρόγραμμα περιήγησης ιστού. Αυτό το πρόγραμμα περιήγησης ιστού ονομάζεται επίσης πελάτης Ιστού. Ο ιστότοπος που θέλετε να δείτε είναι αποθηκευμένος σε έναν άλλο υπολογιστή που ονομάζεται διακομιστής web.







Για να μιλήσουν μεταξύ τους, ο διακομιστής Ιστού και ο πελάτης Ιστού χρησιμοποιούν μια κοινή γλώσσα που ονομάζεται HTTP. Λειτουργεί έτσι: ο πελάτης Ιστού ζητά από τον διακομιστή Ιστού μια ιστοσελίδα χρησιμοποιώντας ένα αίτημα HTTP. Ο διακομιστής Ιστού στέλνει πίσω την ιστοσελίδα που ζητήθηκε. Εάν η ιστοσελίδα δεν υπάρχει, θα δείτε ένα μήνυμα σφάλματος.



Στο ESP32, μπορούμε να σχεδιάσουμε έναν διακομιστή Web, καθώς ο ESP32 μπορεί όχι μόνο να συνδεθεί με άλλες συσκευές μέσω δικτύου, αλλά μπορεί επίσης να δημιουργήσει τον διακομιστή Ιστού του και να ανταποκριθεί στα αιτήματα που λαμβάνονται. Όλα αυτά είναι δυνατά επειδή το ESP32 μπορεί να λειτουργήσει σε τρεις διαφορετικούς τρόπους λειτουργίας:



  • Σταθμός
  • Σημείο πρόσβασης
  • Τόσο σταθμός όσο και σημείο πρόσβασης

Μπορείτε να δείτε αυτό το άρθρο για να λάβετε μια εικόνα και για τις τρεις λειτουργίες του ESP32:





Πώς να ορίσετε ένα σημείο πρόσβασης ESP32 (AP) χρησιμοποιώντας το Arduino IDE

2. Πώς να δημιουργήσετε διακομιστή Ιστού ESP32 χρησιμοποιώντας το Arduino IDE

Για να δημιουργήσετε έναν διακομιστή Ιστού ESP32 χρησιμοποιώντας το Arduino IDE, μπορείτε να συνδέσετε το ESP32 σε ένα σημείο πρόσβασης και να δημιουργήσετε μια διεύθυνση IP για τον διακομιστή Ιστού. Μπορείτε να εφαρμόσετε κάποιο HTML και CSS για να σχεδιάσετε τη διεπαφή του διακομιστή σας.



Μόλις κατανοήσετε ότι λειτουργεί το σημείο πρόσβασης ESP32, μπορείτε εύκολα να σχεδιάσετε έναν διακομιστή ιστού ESP32 χρησιμοποιώντας τον κώδικα Arduino IDE. Ο κώδικας διακομιστή Ιστού ESP32 χρησιμοποιεί τη βιβλιοθήκη Wi-Fi ESP32. Αυτό διευκολύνει τη δουλειά μας, καθώς αυτή η βιβλιοθήκη περιέχει όλες τις σημαντικές λειτουργίες που απαιτούνται για τη σύνδεση του ESP32 σε ένα σημείο πρόσβασης.

Ας σχεδιάσουμε έναν διακομιστή Ιστού ESP32 χρησιμοποιώντας κώδικα Arduino IDE.

3. Κωδικός διακομιστή Web ESP32

Ο κωδικός διακομιστή Ιστού ESP32 περιλαμβάνει τη σύνδεση ESP32 με το σημείο πρόσβασης και τη λήψη της διεύθυνσης IP του διακομιστή. Μόλις λάβετε τη διεύθυνση IP, πρέπει να συνδεθείτε στο ίδιο δίκτυο για να αποκτήσετε πρόσβαση στον διακομιστή Ιστού ESP32. Από εκεί μπορείτε να ελέγξετε τα LED και άλλες συσκευές.

Ανοίξτε το Arduino IDE και συνδέστε την πλακέτα ESP32 με αυτήν:

Εγκατάσταση της πλακέτας ESP32 στο Arduino IDE

Μόλις συνδεθεί η πλακέτα ESP32, ανεβάστε τον παρακάτω κώδικα στην πλακέτα σας.

/****************

Linuxhint.com
Διακομιστής Ιστού ESP32 για έλεγχο LED

**************/
// Εισαγάγετε τη βιβλιοθήκη Για Σύνδεση Wi-Fi
#include
// Εισαγάγετε το όνομα και τον κωδικό πρόσβασης Wi-Fi
const char * ssid = 'ESP32' ;
const char * κωδικός πρόσβασης = '123456789' ;
// Επιλέξτε τον αριθμό θύρας Για ο διακομιστής Ιστού
Διακομιστής WiFiServer ( 80 ) ;
// Δημιουργήστε μια μεταβλητή για την αποθήκευση του αιτήματος Ιστού
Κεφαλίδα συμβολοσειράς;
// Δημιουργήστε μεταβλητές για να αποθηκεύσετε την κατάσταση των εξόδων
Έξοδος συμβολοσειράς26Κατάσταση = 'ΜΑΚΡΙΑ ΑΠΟ' ;
Έξοδος συμβολοσειράς27Κατάσταση = 'ΜΑΚΡΙΑ ΑΠΟ' ;
// Αντιστοιχίστε τις ακίδες εξόδου στις μεταβλητές
const int output26 = 26 ;
const int output27 = 27 ;
ανυπόγραφο long currentTime = millis ( ) ;
ανυπόγραφο long previousTime = 0 ;
// Επιλέξτε το χρόνος όριο Για το αίτημα Ιστού σε χιλιοστά του δευτερολέπτου
const long timeoutTime = 2000 ;
ρύθμιση κενού ( ) {
Serial.begin ( 115200 ) ;
// Ρυθμίστε τις ακίδες εξόδου όπως και εξόδους
pinMode ( έξοδος26, ΕΞΟΔΟΣ ) ;
pinMode ( έξοδος27, ΕΞΟΔΟΣ ) ;
// Απενεργοποιήστε τις εξόδους
digitalWrite ( έξοδος 26, ΧΑΜΗΛΟ ) ;
digitalWrite ( έξοδος 27, ΧΑΜΗΛΟ ) ;
// Συνδεθείτε στο δίκτυο Wi-Fi
Σειρά.εκτύπωση ( 'Συνδέομαι σε ' ) ;
Serial.println ( ssid ) ;
WiFi.ξεκινήστε ( ssid, κωδικός πρόσβασης ) ;
// Περίμενε μέχρι η σύνδεση έχει δημιουργηθεί
ενώ ( Κατάσταση WiFi ( ) ! = WL_CONNECTED ) {
καθυστέρηση ( 500 ) ;
Σειρά.εκτύπωση ( '.' ) ;
}
Serial.println ( '' ) ;
Serial.println ( 'Το WiFi συνδέθηκε.' ) ;
Serial.println ( 'Διεύθυνση IP: ' ) ;
Serial.println ( WiFi.localIP ( ) ) ;
server.begin ( ) ;
}

κενό βρόχο ( ) {
WiFiClient client = server.available ( ) ; // Ελεγχος Για νέους πελάτες
αν ( πελάτης ) { // Εάν ένας πελάτης είναι συνδεδεμένος,
τρέχουσα ώρα = χιλιοστά ( ) ;
previousTime = τρέχονTime;
Serial.println ( 'Νέος πελάτης.' ) ; // Ειδοποιήστε τη σειριακή θύρα
String currentLine = '' ; // Δημιουργήστε μια συμβολοσειρά για να αποθηκεύσετε τα δεδομένα πελάτη
ενώ ( πελάτης.συνδεδεμένος ( ) && τρέχουσαΏρα - Προηγούμενη Ώρα = 0 ) {
Serial.println ( 'GPIO 26 on' ) ;
έξοδος26Κατάσταση = 'ΕΠΙ' ;
digitalWrite ( έξοδος 26, ΥΨΗΛΟ ) ;
} αλλού αν ( header.indexOf ( 'GET /26/off' ) > = 0 ) {
Serial.println ( 'GPIO 26 off' ) ;
έξοδος26Κατάσταση = 'ΜΑΚΡΙΑ ΑΠΟ' ;
digitalWrite ( έξοδος 26, ΧΑΜΗΛΟ ) ;
} αλλού αν ( header.indexOf ( 'GET /27/on' ) > = 0 ) {
Serial.println ( 'GPIO 27 on' ) ;
output27State = 'ΕΠΙ' ;
digitalWrite ( έξοδος 27, ΥΨΗΛΟ ) ;
} αλλού αν ( header.indexOf ( 'GET /27/off' ) > = 0 ) {
Serial.println ( 'GPIO 27 off' ) ;
έξοδος27Κατάσταση = 'ΜΑΚΡΙΑ ΑΠΟ' ;
digitalWrite ( έξοδος 27, ΧΑΜΗΛΟ ) ;
}

client.println ( '' ) ;
client.println ( '' ) ;
client.println ( '' ) ;
// CSS για το στυλ των κουμπιών
client.println ( '