Πίνακας περιεχομένων:
- Βήμα 1: Δημιουργία περιβάλλοντος κατασκευής
- Βήμα 2: Λήψη πηγαίου κώδικα, διαμόρφωση και δημιουργία
- Βήμα 3: Συνδέστε εξαρτήματα υλικού
- Βήμα 4: Flash και Εκτέλεση
- Βήμα 5: Αλληλεπίδραση
- Βήμα 6: Λεπτομέρειες εφαρμογής
Βίντεο: WiFi LED Strip + Αισθητήρας θερμοκρασίας με ESP8266: 6 βήματα
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:36
Αυτό το σεμινάριο περιγράφει τα βήματα για να ρυθμίσετε ένα ESP8266 και να το μιλήσετε τόσο σε αισθητήρα θερμοκρασίας όσο και σε λωρίδα LED, ενώ μπορείτε επίσης να λαμβάνετε είσοδο και να στέλνετε έξοδο με MQTT μέσω WiFi. Το έργο έγινε για μια πορεία που πραγματοποιήθηκε στο Cal Poly San Luis Obispo το Φθινόπωρο 2016- CPE 439: Ενσωματωμένα συστήματα σε πραγματικό χρόνο. Ο γενικός στόχος ήταν να καταδειχθεί η ευκολία δημιουργίας ενός «αντικειμένου» συνδεδεμένου στο Διαδίκτυο με φθηνό υλικό.
Προμήθειες/Απαιτούμενος εξοπλισμός:
- NodeMCU ESP8266 dev board
- Λωρίδα LED WS2812B
- MAX31820 Αισθητήρας θερμοκρασίας
- Breadboard
- Αντίσταση 4,7K ohm
- Αντίσταση 220 ohm
- καλώδια βραχυκυκλωτήρων
- καλώδιο micro-usb
- PC (ή VM) που εκτελεί linux (π.χ. Ubuntu)
Υποθέσεις/Προϋποθέσεις:
- εμπειρία στη χρήση εργαλείων γραμμής εντολών και εγκατάσταση πακέτων σε διανομή που βασίζεται σε debian
- βασική κατανόηση της σύνταξης Makefile
- καλώδια σύνδεσης
Βήμα 1: Δημιουργία περιβάλλοντος κατασκευής
Για να φτιάξετε το έργο, θα χρειαστεί να εγκαταστήσετε το esp-open-sdk στο μηχάνημά σας. Ακολουθήστε τον σύνδεσμο και διαβάστε τις οδηγίες κατασκευής. Εν ολίγοις, θα κάνετε κάποιες εντολές sudo apt-get για να εγκαταστήσετε εξαρτήσεις, έναν κλώνο git-αναδρομικό για κλωνοποίηση/λήψη esp-open-sdk και τέλος μια εντολή make για την κατασκευή esp-open-sdk.
Κοίτα με
Βήμα 2: Λήψη πηγαίου κώδικα, διαμόρφωση και δημιουργία
Τώρα που έχει δημιουργηθεί το esp-open-sdk, κλωνοποιήστε το αποθετήριο έργου.
git clone
Μεταβείτε στον κατάλογο έργου, δημιουργήστε έναν.τοπικό φάκελο και αντιγράψτε τις παραδείγματα ρυθμίσεων.
cd esp-rtos-tests
mkdir -p.τοπικές ρυθμίσεις cp.example.mk.local/settings.mk
Τώρα ανοίξτε.local/settings.mk με οποιονδήποτε επεξεργαστή κειμένου και αλλάξτε τις ακόλουθες ρυθμίσεις:
- OPENSDK_ROOT: Η απόλυτη διαδρομή για τη θέση του esp-open-sdk που δημιουργήσατε στο βήμα 1
- WIFI_SSID: Το SSID του δικτύου WiFi σας
- WIFI_PASS: Ο κωδικός πρόσβασης του δικτύου WiFi σας
- PIXEL_COUNT: Ο αριθμός των εικονοστοιχείων στη λωρίδα LED WS2812B
Σημείωση: Δεδομένου ότι αυτό το έργο χρησιμοποιεί SPI για την οδήγηση των LED και χρησιμοποιεί το NodeMCU 3.3v για την παροχή τους, πιθανότατα δεν θα μπορείτε να οδηγήσετε περισσότερα από ~ 60 LED.
Σημείωση: Οι άλλες ρυθμίσεις δεν χρειάζεται να αλλάξουν, αλλά μπορούν να αλλάξουν αν το επιθυμείτε. Συνιστάται να τηρείτε τη σειρά των προτεραιοτήτων εργασίας. Όσο χαμηλότερος είναι ο αριθμός προτεραιότητας, τόσο χαμηλότερη είναι η προτεραιότητα της εργασίας.
Τώρα φτιάξτε το έργο:
make -C παραδείγματα/cpe439
Εάν όλα έχουν ρυθμιστεί σωστά, θα πρέπει να ξεκινήσει τη μεταγλώττιση. Στο τέλος θα πρέπει να δείτε:
Δημιουργήθηκε επιτυχώς το "firmware/cpe439.bin"
Κοίτα με
Βήμα 3: Συνδέστε εξαρτήματα υλικού
Τώρα που ο κώδικας έχει καταρτιστεί, ήρθε η ώρα να συνδέσουμε τα περιφερειακά μας.
Πρώτα, κολλήστε το NodeMCU στο breadboard και, στη συνέχεια, χρησιμοποιήστε καλώδια jumper για να κάνετε τις συνδέσεις όπως φαίνεται στο διάγραμμα.
Δυο πράγματα που πρέπει να γνωρίζετε:
- Σημαντικό: Η γραμμή δεδομένων WS2812B δεν είναι αμφίδρομη. Αν κοιτάξετε προσεκτικά τα σημάδια στην πλευρά LED της λωρίδας, θα δείτε μικρά βέλη που δείχνουν προς μία κατεύθυνση. Η έξοδος από το D7 του NodeMCU πρέπει να κατευθύνεται προς το WS2812B με τον ίδιο τρόπο όπως ο δείκτης κατεύθυνσης, τον οποίο μπορείτε να δείτε στο διάγραμμα αν κοιτάξετε προσεκτικά.
- Ανάλογα με το είδος των συνδετήρων που διαθέτει το WS2812B, μπορεί να χρειαστεί να κάνετε κάποιες τροποποιήσεις για να συνδεθείτε με ασφάλεια στο breadboard. Μπορείτε επίσης να χρησιμοποιήσετε κλιπ αλιγάτορα για να τα συνδέσετε σε καλώδια με βραχυκυκλωτήρα με δυνατότητα ψωμιού.
- Οι καρφίτσες MAX31820 έχουν μικρότερο βήμα και είναι λεπτότερες από τους τυπικούς βραχυκυκλωτήρες 0,1 "/2,54 mm, καθιστώντας τους δύσκολο να συνδεθούν. Ένας τρόπος για να το χρησιμοποιήσετε είναι να χρησιμοποιήσετε σύρματα από jumper-to-jumper, να αφαιρέσετε την πλαστική θήκη από τη γυναικεία πλευρά, στη συνέχεια, χρησιμοποιήστε μερικές πένσες για να σφίξετε τις άκρες των γυναικών με βραχυκυκλωτήρα σφιχτά γύρω από τις μικρότερες καρφίτσες MAX31820.
Ελέγξτε ξανά τις συνδέσεις πριν ενεργοποιήσετε το NodeMCU για να μην καταστρέψετε τα εξαρτήματα.
Βήμα 4: Flash και Εκτέλεση
Αναβοσβήνει
Με όλο το συνδεδεμένο υλικό, συνδέστε το NodeMCU και αναβοσβήνετε με την ακόλουθη εντολή:
κάντε φλας -C παραδείγματα/cpe439 ESPPORT =/dev/ttyUSB0
Το/dev/ttyUSB0 είναι το σειριακό com στο οποίο πρέπει να εμφανιστεί το NodeMCU. Εάν έχετε συνδέσει άλλες σειριακές συσκευές, μπορεί να εμφανιστεί ως /dev /ttyUSB1 ή κάποιος άλλος αριθμός. Για να ελέγξετε, μπορείτε να εκτελέσετε αυτήν την εντολή δύο φορές, μία με το NodeMCU αποσυνδεδεμένο και μία φορά με αυτήν συνδεδεμένο και να συγκρίνετε τη διαφορά:
ls /dev /ttyUSB*
Ένα άλλο ζήτημα που μπορεί να αντιμετωπίσετε είναι να μην έχετε άδεια πρόσβασης στη συσκευή. Δύο τρόποι για να το διορθώσετε είναι:
-
Προσθέστε τον χρήστη σας στην ομάδα dialout:
sudo adduser dialout $ (whoami)
- chmod ή chown τη συσκευή:
sudo chmod 666 /dev /ttyUSB0 sudo chown $ (whoami): $ (whoami) /dev /ttyUSB0Η πρώτη μέθοδος προτιμάται καθώς είναι μόνιμη λύση.
Τρέξιμο
Μετά την επιτυχή εκτέλεση της εντολής flash, η συσκευή θα εκκινήσει αμέσως και θα ξεκινήσει την εκτέλεση του μεταγλωττισμένου κώδικα. Σε οποιοδήποτε σημείο μετά το αναβοσβήσιμο, μπορείτε να εκτελέσετε την ακόλουθη εντολή για να παρακολουθήσετε σειριακή έξοδο:
python3 -m serial.tools.miniterm --eol CRLF --exit -char 003 /dev /ttyUSB0 500000 --raw -q
Για να εξοικονομήσετε χρόνο, μπορείτε να το προσθέσετε στο αρχείο ~/.bashrc:
ψευδώνυμο nodemcu = "python3 -m serial.tools.miniterm --eol CRLF --exit -char 003 /dev /ttyUSB0 500000 --raw -q"
..που σας επιτρέπει απλά να πληκτρολογήσετε "nodemcu" ως ψευδώνυμο για αυτήν την εντολή.
Εάν όλα έχουν ρυθμιστεί σωστά, η λωρίδα LED σας θα ανάψει πράσινη και στο σειριακό θα δείτε τη σύνδεση WiFi, τη λήψη μιας διεύθυνσης IP, τη σύνδεση στο MQTT και τα μηνύματα που εξάγουν δεδομένα θερμοκρασίας.
συνδεδεμένο με το MyWiFiSSID, έναρξη προγράμματος -πελάτη καναλιού 1dhcp… wifi_task: status = 1wifi_task: status = 1ip: 192.168.2.23, mask: 255.255.255.0, gw: 192.168.2.1ws2812_spi_init okRequest temp OKwifi_tasktkue_tkue: (Επανασύνδεση) με τον διακομιστή MQTT test.mosquitto.org… xQueueReceive +25,50xQueueSend ok doneΣτείλτε MQTT σύνδεση… MQTTv311donexQueueReceive +25,56 xQueueSend ok
Βήμα 5: Αλληλεπίδραση
Αν υποθέσουμε ότι η συσκευή σας έχει συνδεθεί με WiFi και ο μεσίτης MQTT με επιτυχία, θα μπορείτε να στέλνετε και να λαμβάνετε δεδομένα από το NodeMCU με MQTT. Εάν δεν το έχετε κάνει ήδη, εγκαταστήστε το πακέτο mosquitto clients:
sudo apt-get install mosquitto-clients
Θα πρέπει τώρα να μπορείτε να χρησιμοποιείτε τα προγράμματα mosquitto_pub και mosquitto_sub από το κέλυφος σας.
Λήψη ενημερώσεων θερμοκρασίας
Για να λάβουμε δεδομένα θερμοκρασίας, θα θέλουμε να χρησιμοποιήσουμε την εντολή mosquitto_sub για να εγγραφούμε στο θέμα στο οποίο δημοσιεύει το NodeMCU.
mosquitto_sub -h test.mosquitto.org -t /cpe439 /temp
Θα πρέπει να δείτε δεδομένα θερμοκρασίας (σε Κελσίου), που φτάνουν στο τερματικό.
+25.87+25.93+25.68…
Ρύθμιση του χρώματος της λωρίδας LED από απόσταση
Μια απλή μορφή μηνύματος χρησιμοποιείται για την αποστολή τιμών RGB στο NodeMCU μέσω MQTT. Η μορφή της εντολής μοιάζει με αυτήν:
r: RRRg: GGGb: BBB ~
Όπου τα RRR, GGG, BBB αντιστοιχούν σε τιμές RGB (0-255) του χρώματος που θέλετε να στείλετε. Για να στείλουμε την εντολή μας, θα χρησιμοποιήσουμε την εντολή mosquitto_pub. Ορίστε μερικά παραδείγματα:
mosquitto_pub -h test.mosquitto.org -t /cpe439 /rgb -m 'r: 255g: 0b: 0 ~' # redmosquitto_pub -h test.mosquitto.org -t /cpe439 /rgb -m 'r: 0g: 255b: 0 ~ ' # greenmosquitto_pub -h test.mosquitto.org -t /cpe439 /rgb -m' r: 0g: 0b: 255 # ' # μπλε
Αν θέλετε να γίνετε δημιουργικοί, βρείτε ένα εργαλείο επιλογής χρωμάτων στο διαδίκτυο όπως αυτό και επεξεργαστείτε την εντολή με οποιαδήποτε τιμή RGB επιλέξετε.
Πρόσεχε
Τα θέματα σε αυτό το έργο έχουν οριστεί σε /cpe439 /rgb και /cpe439 /temp σε δημόσιο μεσίτη MQTT, πράγμα που σημαίνει ότι δεν υπάρχει τίποτα που να εμποδίζει κάποιον άλλο να δημοσιεύσει ή να εγγραφεί στα ίδια θέματα με εσάς. Για να δοκιμάσετε πράγματα, η χρήση ενός δημόσιου μεσίτη είναι καλή, αλλά για πιο σοβαρά έργα θα θέλετε να συνδεθείτε σε έναν μεσίτη με προστασία κωδικού πρόσβασης ή να εκτελέσετε τον δικό σας μεσίτη σε διακομιστή.
Βήμα 6: Λεπτομέρειες εφαρμογής
Onewire
Το ESP8266 έχει μόνο 1 πυρήνα, οπότε οι εργασίες αποκλεισμού, όπως η αναμονή 750ms για τον αισθητήρα θερμοκρασίας για να εκτελέσει μια μέτρηση θερμοκρασίας θα είχε ως αποτέλεσμα το WiFi να μην λειτουργεί καλά, και ίσως ακόμη και μια συντριβή. Στο παράδειγμα του FreeRTOS, καλείτε το vTaskDelay () για να χειριστεί αυτές τις μεγάλες αναμονές, αλλά υπάρχουν επίσης πολλές μικρότερες αναμονές που απαιτούνται μεταξύ ανάγνωσης και εγγραφής που είναι μικρότερες από το τσιμπούρι του συστήματος FreeRTOS και επομένως δεν μπορούν να αποφευχθούν με το vTaskDelay (). Για να τα ξεπεράσετε αυτά, ο οδηγός onewire σε αυτό το έργο γράφτηκε για να τελειώσει από ένα μηχάνημα κατάστασης που οδηγείται από το χρονόμετρο υλικού του ESP8266, το οποίο μπορεί να ενεργοποιήσει γεγονότα τόσο χαμηλά όσο κάθε 10 μικρο δευτερόλεπτα, το οποίο συμβαίνει να είναι το συντομότερο Απαιτείται χρόνος μεταξύ των διαδικασιών ανάγνωσης/εγγραφής. Οι περισσότερες άλλες εφαρμογές χρησιμοποιούν μια κλήση αποκλεισμού για να καθυστερήσουν το_us () ή παρόμοιο για να το χειριστούν, αλλά αν λαμβάνετε συνεχώς ενημερώσεις θερμοκρασίας, όλες αυτές οι καθυστερήσεις αρχίζουν να αθροίζονται, με αποτέλεσμα μια λιγότερο αποκριτική εφαρμογή. Η πηγή για αυτό το τμήμα κώδικα βρίσκεται στο φάκελο extras/onewire.
WS2812B
Το ESP8266 δεν διαθέτει τυπικές επιλογές υλικού για PWM αρκετά γρήγορα ώστε να οδηγεί λωρίδες LED στα 800KHz. Για να το ξεπεράσετε, αυτό το έργο χρησιμοποιεί τον πείρο SPI MOSI για να οδηγήσει τα LED. Ρυθμίζοντας την ταχύτητα ρολογιού του SPI και αλλάζοντας το ωφέλιμο φορτίο SPI, μπορείτε να επιτύχετε αρκετά αξιόπιστο έλεγχο κάθε μεμονωμένης λυχνίας LED. Αυτή η μέθοδος δεν είναι χωρίς ατέλειες- για ένα, τα LED θα πρέπει να τροφοδοτούνται με πηγή 5V και θα πρέπει να προστεθεί ένας επιλογέας στάθμης στην έξοδο του πείρου SPI. Αλλά το 3.3V λειτουργεί. Δεύτερον, υπάρχουν δυσλειτουργίες που συμβαίνουν λόγω ατελούς χρονισμού χρησιμοποιώντας τη μέθοδο SPI. Και τρίτον, τώρα δεν μπορείτε να χρησιμοποιήσετε το SPI για οτιδήποτε άλλο. Πρόσθετο υπόβαθρο για αυτήν τη μέθοδο μπορείτε να βρείτε εδώ και η πηγή για αυτό το τμήμα κώδικα βρίσκεται στο φάκελο extras/ws2812.
Μια πιο αξιόπιστη μέθοδος για την οδήγηση λωρίδων LED είναι η χρήση i2s. Ωστόσο, αυτή η μέθοδος έχει πολλές επιθέσεις για συγκεκριμένα τσιπ, οπότε το SPI φάνηκε να είναι μια καλύτερη επιλογή ως μαθησιακή άσκηση.
Συνιστάται:
Αισθητήρας θερμοκρασίας και κρέατος BBQ στο ESP8266 Με οθόνη: 5 βήματα (με εικόνες)
BBQ Temperature & Meat Sensor στο ESP8266 With Display: Σε αυτό το Instructable θα σας δείξω πώς να φτιάξετε τη δική σας έκδοση ενός εργαλείου BBQ που μετρά την τρέχουσα θερμοκρασία στο μπάρμπεκιου σας και ενεργοποιεί έναν ανεμιστήρα για να ανάψει αν χρειαστεί. Επιπλέον, υπάρχει επίσης ένας αισθητήρας θερμοκρασίας πυρήνα κρέατος attac
ESP8266 NodeMCU + LM35 + Blynk (Μετεωρολογικός σταθμός IOT/ Digitalηφιακός αισθητήρας θερμοκρασίας): 4 βήματα
ESP8266 NodeMCU + LM35 + Blynk (Μετεωρολογικός σταθμός IOT/ Digitalηφιακός αισθητήρας θερμοκρασίας): Γεια σας παιδιά! Σε αυτό το Instructable, θα μάθουμε πώς να διασυνδέουμε τον αισθητήρα LM35 με το NodeMCU και να εμφανίζουμε αυτές τις πληροφορίες θερμοκρασίας μέσω διαδικτύου σε smartphone με εφαρμογή Blynk. (Επίσης σε αυτό το έργο θα χρησιμοποιήσουμε το widget SuperChart στο Bl
Αισθητήρας θερμοκρασίας IoT με ESP8266: 6 βήματα (με εικόνες)
IoT Temperature Sensor With ESP8266: Εμπνεύστηκα να δημιουργήσω έναν αισθητήρα θερμοκρασίας που μπορώ να παρακολουθώ μέσω wifi. Αυτό το έργο δεν είναι νέο, αλλά μου αρέσει η ιδέα να έχω ενδιάμεσο επίπεδο για ασφάλεια και να μην χρειάζεται να ανοίξω θύρα στο δρομολογητή σας στη συσκευή σας IoT. Η βασική ιδέα θα
Απλός αισθητήρας ψηφιακής θερμοκρασίας LED: 3 βήματα
Απλός αισθητήρας ψηφιακής θερμοκρασίας LED: Ένας απλός, χαμηλού κόστους, ψηφιακός ηλεκτρονικός αισθητήρας θερμοκρασίαςH. William James, Αύγουστος 2015 Οι αφηρημένες λυχνίες LED που αναβοσβήνουν περιέχουν ένα μικρό τσιπ IC που τους προκαλεί να αναβοσβήνουν συνεχώς όταν εφαρμόζεται τάση. Αυτή η μελέτη δείχνει ότι η αναλαμπή ra
WiFi IoT Αισθητήρας θερμοκρασίας και υγρασίας. Μέρος: 8 IoT, Αυτοματισμός σπιτιού: 9 βήματα
WiFi IoT Αισθητήρας θερμοκρασίας και υγρασίας. Μέρος: 8 IoT, Αυτοματισμός σπιτιού: ΠροοίμιοΑυτό το άρθρο τεκμηριώνει την πρακτική ανθεκτική και συνεχή ανάπτυξη ενός παλαιότερου Instructable: «Pimping» της πρώτης σας συσκευής IoT WiFi. Μέρος 4: IoT, Home Automation που περιλαμβάνει όλη την απαραίτητη λειτουργικότητα λογισμικού για να ενεργοποιηθεί η επιτυχία