- Απαιτούμενα υλικά:
- Προγραμματισμός του μικροελεγκτή PIC:
- Λειτουργίες στη βιβλιοθήκη ESP8266:
- Δείγμα προγράμματος:
- Έξοδος προσομοίωσης:
- Επαλήθευση εξόδου:
- Προσθήκη λειτουργιών στη βιβλιοθήκη ESP8266:
Σε αυτό το άρθρο, ας συζητήσουμε πώς να διασυνδέσετε τη μονάδα WIFI ESP8266 με έναν μικροελεγκτή PIC. Μέχρι στιγμής μπορεί να χρησιμοποιείτε τη μονάδα ESP8266 ως αυτόνομο μικροελεγκτή ή να τη χρησιμοποιείτε με τη βιβλιοθήκη Arduino. Όμως, όταν πρόκειται για έργα ενσωματωμένου συστήματος hardcore, πρέπει να γνωρίζουμε πώς να το χρησιμοποιούμε και με μικροελεγκτές PIC. Αυτό θα σας βοηθήσει να προσαρμόσετε τα έργα σας σε προοπτική σχεδίασης και ταυτόχρονα να το κάνετε φθηνό.
Οι μονάδες ESP8266 συνοδεύονται από ένα προεπιλεγμένο υλικολογισμικό, επομένως μπορούμε να προγραμματίσουμε τη λειτουργική μονάδα χρησιμοποιώντας εντολές AT. Αυτές οι εντολές πρέπει να αποστέλλονται μέσω ενός καναλιού σειριακής επικοινωνίας. Αυτό το κανάλι δημιουργείται μεταξύ της μονάδας PIC και του ESP8266 χρησιμοποιώντας τη μονάδα USART στον μικροελεγκτή PIC . Ολόκληρη η εργασία θα παρακολουθείται και θα αναφέρεται στον χρήστη χρησιμοποιώντας μια οθόνη LCD 16x2. Ως εκ τούτου, αυτό το σεμινάριο προϋποθέτει ότι έχετε κάποιες βασικές γνώσεις σχετικά με τη μονάδα USART στο PIC, τη διασύνδεση LCD με PIC και τη χρήση εντολών AT στο ESP8266. Εάν δεν το κάνετε τότε μπορείτε να επιστρέψετε στα συνδεδεμένα σεμινάρια για να τα μάθετε εκ των προτέρων.
Απαιτούμενα υλικά:
Θα χρειαστείτε το ακόλουθο υλικό για να ολοκληρώσετε αυτό το σεμινάριο
- PIC16F877Α
- Κρυσταλλικός ταλαντωτής 20MHz
- 7805
- LM317
- ESP8266
- Οθόνη LCD 16 * 2
- Προγραμματιστής PicKit3
- Αντίσταση (1K, 220ohm, 360ohm)
- Πυκνωτές (1uF, 0.1uF, 33pF)
- Καλώδια αλτών
- Προσαρμογέας 12V για τροφοδοσία της μονάδας PIC και ESP
Σκεύη, εξαρτήματα:
Το πλήρες σχήμα του έργου φαίνεται παρακάτω
Το σχήμα αποτελείται από δύο κυκλώματα ρυθμιστή τάσης, το ένα είναι ρυθμιστής + 5V που χρησιμοποιείται για την τροφοδοσία του μικροελεγκτή PIC και ο άλλος ρυθμιστής 3.3V που τροφοδοτεί τη μονάδα ESP8266. Το + 5V ρυθμίζεται χρησιμοποιώντας ένα 7805 (Linear Voltage Regulator IC). Το 3.3V ρυθμίζεται χρησιμοποιώντας το LM317 (Ρυθμιστής μεταβλητής τάσης). Η μονάδα ESP8266 καταναλώνει πολύ ρεύμα (~ 800mA), επομένως εάν σχεδιάζετε το δικό σας τροφοδοτικό, βεβαιωθείτε ότι μπορεί να τροφοδοτήσει τόσο υψηλό ρεύμα. Βεβαιωθείτε επίσης ότι οι ακίδες γείωσης του PIC και της μονάδας ESP8266 είναι συνδεδεμένες μεταξύ τους.
Τώρα λοιπόν γνωρίζουμε ότι το PIC λειτουργεί σε + 5V και το ESP8266 λειτουργεί σε 3,3V volt. Προκειμένου να δημιουργήσουμε μια επικοινωνία USART μεταξύ αυτών των δύο μονάδων, χρειαζόμαστε ένα κύκλωμα μετατροπέα λογικής 5V - 3.3V όπως φαίνεται στο παραπάνω σχήμα. Αυτό το κύκλωμα δεν είναι παρά ένας δυνητικός διαχωριστής που μετατρέπει απλώς τα εισερχόμενα + 5V σε 3.3V. Αυτό θα αποτρέψει το 3.3V ανεκτό πείρο RX του ESP8266 από το + 5V.
Έχω φτιάξει τις ενότητες PIC και ESP σε δύο ξεχωριστούς πίνακες αρωμάτων, όπως φαίνεται σε αυτά τα σεμινάρια. Με αυτόν τον τρόπο μπορώ να τα χρησιμοποιήσω καθολικά για παρόμοια έργα
- Υλικό LED που χρησιμοποιεί PIC
- Ξεκινώντας με ESP8266
Μπορείτε να ακολουθήσετε το ίδιο, ή να φτιάξετε τη δική σας πλακέτα στο στυλ σας ή απλά να συνδέσετε το παραπάνω κύκλωμα σε ένα breadboard.
Προγραμματισμός του μικροελεγκτή PIC:
Για να προγραμματίσετε τον μικροελεγκτή PIC να στέλνει «εντολές AT» σειριακά χρησιμοποιώντας το USART στη μονάδα ESP8266 πρέπει να χρησιμοποιήσουμε μια βιβλιοθήκη. Αυτή η βιβλιοθήκη θα σας εξοικονομήσει πολλή ταλαιπωρία, όπως η χρήση των μονάδων εντολών ESP8266 για να ελέγξετε για κάθε εντολή AT και, στη συνέχεια, να βρείτε έναν τρόπο για να τις μεταδώσετε στη μονάδα ESP. Αυτή η βιβλιοθήκη είναι δωρεάν λογισμικό που αναπτύχθηκε αρχικά από την Camil Staps και αργότερα βελτιώθηκε και τροποποιήθηκε από το Circuit Digest, ώστε να μπορεί να χρησιμοποιηθεί με τον μικροελεγκτή PIC16F877A. Μπορείτε να το κατεβάσετε εδώ
Η βιβλιοθήκη βρίσκεται ακόμη υπό ανάπτυξη, αλλά μπορείτε να χρησιμοποιήσετε τις περισσότερες από τις σημαντικές εντολές AT στο firmware ESP8266. Εάν βρείτε κάποια από τις εντολές που χρειάζεστε λείπει, ενημερώστε με στην ενότητα σχολίων και θα προσπαθήσω να την προσθέσω για εσάς. Αυτό το σεμινάριο θα σας εξηγήσει όλες τις εντολές (μέχρι στιγμής) που μπορούν να χρησιμοποιηθούν μέσω αυτής της βιβλιοθήκης. Περαιτέρω θα σας καθοδηγήσει επίσης για να προσθέσετε τις δικές σας λειτουργίες στη βιβλιοθήκη.
Λειτουργίες στη βιβλιοθήκη ESP8266:
- Initialize_ESP8266 (): Αυτή η λειτουργία θα προετοιμάσει την ενότητα USART του PIC για να επικοινωνήσει με τη μονάδα ESP8266. Ορίζει το ρυθμό baud στα 115200 και προετοιμάζει τον ακροδέκτη Rx και Tx του PIC για επικοινωνία USART.
- _esp8266_putch (): Αυτή η συνάρτηση χρησιμοποιείται για την αποστολή ενός μόνο χαρακτήρα σειριακά στη μονάδα ESP8266. Για παράδειγμα, το _esp8266_putch ('a') θα στείλει τον χαρακτήρα σειριακά στο ESPmodule.
- _esp8266_getch (): Αυτή η λειτουργία χρησιμοποιείται για τη λήψη ενός μόνο χαρακτήρα από τη μονάδα ESP. Για παράδειγμα, εάν το ESP εκτυπώνει "OK" και χρησιμοποιούμε char a = _esp8266_getch (). Τότε ο χαρακτήρας θα αποθηκευτεί στη μεταβλητή a.
- ESP8266_send_string (): Αυτή η συνάρτηση είναι η έκδοση συμβολοσειράς του _esp8266_putch (). Μπορεί να στείλει μια πλήρη συμβολοσειρά στη μονάδα ESP8266. Για παράδειγμα, το ESP8266_send_string ("AT / r / n") θα στείλει την εντολή "AT" στη μονάδα ESP8266.
- esp8266_isStarted (): Χρησιμοποιείται για να ελέγξει εάν το PIC μπορεί να επικοινωνήσει με τη μονάδα ESP. Στέλνει την εντολή "AT" και περιμένει "OK" εάν ληφθεί επιστρέφει true, αλλιώς επιστρέφει false
- esp8266_restart (): Επαναφέρει τη μονάδα ESP8266 και επιστρέφει true είναι επαναφορά επιτυχημένη και επιστρέφει ψευδής εάν δεν είναι επιτυχής
- esp8266_mode (): Χρησιμοποιείται για τον καθορισμό του τρόπου λειτουργίας της μονάδας ESP8266. Όπως γνωρίζουμε, μπορεί να λειτουργήσει σε τρεις διαφορετικούς τρόπους.
Λειτουργία σταθμού |
|
Λειτουργία Soft AP |
|
Τρόπος λειτουργίας Σταθμού και AP |
- esp8266_connect (): Σας επιτρέπει να συνδεθείτε σε ένα σήμα wifi. Για παράδειγμα, το esp8266_connect ("home", "12345678") , θα επιτρέψει στη μονάδα σας να συνδεθεί στο σήμα wifi που ονομάζεται home του οποίου ο κωδικός πρόσβασης είναι 12345678.
- esp8266_disconnect (): Αυτή η συνάρτηση αποσυνδέει τη λειτουργική σας μονάδα από οποιαδήποτε σύνδεση wifi που ήταν προηγουμένως συνδεδεμένη
- esp8266_ip (): Λαμβάνει τη διεύθυνση IP και την επιστρέφει. Χρησιμοποιήστε αυτήν τη λειτουργία εάν θέλετε να γνωρίζετε τη διεύθυνση IP της μονάδας ESP8266.
- esp8266_start (): Αυτή η συνάρτηση χρησιμοποιείται για την εκκίνηση μιας επικοινωνίας TCP ή UDP. Για παράδειγμα esp8266_start ( "TCP", "192.168.101.110", 80) . Θα ξεκινήσει ένα δίκτυο TCP σε αυτήν την IP και τη θύρα 80.
- esp8266_send (): Αυτή η λειτουργία χρησιμοποιείται για την αποστολή πληροφοριών στο δίκτυο TCP / UDP. Το σενάριο HTML θα σταλεί χρησιμοποιώντας αυτήν την εντολή. Στη συνέχεια, αυτό το σενάριο θα εμφανιστεί στη διεύθυνση IP στην οποία η επικοινωνία δημιουργήθηκε προηγουμένως.
- esp8266_config_softAP (): Αυτή η λειτουργία χρησιμοποιείται για τη διαμόρφωση του softAP. Για παράδειγμα esp8266_config_softAP ("office", "12345678"); θα δημιουργήσει ένα σήμα Wifi που ονομάζεται γραφείο και ο κωδικός πρόσβασης 12345678 θα πρέπει να χρησιμοποιηθεί για πρόσβαση σε αυτό.
- esp8266_get_stationIP (): Αυτή η λειτουργία θα σας επιστρέψει τη διεύθυνση IP / MAC των πελατών που είναι συνδεδεμένοι στο softAP σας.
Δείγμα προγράμματος:
Τώρα που έχουμε κατανοήσει τις λειτουργίες κάθε εντολής στη βιβλιοθήκη, ας εξετάσουμε ένα μικρό δείγμα προγράμματος. Σε αυτό το πρόγραμμα θα ελέγξουμε εάν η σύνδεση μεταξύ ESP8266 και PIC είναι επιτυχής και, στη συνέχεια, θα δημιουργήσουμε ένα δίκτυο WIFI (SoftAP) με το προτιμώμενο όνομα και κωδικό πρόσβασης. Το πλήρες πρόγραμμα και η προσομοίωση του ίδιου θα εξηγηθούν για την κατανόησή σας.
Και πάλι, εάν δεν έχετε διαβάσει το PIC interface με LCD και PIC USART, διαβάστε το, πριν προχωρήσετε γιατί μόνο τότε θα έχει νόημα για εσάς.
Δεδομένου ότι μόλις αρχίζουμε να συνδέουμε το PIC με το ESP8266, έχω χρησιμοποιήσει μια LCD για να βεβαιωθώ ότι τα πράγματα λειτουργούν σωστά.
κάντε {Lcd_Set_Cursor (1,1); Lcd_Print_String ("Το ESP δεν βρέθηκε"); } ενώ (! esp8266_isStarted ()); // περιμένετε μέχρι να στείλετε ξανά το ESP "OK" Lcd_Set_Cursor (1,1); Lcd_Print_String ("Το ESP είναι συνδεδεμένο"); __delay_ms (1500); Lcd_Clear ();
Όταν στέλνουμε το "AT" στη μονάδα ESP8266 απαντά με "OK". Αυτό μας διασφαλίζει ότι η μονάδα ESP8266 έχει συνδεθεί επιτυχώς. Η συνάρτηση esp8266_isStarted () χρησιμοποιείται για το ίδιο. Στέλνουμε το σήμα AT από το PIC και περιμένουμε έως ότου η μονάδα ESP να ζωντανέψει και να μας στείλει ένα OK Εάν λάβουμε ΟΚ εμφανίζεται το "ESP είναι συνδεδεμένο" στην οθόνη LCD.
esp8266_mode (2); Lcd_Set_Cursor (1,1); Lcd_Print_String ("ESP ορίστηκε ως AP"); __delay_ms (1500); Lcd_Clear ();
Οι παραπάνω γραμμές κώδικα χρησιμοποιούνται για τη ρύθμιση της μονάδας ESP σε λειτουργία «soft AP». Η συνάρτηση esp8266_mode (2); στέλνει τις εντολές AT "AT + CWMODE = 3" στη μονάδα και περιμένει να ανταποκριθεί η μονάδα με "OK"
/ * Διαμορφώστε το όνομα και τον κωδικό πρόσβασης AP * / esp8266_config_softAP ("CircuitDigest", "619007123"); Lcd_Set_Cursor (1,1); Lcd_Print_String ("Διαμόρφωση AP"); __delay_ms (1500); Lcd_Clear (); / * Διαμόρφωση AP * /
Αυτό το τμήμα του κώδικα χρησιμοποιείται για τη διαμόρφωση του softAP. Εδώ έχουμε ονομάσει το SSID ως "CircuitDigest" και τον κωδικό πρόσβασης ως "619007123". Για να δείξουμε ότι η διαδικασία έχει ολοκληρωθεί, θα περιμένουμε να ανταποκριθεί η μονάδα με το "OK" και στη συνέχεια να εκτυπώσουμε AP που έχει διαμορφωθεί στην οθόνη LCD.
Αυτό είναι τώρα που έχουμε συνδέσει τη μονάδα ESP8266 με το PIC MCU και έχουμε διαμορφώσει το softAP με ένα όνομα και κωδικό πρόσβασης της επιλογής μας. Ως συνήθως ας προσομοιώσουμε αυτόν τον κώδικα και να δούμε πώς λειτουργεί.
Έξοδος προσομοίωσης:
Χρησιμοποιούμε το λογισμικό Proteus για να προσομοιώσουμε την έξοδο. Το αρχείο σχεδίασης για το ίδιο μπορεί να βρεθεί στο συνημμένο.
Επειδή δεν διαθέτουμε μονάδα ESP8266 στη βιβλιοθήκη Proteus, χρησιμοποιούμε το Serial terminal και ανταποκρινόμαστε ως χρήστης στη μονάδα PIC. Η προσομοίωση μόλις ολοκληρωθεί η οθόνη θα μοιάζει παρακάτω
Η έξοδος του κωδικού μας εμφανίζεται στο εικονικό τερματικό. Η πλήρης εργασία της προσομοίωσης θα εξηγηθεί στο παρακάτω βίντεο.
Επαλήθευση εξόδου:
Μόλις επαληθευτεί το πρόγραμμα χρησιμοποιώντας την προσομοίωση, απορρίψτε το στον μικροελεγκτή PIC. Πραγματοποιήστε τις συνδέσεις όπως φαίνεται στα παραπάνω σχήματα (ενότητα υλικού). Θα πρέπει να μπορείτε να παρακολουθείτε την πρόοδό σας μέσω της οθόνης LCD.
Μόλις το LCD αναφέρει ότι το AP έχει διαμορφωθεί, μπορούμε να το ελέγξουμε χρησιμοποιώντας τις ρυθμίσεις WIFI στο τηλέφωνο ή το φορητό υπολογιστή. Ο φορητός υπολογιστής μου δείχνει το ακόλουθο σήμα σύμφωνα με το πρόγραμμά μας.
Αυτό είναι παιδιά που έχουμε διασυνδέσει με επιτυχία τη μονάδα ESP8266 με τον μικροελεγκτή PIC. Αυτή είναι μια πολύ βασική διεπαφή και αν θέλετε να κάνετε περίπλοκα έργα χρησιμοποιώντας το ESP8266, ίσως χρειαστεί να προσθέσετε τις δικές σας βιβλιοθήκες ή τουλάχιστον να προσθέσετε τις δικές σας λειτουργίες. Πίστεψέ με, είναι πολύ εύκολο να το κάνω, θα δώσω μια σύντομη εικόνα για το ίδιο.
Προσθήκη λειτουργιών στη βιβλιοθήκη ESP8266:
Η προσθήκη της δικής σας λειτουργίας θα σας βοηθήσει να στείλετε οποιαδήποτε εντολή "AT" στη μονάδα ESP8266. Για να προχωρήσετε σε αυτό, πρέπει να διαβάσετε την τεκμηρίωση του συνόλου οδηγιών της μονάδας ESP8266. Μπορείτε να στείλετε απευθείας οποιαδήποτε εντολή AT που θα βρείτε σε αυτό το εγχειρίδιο συνόλου οδηγιών. Αλλά πάντα να θυμάστε να προσθέτετε "/ r / n" στο τέλος κάθε εντολής AT. Για παράδειγμα, εάν θέλετε να δημιουργήσετε πολλαπλές συνδέσεις με τη μονάδα ESP. Στη συνέχεια, ανοίξτε την τεκμηρίωση του συνόλου εντολών και βρείτε την εντολή AT που θα κάνει αυτή τη δουλειά για εσάς. Εδώ η εντολή “AT + CIPMUX = 1” θα σας επιτρέψει να δημιουργήσετε πολλές συνδέσεις με τη μονάδα ESP.
Τώρα το μόνο που έχετε να κάνετε είναι να στείλετε αυτό το "AP + CIPMUX = 1" στη μονάδα ESP8266 χρησιμοποιώντας τη σειριακή θύρα. Ο σκληρός τρόπος για να το κάνετε αυτό είναι απλά χρησιμοποιώντας την εντολή
_esp8266_print ("AT + CIPMUX = 1 \ r \ n" ")
Αυτό θα λειτουργήσει, αλλά δεν είναι ο καλύτερος τρόπος για να το κάνετε. Πρέπει να διαβάσετε τι ανταποκρίνεται το ESP8266 στην εντολή σας. Στην περίπτωσή μας θα απαντήσει με "ΟΚ". Επομένως, πρέπει να διαβάσετε τα εισερχόμενα δεδομένα από την ενότητα ESP8266 και να επιβεβαιώσετε ότι είναι "ΟΚ". Επίσης, μπορείτε να κάνετε αυτήν τη λειτουργία όπου το "1" ή "0" μπορεί να περάσει ως ορίσματα.
Προχωρήστε και προσπαθήστε να κάνετε τις δικές σας λειτουργίες για τη βιβλιοθήκη. Αλλά αν χρειάζεστε βοήθεια, παρακαλούμε να χρησιμοποιήσετε το τμήμα σχολίων και θα σας βοηθήσω.