Flash ESP-01 (ESP8266) Χωρίς προσαρμογέα USB σε σειριακή χρήση Raspberry Pi: 3 βήματα
Flash ESP-01 (ESP8266) Χωρίς προσαρμογέα USB σε σειριακή χρήση Raspberry Pi: 3 βήματα
Anonim
Flash ESP-01 (ESP8266) Χωρίς προσαρμογέα USB σε σειριακή χρήση Raspberry Pi
Flash ESP-01 (ESP8266) Χωρίς προσαρμογέα USB σε σειριακή χρήση Raspberry Pi

Αυτό το Instructable σας καθοδηγεί πώς να ξεκινήσετε τον προγραμματισμό του μικροελεγκτή ESP8266 σε μια μονάδα ESP-01 WIFI. Το μόνο που χρειάζεστε για να ξεκινήσετε (εκτός από τη μονάδα ESP-01, φυσικά) είναι

  • Raspberry Pi
  • Καλώδια βραχυκυκλωτήρων
  • Αντίσταση 10Κ

Wantedθελα να ανακαινίσω ένα παλιό φωτιστικό κομοδίνου σε μοντέρνο νυχτερινό λαμπτήρα LED με έλεγχο Alexa. Τίποτα φανταχτερό απλώς να το ενεργοποιήσετε/απενεργοποιήσετε χρησιμοποιώντας τη φωνητική εντολή. Παρήγγειλα την απλούστερη μονάδα ESP-01 WIFI, ρελέ και σύρμα με LED σε απευθείας σύνδεση και ξέχασα εντελώς να παραγγείλω προσαρμογέα USB σε σειριακό για τον προγραμματισμό μικροελεγκτή ESP8266. Αλλά επειδή είχα ένα Raspberry Pi και τόσο το Raspberry Pi όσο και ο πίνακας ESP-01 είχαν καρφίτσες UART, σκέφτηκα ότι θα μπορούσα να χρησιμοποιήσω το RPi μου για να προγραμματίσω το ESP8266 χωρίς τον προσαρμογέα.

Βήμα 1: Διαμορφώστε το Rapberry Pi

Διαμορφώστε το Rapberry Pi
Διαμορφώστε το Rapberry Pi

Χρησιμοποίησα το Raspberry Pi 3 Model B+, ωστόσο, οι οδηγίες θα πρέπει να λειτουργούν σε άλλες εκδόσεις, ειδικά στο μοντέλο Β.

Λοιπόν, πρώτα πράγματα πρώτα - πρέπει να ενεργοποιήσουμε το UART στο Pi.

Μεταβείτε στις ρυθμίσεις διαμόρφωσης RPi. Στο παράθυρο τερματικού εκτελείται

$ sudo raspi-config

Μεταβείτε στις 5 Επιλογές διασύνδεσης και, στη συνέχεια, επιλέξτε P6 Serial. Στη συνέχεια, σας ζητήθηκε Θα θέλατε ένα κέλυφος σύνδεσης να είναι προσβάσιμο μέσω σειρών; επιλέξτε δεδομένου ότι δεν θέλουμε να χρησιμοποιήσουμε το UART για να τρέξουμε το Pi χωρίς ακέφαλο, αλλά για να επικοινωνήσουμε με άλλες συσκευές, επομένως στην παρακάτω οθόνη όταν ερωτηθείτε Θα θέλατε να είναι ενεργοποιημένο το υλικό της σειριακής θύρας; επιλέγω. Επανεκκινήστε το Pi όπως σας ζητηθεί. Το UART θα πρέπει τώρα να είναι ενεργοποιημένο για σειριακή επικοινωνία σε ακροδέκτες RX και TX του Raspberry Pi 3. Σημείωση: μετά από αυτό θα πρέπει να εμφανιστεί μια νέα καταχώρηση enable_uart = 1 στο τέλος του /boot/config.txt.

Βήμα 2: Συνδέστε το ESP-01 στο Raspberry Pi

Συνδέστε το ESP-01 στο Raspberry Pi
Συνδέστε το ESP-01 στο Raspberry Pi

Τώρα αρχίζουμε να συνδέουμε τα πάντα μαζί.

Πρώτον, προσδιορίστε στις ακίδες ισχύος RPi 3.3V και GND (γείωση) για την τροφοδοσία μικροελεγκτή ESP8266, ακίδες TXD (μετάδοση) και RXD (λήψη) για επικοινωνία και δύο ακίδες γενικής χρήσης για λειτουργία ESP8266 (ακίδες που μπορούν να ρυθμιστούν είτε υψηλές είτε χαμηλός). Αναζητήστε τη διάταξη καρφιτσών στο pinout.xyz ή πληκτρολογήστε τερματικό:

$ pinout

Δεύτερον, προσδιορίστε τις απαραίτητες ακίδες στο ESP-01. Αλλά στην αρχή πρέπει να έχουμε κατανόηση των ακίδων ESP-01. Βρήκα μια σειρά χρήσιμων πόρων διαθέσιμων στο Διαδίκτυο για να σας βοηθήσω σε αυτό το θέμα. Αυτό είναι το πιο κοντό, ενώ αυτό δίνει πολύ καλύτερη εξήγηση. Εν ολίγοις: Υπάρχουν 8 ακίδες, θα χρειαστούμε 7 από αυτές, δηλαδή καρφίτσες τροφοδοσίας VCC και καρφίτσες GND (γείωσης) για τροφοδοσία, ακίδες TXD και RXD για επικοινωνία και RST (επαναφορά), CH_PD (Chip Power Down, μερικές φορές επισημασμένες CH_EN ή ενεργοποίηση τσιπ) και GPIO0 για τη λειτουργία της μονάδας. Συνήθως το ESP8266 λειτουργεί σε κανονική λειτουργία, αλλά κατά τη μεταφόρτωση ενός κωδικού στο ESP8266 πρέπει να είναι σε λειτουργία φλας. Για κανονική ή κανονική λειτουργία, η μονάδα πρέπει να είναι συνδεδεμένη στην τροφοδοσία (προφανώς), αλλά επίσης η καρφίτσα CH_PD πρέπει να συνδεθεί στο VCC μέσω 10K (αυτή η τιμή ποικίλλει σε διαφορετικές πηγές, βρήκα τιμές έως 3Κ) αντίσταση κατά την εκκίνηση. από την άλλη πλευρά, για να μπείτε σε λειτουργία αναβοσβήνει ή προγραμματισμού, πρέπει να γειώσετε το pin GPIO0 κατά την εκκίνηση. Για την αποφυγή απεριόριστης ροής ρεύματος μέσω GPIO0 όταν είναι γειωμένη, συνιστάται η σύνδεση του GPIO0 με τη γείωση μέσω κάποιας αντίστασης χαμηλής αντίστασης 300Ω - 470Ω (περισσότερα για αυτό εδώ). Η καρφίτσα RST όπως υποδηλώνει το όνομα επαναφέρει (ή επανεκκινεί) το MCU. Κατά τη διάρκεια της κανονικής λειτουργίας, μπορεί να συνδεθεί με το VCC μέσω αντίστασης έλξης 10K, αλλά θα πρέπει να είναι γειωμένο για επαναφορά του μικροελεγκτή. Παρόλο που είναι πάντα δυνατή η χρήση φυσικών κουμπιών για τη γείωση των ακίδων RST και GPIO0 (ή ακόμα και η μη αυτόματη σύνδεση καλωδίων για την προσομοίωση ενός κουμπιού), είναι πολύ πιο ευχάριστη εμπειρία η χρήση ακίδων Raspberry Pi για ρύθμιση υψηλής και χαμηλής τάσης στα RST και GPIO0 της μονάδας καρφίτσες. Επίσης, δεν υπάρχει ανάγκη για αντιστάσεις 10Κ και 470Ω τότε.

Τώρα γνωρίζοντας τις ιδιαιτερότητες των ακίδων ESP-01, μπορούμε να αρχίσουμε να τα συνδέουμε όλα μαζί. Μπορείτε να χρησιμοποιήσετε τον παρακάτω πίνακα ως αναφορά μαζί με το παραπάνω σχέδιο:

ESP-01 Raspberry Pi

  • VCC (3.3V) pin #1 (3.3V)
  • GND καρφίτσα #6 (GND)
  • TXD pin #10 (RXD / BCM 15)
  • RXD pin #8 (TXD / BCM 14)
  • CH_PD pin #1 (3.3V)
  • RST καρφίτσα #3 (BCM 2)
  • GPIO 0 pin #5 (BMC 5)

Συνδέστε την τελευταία καρφίτσα VCC. Το στιγμιότυπο που συνδέσατε το VCC pin σας θα ενεργοποιήσει τη μονάδα Wi-Fi. Χρησιμοποιήστε οθόνη ή minicom για να ελέγξετε εάν το RPi και το ESP8266 μπορούν να επικοινωνούν χρησιμοποιώντας το UART (σημείωση: ίσως χρειαστεί να εγκαταστήσετε πρώτα οθόνη ή minicom, καθώς φαίνεται ότι δεν είναι εγκατεστημένα στο Raspbian από προεπιλογή).

Χρήση οθόνης:

$ sudo screen /dev /serial0 115200

Χρήση minicom run:

$ sudo minicom -b 115200 -o -D /dev /serial0

Σημείωση: πολλοί διαδικτυακοί πόροι προτείνουν τη σύνδεση με το ESP8266 στο /dev /ttyAMA0, αλλά αυτό δεν λειτουργεί για το RPi 3 ή μεταγενέστερο (συμπεριλαμβανομένου του μηδενικού W) σύμφωνα με την τεκμηρίωση RPi. Συνδεθείτε μέσω /dev /serial0 αντ 'αυτού ή /dev /ttyS0.

Αφού εισαγάγετε οθόνη ή minicom, χρησιμοποιήστε τις εντολές AT για να επικοινωνήσετε με το ESP8266. Πληκτρολογήστε AT, στη συνέχεια πατήστε Enter και, στη συνέχεια, πατήστε Ctrl+J για να στείλετε την εντολή. Θα πρέπει να πάρετε ΟΚ σε απάντηση. Μπορείτε να βρείτε τη λίστα με τις διαθέσιμες εντολές AT στο espressiff.com ή εδώ.

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

Βήμα 3: Ρύθμιση λογισμικού (Python για λειτουργία και Arduino IDE στο πρόγραμμα)

ΜΕΡΟΣ 1. Χρήση python για εναλλαγή λειτουργιών ESP8266

Όπως αναφέρθηκε παραπάνω, είναι βολικό να χρησιμοποιήσετε τις καρφίτσες GPIO του RPI για να αλλάξετε τους τρόπους λειτουργίας του ESP8266. Έγραψα δύο βασικούς κώδικες python που έθεσαν το ESP8266 σε κανονική ή προγραμματιστική λειτουργία.

Κανονική λειτουργία: Για να θέσουμε τον μικροελεγκτή σε κανονική λειτουργία, πρέπει απλώς να τον τροφοδοτήσουμε και να συνδέσουμε το CH_PD μέσω αντίστασης έλξης στο VCC, αλλά για να αλλάξουμε το MCU από προγραμματισμό σε κανονική λειτουργία, πρέπει να το επαναφέρουμε (σκεφτείτε επανεκκίνηση). Για να το κάνετε αυτό στο RPi, θα τραβήξουμε σύντομα το GPIO του RPi που είναι συνδεδεμένο με τον ακροδέκτη RST στο ESP-01 (από προεπιλογή, ο πείρος RPi που χρησιμοποίησα για επαναφορά έχει οριστεί σε HIGH). Πόσο σύντομα; Για μένα είναι μια κερδοσκοπική ερώτηση. Μπορείτε να δοκιμάσετε διαφορετικά χρονικά διαστήματα, αλλά διαπίστωσα ότι τα 200 - 500 ms λειτουργούν μια χαρά. Γράψτε στα σχόλια αν έχετε καλύτερη ιδέα. Αποθηκεύστε τον κωδικό σας ως reset.py

#!/usr/bin/python

εισαγωγή RPi. GPIO ως GPIO ώρα εισαγωγής GPIO.setmode (GPIO. BOARD) # ορίζει ταυτοποίηση GPIO με φυσικούς αριθμούς pin resetPin = 3 # προσδιορισμός φυσικού πείρου RPi συνδεδεμένου με ESP8266 RST pin GPIO.setup (resetPin, GPIO. OUT) # set reset καρφίτσα ως έξοδο GPIO.output (resetPin, GPIO. LOW) # πτώση τάσης στο RST pin time.sleep (.2) # περιμένετε.2 s GPIO.output (resetPin, GPIO. HIGH) # επαναφορά τάσης στο RST pin GPIO. cleanup () # επαναφέρετε καρφίτσες στο RPI για να αποτρέψετε μελλοντικές προειδοποιήσεις χρόνου εκτέλεσης

  • Λειτουργία προγραμματισμού: Για να θέσουμε το MCU σε λειτουργία προγραμματισμού πρέπει να τροφοδοτήσουμε το ESP8266 με γειωμένο GPIO0 ή εναλλακτικά να το επαναφέρουμε και να γειώσουμε το GPIO0 κατά την εκκίνηση (και πάλι η ακριβής διάρκεια της πτώσης τάσης δεν μου είναι αρκετά γνωστή, οπότε μην είστε αυστηρά καθοδηγείται από τις χρησιμοποιούμενες τιμές). Αποθηκεύστε τον κωδικό ως flash.py ή κάντε λήψη παρακάτω. Η διαδοχή των ενεργειών είναι η ακόλουθη:

    • τραβήξτε προς τα κάτω τον πείρο RST
    • τραβήξτε προς τα κάτω τον πείρο GPIO0
    • τραβήξτε προς τα πάνω τον πείρο RST
    • τραβήξτε το pin GPIO0

#!/usr/bin/python

εισαγωγή RPi. GPIO ως GPIO ώρα εισαγωγής GPIO.setmode (GPIO. BOARD) # ορίζει ταυτοποίηση GPIO με φυσικούς αριθμούς pin resetPin = 3 # προσδιορισμός φυσικού πείρου RPi συνδεδεμένου με ESP8266 καρφίτσα RST flashPin = 5 # προσδιορισμός φυσικού πείρου RPi συνδεδεμένου με ακροδέκτη ESP8266 GPIO0 GPIO.setup (resetPin, GPIO. OUT) # ορίστε τον ακροδέκτη επαναφοράς ως έξοδο GPIO.setup (flashPin, GPIO. OUT) # ορίστε το pin φλας ως έξοδο GPIO.output (resetPin, GPIO. LOW) # πτώση τάσης στον χρόνο καρφιτσών RST. ύπνος (.2) # η ανάγκη για αυτήν την αναμονή είναι κερδοσκοπική GPIO.output (flashPin, GPIO. LOW) # πτώση τάσης στο GPIO0 time.sleep (.2) # η ανάγκη για αυτήν την αναμονή είναι κερδοσκοπική GPIO.output (resetPin, GPIO. HIGH) # έναρξη εκκίνησης ESP8266 time.sleep (.5) # περιμένετε να εκκινήσει το ESP8266 GPIO.ouput (flashPin. GPIO. HIGH) # επαναφορά τάσης στο GPIO pinGPIO.cleanup () # επαναφορά ακίδων στο RPI για να αποτρέψετε μελλοντικές προειδοποιήσεις χρόνου εκτέλεσης

Στα δικαιώματα αλλαγής τερματικού:

$ sudo chmod +x flash.py

$ sudo chmod +x reset.py

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

$ python /flash.py

μετά τη μεταφόρτωση του κώδικα για είσοδο στην κανονική λειτουργία λειτουργίας εκτελέστε:

$ python /reset.py

Σε αυτό το σημείο μπορεί επίσης να θέλετε να ενημερώσετε το υλικολογισμικό ESP8266. Υπάρχουν πολλά διαδικτυακά σεμινάρια για το πώς να το κάνετε αυτό, οπότε δεν θα μπω σε λεπτομέρειες για το πώς να το κάνετε αυτό.

ΜΕΡΟΣ 2. Ρύθμιση του Arduino IDE

εάν έχετε ήδη εγκαταστήσει το Arduino IDE, μπορεί να θέλετε να περιηγηθείτε στην ενότητα για να βεβαιωθείτε ότι το IDE σας είναι έτοιμο για ESP8266.

Στο Rapberry Pi μπορείτε να χρησιμοποιήσετε το Arduino IDE για να προγραμματίσετε το ESP8266. Υπάρχουν δύο τρόποι για να εγκαταστήσετε το IDE στο RPi:

  • μέσω γραμμής εντολών από αποθετήρια χρησιμοποιώντας το apt-get install
  • κατεβάστε και εγκαταστήστε με μη αυτόματο τρόπο από το arduino.cc.

Σας προτείνω να ακολουθήσετε τον τελευταίο δρόμο. Η έκδοση IDE από τα αποθετήρια φαίνεται να είναι παρωχημένη και σίγουρα θα χρειαστεί να κάνετε περισσότερα πριν είστε έτοιμοι να ξεκινήσετε τον προγραμματισμό του ESP8266. Για να αποφύγετε την ταλαιπωρία, μεταβείτε στη σελίδα λήψης Arduino.cc και κάντε λήψη της έκδοσης Linux ARM. Επόμενη αποσυμπίεση και εγκατάσταση: Εάν το όνομα του ληφθέντος αρχείου μοιάζει με αυτό το arduino-X. Y. Z-linuxarm.tar.xz, στο φάκελο λήψης εκτελέστε:

$ tar -xvf arduino-X. Y. Z-linuxarm.tar.xz

Αυτό θα πρέπει να αποσυμπιέσει το αρχείο στο φάκελο arduino-X. Y. Z. Τρέξιμο:

$ sudo./arduino-X. Y. Z/install.sh

Αυτό θα πρέπει να εγκαταστήσει το IDE. Αφού ολοκληρωθεί η εγκατάσταση, ξεκινήστε το IDE.

  • Από το Arduino IDE μεταβείτε στο Αρχείο> Προτιμήσεις. Αναζητήστε "Πρόσθετες διευθύνσεις URL διαχειριστή πίνακα" στο κάτω μέρος του παραθύρου προτιμήσεων. Εισαγάγετε τη διεύθυνση https://arduino.esp8266.com/stable/package_esp8266com_index.json στο πεδίο "Πρόσθετες διευθύνσεις URL διαχειριστή πίνακα", κάντε κλικ στο κουμπί "OK".
  • Μεταβείτε στην επιλογή Εργαλεία> Πίνακας: XXX> Διαχειριστής πινάκων. Στο παράθυρο χρησιμοποιήστε την αναζήτηση ή μετακινηθείτε προς τα κάτω, επιλέξτε το μενού της πλακέτας ESP8266 και κάντε κλικ στην εγκατάσταση. Περιμένετε να ολοκληρωθεί η εγκατάσταση και κλείστε το παράθυρο.
  • Πηγαίνετε ξανά στα Εργαλεία> Πίνακας: XXX και αναζητήστε πίνακες ESP8266. Επιλέξτε Γενική μονάδα ESP8266.

Τώρα το IDE είναι έτοιμο να προγραμματίσει το ESP8266. Πληκτρολογήστε ή επικολλήστε τον επιθυμητό κώδικα στο παράθυρο IDE και αποθηκεύστε τον. Κάντε κλικ στο στοιχείο Μεταφόρτωση. Από την εκτέλεση τερματικού flash.py, αυτό θα θέσει τον πίνακα σας σε λειτουργία προγραμματισμού. Περιμένετε λίγα λεπτά μέχρι το IDE να ολοκληρώσει τη μεταγλώττιση και τη μεταφόρτωση (σημείωση: Το ESP-01 συνήθως συνοδεύεται από 2 LED, το μπλε LED θα αναβοσβήνει κατά τη μεταφόρτωση του κώδικα) και εκτελέστε το reset.py. Τώρα ο πίνακας ESP-01 είναι έτοιμος να εκτελέσει καθήκοντα.

Συνιστάται: