- Ξεκινώντας με το ESP32 Bluetooth
- Κατανόηση Bluetooth χαμηλής ενέργειας (BLE) και ESP32 Classic Bluetooth
- Προετοιμασία του Arduino IDE για ESP32
- Σειριακό πρόγραμμα Bluetooth για ESP32
- Δοκιμή σειριακού Bluetooth με ESP32
Οι μονάδες Bluetooth όπως τα HC-05 και HC-06 είναι εύκολο να ρυθμιστούν και να χρησιμοποιηθούν γρήγορα με το Arduino IDE, αλλά έχουν τους δικούς τους περιορισμούς όπως η υψηλή κατανάλωση ενέργειας και λειτουργούν στο παλιό Bluetooth V2.0. Επίσης, πρόσφατα πήρα ένα νέο κιτ ESP32 DEV, αυτές οι μονάδες έχουν πολλές δυνατότητες όπως ενσωματωμένο Wi-Fi και Bluetooth, άφθονες καρφίτσες ADC και DAC, Υποστήριξη ήχου, Υποστήριξη κάρτας SD, Λειτουργία Deep Sleep κ.λπ. τα πάντα για την κατασκευή έργων IoT.
Και όπως θα το λατρεύει οποιοσδήποτε χόμπι, το ESP32 υποστηρίζεται πλέον επίσημα από το Arduino IDE. Νωρίτερα πρέπει να κάνουμε μια τεράστια λύση με τη βιβλιοθήκη Neil Kolbans, αλλά τώρα χάρη στη σκληρή δουλειά αυτού του τύπου ο προγραμματισμός ESP32 με το Arduino IDE έχει γίνει μια βόλτα με κέικ. Ως εκ τούτου, ξεκίνησα το Arduino IDE μου και πήγα διεξοδικά μερικά προγράμματα BLE, μέσω των οποίων δεν κατάλαβα τίποτα. Μετά από πολύ καιρό σέρφινγκ και μπανιέρα, συνειδητοποίησα ότι υπάρχουν πολλά περισσότερα πράγματα που πρέπει να καταλάβουμε αν πρέπει να δουλέψεις με το Bluetooth Low Energy (BLE) χρησιμοποιώντας το ESP32. Αποφάσισα να καλύψω το BLE σε ξεχωριστά άρθρα, οπότε εδώ θα χρησιμοποιήσουμε το Classic Serial Bluetooth του ESP32 για εναλλαγή ενός LED χρησιμοποιώντας έξυπνο τηλέφωνο. Εάν σας ενδιαφέρει να δείτε πώς να χρησιμοποιήσετε τις δυνατότητες BLE, ανατρέξτε σε αυτό το άρθρο σχετικά με τον διακομιστή ESP32 BLE και τον πελάτη ESP32 BLE
Ξεκινώντας με το ESP32 Bluetooth
Το πρώτο πρόγραμμα που ήθελα να δοκιμάσω ήταν ένα απλό πρόγραμμα με το οποίο μπορώ να ενεργοποιήσω ή να σβήσω ένα LED από μια εφαρμογή τερματικού Bluetooth κινητού τηλεφώνου, όπως και οι παλιές καλές μέρες του HC-05. Ωστόσο, αποδεικνύεται ότι, το Bluetooth Low Energy (BLE) δεν είναι εσοχή για αυτό. Ανακάλυψα επίσης ότι υπάρχουν δύο τύποι Bluetooth στη μονάδα ESP32, το ένα είναι το Classic Bluetooth και το άλλο είναι το BLE Bluetooth Low Energy. Εντάξει, αλλά γιατί;…. γιατί έχουμε δύο τύπους Bluetooth και τι πρέπει να χρησιμοποιήσω για το έργο μου;
Κατανόηση Bluetooth χαμηλής ενέργειας (BLE) και ESP32 Classic Bluetooth
Το Bluetooth Low Energy, όπως υποδηλώνει το όνομα καταναλώνει λιγότερη ισχύ από το κλασικό Bluetooth. Επιτυγχάνεται στέλνοντας δεδομένα όπως απαιτείται με προκαθορισμένες περιοδικές ενημερώσεις. Αλλά σε αντίθεση με το κλασικό Bluetooth, δεν χρησιμοποιείται για τη μεταφορά αρχείων ή μουσικής. Αναρωτηθήκατε ποτέ πώς το τηλέφωνό σας αναγνωρίζει αυτόματα ότι η συσκευή Bluetooth που μόλις αντιστοιχίσατε είναι συσκευή ήχου ή φορητός υπολογιστής ή τηλέφωνο, μπορεί επίσης να έχετε δει ότι το επίπεδο μπαταρίας στην ασύρματη συσκευή αναπαραγωγής ήχου ή ζώνη φυσικής κατάστασης εμφανίζεται αυτόματα στη γραμμή κατάστασης του το κινητό σου; Όλα αυτά είναι δυνατά με τα χαρακτηριστικά των συσκευών BLE. Μια συσκευή BLE λειτουργεί με Bluetooth V4.0 και μπορεί να λειτουργήσει με χαμηλή ισχύ ως διακομιστής ή ως πελάτης που κάνειBle μια επιλογή ιδανική για φάρους, έξυπνα ρολόγια, ζώνες γυμναστήριο κλπ.
Το Classic Bluetooth από την άλλη πλευρά είναι απλώς το απλό παλιό Bluetooth που χρησιμοποιούμε για τη μεταφορά αρχείων και άλλων δεδομένων. Σχεδόν όλες οι συσκευές BLE σχετίζονται με τη λειτουργικότητα Classic Bluetooth. Το Bluetooth που χρησιμοποιείται σε λειτουργικές μονάδες όπως το HC-05 είναι μια έκδοση του κλασικού Bluetooth που ονομάζεται Bluetooth SSP (Serial Port Protocol), που σημαίνει ότι το Bluetooth ακολουθεί το τυπικό σειριακό πρωτόκολλο που διευκολύνει την αποστολή και λήψη δεδομένων χωρίς πολύ γενικά έξοδα. Στο τέλος αυτού του σεμιναρίου θα μάθουμε πώς να χρησιμοποιούμε τη λειτουργία Serial Bluetooth στο ESP32
Εδώ σε αυτό το άρθρο θα χρησιμοποιήσουμε τη λειτουργία Serial Bluetooth στο ESP32 για να την αντιστοιχίσουμε με ένα Smartphone και να χρησιμοποιήσουμε οποιαδήποτε υπάρχουσα εφαρμογή Bluetooth Terminal από το Play store για να στείλουμε εντολές στο ESP32 και να αλλάξουμε αντίστοιχα το ενσωματωμένο LED.
Σε μεταγενέστερα άρθρα θα καλύψουμε το ESP32 BLE τόσο ως διακομιστής όσο και ως πελάτης. Ο διακομιστής BLE χρησιμοποιείται γενικά για την αποστολή δεδομένων BLE σε άλλες συσκευές Bluetooth και ο πελάτης BLE χρησιμοποιείται για τη σάρωση άλλων συσκευών BLE, έτσι ενεργούν ως φάροι.
Προετοιμασία του Arduino IDE για ESP32
Σημειώστε ότι το Arduino IDE από προεπιλογή δεν υποστηρίζει την πλακέτα ESP32. πρέπει να τα κατεβάσετε και να τα εγκαταστήσετε χρησιμοποιώντας τον διαχειριστή του πίνακα. Εάν αυτό είναι το πρώτο σας πρόγραμμα με το ESP32, ακολουθήστε αυτόν τον οδηγό έναρξης για να προσθέσετε την πλακέτα ESP32 στο Arduino και να ανεβάσετε ένα δοκιμαστικό σκίτσο.
Επιπλέον, μπορείτε να κάνετε περισσότερα έργα με το ESP32, χωρίς να χρησιμοποιήσετε κανένα Μικροελεγκτή μαζί του.
Σειριακό πρόγραμμα Bluetooth για ESP32
Το πλήρες πρόγραμμα εναλλαγής LED με χρήση ESP32 Bluetooth παρέχεται στο τέλος αυτής της σελίδας. Κάτω από αυτήν την επικεφαλίδα, ας χωρίσουμε τον κώδικα σε μικρά αποσπάσματα και προσπαθήστε να τα κατανοήσετε. Εάν έχετε ήδη χρησιμοποιήσει άλλες μονάδες Bluetooth όπως το HC-05, τότε θα βρείτε αυτό το παράδειγμα ESP32 Bluetooth Classic είναι πολύ παρόμοιο.
Η ιδέα του προγράμματος είναι να προετοιμάσει μια σύνδεση Serial Bluetooth χρησιμοποιώντας ESP32 και να ακούσει δεδομένα από ζεύγη συσκευών. Εάν τα εισερχόμενα δεδομένα είναι «1» τότε ενεργοποιούμε το LED και αν είναι «0» θα πρέπει να σβήσουμε το LED. Ξεκινάμε το πρόγραμμά μας προσθέτοντας το αρχείο κεφαλίδας BluetoothSerial που κάνει το ESP32 Bluetooth να λειτουργεί ως Bluetoth SSP.
#include "BluetoothSerial.h" // Το αρχείο κεφαλίδας για Serial Bluetooth, θα προστεθεί από προεπιλογή στο Arduino
Υπάρχουν πολλά πράγματα που συμβαίνουν πίσω από αυτήν τη βιβλιοθήκη, αλλά επιλέξαμε να μην μπαίνουμε βαθιά σε αυτήν για να κρατήσουμε τα πράγματα απλά. Το επόμενο πράγμα που χρειαζόμαστε είναι ένα αντικείμενο για τις λειτουργίες που σχετίζονται με το Bluetooth. Εδώ έχω ονομάσει το δικό μου ως ESP_BT , αλλά μπορείτε να επιλέξετε οποιοδήποτε όνομα.
BluetoothSerial ESP_BT; // Αντικείμενο για Bluetooth
Στη συνέχεια, μέσα στη λειτουργία κενής ρύθμισης () . Ξεκινάμε τη σειριακή επικοινωνία με ρυθμό baud 9600 και αρχικοποιούμε το σήμα Bluetooth με ένα όνομα. Εδώ το ονόμασα ως "ESP32_LED_Control ", αυτό θα είναι το όνομα που θα βρεθεί από το τηλέφωνό μας κατά την προσπάθεια σύζευξης . Τέλος, έχω δηλώσει τον ενσωματωμένο πείρο LED ως πείρο εξόδου, καθώς πρόκειται να τον αλλάξουμε με βάση το σήμα Bluetooth.
άκυρη ρύθμιση () { Serial.begin (9600); // Ξεκινήστε τη σειριακή οθόνη στο 9600 ESP_BT.begin ("ESP32_LED_Control"). // Όνομα του σήματος Bluetooth Serial.println ("Η συσκευή Bluetooth είναι έτοιμη για σύζευξη"); pinMode (LED_BUILTIN, OUTPUT); // Προσδιορίστε ότι η καρφίτσα LED εξέρχεται }
Μέσα στη λειτουργία άπειρου βρόχου άκυρου, ελέγχουμε εάν υπάρχουν δεδομένα που εισέρχονται από τη μονάδα Bluetooth, εάν ναι τότε τα δεδομένα διαβάζονται και αποθηκεύονται στη μεταβλητή εισερχόμενη . Εκτυπώνουμε επίσης αυτήν την τιμή στην οθόνη Serial για να ελέγξουμε τι λαμβάνει το Arduino.
if (ESP_BT.available ()) // Ελέγξτε εάν λαμβάνουμε κάτι από το Bluetooth { incoming = ESP_BT.read (); // Διαβάστε τι λαμβάνουμε Serial.print ("Λήφθηκε:"); Serial.println (εισερχόμενα);
Τώρα, όσα δεδομένα λαμβάνονται αποθηκεύονται στη μεταβλητή εισερχόμενα , ώστε να μπορούμε να συγκρίνουμε άμεσα αυτήν τη μεταβλητή με την αναμενόμενη τιμή και να εκτελέσουμε την απαιτούμενη ενέργεια. Αλλά η τιμή που αποστέλλεται από το Bluetooth θα είναι σε μορφή char και το Arduino θα διαβάσει την δεκαδική τιμή του char που αποστέλλεται από το τηλέφωνο. Στην περίπτωση μας για το char '0' η δεκαδική τιμή θα είναι 48 και για το char '1' η δεκαδική τιμή θα είναι 49. Μπορείτε να ανατρέξετε στο γράφημα ASCII για να καταλάβετε ποια θα είναι η δεκαδική τιμή για κάθε χαρακτήρα.
Εδώ συγκρίναμε την εισερχόμενη μεταβλητή με 48 και 49 για έλεγχο για 0 και 1 αντίστοιχα. Εάν είναι 1 τότε απενεργοποιούμε τη λυχνία LED και εκτυπώνουμε επίσης ένα μήνυμα επιβεβαίωσης πίσω στο Bluetooth λέγοντας ότι το LED απενεργοποιήθηκε και το αντίστροφο για 0.
εάν (εισερχόμενη == 49) { digitalWrite (LED_BUILTIN, HIGH); ESP_BT.println ("LED ανάβει"); } εάν (εισερχόμενη == 48) { digitalWrite (LED_BUILTIN, LOW); ESP_BT.println ("LED σβηστή"); }
Δοκιμή σειριακού Bluetooth με ESP32
Συνδέστε το ESP σας στο Arduino IDE και επιλέξτε τη σωστή πλακέτα και θύρα όπως συζητήθηκε στο ξεκίνημα του σεμιναρίου. Δεδομένου ότι είναι ένας διαχειριστής συμβουλίου 3ου συμβαλλόμενου μέρους, μπορεί να χρειαστεί λίγος χρόνος για τη σύνταξη και την αποστολή του κώδικα. Μόλις ανεβάσετε, ξεκινήστε τις σειριακές οθόνες (μόνο για εντοπισμό σφαλμάτων) και ανοίξτε τη ρύθμιση Bluetooth στο τηλέφωνό σας. Θα πρέπει να βρείτε μια συσκευή Bluetooth με το όνομα ESP32_LED_Control .
Τώρα μπορείτε να ανοίξετε οποιαδήποτε εφαρμογή τερματικού Bluetooth στο smartphone σας, χρησιμοποιώ αυτήν που ονομάζεται "Bluetooth Terminal", η οποία πραγματοποιήθηκε λήψη από το Google App store. Συνδέστε την εφαρμογή Bluetooth στη συσκευή που μόλις ζευγαρώσαμε και πληκτρολογήστε 1 και πατήστε αποστολή.
Η μονάδα ESP32 θα πρέπει να τη λάβει και να ανάψει τη λυχνία LED σύμφωνα με το πρόγραμμά μας και επίσης να σας δώσει ένα μήνυμα επιβεβαίωσης που λέει ότι η λυχνία LED είναι ενεργοποιημένη όπως το στιγμιότυπο οθόνης που φαίνεται παραπάνω. Μπορείτε επίσης να ελέγξετε τη σειριακή οθόνη η οποία θα εμφανίζει τα δεδομένα που λαμβάνονται από το ESP32 Bluetooth σε δεκαδική μορφή που είναι το Arduino που θα διαβάσει 48 για 0 και 49 για 1, όπως εξηγήθηκε νωρίτερα. Το στιγμιότυπο του παραθύρου τερματικού εμφανίζεται παρακάτω.
Ομοίως, θα πρέπει επίσης να μπορείτε να απενεργοποιήσετε το LED στέλνοντας 0 από την εφαρμογή για κινητά. Η πλήρης εργασία φαίνεται στο παρακάτω βίντεο. Ελπίζω να καταλάβατε το σεμινάριο και να μάθετε κάτι χρήσιμο. Αν έχετε αμφιβολίες, μη διστάσετε να τα αφήσετε στην παρακάτω ενότητα σχολίων ή να χρησιμοποιήσετε τα φόρουμ μας για άλλη τεχνική βοήθεια.