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

Ξεκινώντας με την Python για ESP8266 & ESP32: 6 βήματα
Ξεκινώντας με την Python για ESP8266 & ESP32: 6 βήματα

Βίντεο: Ξεκινώντας με την Python για ESP8266 & ESP32: 6 βήματα

Βίντεο: Ξεκινώντας με την Python για ESP8266 & ESP32: 6 βήματα
Βίντεο: Урок №6. Включаем два ядра на работу в микроконтроллере ESP32 в среде программирования Arduino IDE. 2024, Ιούλιος
Anonim
Ξεκινώντας με την Python για ESP8266 & ESP32
Ξεκινώντας με την Python για ESP8266 & ESP32

Bacground

Το ESP8266 και ο μικρότερος μεγάλος του αδελφός ESP32 είναι μικροτσίπ Wi-Fi χαμηλού κόστους με πλήρη στοίβα TCP/IP και δυνατότητα μικροελεγκτή. Το τσιπ ESP8266 πρωτοεμφανίστηκε στην κοινότητα των κατασκευαστών το 2014. Από τότε, η χαμηλή τιμή (<5 USD), η δυνατότητα Wi-Fi, η ενσωματωμένη μνήμη flash 1 ή 4 MB και μια ποικιλία διαθέσιμων προγραμμάτων boards, έχει κάνει το τσιπ ESP ένα από τα πιο δημοφιλή μικροελεγκτές για έργα WiFi και IoT DIY.

Το MicroPython είναι μια λεπτή και αποτελεσματική εφαρμογή της ολοένα και πιο δημοφιλούς γλώσσας προγραμματισμού Python που περιλαμβάνει ένα μικρό υποσύνολο της τυπικής βιβλιοθήκης Python και είναι βελτιστοποιημένη για να λειτουργεί σε μικροελεγκτές.

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

Το έργο MiPy-ESP

Πίσω στο 2015, τα πρώτα μου έργα με το ESP8266 ξεκίνησαν με το τσιπ ESP-01 χρησιμοποιώντας Arudions για εκτέλεση εντολών AT chip μέσω σειριακής σύνδεσης. Μετά από αυτό, τα επόμενα χρόνια εφάρμοσα τον πυρήνα Arduino για το ESP8266 για τον προγραμματισμό των τσιπ με τη γλώσσα C ++. Αυτό λειτουργεί καλά, αλλά για έναν λάτρη της Python, η ανακάλυψή μου για την εφαρμογή MicroPython του Python 3 ήταν μεγάλη είδηση.

Το έργο MiPy-ESP είναι ένα ευέλικτο πλαίσιο που εφαρμόζει το MicroPython για έργα πλήρους στοίβας Python IoT στους μικροελεγκτές της οικογένειας ESP.

Το πλαίσιο έχει αναπτυχθεί από την ομάδα προγραμματιστών της LeGarage Technical Committe Software Developer Team (LG-TC-SWDT-01) με στόχο την αντικατάσταση του ήδη καθιερωμένου κώδικα που βασίζεται σε C ++ για εφαρμογές μικροελεγκτών.

Το έργο παρέχει βασικές δυνατότητες όπως π.χ.

  • Διαδικασίες σύνδεσης δικτύου
  • Διαδικτυακός διακομιστής σημείου πρόσβασης τσιπ (για σύνδεση wifi και προβολή ιστοσελίδων τσιπ για δεδομένα εισόδου/εξόδου)
  • MQTT λειτουργίες
  • Καταγραφή/εντοπισμός σφαλμάτων
  • Προγραμματισμός συμβάντων μικροελεγκτών
  • Ρουτίνες εισόδου/εξόδου υλικού

Με ένα κύριο σενάριο συμπαγούς κώδικα (main.py), όλα με καθολική διαμόρφωση (config.py).

Αυτός ο κώδικας mictocontroller λειτουργεί με ισχυρή συντήρηση συνδέσεων τσιπ σε δίκτυο WiFi και μεσίτες MQTT. Οι υπάρχουσες μονάδες MicroPython για διάφορα υλικά μπορούν εύκολα να ενσωματωθούν στο σύστημα.

Το πλαίσιο MiPy-ESP έχει γίνει η ραχοκοκαλιά όλων των χόμπι ηλεκτρονικών μας έργων IoT που περιλαμβάνουν μικροελεγκτές της οικογένειας ESP. Έχει δοκιμαστεί σε αρκετούς πίνακες οικογενειών ESP, όπως οι πίνακες NodeMCU, Wemos και Lolin.

Το παρακάτω σεμινάριο είναι ένας οδηγός για το πώς να ξεκινήσετε με μικροελεγκτές οικογένειας ESP και MicroPython χρησιμοποιώντας το πλαίσιο MiPy-ESP.

Βήμα 1: Ο πίνακας Wemos D1 Mini ESP8266

Ο πίνακας Wemos D1 Mini ESP8266
Ο πίνακας Wemos D1 Mini ESP8266
Ο πίνακας Wemos D1 Mini ESP8266
Ο πίνακας Wemos D1 Mini ESP8266
Ο πίνακας Wemos D1 Mini ESP8266
Ο πίνακας Wemos D1 Mini ESP8266
Ο πίνακας Wemos D1 Mini ESP8266
Ο πίνακας Wemos D1 Mini ESP8266

Το πλαίσιο MiPy-ESP λειτουργεί με τους περισσότερους μικροελεγκτές που βασίζονται σε ESP8266.

Ο πίνακας ανάπτυξης Wemos D1 βασίζεται σε τσιπ ESP-8266EX. Σε ένα αποτύπωμα 2,5 x 3,5 cm, διαθέτει μνήμη flash 4MB, 11 ψηφιακές ακίδες εισόδου/εξόδου, όλες τις ακίδες υποστηρίζει διακοπή, PWM, I2C, SPI, σειριακή και 1 αναλογική είσοδο με μέγιστη είσοδο 3,3V, μπορεί να λειτουργήσει με ισχύ 5V, έχει σύνδεση micro USB και είναι συμβατή με το breadboard. Η χαμηλή τιμή και το μικρό του μέγεθος το έχουν κάνει τον αγαπημένο μου πίνακα ESP.

Επιπλέον, η έκδοση D1 mini pro της πλακέτας έρχεται με δυνατότητα σύνδεσης εξωτερικής κεραίας, αυξάνοντας σημαντικά το εύρος σύνδεσης (+100 m). Προσθέτοντας σε αυτό, ο πίνακας έρχεται επίσης με μια ποικιλία από σανίδες επέκτασης εκτός συσκευασίας με παρόμοιο συμπαγές μέγεθος.

Βήμα 2: Προετοιμασία για MicroPython στο τσιπ ESP

Προετοιμασία για MicroPython στο ESP Chip
Προετοιμασία για MicroPython στο ESP Chip

Σε αυτό το πρώτο βήμα, θα το κάνετε

  • Συνδέστε την πλακέτα ESP μέσω USB στον υπολογιστή σας
  • Εγκαταστήστε το λογισμικό Esptool για να αναβοσβήνει το τσιπ
  • Διαγραφή μνήμης τσιπ
  • Φλας το τσιπ με το υλικολογισμικό MicroPython
  • Εγκαταστήστε το Rshell για να ενεργοποιήσετε την αλληλεπίδραση της γραμμής εντολών με το τσιπ σας
  • Εγκατάσταση mpy-cross (για συλλογή αρχείων.py σε δυαδικό)

Η σύνδεση της πλακέτας στον υπολογιστή σας μέσω USBBoards με ενσωματωμένη σειριακή θύρα USB καθιστά το UART διαθέσιμο στον υπολογιστή σας και είναι η ευκολότερη επιλογή για να ξεκινήσετε. Για πίνακες χωρίς σύνδεση USB, μια μονάδα FTDI με USB σε σειριακή μπορεί να χρησιμοποιηθεί για τη σύνδεση των ακίδων GPIO για αναβοσβήσιμο που συνδέονται με τον εξωτερικό κόσμο, αλλά αυτό δεν καλύπτεται σε αυτό το σεμινάριο.

Για το MicroPython που χρησιμοποιεί τον κωδικό MiPy-ESP, η ελάχιστη απαίτηση για μέγεθος φλας τσιπ είναι 1MB. Υπάρχει επίσης μια ειδική κατασκευή για πίνακες με 512kB, αλλά αυτό δεν υποστηρίζει σύστημα αρχείων, από το οποίο εξαρτάται το MiPy-ESP.

Όταν χρησιμοποιείτε καλώδιο USB, η πλακέτα τροφοδοτείται από τον υπολογιστή σας ενώ είναι συνδεδεμένη. Αυτό επιτρέπει επίσης τον προγραμματισμό και τον εντοπισμό σφαλμάτων στη σειριακή σύνδεση. Όταν μεταφορτωθεί ο κώδικας έργου και αναπτυχθεί το έργο σας, εφαρμόζεται εξωτερική τροφοδοσία στους πείρους τροφοδοσίας της πλακέτας.

Μπορείτε να βρείτε πληροφορίες σχετικά με το λογισμικό Esptool στο αποθετήριο Esptool GitHub. Εάν θέλετε να χρησιμοποιήσετε τα Windows/Linux/OSX (MAC), ο παραπάνω σύνδεσμος το καλύπτει επίσης. Το πακέτο Python μπορεί να εγκατασταθεί από

pip εγκατάσταση esptool

Για χρήστες Linux, τα πακέτα για το Esptool διατηρούνται για το Debian και το Ubuntu και μπορούν επίσης να εγκατασταθούν με

sudo apt install esptool

Διαγραφή μνήμης flash ESP Χρησιμοποιώντας το Esptool, μπορείτε στη συνέχεια να διαγράψετε τη μνήμη flash ESP με την εντολή

esptool.py --port /dev /ttyUSB0 erase_flash

Λήψη του υλικολογισμικού MicroPyton Το υλικολογισμικό MicroPython βρίσκεται σε ένα αρχείο.bin που μπορείτε να κατεβάσετε από τον ιστότοπο της MicroPython.

Ο τρέχων κύριος κλάδος του repo έχει δοκιμαστεί και λειτουργεί με το Micropython v.1.12. Για να διασφαλίσετε την επιτυχία με το πλαίσιο MiPY-ESP, κατεβάστε το αρχείο 'esp8266-20191220-v1.12.bin' από αυτόν τον σύνδεσμο και γράψτε το υλικολογισμικό στο τσιπ με την εντολή:

esptool.py --port /dev /ttyUSB0 --baud 460800 write_flash --flash_size = εντοπίστε 0 esp8266-20191220-v1.12.bin

Το πακέτο Rshell επιτρέπει την αλληλεπίδραση της γραμμής εντολών με το περιβάλλον MicroPython που είναι εγκατεστημένο στο τσιπ. Μπορεί να βρεθεί σε αυτόν τον σύνδεσμο. Το Rshell είναι ένα απλό κέλυφος που εκτελείται στον κεντρικό υπολογιστή και χρησιμοποιεί το raw-REPL του MicroPython για να στείλει αποσπάσματα python στον πίνακα για να λάβει πληροφορίες για το σύστημα αρχείων και να αντιγράψει αρχεία από και προς το σύστημα αρχείων της MicroPython. Το REPL σημαίνει Read Evaluate Print Loop και είναι το όνομα που δίνεται στη διαδραστική προτροπή MicroPython στην οποία μπορείτε να έχετε πρόσβαση στο ESP8266. Η χρήση του REPL είναι μακράν ο ευκολότερος τρόπος για να δοκιμάσετε τον κώδικα και να εκτελέσετε εντολές. Εγκαταστήστε το Rshell με την εντολή:

sudo pip εγκατάσταση rshell

Η εγκατάσταση του μεταγλωττιστή mpy-cross MicroPython μπορεί να εφαρμοστεί με ascii.py αρχεία που μεταφορτώνονται στο σύστημα αρχείων τσιπ. Το MicroPython ορίζει επίσης την έννοια των αρχείων.mpy που είναι μια δυαδική μορφή αρχείου κοντέινερ που περιέχει προ -μεταγλωττισμένο κώδικα και η οποία μπορεί να εισαχθεί σαν μια κανονική μονάδα.py. Με τη μεταγλώττιση αρχείων.py σε.mpy, θα είναι διαθέσιμη περισσότερη μνήμη RAM για τον τρέχοντα κωδικό σας - και αυτό είναι απαραίτητο για να έχετε μια λειτουργική βασική μονάδα του πλαισίου MiPy -ESP.

Για την ανάπτυξη κώδικα MiPy-ESP, ένας μεταγλωττιστής mpy-cross MicroPython συγκεντρώνει τα σενάρια.py σε.mpy πριν από τη μεταφόρτωση του τσιπ. Εγκαταστήστε το πακέτο mpy-cross σύμφωνα με τις οδηγίες σε αυτόν τον σύνδεσμο. Εναλλακτικά, η εντολή mpy-cross μπορεί να εγκατασταθεί με εντολή Python pip ή να εκτελεστεί από τη διαδρομή φακέλου mpy-cross, εάν κλωνοποιήσετε το αποθετήριο MicroPython από το GitHub εδώ.

Έχετε τώρα το MicroPython και όλα τα απαραίτητα εργαλεία εγκατεστημένα για να ξεκινήσετε με την κατασκευή του πρώτου σας έργου MiPy-ESP

Βήμα 3: Ξεκινώντας με το MiPy-ESP

Ξεκινώντας με το MiPy-ESP
Ξεκινώντας με το MiPy-ESP

Σε αυτό το βήμα θα το κάνετε

Κατεβάστε το πλαίσιο MyPy-ESP

Λήψη του πλαισίου MiPy-ESPΤο έργο MiPy-ESP μπορείτε να το βρείτε στο GitHub σε αυτό το αποθετήριο κώδικα. Από το GitHub μπορείτε να κατεβάσετε τη δομή του αρχείου αποθετηρίου ή να την κλωνοποιήσετε στον υπολογιστή σας μέσω

git clone

Με το αποθετήριο κώδικα εγκατεστημένο στον υπολογιστή σας, έχετε πλέον όλες τις μονάδες κώδικα που χρειάζεστε για τη δημιουργία ενός out-of-the-box έργου ESP IoT. Περισσότερες λεπτομέρειες για την εργαλειοθήκη στο επόμενο βήμα.

Βήμα 4: Η αρχιτεκτονική πλαίσιο MiPy-ESP

Η αρχιτεκτονική πλαίσιο MiPy-ESP
Η αρχιτεκτονική πλαίσιο MiPy-ESP

Σε αυτό το βήμα θα το κάνετε

μάθετε για τη ροή εργασίας του κώδικα MiPy-ESP

Αρχιτεκτονική κώδικα MiPy-ESP

Όλες οι ενότητες πλαισίου Python βρίσκονται στο φάκελο /src του αποθετηρίου κώδικα MiPY-ESP. Ο φάκελος src/core περιέχει τις βασικές ενότητες που περιλαμβάνονται σε κάθε έργο. Ο φάκελος src/drivers διαθέτει μια επιλογή λειτουργικών μονάδων για διάφορες συσκευές που πρέπει να συνδεθούν στο τσιπ σας. Ο φάκελος src/βοηθητικά προγράμματα περιέχει προαιρετικές μονάδες βοηθητικών προγραμμάτων που πρέπει να συμπεριληφθούν στο έργο σας.

Τα αρχεία main.py και config.py βρίσκονται στο src/ φάκελο. Αυτά είναι τα κύρια αρχεία για επεξεργασία για τη δημιουργία του έργου σας:

config.py:

Αυτό το αρχείο είναι το καθολικό αρχείο διαμόρφωσης για το έργο σας. Έχει διάφορες ρυθμίσεις, όλες με περιγραφικά σχόλια στο αρχείο.

main.py:

Αυτό είναι το κύριο σενάριο για τον βρόχο κώδικα μικροελεγκτή. Περιέχει τον κώδικα που αφορά την εφαρμογή στο πλαίσιο. Κατά την εκκίνηση του τσιπ, το main.py εκτελεί και εισάγει όλες τις λειτουργικές μονάδες που εξαρτώνται από το έργο με δεδομένες εισόδους από το αρχείο config.py. Το παραπάνω διάγραμμα ροής δείχνει τη διάταξη του σεναρίου main.py.

Το παραπάνω σχήμα περιγράφει τη ροή εργασίας του main.py:

  1. Κατά την εκκίνηση, ο κώδικας επιχειρεί να συνδέσει το τσιπ σε δίκτυο Wi-Fi. Προηγουμένως εφαρμοσμένα δίκτυα και οι κωδικοί πρόσβασής τους (κρυπτογραφημένοι στο τσιπ) αποθηκεύονται στη μνήμη flash. Τα SSIDs δικτύου και οι κωδικοί πρόσβασής τους μπορούν να παρασχεθούν στο αρχείο wifi.json με τη μορφή {" SSID1 ":" Κωδικός πρόσβασης "," SSID ":" Κωδικός πρόσβασης2 "}. Τα δεδομένα δίκτυα σε αυτό το αρχείο αποθηκεύονται, οι κωδικοί πρόσβασης κρυπτογραφούνται και το αρχείο διαγράφεται κατά την εκκίνηση.
  2. Εάν δεν υπάρχουν ήδη γνωστά δίκτυα, ο κώδικας δημιουργεί έναν διακομιστή ιστού σημείου πρόσβασης (AP). Το SSID και ο κωδικός πρόσβασης του διακομιστή AP στο αρχείο config.py. Με τη σύνδεση στο SSID του τσιπ, μια ιστοσελίδα για σύνδεση του τσιπ σε Wi-Fi εμφανίζεται στη διεύθυνση 192.168.4.1. Τα ανιχνευμένα δίκτυα εμφανίζονται σε ένα μενού ή το SSID μπορεί να εισαχθεί με μη αυτόματο τρόπο (κρυφά δίκτυα) μαζί με κωδικό πρόσβασης Wi-Fi Το Μετά την επιτυχή σύνδεση του τσιπ σε Wi-Fi, ο διακομιστής AP απενεργοποιείται και ο κωδικός main.py προχωρά στα επόμενα βήματα.
  3. Στην ενότητα Ρύθμιση του main.py,

    • καθορίζονται οι λειτουργίες για εργασίες και ανακλήσεις (κ.λπ. κλήσεις MQTT) και τακτικά συμβάντα.
    • Ορίζονται διαφορετικές χρονομετρημένες εργασίες για τις λειτουργίες εκτέλεσης.
    • Ο πελάτης μεσίτης MQTT έχει δημιουργηθεί
  4. Στη συνέχεια, ο κώδικας μπαίνει στον κύριο βρόχο μικροελεγκτή,

    • συνεχής έλεγχος συνδέσεων μεσίτη δικτύου και MQTT,
    • Συνδρομές MQTT,
    • hardware I/O
    • και προγραμματισμένες εργασίες.
    • Σε περίπτωση απώλειας σύνδεσης μεσίτη δικτύου ή MQTT, ο κώδικας προσπαθεί να αποκατασταθεί.

Βήμα 5: Προετοιμασία του κώδικα του έργου σας

Προετοιμασία του κώδικα του έργου σας
Προετοιμασία του κώδικα του έργου σας
Προετοιμασία του κώδικα του έργου σας
Προετοιμασία του κώδικα του έργου σας

Σε αυτό το βήμα θα το κάνετε

  • μάθετε για τη δομή του αρχείου αποθετηρίου MiPy-ESP
  • προετοιμάστε τον κώδικα του έργου σας για μεταφόρτωση τσιπ

Το παραπάνω σχήμα περιγράφει τη δομή του φακέλου αποθετηρίου και παραθέτει τις τρέχουσες ενότητες του πλαισίου. Το έργο σας είναι στάδια στο src/ φάκελο. Οι βασικές μονάδες πλαισίου MiPy-ESP βρίσκονται σε src/core, προαιρετικές μονάδες βοηθητικών προγραμμάτων σε src/βοηθητικά προγράμματα και μονάδες υλικού σε src/προγράμματα οδήγησης.

Οι περισσότερες διαθέσιμες βιβλιοθήκες υλικού MicroPython μπορούν να μπουν στα προγράμματα οδήγησης/ φάκελο χωρίς καμία τροποποίηση. Όλα τα υπάρχοντα προγράμματα οδήγησης δοκιμάζονται με το πλαίσιο MiPy-ESP. Όσον αφορά τις ενότητες στα βοηθητικά προγράμματα/ φάκελο, θα προστεθούν περισσότερα καθώς ζωντανεύουν.

Στάδιο του κώδικα έργουΟ συγκεκριμένος κώδικας του έργου σας θα πρέπει να τοποθετηθεί στο src/ φάκελο. Thereδη εκεί, είναι τα αρχεία main.py και config.py που μπορείτε να επεξεργαστείτε. Αντιγράψτε επίσης τα βοηθητικά προγράμματα έργου από src/utilities και src/drivers σε src/.

Σε περίπτωση που θέλετε να παρέχετε γνωστά δίκτυα Wi-Fi και κωδικούς πρόσβασης στο τσιπ, προσθέστε το αρχείο wifi.json στο src/.

Υπό την προϋπόθεση ότι το Makefile μπορεί να εφαρμοστεί για την προετοιμασία αρχείων για μεταφορά σε τσιπ, μεταγλωττίζοντας.py αρχεία στο / src, μεταγλωττίζοντας τις βασικές ενότητες και μεταφέροντας τα μεταγλωττισμένα αρχεία σε νέο φάκελο με όνομα build / με την εντολή

κάνω κατασκευή

Τα αρχεία σε έκδοση είναι έτοιμα για μεταφόρτωση στο σύστημα αρχείων τσιπ. Από προεπιλογή, το main.py και το config.py δεν είναι μεταγλωττισμένα σε δυαδικά, προκειμένου να έχουν εύκολη πρόσβαση σε αυτά για επιθεώρηση των ανεπτυγμένων τσιπ. Η εντολή:

καθάρισε

Διαγράφει το build/ folder και τα περιεχόμενά του.

Βήμα 6: Συγκέντρωση και μεταφόρτωση του κώδικα στον μικροελεγκτή

Μεταγλώττιση και μεταφόρτωση του κώδικα στον μικροελεγκτή
Μεταγλώττιση και μεταφόρτωση του κώδικα στον μικροελεγκτή
Μεταγλώττιση και μεταφόρτωση του κώδικα στον μικροελεγκτή
Μεταγλώττιση και μεταφόρτωση του κώδικα στον μικροελεγκτή

Σε αυτήν την ενότητα θα

  • ανεβάστε τα έτοιμα αρχεία σε build/ από την τελευταία ενότητα
  • εκκίνηση και παρακολούθηση του τρέχοντος κώδικα

Μεταφόρτωση δομής/ αρχείων με το Rshell

Ανεβάστε όλα τα αρχεία στο /build directory σε τσιπ ESP χρησιμοποιώντας το Rshell. Με τον μικροελεγκτή συνδεδεμένο σε USB, ξεκινήστε το Rshell με την εντολή από το build/ folder

rshell -p /dev /ttyUSB0

Στη συνέχεια, επιθεωρήστε τα αρχεία τσιπ (εάν υπάρχουν) έως

ls /pyboard

Όλα τα αρχεία στο τσιπ μπορούν να διαγραφούν από

rm /pyboard/*.*

Αντιγράψτε όλα τα αρχεία έργου στο build/ στο τσιπ:

cp *. * /pyboard

Στη συνέχεια, ξεκινήστε το διαδραστικό τερματικό Python με την εντολή

ανταπόκριση

Τώρα μπορείτε να επικαλεστείτε εντολές Python ή να εισαγάγετε ενότητες και να παρακολουθείτε τη σειριακή έξοδο τσιπ από την ενότητα καταγραφής MiPy-ESP.

Επανεκκινήστε το τσιπ πατώντας το κουμπί επαναφοράς ή από τη γραμμή εντολών κατά

κύρια εισαγωγή

ή

μηχανή εισαγωγής

και μετά

machine.reset ()

Ανάλογα με τις ρυθμίσεις καταγραφής/εντοπισμού σφαλμάτων στο αρχείο διαμόρφωσης έργου, το repl θα εμφανίζει τώρα μηνύματα εντοπισμού σφαλμάτων από το τσιπ ESP μέσω της σειριακής σύνδεσης.

Αυτό ελπίζουμε ότι θα σας ξεκινήσει.

Συνιστάται: