Γνωριμία με την πλακέτα NodeMCU esp8266

Γνωριμία με την πλακέτα NodeMCU esp8266

Ο ESP8266 είναι ένας χαμηλού κόστους μικροελεγκτής με δυνατότητα ασύρματης σύνδεσης (WiFi), που δημιουργήθηκε και αναπτύχθηκε από την Espressif Systems. Παρακάτω παρουσιάζονται οι κύριοι λόγοι για τους οποίους απέκτησε ευρύ κοινό.

Ισχυρός επεξεργαστής

Το ESP8266 είναι εξοπλισμένο με τον μικροεπεξεργαστή Tensilica Xtensa® 32-bit LX106 RISC που λειτουργεί με ρυθμιζόμενη συχνότητα ρολογιού από 80 έως 160 MHz και υποστηρίζει RTOS.

Εξαιρετικά χαμηλή κατανάλωση ενέργειας

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

Δυνατότητες WiFi

Το ESP8266 ενσωματώνει έναν πομποδέκτη Wi-Fi 802.11b/g/n HT40, επιτρέποντάς του να συνδεθεί σε ένα δίκτυο Wi-Fi για πρόσβαση στο Διαδίκτυο (λειτουργία σταθμού ) ή να δημιουργήσει το δικό του ασύρματο δίκτυο Wi-Fi ( Λειτουργία Soft access point ) στο οποίο μπορούν να συνδεθούν άλλες συσκευές.

Πλούσιο σετ περιφερειακών

Το ESP8266 περιλαμβάνει μια πληθώρα ενσωματωμένων περιφερειακών όπως ADC, UART, SPI, I2C, I2S, PWM και πολλά άλλα.

Πολλές πλατφόρμες ανάπτυξης
Υπάρχουν πολλές διαθέσιμες πλατφόρμες ανάπτυξης για τον προγραμματισμό του ESP8266. Μπορείτε να χρησιμοποιήσετε το Arduino IDE, MicroPython, Espruino ή Espressif SDK.

Χαμηλό κόστος

Είναι ένας από τους φθηνότερους μικροελεγκτές, με τιμές που ξεκινούν από 3€. Αυτό το καθιστά προσιτό σε ένα ευρύ κοινό.

Πλακέτες ανάπτυξης ESP8266

Για να ξεκινήσετε με το ESP8266, θα χρειαστείτε μια πλακέτα ανάπτυξης που περιλαμβάνει όλα τα πρόσθετα. Υπάρχουν πολλές πλακέτες στο εμπόριο οι οποίες λειτουργούν με παρόμοιο τρόπο. Παρακάτω αναφέρονται μερικές από τις πιο γνωστές πλακέτες με το ESP8266.

ESP8266 NodeMCU

Αυτή είναι μια από τις πιο δημοφιλείς πλακέτες ανάπτυξης ESP8266. Διαθέτει 4MB μνήμης flash, 11 ακίδες GPIO και μία ακίδα ADC με ανάλυση 10 bit. Είναι εξαιρετικά ευέλικτο και ιδανικό για αρχάριους.

WeMos D1 Mini

Σε σύγκριση με την προηγούμενη πλακέτα, έχει μικρότερο μέγεθος και είναι πιο προσιτή, καθιστώντας την εξαιρετική επιλογή για ένα πιο οικονομικές εφαρμογές. Επιπλέον, διατίθεται μια ποικιλία ασπίδων (shields) για το  D1 mini.

ESP-01

Αυτό είναι το πιο μικρό και ταιριάζει σε εφαρμογές που δεν απαιτεί περισσότερα από 4 ακροδέκτες GPIO για έλεγχο και σύνδεση περιφερειακών. Διαθέτει επιπλέον 1MB μνήμης flash.

Επισκόπηση υλικού ESP8266 NodeMCU

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

Μονάδα ESP-12E

Αυτή η πλακέτα ανάπτυξης είναι εξοπλισμένη με τη μονάδα ESP-12E, η οποία περιέχει το Tensilica Xtensa® 32-bit LX106 RISC που λειτουργεί σε ρυθμιζόμενη συχνότητα ρολογιού από 80 έως 160 MHz και υποστηρίζει RTOS.

Ολοκληρωμένο ESP-12E

  • Tensilica Xtensa® 32-bit LX106
  • Συχνότητα ρολογιού 80 έως 160 MHz
  • 128 kB εσωτερική μνήμη RAM
  • 4MB εξωτερική μνήμη flash
  • 802.11b/g/n Wi-Fi πομποδέκτης

Τροφοδοσία

Επειδή το εύρος τάσης λειτουργίας του ESP8266 είναι 2,5 V έως 3,6 V, η πλακέτα περιλαμβάνει έναν ρυθμιστή τάσης για να διατηρεί την τάση σταθερή στα 3,3 V. Μπορεί να παρέχει αξιόπιστα έως και 600 mA, τα οποία θα πρέπει να επαρκούν ακόμη και όταν το ESP8266 αντλεί το μέγιστο ρεύμα του (80 mA) κατά τη διάρκεια εκπομπών RF.

Απαίτηση ισχύος

  • Τάση λειτουργίας: 2,5V έως 3,6V
  • Ενσωματωμένος ρυθμιστής 3,3V / 600mA
  • Ρεύμα λειτουργίας 80 mA
  • 20 µA κατά τη λειτουργία αδράνειας

Περιφερειακά και I/O

Το ESP8266 NodeMCU έχει συνολικά 17 ακίδες GPIO οι οποίες έχουν και ειδικές λειτουργίες όπως:

  • 1 κανάλι ADC μετατροπέα με ανάλυση 10 bit
  • 2 διεπαφές UART με υποστήριξη για έλεγχο ροής
  • 4 έξοδοι PWM για έλεγχο στοιχείων όπως η ταχύτητα κινητήρα ή η φωτεινότητα LED.
  • Σειριακή επικοινωνία με SPI και I2C για τη σύνδεση διαφόρων αισθητήρων και περιφερειακών.
  • Διεπαφή I2S για την μεταφορά σημάτων ήχου.

Η πλακέτα ESP8266 NodeMCU διαθέτει λειτουργία πολυπλεξίας στις ακίδες της και έτσι επιτρέπει σε πολλαπλά περιφερειακά να μοιράζονται έναν μόνο ακροδέκτη GPIO. Για παράδειγμα, μια ακίδα GPIO μπορεί να εκτελέσει λειτουργίες όπως I2C, I2S, UART και έξοδο PWM.

Ενσωματωμένοι διακόπτες & ένδειξη LED

Υπάρχουν δύο κουμπιά στο ESP8266 NodeMCU. Το κουμπί Reset, με την ένδειξη RST, χρησιμοποιείται για την επαναφορά του ESP8266 και το κουμπί FLASH, το οποίο χρησιμοποιείται για την αναβάθμιση του υλικολογισμικού.  Η πλακέτα περιλαμβάνει επίσης μια προγραμματιζόμενη από το χρήστη δίοδο LED που συνδέεται με τον ακροδέκτη D0.

Σειριακή Επικοινωνία

Η πλακέτα περιλαμβάνει ελεγκτή γέφυρας CP2102 USB-to-UART της Silicon Labs , που μετατρέπει τα σήματα USB σε σειριακά και επιτρέπει έτσι τον προγραμματισμό του ολοκληρωμένου ESP8266.

ESP8266 NodeMCU Pinout

Το ESP8266 NodeMCU έχει 30 ακίδες συνολικά. Για ευκολία, οι ακίδες με παρόμοια λειτουργικότητα ομαδοποιούνται και παρουσιάζονται με το ίδιο χρώμα.

Ακροδέκτες τροφοδοσίας  Υπάρχουν τέσσερις ακίδες τροφοδοσίας, ένας VIN και τρεις 3,3V. Ο ακροδέκτης VIN μπορεί να χρησιμοποιηθεί για την απευθείας τροφοδοσία του ESP8266 και των περιφερειακών του, με σταθεροποιημένη τροφοδοσία 5V. Οι ακροδέκτες 3,3 V είναι η έξοδος από τον ενσωματωμένο ρυθμιστή τάσης. Μπορεί να δώσει έως και 600 mA από αυτούς.

GND  είναι οι ακροδέκτες γείωσης.

GPIO Pins  Το ESP8266 NodeMCU διαθέτει 17 ακίδες GPIO στις οποίες μπορούν να εκχωρηθούν διαφορετικές λειτουργίες προγραμματίζοντας τους κατάλληλους καταχωρητές. Κάθε pin GPIO μπορεί να διαμορφωθεί με εσωτερική pull-up ή pull-down αντίσταση ή να ρυθμιστεί σε υψηλή σύνθετη αντίσταση. Όταν διαμορφώνεται ως είσοδος, μπορεί επίσης να ρυθμιστεί σε edge-trigger ή level-trigger για να δημιουργεί εξωτερικές διακοπές στον μικροελεγκτή.

Ακίδα ADC  Το ESP8266 περιλαμβάνει ένα ADC SAR (successive approximation register) ανάλυσης 10-bit. Το ADC μπορεί να χρησιμοποιηθεί για την εκτέλεση δύο μετρήσεων: έλεγχο της τάσης τροφοδοσίας του ακροδέκτη VDD 3V3 και έλεγχο της τάσης εισόδου του ακροδέκτη TOUT. Ωστόσο, δεν μπορούν να πραγματοποιηθούν ταυτόχρονα.

Ακίδες SPI  Το ESP8266 διαθέτει δύο SPI (SPI και HSPI) σε slave και master λειτουργία. Αυτά τα SPI υποστηρίζουν επίσης τα χαρακτηριστικά SPI γενικής χρήσης που αναφέρονται παρακάτω:

  • 4 λειτουργίες χρονισμού μεταφοράς SPI
  • Συχνότητα έως 80 MHz και υποδιαιρέσεις των 80 MHz
  • Έως 64-Byte FIFO μνήμη

I2C Pins  Το ESP8266 δεν έχει ακίδες υλικού I2C, αλλά μπορεί να γίνει με “bitbanging”. Λειτουργεί αρκετά καλά και το ESP8266 είναι αρκετά γρήγορο για να φτάνει την ταχύτητα “επιπέδου Arduino”. Από προεπιλογή, τα GPIO4 (SDA) και GPIO5 (SCL) χρησιμοποιούνται ως ακίδες I2C για να διευκολύνουν τα άτομα που χρησιμοποιούν υπάρχοντα κώδικα Arduino, βιβλιοθήκες και σχέδια. Ωστόσο, μπορείτε να χρησιμοποιήσετε οποιεσδήποτε άλλες δύο ακίδες GPIO ως γραμμές I2C καλώντας την συνάρτηση wire.begin(SDA, SCL) από το Arduino IDE.

Ακίδες UART  Το ESP8266 διαθέτει δύο διεπαφές UART, UART0 και UART1, που υποστηρίζουν ασύγχρονη επικοινωνία (RS232 και RS485) έως και 4,5 Mbps. Το UART0 (ακίδες TXD0, RXD0, RST0 και CTS0) χρησιμοποιείται για επικοινωνία, ενώ το UART1 (ακίδα TXD1) διαθέτει μόνο σήμα μετάδοσης δεδομένων και χρησιμοποιείται συνήθως για εκτύπωση αρχείων καταγραφής.

~ PWM Pins  Η έξοδος διαμόρφωσης πλάτους παλμού (PWM) μπορεί να εφαρμοστεί μέσω προγραμματισμού σε όλες τις ακίδες GPIO της πλακέτας. Στο ESP8266, το σήμα PWM έχει ανάλυση 10 bit και το εύρος συχνοτήτων PWM είναι ρυθμιζόμενο μεταξύ 1000 μs και 10000 μs, δηλαδή μεταξύ 100 Hz και 1 kHz.

Ακίδες SDIO  Το ESP8266 διαθέτει ένα slave SDIO (Secure Digital Input/Output Interface) για τη σύνδεση καρτών SD. Υποστηρίζονται SDIO v1.1 (4-bit, 25 MHz) και SDIO v2.0 (4-bit, 50 MHz).

Ακίδες ελέγχου  χρησιμοποιούνται για τον έλεγχο του ESP8266. Αυτές οι ακίδες είναι η ακίδα EN, η ακίδα RST, η ακίδα FLASH και η ακίδα WAKE.

  • Η ακίδα EN (γνωστή και ως CH_PD ή Chip Power Down) χρησιμοποιείται για την ενεργοποίηση του ESP8266. Όταν γίνεται HIGH, το τσιπ ενεργοποιείται ενώ όταν γίνεται LOW, το τσιπ λειτουργεί σε χαμηλή ισχύ.
  • Η ακίδα RST είναι η ακίδα επαναφοράς και σε κανονική λειτουργία είναι HIGH. Μπορεί να χρησιμοποιηθεί για την επαναφορά του συστήματος ESP8266 αν γίνει στιγμιαία LOW. Ισοδυναμεί με το πάτημα του κουμπιού RST της πλακέτας.
  • Ο ακροδέκτης FLASH χρησιμοποιείται από το ESP8266 για να καθορίσει πότε θα εκκινηθεί στον bootloader. Εάν η ακίδα γίνει LOW κατά την ενεργοποίηση, θα ξεκινήσει o bootloader και ισοδυναμεί με το πάτημα του κουμπιού FLASH της πλακέτας.
  • Η ακίδα WAKE χρησιμοποιείται για την αφύπνιση του ESP8266 από βαθύ ύπνο.

ESP8266 Πλατφόρμες ανάπτυξης

Υπάρχουν πολλές διαθέσιμες πλατφόρμες ανάπτυξης για τον προγραμματισμό του ESP8266. Μπορείτε να χρησιμοποιήσετε το Espruino, το Mongoose OS, τη MicroPython ή ένα SDK που παρέχεται από την Espressif. Ευτυχώς, η κοινότητα του ESP8266 μας δίνει πλέον και την επιλογή του Arduino IDE αφού δημιούργησε ένα πρόσθετο για να κάνει δυνατή τη χρήση του και με αυτό.

Εγκατάσταση του ESP8266 Core στο Arduino IDE

Το πρώτο βήμα για την εγκατάσταση του ESP8266 Arduino core είναι να έχετε εγκατεστημένο στον υπολογιστή σας το πιο πρόσφατο Arduino IDE (Arduino 1.8.19 ή την έκδοση 2.Χ.Χ). Εάν δεν το έχετε κάνει ήδη, θα πρέπει να το κάνετε.

  • Εγκαταστήστε την τελευταία έκδοση του Arduino IDE
  • Στη συνέχεια, εκκινήστε το Arduino IDE και μεταβείτε στο: Αρχείο > Προτιμήσεις
  • Συμπληρώστε το πεδίο « Επιπλέον URLs διαχειριστή πλακετών » με το λινκ: http://arduino.esp8266.com/stable/package_esp8266com_index.json
  • Στη συνέχεια, κάντε κλικ στο κουμπί “OK”
  • Μεταβείτε στα Εργαλεία > Πλακέτα > Διαχειριστής πλακετών…
  • Φιλτράρετε την αναζήτησή σας πληκτρολογώντας ‘ esp8266 ‘. Αναζητήστε το ESP8266  by ESP8266 Community. Κάντε κλικ σε αυτήν την καταχώρηση και, στη συνέχεια, επιλέξτε Εγκατάσταση.
  • Μετά την εγκατάσταση, επανεκκινήστε το Arduino IDE και μεταβείτε στο Εργαλεία > Πλακέτα για να βεβαιωθείτε ότι έχετε διαθέσιμες τις πλακέτες ESP8266.
  • Τώρα μπορείτε να επιλέξετε την πλακέτα σας στο μενού Εργαλεία > Πλακέτα (π.χ. NodeMCU 1.0 (ESP-12E Module)). Εάν δεν είστε βέβαιοι ποια πλακέτα έχετε, επιλέξτε τη μονάδα Generic ESP8266 .
  • Τέλος, συνδέστε το ESP8266 NodeMCU στον υπολογιστή σας και επιλέξτε τη Θύρα (εάν η θύρα COM δεν εμφανίζεται στο Arduino IDE, θα χρειαστεί να εγκαταστήσετε το πρόγραμμα οδήγησης CP210x USB to UART Bridge VCP

Τώρα μπορείτε να αρχίσετε να γράφετε κώδικα για το ESP8266 στο Arduino IDE.

Θα πρέπει να βεβαιωθείτε ότι έχετε πάντα εγκατεστημένη την πιο πρόσφατη έκδοση του ESP8266 Arduino core. Μεταβείτε στο Εργαλεία > Πλακέτα > Διαχειριστής πλακετών…, αναζητήστε το ESP8266 και επαληθεύστε την έκδοση που έχετε εγκαταστήσει. Εάν είναι διαθέσιμη μια νεότερη έκδοση, θα πρέπει να την εγκαταστήσετε.

Παράδειγμα

Ο ESP8266 Arduino core περιλαμβάνει πολλά παραδείγματα σχεδίων. Για πρόσβαση στα παραδείγματα σχεδίων, μεταβείτε στο Αρχείο > Παραδείγματα > ESP8266. Μπορείτε να επιλέξετε οποιοδήποτε από αυτά για να φορτώσετε το σχέδιο στο IDE και να αρχίσετε να πειραματίζεστε.

Βασικό παράδειγμα: Blink

Για να διασφαλίσουμε ότι όλα έχουν ρυθμιστεί σωστά, θα ανεβάσουμε το πιο βασικό σχέδιο, το Blink. Μεταβείτε στο Αρχείο > Παραδείγματα > ESP8266 και ανοίξτε το σχέδιο Blink. Αυτό το σχέδιο χρησιμοποιεί το ενσωματωμένο LED που διαθέτουν οι περισσότερες πλακέτες ανάπτυξης ESP8266. Αυτό το LED είναι συνήθως συνδεδεμένο με την ψηφιακή ακίδα D0 και ο αριθμός του μπορεί να διαφέρει από πλακέτα σε πλακέτα.

void setup()

{

  pinMode(D0, OUTPUT);

}

void loop()

{

  digitalWrite(D0, HIGH);

  delay(500);

  digitalWrite(D0, LOW);

  delay(500);

}

Όταν μεταφορτωθεί ο κώδικας, το LED θα αρχίσει να αναβοσβήνει. Για να εκτελέσετε το σχέδιο του ESP8266, ίσως χρειαστεί να πατήσετε το κουμπί RST.