Πίνακας περιεχομένων:
Βίντεο: ESP8266 Άμεση επικοινωνία δεδομένων: 3 βήματα
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:36
Εισαγωγή
Ενώ έκανα κάποια έργα με μονάδες Arduinos και nRF24l01, αναρωτιόμουν αν θα μπορούσα να εξοικονομήσω κάποια προσπάθεια χρησιμοποιώντας μια μονάδα ESP8266. Το πλεονέκτημα της μονάδας ESP8266 είναι ότι περιέχει μικροελεγκτή επί του σκάφους, επομένως δεν απαιτείται επιπλέον πλακέτα Arduino. Επιπλέον, το μέγεθος της μνήμης του ESP8266 είναι πολύ μεγαλύτερο και σε σχέση με την ταχύτητα, το ESP8266 τρέχει στα 160MHz max αντί των 16MHz του Arduino. Υπάρχουν βέβαια και αρνητικές πλευρές.
Το ESP8266 λειτουργεί μόνο σε 3.3V, έχει λιγότερες ακίδες και λείπουν οι καλές αναλογικές είσοδοι που έχει το Arduino (έχει μία, αλλά μόνο για 1.0V και όχι 3.3V). Επιπλέον, υπάρχουν πολλά περισσότερα παραδείγματα κώδικα για το Arduino + nRF24l01 και για το ESP8266 ειδικά όταν πρόκειται για άμεση μεταφορά δεδομένων.
Έτσι, έχοντας κατά νου ένα έργο, εξέτασα το θέμα της γρήγορης και ελαφριάς μεταφοράς δεδομένων μεταξύ δύο ESP8266 χωρίς όλα τα στοιχεία WWW και
Whileάχνοντας στο διαδίκτυο για παραδείγματα (το μεγαλύτερο μέρος του παρακάτω κώδικα επιλέχθηκε από το δίκτυο σε διάφορα μέρη) συνάντησα πολλές ερωτήσεις πώς να εφαρμόσω μια άμεση μεταφορά δεδομένων χωρίς τα ωραία παραδείγματα "κάντο έτσι". Υπήρχε κάποιο παράδειγμα κώδικα, αλλά κυρίως με ερώτηση γιατί δεν λειτούργησε.
Έτσι, μετά από κάποια ανάγνωση και προσπάθεια κατανόησης, δημιούργησα τα παρακάτω παραδείγματα που επιτρέπουν τη γρήγορη και απλή μεταφορά δεδομένων μεταξύ δύο ESP8266.
Βήμα 1: Όρια και υπόβαθρα (TCP έναντι UDP)
Για να φτάσετε εκεί, ορισμένα όρια πρέπει να διευκρινιστούν σε σύγκριση με το nRF24l01.
Για να χρησιμοποιήσετε το ESP8266 στο περιβάλλον Arduino, η βασική βιβλιοθήκη που πρέπει να χρησιμοποιήσετε είναι το ESP8266WiFi.h. Μπορεί να είναι διαφορετικά, αλλά τα περισσότερα παραδείγματα χρησιμοποιούν τα παραπάνω. Όταν το χρησιμοποιείτε, πρέπει να φτάσετε την επικοινωνία σας σε επίπεδο WiFi.
Έτσι, για να επικοινωνήσετε πρέπει να υπάρχει τουλάχιστον ένα σημείο πρόσβασης (AP) / διακομιστής και ένας πελάτης. Το AP παρέχει το όνομα του δικτύου και τις διευθύνσεις IP και ο πελάτης θα συνδεθεί σε αυτόν τον διακομιστή.
Σε σύγκριση λοιπόν με το nRF24l01, όπου ο κώδικας και στα δύο άκρα είναι λίγο πολύ ο ίδιος (εκτός από τα κανάλια μετάδοσης) ο κώδικας του ESP8266 είναι θεμελιωδώς διαφορετικός, καθώς ο ένας διαμορφώνεται ως AP και ο άλλος ως πελάτης.
Το επόμενο θέμα είναι, ότι αντί να στείλουμε μόνο μερικά byte στο nRF24l01, πρέπει να τηρηθούν τα πρωτόκολλα μεταφοράς ESP8266.
Υπάρχουν δύο κοινά χρησιμοποιούμενα πρωτόκολλα: TCP και UDP.
Το TCP (Transmission Control Protocol) είναι ένα πρωτόκολλο που επιτρέπει τη μετάδοση χωρίς απώλειες μεταξύ διακομιστή και πελάτη. Το πρωτόκολλο περιλαμβάνει «χειραψίες» (πολλές σημαίες και αποδεκτές αποστολές μεταξύ των δύο μερών) και αρίθμηση και ανίχνευση πακέτων για τον εντοπισμό και την εκ νέου μετάδοση των χαμένων πακέτων. Επιπλέον, χρησιμοποιώντας όλες αυτές τις χειραψίες το πρωτόκολλο αποτρέπει την απώλεια δεδομένων λόγω πολλών πακέτων που στέλνονται ταυτόχρονα στο δίκτυο. Τα πακέτα δεδομένων περιμένουν έως ότου μπορούν να ληφθούν.
Το UDP (User Datagram Protocol) δεν διαθέτει όλες τις χειραψίες, την αρίθμηση πακέτων και την εκ νέου μετάδοση. Επομένως, τα γενικά έξοδά του είναι μικρότερα και δεν χρειάζεται όλες οι χειραψίες να διατηρούν μια σύνδεση. Το UDP ενσωματώνει κάποια βασική ανίχνευση σφαλμάτων, αλλά καμία διόρθωση (το κατεστραμμένο πακέτο μόλις πέφτει). Τα δεδομένα αποστέλλονται, χωρίς να γνωρίζουν εάν ο παραλήπτης είναι ελεύθερος να λάβει τα δεδομένα. Ταυτόχρονα, πολλά πακέτα μπορούν να συγκρουστούν, καθώς κάθε μέρος στέλνει τα δεδομένα όποτε χρειαστούν. Παραλείποντας όλες τις χειραψίες, υπάρχει ένα επιπλέον ωραίο χαρακτηριστικό του UDP που ονομάζεται "multicast" και "μετάδοση". Στην περίπτωση «πολλαπλής διανομής» τα πακέτα δεδομένων αποστέλλονται σε μια προκαθορισμένη ομάδα μελών, σε μια «μετάδοση» πακέτα δεδομένων αποστέλλονται σε όλα τα συνδεδεμένα μέλη. Αυτό μειώνει σημαντικά τη μεταφορά δεδομένων σε περίπτωση ροών που θα ληφθούν από πολλά μέλη (π.χ. με αποστολή μιας ροής βίντεο σε πολλούς δέκτες ή με την αποστολή της τρέχουσας ώρας σε πολλές συνδεδεμένες συσκευές).
Υπάρχουν μερικά καλά βίντεο στο Youtube που το εξηγούν ακόμη καλύτερα.
Κατά την αποστολή δεδομένων, είναι σημαντικό να γνωρίζετε τις ανάγκες σας:
- μη κατεστραμμένα δεδομένα, διαχείριση πολλαπλών συνομηλίκων με χειραψίες → TCP
- δεδομένα σε πραγματικό χρόνο, γρήγορη σύνδεση → UDP
Ξεκίνησα για πρώτη φορά με την εφαρμογή μιας επικοινωνίας που βασίζεται σε TCP (μεταξύ ενός διακομιστή και ενός πελάτη). Κατά τη δοκιμή του, αντιμετώπισα καθυστερημένα προβλήματα στη μετάδοση. Στην αρχή τα δεδομένα ανταλλάχθηκαν γρήγορα, μετά μετά από λίγο η ταχύτητα έπεσε δραματικά. Κατέληξα ότι αυτό ήταν ένα τυπικό πρόβλημα της προσέγγισης TCP (το οποίο ήταν λάθος!), Έτσι μετατράπηκε σε λύση που βασίζεται σε UDP. Τελικά προσέγγισα και τους δύο να δουλεύουν. Έτσι θα δοθούν και οι δύο λύσεις.
Τα παρακάτω σκίτσα έχουν κοινό για το TCP και το UDP:
- είναι ανεξάρτητα από οποιοδήποτε υπάρχον δίκτυο WiFi. Έτσι θα λειτουργήσει οπουδήποτε μακριά από το διαδίκτυο και τους συνδεδεμένους δρομολογητές.
- στέλνουν δεδομένα ASCII για εκτύπωση μέσω της σειριακής οθόνης.
- στέλνουν δεδομένα που λαμβάνονται από τη συνάρτηση millis ()-για την ανάλυση της ταχύτητας της μετάδοσης.
- δεν έχουν δοκιμαστεί για πολλούς πελάτες (λόγω του υλικού για τη ρύθμιση του δικτύου αυτήν τη στιγμή)
Βήμα 2: Υλικό
Για να δοκιμάσω ολόκληρη τη ρύθμιση χρησιμοποίησα δύο μονάδες ESP8266. Μια μονάδα είναι ένας προσαρμογέας ESP-01 + USB-to-UART. Η άλλη μονάδα είναι μια μονάδα βασισμένη στο ESP-12 που ενσωματώνει τη σύνδεση USB, τον ρυθμιστή τάσης και μερικά διασκεδαστικά πράγματα όπως διακόπτες, LDR και πολύχρωμα LED.
Η μονάδα USB-to-UART για το ESP-01 έπρεπε να τροποποιηθεί λίγο για να μπορέσει να χρησιμοποιηθεί ως προγραμματιστής (και πάλι Youtube από τον Csongor Varga).
Για να εκτελέσετε τα σκίτσα, πρέπει να εγκαταστήσετε τις βιβλιοθήκες ESP8266 (όπως περιγράφεται σε πολλά σημεία στο διαδίκτυο). Και στις δύο περιπτώσεις (TCP και UDP) υπάρχει σκίτσο διακομιστή και πελάτη το καθένα. Ποιο σκίτσο φορτώνεται σε ποια μονάδα δεν έχει σημασία.
Ευχαριστίες
Όπως αναφέρθηκε, τα σκίτσα βασίζονται σε πολλά κομμάτια που βρήκα στον ιστό. Δεν θυμάμαι πια πού βρήκα τι και τι είναι ο αρχικός κώδικας ή τι άλλαξα. Iθελα λοιπόν να ευχαριστήσω τη μεγάλη κοινότητα γενικά για τη δημοσίευση όλων των υπέροχων παραδειγμάτων.
Βήμα 3: Τα σκίτσα
Ο Κώδικας αποτελείται από δύο σκίτσα το καθένα (όπως εξηγείται), ένα σκίτσο διακομιστή και ένα σκίτσο πελάτη, για TCP και UDP το καθένα.
Συνιστάται:
Ασύρματη επικοινωνία LoRa 3Km έως 8Km με χαμηλό κόστος E32 (sx1278/sx1276) Συσκευή για Arduino, Esp8266 ή Esp32: 15 βήματα
Ασύρματη επικοινωνία LoRa 3Km έως 8Km με χαμηλό κόστος E32 (sx1278/sx1276) Συσκευή για Arduino, Esp8266 ή Esp32: Δημιουργώ μια βιβλιοθήκη για τη διαχείριση του EBYTE E32 με βάση τη σειρά Semtech της συσκευής LoRa, πολύ ισχυρή, απλή και φθηνή συσκευή. Μπορείτε να βρείτε Έκδοση 3Km εδώ, έκδοση 8Km εδώ Μπορούν να λειτουργήσουν σε απόσταση 3000m έως 8000m και έχουν πολλά χαρακτηριστικά
Ανάγνωση δεδομένων υπερηχητικού αισθητήρα (HC-SR04) Δεδομένων σε οθόνη LCD 128 × 128 και οπτικοποίηση χρησιμοποιώντας Matplotlib: 8 βήματα
Ανάγνωση δεδομένων υπερηχητικού αισθητήρα (HC-SR04) Δεδομένων σε LCD 128 × 128 και οπτικοποίηση χρησιμοποιώντας Matplotlib: Σε αυτό το διδακτικό, θα χρησιμοποιήσουμε το MSP432 LaunchPad + BoosterPack για την εμφάνιση δεδομένων υπερήχων αισθητήρων (HC-SR04) σε 128 × 128 LCD και στείλτε τα δεδομένα στον Η / Υ σειριακά και οπτικοποιήστε τα χρησιμοποιώντας το Matplotlib
Σύστημα απόκτησης δεδομένων και απεικόνισης δεδομένων για ηλεκτρικό ποδήλατο MotoStudent: 23 βήματα
Σύστημα απόκτησης δεδομένων και απεικόνισης δεδομένων για MotoStudent Electric Racing Bike: Ένα σύστημα απόκτησης δεδομένων είναι μια συλλογή υλικού και λογισμικού που συνεργάζονται για τη συλλογή δεδομένων από εξωτερικούς αισθητήρες, την αποθήκευση και την επεξεργασία τους στη συνέχεια, έτσι ώστε να μπορούν να απεικονιστούν γραφικά και να αναλυθούν, επιτρέποντας στους μηχανικούς να κάνουν
ESP8266 και επικοινωνία Python Για Noobs: 6 βήματα
ESP8266 και Python Communication For Noobs: Αυτός ο οδηγός σάς επιτρέπει να λαμβάνετε οποιαδήποτε δεδομένα από το ESP8266 και να τα ελέγχετε σε python χωρίς εντολές AT. Για τους αρχάριους, οι περισσότεροι οδηγοί σχετικά με τη χρήση του ESP8266 είναι δύσκολοι, επειδή θέλουν να αναβοσβήνετε "ΣΤΙΣ ΕΝΤΟΛΕΣ"”Στο τσιπ, το οποίο είναι: Uneccessary Wast
Επικοινωνία LoRa ESP8266 & Radio RFM95: 9 Βήματα
Επικοινωνία LoRa ESP8266 & Radio RFM95: Μία από τις πιο γνωστές τεχνολογίες που εφαρμόζεται για το Διαδίκτυο των Πραγμάτων, η οποία έχει πολύ εντυπωσιακά χαρακτηριστικά επικοινωνίας σε μεγάλη απόσταση και χαμηλή ισχύ που αντικατοπτρίζεται στη χαμηλή κατανάλωσή της, LoRa " Lo ng - Ra nge ", αυτό τύπος διαμόρφωσης ha