- Τι είναι το MicroPython;
- Γιατί το MicroPython για NodeMCU;
- Τι είναι το ESP8266 (NodeMCU);
- Χρησιμοποιείται υλικό
- Εγκατάσταση του υλικολογισμικού MicroPython για ESP8266
- Επικοινωνία με το NodeMCU με το PuTTY
- Μεταφόρτωση ενός κώδικα Blink LED με βάση το Python χρησιμοποιώντας το Ampy
- MicroPython στο ESP8266: Λήψη θερμοκρασίας και υγρασίας με DHT22
Για έναν αρχάριο που ενδιαφέρεται για τον προγραμματισμό μικροελεγκτών με δυνατότητα Wi-Fi όπως το ESP8266, η κατανόηση του περιβάλλοντος προγραμματισμού ESP-IDF ή του Arduino IDE μπορεί να είναι μια αποθαρρυντική εργασία, η κρυπτική σύνταξη των γλωσσών C και C ++ απαιτεί περισσότερη γνώση της επιστήμης των υπολογιστών που είναι Γιατί αυτές οι γλώσσες δεν είναι πάντα φιλικές για αρχάριους, οπότε σε αυτό το άρθρο, θα μάθουμε να δημιουργούμε και να προγραμματίζουμε ένα ESP8266 με MicroPython και τέλος, θα λάβουμε τα δεδομένα θερμοκρασίας και υγρασίας από τον αγαπημένο μας αισθητήρα θερμοκρασίας και υγρασίας DHT22. Προηγουμένως είχαμε κάνει επίσης ένα σεμινάριο σχετικά με τον τρόπο προγραμματισμού του ESP32 με το Micro Python, μπορείτε επίσης να το ελέγξετε αν ενδιαφέρεστε.
Τι είναι το MicroPython;
Μπορούμε να πούμε ότι το MicroPython είναι μια εκτυπωμένη έκδοση του python, σχεδιασμένη να λειτουργεί με μικροελεγκτές και ενσωματωμένα συστήματα. Η διαδικασία σύνταξης και κωδικοποίησης του MicroPython μοιάζει με τον πύθωνα. Έτσι, εάν γνωρίζετε ήδη το python, γνωρίζετε ήδη πώς να γράψετε τον κωδικό σας χρησιμοποιώντας το MicroPython. Εάν είστε οπαδός της Python, μπορείτε να δείτε αυτό το άρθρο.
Το MicroPython αναπτύχθηκε στο Ηνωμένο Βασίλειο, από έναν επικεφαλής της ομάδας από τον Damion jones, και ξεκίνησαν ένα Kickstarter ενώ επέστρεψαν, όπου ξεκίνησαν ένα συγκεκριμένο σύνολο πινάκων ανάπτυξης που θα χρησιμοποιούν υλικολογισμικό, το οποίο σας επιτρέπει να εκτελείτε το MicroPython πάνω από αυτό, ότι Το υλικολογισμικό έχει πλέον μεταφερθεί για να εκτελεστεί στο ESP8266, το οποίο σε αυτό το άρθρο θα μάθετε.
Γιατί το MicroPython για NodeMCU;
Η Python είναι μια από τις πιο ευρέως χρησιμοποιούμενες και εύχρηστες γλώσσες προγραμματισμού μέχρι σήμερα. Έτσι, με την εισαγωγή του MicroPython, ο προγραμματισμός μικροελεγκτών με βάση το υλικό έγινε πολύ εύκολος. Εάν δεν έχετε προγραμματίσει ποτέ έναν μικροελεγκτή και θέλετε να ξεκινήσετε να μαθαίνετε να προγραμματίζετε, το MicroPython είναι μια καλή αρχή.
Το MicroPython χρησιμοποιεί μια απογυμνωμένη έκδοση των τυπικών βιβλιοθηκών Python, επομένως όλες οι τυπικές βιβλιοθήκες δεν είναι διαθέσιμες. Όμως, το MicroPython περιλαμβάνει απλές και εύχρηστες λειτουργικές μονάδες για διασύνδεση με το υλικό που σημαίνει ότι με τη βοήθεια του MicroPython, η ανάγνωση και η εγγραφή σε ένα μητρώο GPIO έγινε πολύ πιο εύκολο.
Ο απώτερος στόχος του MicroPython είναι να κάνουμε τον προγραμματισμό μικροελεγκτών όσο το δυνατόν απλούστερο, έτσι μπορεί να χρησιμοποιηθεί από οποιονδήποτε. Με την εισαγωγή βιβλιοθηκών MicroPython και η σύνταξη κώδικα γίνεται εύκολη, ο παρακάτω κώδικας είναι ένα απλό παράδειγμα που αναβοσβήνει το ενσωματωμένο LED της πλακέτας NodeMCU, θα συζητήσουμε λεπτομερώς τον κώδικα μετά το άρθρο.
από μηχάνημα εισαγωγής Pin από χρόνο εισαγωγής ύπνου LED = Pin (2, Pin.OUT) ενώ True: LED.value (not LED.value ()) sleep (0.5)
Τι είναι το ESP8266 (NodeMCU);
Το ESP8266 είναι μια μονάδα Wi-Fi χαμηλού κόστους, σχεδιασμένη για εφαρμογές που σχετίζονται με το Internet of Things (IoT).
Έρχεται με καρφίτσες εισόδου και εξόδου γενικής χρήσης (GPIOs) και υποστηρίζει επίσης ποικιλία πρωτοκόλλων που χρησιμοποιούνται συνήθως, όπως SPI, I2C, UART και πολλά άλλα. Ωστόσο, το πιο όμορφο χαρακτηριστικό αυτού του μικροελεγκτή είναι ότι διαθέτει ενσωματωμένο Wi-Fi. Με αυτό, μπορούμε να συνδεθούμε με οποιοδήποτε Wi-Fi 2.4GHz πολύ εύκολα.
Τώρα τα βασικά είναι εκτός δρόμου που μπορούμε να προχωρήσουμε στο πρακτικό μέρος όπου θα σας δείξουμε το απαιτούμενο υλικό και τη διαδικασία εγκατάστασης του MicroPython στο ESP8266 IC.
Χρησιμοποιείται υλικό
Λίστα υλικών που χρησιμοποιούνται
- 1 x Breadboard
- 1 x ESP8266 (NodeMCU)
- 1 x DHT22 (Αισθητήρας θερμοκρασίας & υγρασίας)
- 1 x 3 mm LED (δίοδος εκπομπής φωτός)
- Αντίσταση 1 x 1K
- 5 x καλώδιο βραχυκυκλωτή
Εγκατάσταση του υλικολογισμικού MicroPython για ESP8266
Υπάρχουν δύο τρόποι για την εγκατάσταση του υλικολογισμικού MicroPython στο ESP8266 σε αυτό το άρθρο. Θα μιλήσουμε και για τους δύο, αλλά πρώτα, πρέπει να το κατεβάσουμε.
Λήψη του υλικολογισμικού MicroPython για ESP8266:
Πριν συνδέσουμε την πλακέτα NodeMCU (ESP8266) στον υπολογιστή μας, πρέπει να κατεβάσουμε την τελευταία έκδοση του MicroPython μετά από αυτό να μπορέσουμε να εγκαταστήσουμε το υλικολογισμικό στο NodeMCU, μπορείτε να το κατεβάσετε από την επίσημη σελίδα λήψης Micropython
Εγκατάσταση του υλικολογισμικού MicroPython στο ESP8266:
Προτού μπορέσουμε να εγκαταστήσουμε το υλικολογισμικό στο ESP8266, πρέπει να βεβαιωθούμε ότι έχουμε τη σωστή μονάδα δίσκου για το μετατροπέα USB σε σειριακό, το μεγαλύτερο μέρος της πλακέτας NodeMCU χρησιμοποιεί ένα CP2102 μετατροπέα USB σε UART IC και γι 'αυτό πρέπει να πραγματοποιήσουμε λήψη και εγκατάσταση του πρόγραμμα οδήγησης για το μετατροπέα CP2102 USB σε UART, Μόλις γίνει λήψη και εγκατάσταση της μονάδας δίσκου, πρέπει να κατεβάσετε το esptool, το οποίο είναι ένα εργαλείο που βασίζεται σε πύθωνα, φτιαγμένο για ανάγνωση και εγγραφή του υλικολογισμικού στο ESP8266.
Ο ευκολότερος τρόπος για να αποκτήσετε το Python είναι μέσω του Microsoft Store, από εκεί πρέπει να κατεβάσετε και να εγκαταστήσετε ένα αντίγραφο του Python. Μόλις εγκατασταθεί το Python, μπορούμε να χρησιμοποιήσουμε την εντολή pip3 install esptool για να εγκαταστήσουμε το esptool. Η διαδικασία θα μοιάζει με την παρακάτω εικόνα.
Μόλις εγκατασταθεί, ελέγξτε αν έχετε πρόσβαση στο esptool από το τερματικό εντολών.
Για να το κάνετε αυτό, απλώς εκτελέστε την εντολή, έκδοση esptool.py εάν λάβετε ένα παράθυρο όπως μια παρακάτω εικόνα, έχετε εγκαταστήσει με επιτυχία το esptool στον υπολογιστή σας Windows.
Και εάν αντιμετωπίζετε προβλήματα με την πρόσβαση στο esptool από το παράθυρο εντολών, δοκιμάστε να προσθέσετε την πλήρη διαδρομή εγκατάστασης στη μεταβλητή περιβάλλοντος των παραθύρων.
Εύρεση του PORT που διατίθεται για τον πίνακα NodeMCU:
Τώρα πρέπει να μάθουμε την κατανεμημένη θύρα για τον πίνακα NodeMCU, για να το κάνουμε απλώς πηγαίνετε στο παράθυρο του διαχειριστή της συσκευής σας και αναζητήστε μια επιλογή που ονομάζεται Ports αν επεκτείνετε ότι μπορείτε να μάθετε τη θύρα που σχετίζεται με τον πίνακα NodeMCU. Για εμάς, μοιάζει με την παρακάτω εικόνα.
Διαγραφή της μνήμης Flash του ESP8266:
Τώρα έχουμε καταλάβει τη συνδεδεμένη θύρα COM, μπορούμε να προετοιμάσουμε τη μονάδα NodeMCU διαγράφοντας τη μνήμη flash της. Για να γίνει αυτό, χρησιμοποιείται η ακόλουθη εντολή, esptool.py --port COM6 erase_flash . Η διαδικασία θα μοιάζει με την παρακάτω εικόνα.
Εγκατάσταση του υλικολογισμικού:
Αν εκτελέσετε την ακόλουθη εντολή, θα εγκαταστήσετε το δυαδικό MicroPython στον πίνακα NodeMCU, αφού εγκατασταθεί αυτό το δυαδικό θα μας επιτρέψει να ανεβάσουμε τα προγράμματα python και να επικοινωνήσουμε με το βρόχο Ανάγνωση και εκτύπωση .
esptool.py --port COM6 --baud 460800 write_flash --flash_size = ανίχνευση 0 esp8266-20200911-v1.13.bin
Η διαδικασία θα μοιάζει με την παρακάτω εικόνα,
Λάβετε υπόψη ότι κατά τη στιγμή της εγκατάστασης, το δυαδικό ήταν στην επιφάνεια εργασίας μου, οπότε έχω ένα cd στην επιφάνεια εργασίας μου και εκτελώ την εντολή.
Τώρα που έχει γίνει, ήρθε η ώρα να επικοινωνήσετε με τον πίνακα και να αναβοσβήσετε μερικά LED.
Επικοινωνία με το NodeMCU με το PuTTY
Τώρα ας ξεκινήσουμε το πρώτο μας πρόγραμμα Hello World χρησιμοποιώντας το PuTTY, το PuTTY για να το κάνουμε, γι 'αυτό πρέπει να ορίσουμε τον τύπο σύνδεσης ως Serial, στη συνέχεια να ορίσουμε τη σειριακή γραμμή (στην περίπτωσή μας το COM6) και τέλος, θέσαμε την ταχύτητα σε 115200 baud.
Εάν όλα γίνουν σωστά, θα εμφανιστεί ένα παράθυρο παρόμοιο με την παρακάτω εικόνα και μπορούμε εύκολα να γράψουμε τον κώδικα σε αυτό, συνήθως λειτουργεί σαν ένα τερματικό iPython. Επίσης, τρέξαμε το πρώτο μας πρόγραμμα γειά σου κόσμου, το οποίο είναι μόνο δύο απλές γραμμές, και μόλις βάλουμε την έντυπη δήλωση, λάβαμε την απάντησή μας.
Μεταφόρτωση ενός κώδικα Blink LED με βάση το Python χρησιμοποιώντας το Ampy
Η πρόσβαση στο MicroPython με τη βοήθεια του τερματικού PuTTY είναι ένας καλός τρόπος επικοινωνίας με τη μονάδα ESP, αλλά ένας άλλος εύκολος τρόπος είναι να ανεβάσετε τον κώδικα είναι μέσω του εργαλείου Adafruit Ampy, για να εγκαταστήσετε το ampy, μπορούμε απλώς να εκτελέσουμε μια απλή pip3 εγκατάσταση adafruit- εντολή ampy και θα εγκαταστήσει το ampy στον υπολογιστή μας. Η διαδικασία θα μοιάζει με την παρακάτω εικόνα.
Τώρα μόλις το έχετε, χρειαζόμαστε ακόμα τις πληροφορίες μας σχετικά με τη σειριακή θύρα στην οποία είμαστε συνδεδεμένοι. Στην περίπτωσή μας, είναι COM6. Τώρα πρέπει απλώς να γράψουμε τον κωδικό LED Blink με το MicroPython, για αυτό, χρησιμοποιήσαμε τον οδηγό που παρέχεται στον επίσημο ιστότοπο micro python
Με τη βοήθεια του οδηγού, δημιουργείται ο ακόλουθος κωδικός.
από μηχάνημα εισαγωγής Pin από χρόνο εισαγωγής ύπνου LED = Pin (2, Pin.OUT) ενώ True: LED.value (not LED.value ()) sleep (0.5)
Ο κωδικός είναι πολύ απλός. Πρώτα, εισάγουμε τη βιβλιοθήκη Pin από το μηχάνημα. Τάξη καρφιτσών. Στη συνέχεια, πρέπει να εισαγάγουμε τη βιβλιοθήκη χρόνου, η οποία χρησιμοποιείται για τη λειτουργία καθυστέρησης. Στη συνέχεια, ορίζουμε το Pin2 (το οποίο είναι το ενσωματωμένο LED που είναι συνδεδεμένο στη μονάδα ESP12E) ως έξοδο. Στη συνέχεια, δημιουργήσαμε ένα βρόχο για λίγο όπου ανάβουμε και σβήνουμε το LED με καθυστέρηση 500ms
Έτσι ανεβάζετε τον κωδικό στο NodeMCU. Για να το κάνετε αυτό, πρέπει να εκτελέσετε την ακόλουθη εντολή ampy , ampy --port COM6 βάλτε main.py
Εάν το πρόγραμμα εκτελεστεί διορθωθεί, θα δείτε ένα LED να αναβοσβήνει όπως φαίνεται παρακάτω.
Σημείωση: Κατά τη μεταφόρτωση του κώδικα, έχω ορίσει την τρέχουσα θέση εντολής στην επιφάνεια εργασίας μου, οπότε δεν χρειάστηκε να καθορίσω μια πλήρη διαδρομή για το αρχείο main.py, εάν αυτό δεν ισχύει, πρέπει να καθορίσετε την πλήρη διαδρομή για τον κύριο υπολογιστή σας.py αρχείο.
Στη συνέχεια, προχωράμε στη λήψη των δεδομένων θερμοκρασίας και υγρασίας από τον αισθητήρα DHT22.
MicroPython στο ESP8266: Λήψη θερμοκρασίας και υγρασίας με DHT22
Σχηματικό για διασύνδεση DHT22 με NodeMCU:
Το πλήρες διάγραμμα κυκλώματος για αυτό το έργο βρίσκεται παρακάτω. Έχω χρησιμοποιήσει το fritzing για να δημιουργήσω αυτό το κύκλωμα.
Όπως μπορείτε να δείτε, το κύκλωμα είναι πολύ απλό και μπορεί να χτιστεί εύκολα σε ένα breadboard χρησιμοποιώντας καλώδια jumper. Το πλήρες κύκλωμα μπορεί να τροφοδοτηθεί χρησιμοποιώντας τη θύρα micro-USB στο NodeMCU. Η ρύθμιση του υλικού μου φαίνεται παρακάτω.
Κώδικας:
Είναι πολύ εύκολο να λάβετε δεδομένα θερμοκρασίας και υγρασίας από έναν αισθητήρα DHT22 ή DHT11 χρησιμοποιώντας ένα MicroPython επειδή το υλικολογισμικό MicroPython που εγκαταστήσαμε νωρίτερα συνοδεύεται από μια ενσωματωμένη βιβλιοθήκη DHT.
1. Ξεκινάμε τον κωδικό μας εισάγοντας τη βιβλιοθήκη DHT και τη βιβλιοθήκη καρφιτσών από την κλάση μηχανήματος.
εισαγωγή dht από το μηχάνημα εισαγωγής Pin
2. Στη συνέχεια, δημιουργούμε ένα αντικείμενο DHT που αναφέρεται στον πείρο, στον οποίο προσαρτήσαμε τον αισθητήρα μας.
αισθητήρας = dht.DHT22 (Pin (14))
3. Τέλος, για να μετρήσουμε την τιμή του αισθητήρα, πρέπει να χρησιμοποιήσουμε τις ακόλουθες τρεις εντολές.
sensor.measure () sensor.temperature () sensor.humidity ()
Για τον τελικό κωδικό, το βάζουμε σε λίγο και εκτυπώνουμε τις τιμές που σημαίνουν το τέλος του κώδικα μας Επίσης, ο αισθητήρας DHT22 χρειάζεται 2 δευτερόλεπτα για να μπορεί να διαβάσει δεδομένα, οπότε πρέπει να προσθέσουμε καθυστέρηση 2 δευτερολέπτων
από το μηχάνημα εισαγωγής Pin από το χρόνο εισαγωγής εισαγωγής ύπνου dht dht22 = dht.DHT22 (Pin (14)) ενώ True: try: sleep (2) dht22.measure () temp = dht22.temperature () hum = dht22.humidity () print ('Temperature:% 3.2f C'% temp) εκτύπωση ('Υγρασία:% 3.2f %%'% hum) εκτός OSError as e: print ('Αποτυχία ανάγνωσης δεδομένων από τον αισθητήρα DHT22.')
Μόλις ολοκληρώσουμε την κωδικοποίηση, μπορούμε να ανεβάσουμε τον κώδικα με τη βοήθεια της εντολής ampy.
ampy --port COM6 βάλτε main.py
Μετά την επιτυχή εκτέλεση του κώδικα, μπορείτε να παρακολουθείτε τις τιμές θερμοκρασίας και υγρασίας σε οποιαδήποτε σειριακή οθόνη. Έχω χρησιμοποιήσει στόκο και όπως μπορείτε να δείτε παρακάτω, μπόρεσα να λάβω τιμές θερμοκρασίας και υγρασίας στο COM5.
Ελπίζω να απολαύσατε το άρθρο και να μάθετε κάτι χρήσιμο. Εάν έχετε οποιεσδήποτε ερωτήσεις, μπορείτε να τις αφήσετε στην ενότητα σχολίων παρακάτω ή να χρησιμοποιήσετε τα φόρουμ μας για να δημοσιεύσετε άλλες τεχνικές ερωτήσεις.