Πίνακας περιεχομένων:

Πώς να χρησιμοποιήσετε το ESP8266 ως διακομιστή ιστοσελίδων: 5 βήματα
Πώς να χρησιμοποιήσετε το ESP8266 ως διακομιστή ιστοσελίδων: 5 βήματα

Βίντεο: Πώς να χρησιμοποιήσετε το ESP8266 ως διακομιστή ιστοσελίδων: 5 βήματα

Βίντεο: Πώς να χρησιμοποιήσετε το ESP8266 ως διακομιστή ιστοσελίδων: 5 βήματα
Βίντεο: Εισαγωγή στον πίνακα ανάπτυξης WiFi NodeMCU ESP8266 με παράδειγμα HTTP Client 2024, Νοέμβριος
Anonim
Πώς να χρησιμοποιήσετε το ESP8266 ως διακομιστή ιστοσελίδων
Πώς να χρησιμοποιήσετε το ESP8266 ως διακομιστή ιστοσελίδων

Γεια, χρησιμοποιώ αυτήν τη στιγμή τα Windows 10, NodeMCU 1.0 και εδώ είναι η λίστα με το λογισμικό που χρησιμοποίησα και τους οδηγούς εγκατάστασης που ακολούθησα:

  • Arduino IDE
  • Πρόσθετοι πίνακες για το esp8266
  • Spiff

Βιβλιοθήκη που χρησιμοποιείται:

Ιστοσελίδα

Χρησιμοποίησα το NodeMCU ως διακομιστή για την εξυπηρέτηση ενός αρχείου HTML που έφτιαξα από το thistutorial. Για την προβολή αυτού του αρχείου, ανέβασα το αρχείο στο σύστημα αρχείων nodemcu χρησιμοποιώντας Spiffs. Το αρχείο HTML στέλνει δεδομένα στο nodemcu χρησιμοποιώντας υποδοχές ιστού για εκτύπωση στη σειριακή οθόνη για αυτό. Η γρήγορη αμφίδρομη επικοινωνία μέσω δικτυακών υποδοχών του διακομιστή και του πελάτη επέτρεψε τη χρήση του ως τηλεχειριστήριο. Στα επόμενα βήματα, δεν μπορώ να εξηγήσω πώς λειτουργεί ο κωδικός μου

Προμήθειες

NodeMCU

Βήμα 1: Κάντε το να λειτουργήσει

Κάντο να δουλέψει
Κάντο να δουλέψει
Κάντο να δουλέψει
Κάντο να δουλέψει
Κάντο να δουλέψει
Κάντο να δουλέψει

Ακολουθούν τα βήματα για το πώς λειτουργεί

  1. Κατεβάστε το συνημμένο αρχείο και ανοίξτε το αρχείο mousebot.ino
  2. Μεταβείτε στο σκίτσο> εμφάνιση φακέλου σκίτσων και δημιουργήστε έναν νέο φάκελο με όνομα δεδομένα
  3. Αποθηκεύστε το αρχείο html από αυτό το σεμινάριο στο φάκελο με το όνομα. Ονόμασα το δικό μου ως "Joystick"
  4. Βεβαιωθείτε ότι το spiff σας είναι ήδη λειτουργικό πηγαίνοντας στα εργαλεία και δείτε την "μεταφόρτωση δεδομένων σκίτσων esp8266"
  5. Ανεβάστε το αρχείο html στο nodemcu κάνοντας κλικ στο "esp8266 sketch data upload"
  6. Μετά τη μεταφόρτωση αρχείου, ανεβάστε στο nodemcu το αρχείο mousebot.ino πατώντας στο arduino IDE και πατώντας ctrl U

Βήμα 2: Πώς λειτουργεί ο κώδικας

Αρχικά, συμπεριλαμβάνουμε τις βιβλιοθήκες που θα χρησιμοποιήσει αυτός ο κώδικας

// για να ενεργοποιήσετε τη σύνδεση ESP8266 με το WIFI

#include #include #include // Επιτρέπει στο ESP8266 να λειτουργεί ως διακομιστής #include // ενεργοποιεί την επικοινωνία με τον διακομιστή και τον πελάτη (η συνδεδεμένη συσκευή σας) #include #include // Για να ανοίξετε το αναβαθμισμένο αρχείο στο nodemcu #include

Ορίστε το esp8266 ως διακομιστή ιστού που ανοίγει στη θύρα 80. Οι θύρες είναι διαδρομές από τις οποίες θα περάσουν τα δεδομένα. Ως θύρα διακομιστή, θα στείλει το αρχείο HTML στον πελάτη (οι αποκλίσεις που συνδέονται με αυτό).

Προσθέτει μια σύνδεση δικτύου χρησιμοποιώντας τη θύρα 81 για να ακούσετε μηνύματα από τον πελάτη

Οι δικτυακοί σύνδεσμοι έχουν την παράμετρο num, WStype_t, ωφέλιμο φορτίο και μέγεθος. Ο αριθμός καθορίζει τον αριθμό πελάτη, το ωφέλιμο φορτίο είναι το μήνυμα που στέλνει, το μέγεθος είναι το μήκος του μηνύματος και το WStype_t είναι για διαφορετικά συμβάντα, όπως

  • WStype_DISCONNECTED - κατά την αποσύνδεση ενός προγράμματος -πελάτη.
  • WStype_CONNECTED: - όταν συνδεθεί ένας πελάτης
  • WStype_TEXT - Έλαβε δεδομένα από τον πελάτη

Ανάλογα με τον τύπο του συμβάντος, γίνονται διάφορες ενέργειες και σχολιάζονται εδώ

void webSocketEvent (uint8_t num, τύπος WStype_t, uint8_t * ωφέλιμο φορτίο, μέγεθος_t μήκος) {

διακόπτης (τύπος) {case WStype_DISCONNECTED: Serial.printf ("[%u] Αποσυνδέθηκε! / n", αριθ.); // εκτυπώνει δεδομένα στο διάλειμμα σειριακής οθόνης. θήκη WStype_CONNECTED: {IPAddress ip = webSocket.remoteIP (num); // λαμβάνει την IP του πελάτη Serial.printf ("[%u] Συνδέθηκε από%d.%d.%d.%d url:%s / n", num, ip [0], ip [1], ip [2], ip [3], ωφέλιμο φορτίο); webSocket.sendTXT (num, "Connected"); // στέλνει "συνδεδεμένο" στην κονσόλα του προγράμματος περιήγησης} break; περίπτωση WStype_TEXT: Serial.printf ("[%u] Δεδομένα: %s / n", num, ωφέλιμο φορτίο); // εκτυπώνει τον αριθμό πελάτη σε %u και τα δεδομένα που λαμβάνονται ως συμβολοσειρές σε %s / n διακοπή;}}

Βήμα 3: Ορίστε το NODEMCU ως διακομιστή

ορίζει το ssid και τον κωδικό πρόσβασης που θα χρησιμοποιήσετε για να συνδεθείτε αργότερα σε αυτό

const char *ssid = "Δοκιμάστε";

const char *password = "12345678";

κατά τη ρύθμιση, καθορίζουμε τον ρυθμό με τον οποίο θα επικοινωνήσει το nodemcu και ο υπολογιστής μας, ο οποίος είναι 115200.

void setup (void) {

Serial.begin (115200); Serial.print ("\ n");

ρυθμισμένο σε true επίσης δείτε την έξοδο διαγνωστικού wifi στο τερματικό serila

Serial.setDebugOutput (true);

αρχικοποιήστε το σύστημα αρχείων

SPIFFS.begin ();

Ρυθμίστε το nodemcu ως σημείο πρόσβασης με ssid και κωδικό προστασίας νωρίτερα και εκτυπώνει το ip του nodemcu με το οποίο θα συνδεθείτε νωρίτερα. από προεπιλογή είναι 192.168.4.1

Serial.print ("Διαμόρφωση σημείου πρόσβασης …");

WiFi.mode (WIFI_AP); WiFi.softAP (ssid, κωδικός πρόσβασης); IPAddress myIP = WiFi.softAPIP (); Serial.print ("Διεύθυνση IP AP:"); Serial.println (myIP);

Αρχικοποιήστε την υποδοχή ιστού στο nodemcu, ο οποίος είναι διακομιστής pur

webSocket.begin ();

Καλεί τη συνάρτηση webSocketEvent όταν συμβεί ένα συμβάν websocket.

webSocket.onEvent (webSocketEvent);

Για εντοπισμό σφαλμάτων, εκτυπώστε "Ο διακομιστής WebSocket ξεκίνησε" σε μια νέα γραμμή. Αυτό γίνεται για να καθοριστεί η γραμμή κώδικα που επεξεργάζεται το nodemcu

Serial.println ("Ο διακομιστής WebSocket ξεκίνησε.");

όταν ένας πελάτης επισκέπτεται το 192.168.4.1, θα καλέσει τη συνάρτηση handleFileRead και θα στείλει μαζί του το URI διακομιστή παραμέτρων που σε αυτή την περίπτωση είναι οι πληροφορίες nodemcu. Η λειτουργία handleFileRead θα εξυπηρετήσει το αρχείο html από το σύστημα αρχείων nodemcu

server.onNotFound ( () {

εάν (! handleFileRead (server.uri ()))

αν δεν μπορεί να βρεθεί θα εμφανιστεί "FileNotFound"

server.send (404, "text/plain", "FileNotFound");

});

Ξεκινά ο διακομιστής και ο διακομιστής εκτύπωσης HTTP ξεκίνησε.

server.begin (); Serial.println ("Ο διακομιστής HTTP ξεκίνησε");

Στον κενό μας βρόχο, δίνουμε τη δυνατότητα στον διακομιστή να χειρίζεται με συνέπεια τον πελάτη και τις συνδέσεις ιστού του ως εξής:

void loop (void) {

server.handleClient (); webSocket.loop ();}

Βήμα 4: Φόρτωση αρχείου HTML

θα χρησιμοποιήσουμε μια λειτουργία που ονομάζεται handleFileRead για να ανοίξουμε και το αρχείο html από το σύστημα αρχείων nodemcu. θα επιστρέψει ένα boolean αξίας για να καθορίσει αν είναι φορτωμένο ή όχι.

Όταν ανοίξει το "192.168.4.1/" από τον πελάτη, ορίζουμε τη διαδρομή του αρχείου σε "/Joystick.html, το όνομα του αρχείου μας στο φάκελο δεδομένων

bool handleFileRead (διαδρομή συμβολοσειράς) {

Serial.println ("handleFileRead:" + διαδρομή); if (path.endsWith ("/")) path += "Joystick.html"; if (SPIFFS.exists (path)) {File file = SPIFFS.open (path, "r"); size_t sent = server.streamFile (αρχείο, "text/html"); file.close (); επιστροφή αληθινός? } επιστροφή false; }

Ελέγξτε εάν υπάρχει η διαδρομή αρχείου "/Joystick.html"

εάν (SPIFFS.exists (διαδρομή)) {

Εάν υπάρχει, ανοίξτε τη διαδρομή με σκοπό την ανάγνωσή της που καθορίζεται από το "r". Πηγαίνετε εδώ για περισσότερους σκοπούς.

Αρχείο αρχείου = SPIFFS.open (διαδρομή, "r");

Στέλνει το αρχείο στον διακομιστή με τύπο περιεχομένου "text/html"

size_t sent = server.streamFile (αρχείο, "text/html");

κλείστε το αρχείο

file.close ();

η λειτουργία handleFileRead επιστρέφει true

επιστροφή αληθές;}

εάν η διαδρομή αρχείου δεν υπάρχει, η συνάρτηση handleFileRead επιστρέφει false

επιστροφή αληθινός? }

Βήμα 5: Δοκιμάστε το

Image
Image

Συνδεθείτε στο nodeMCU και μεταβείτε στο "192.168.4.1" και δοκιμάστε το!:)

Συνιστάται: