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

Πώς να χρησιμοποιήσετε το Bluetooth (BLE) με ESP32: 3 βήματα
Πώς να χρησιμοποιήσετε το Bluetooth (BLE) με ESP32: 3 βήματα

Βίντεο: Πώς να χρησιμοποιήσετε το Bluetooth (BLE) με ESP32: 3 βήματα

Βίντεο: Πώς να χρησιμοποιήσετε το Bluetooth (BLE) με ESP32: 3 βήματα
Βίντεο: Turn ON and OFF LED using mobile App using Bluetooth on ESP32 board 2024, Ιούνιος
Anonim

#####ΣΗΜΕΙΩΣΗ#####

Η μέθοδος που εμφανίζεται σε αυτό το Instructables είναι παλιά και ξεπερασμένη. Δείτε αυτό το βίντεο για την πιο πρόσφατη μέθοδο.

###############

Ενώ το ESP32 διαθέτει μια εκτενή λίστα χαρακτηριστικών (Wikipedia), το μεγαλύτερο χαρακτηριστικό που τραβάει τα βλέμματα είναι το ενσωματωμένο bluetooth v4.2 με υποστήριξη BLE. Αλλά αυτή η δήλωση μπορεί να είναι παραπλανητική, ενώ το υλικό είναι εκεί, η υποστήριξη λογισμικού για τη χρήση του Bluetooth λείπει. (Είναι υπό ανάπτυξη)

Για όσους δεν γνωρίζουν τι είναι το BLE, σημαίνει Bluetooth Low Energy. Είναι ένα πρωτόκολλο bluetooth που ενισχύει σημαντικά χαμηλότερη κατανάλωση ενέργειας σε σύγκριση με το "Classic" Bluetooth.

Σε αυτό το Instructables θα σας δείξω πώς μπορείτε να χρησιμοποιήσετε τους περιορισμένους πόρους (λογισμικού) που έχετε στη διάθεσή σας για να στείλετε δεδομένα από έναν πίνακα ESP32 στο τηλέφωνό σας μέσω BLE.

Μερικές αποποιήσεις…

Μερικά πράγματα που πρέπει να σημειώσω προτού προχωρήσετε περαιτέρω με αυτόν τον οδηγό..

Σημείωση 1: Όταν λέω ότι η υποστήριξη Bluetooth δεν είναι ακόμη διαθέσιμη, εννοώ στο περιβάλλον ανάπτυξης arduino.

Η υποστήριξη πολύ καλά μπορεί να είναι διαθέσιμη στο επίσημο SDK καθώς και στο IDF, αλλά δεν έχω βρει κατάλληλες οδηγίες για αυτούς.

Σημείωση 2: Η μέθοδος που χρησιμοποιώ είναι πάρα πολύ μια λύση και όχι το πώς υποτίθεται ότι λειτουργεί ιδανικά το BLE. Η βιβλιοθήκη που υποστηρίζει τη δημιουργία υπηρεσιών στο BLE δεν είναι εδώ για το περιβάλλον arduino.

Το μόνο που μπορείτε να κάνετε αξιόπιστα είναι να δημιουργήσετε ένα Beacon που διαφημίζει το όνομά του. Ένα σχόλιο στο YouTube το έθεσε πολύ κομψά: "LOL, ένα βάναυσο hack. Αλλά τι μπορείτε να κάνετε;"

Σημείωση 3: Το μόνο είδος δεδομένων που μπορείτε να στείλετε είναι συμβολοσειρά.

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

Βήμα 1: Το παράδειγμα κατασκευής

Image
Image
Το παράδειγμα κατασκευής
Το παράδειγμα κατασκευής
Το παράδειγμα κατασκευής
Το παράδειγμα κατασκευής
Το παράδειγμα κατασκευής
Το παράδειγμα κατασκευής

Εάν είστε εδώ μόνο για την εξήγηση, τότε μπορείτε να παραλείψετε αυτό το βήμα, αλλά το να το περάσετε μπορεί να σας δώσει λίγο περισσότερη σαφήνεια.

Πρώτα θα δημιουργήσω ένα παράδειγμα έργου και στη συνέχεια θα προσπαθήσω να εξηγήσω πώς λειτουργεί και πώς μπορείτε να αναπαράγετε την επικοινωνία Bluetooth. Θα δημιουργήσουμε έναν φορητό αισθητήρα θερμοκρασίας που θα στέλνει ζωντανή ροή στο smartphone σας. Η κατασκευή μπορεί να τρέξει για μέρες σε ένα μόνο li-po και αποδεικνύει εύκολα τα οφέλη του BLE.

Μπορείτε να χρησιμοποιήσετε τη μονάδα ως φούρνο για να μονώσετε τα ποτά σας και να λάβετε ειδοποίηση μόλις το ποτό σας φτάσει στη βέλτιστη θερμοκρασία. Γιατί θα ήταν παρωδία αν έπρεπε να πιείτε ένα τσάι που ήταν βαθμός άνω των 40.

Το μόνο υλικό που χρειάζεστε είναι ένας πίνακας ESP32 και ένας ψηφιακός αισθητήρας θερμοκρασίας. Ο πίνακας μου υποστηρίζει εξωτερική μπαταρία, οπότε χρησιμοποιώ ένα li-po 3.7v που έσωσα από κάποια παλιά συσκευή για να κάνω αυτό το έργο φορητό.

Σκεύη, εξαρτήματα

Οι συνδέσεις για τον αισθητήρα θερμοκρασίας είναι απλές. Το κόκκινο καλώδιο συνδέεται με 3,3v, το μαύρο συνδέεται με τη γείωση (gnd), το κίτρινο συνδέεται με το GPIO 2 το οποίο στον πίνακα μου σημειώνεται ως D9. Συνδέστε μια αντίσταση 4,7k ohm μεταξύ του κόκκινου και του κίτρινου σύρματος. Δεν χρησιμοποιώ την αντίσταση, αλλά χρησιμοποιώ ένα τερματικό με 3 ακίδες που συνδέεται με τον αισθητήρα μου. Διαθέτει ενσωματωμένη αντίσταση έλξης.

Το li-po θα πρέπει πραγματικά να συνδεθεί χρησιμοποιώντας έναν σύνδεσμο JST, αλλά δεν θα μπορούσα να ενοχληθώ να αγοράσω ένα, οπότε απλώς έβαλα παπούτσια σε μερικά καλώδια άλματος (θηλυκό σε θηλυκό) στον σύνδεσμο και κόλλησα ένα άλλο ζεύγος στους ακροδέκτες της μπαταρίας. Αυτό δημιουργεί μια αξιόπιστη σύνδεση και έναν αυτοσχέδιο διακόπτη τροφοδοσίας.

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

Λογισμικό

Εάν δεν έχετε ήδη εγκαταστήσει το arduino IDE, μεταβείτε σε αυτόν τον σύνδεσμο για να το κατεβάσετε. Το λογισμικό arduino από προεπιλογή δεν συνοδεύεται από τους ορισμούς της πλακέτας για τους διάφορους πίνακες ESP32. Για να τους οδηγήσετε να μεταβούν σε αυτόν τον σύνδεσμο και να κατεβάσουν τα αρχεία σε ένα zip. Πρέπει να τα αποσυμπιέσετε σε αυτήν την τοποθεσία:

C:/Χρήστες // Έγγραφα/Arduino/hardware/espserrif/ESP32

Πού βρίσκεται το όνομα χρήστη στον υπολογιστή σας. Βεβαιωθείτε ότι τα διάφορα αρχεία είναι διαθέσιμα στον φάκελο ESP32 και δεν βρίσκονται σε άλλο φάκελο.

Τώρα αν ξεκινήσετε το λογισμικό arduino και μεταβείτε στα εργαλεία-> πίνακες, θα πρέπει να δείτε διάφορους πίνακες ESP32 όταν κάνετε κύλιση προς τα κάτω.

Οι περισσότεροι ψηφιακοί αισθητήρες θερμοκρασίας χρησιμοποιούν το πρωτόκολλο OneWire για να επικοινωνούν με τους μικροελεγκτές, οπότε πρέπει να πάρουμε τη βιβλιοθήκη. Μεταβείτε στο σκίτσο-> συμπεριλάβετε τη βιβλιοθήκη-> διαχειριστείτε τις βιβλιοθήκες και αναζητήστε το onewire και εγκαταστήστε τη βιβλιοθήκη που είναι πάρα πολλοί συγγραφείς. Δεν χρειάζεται ο διανομέας onewire. Αγνόησέ το.

Τώρα μπορείτε να κατεβάσετε και να ανοίξετε τον κωδικό που επισυνάπτεται σε αυτό το βήμα (temperature-example.ino).

Εάν χρησιμοποιείτε διαφορετικό αισθητήρα από εμένα, θα πρέπει να αλλάξετε τον κωδικό ανάλογα. Αντικαταστήστε τον κώδικα στο getTemp (). Απλώς επιστρέψτε την τελική θερμοκρασία με τη μορφή

ΕΠΙΣΤΡΟΦΗ;

Πού είναι ο πλωτήρας που περιέχει τη θερμοκρασία.

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

Εάν ο κωδικός αρνείται να φορτώσει, αποσυνδέστε τον αισθητήρα και συνδέστε το GPIO 0 στη γείωση. Επαναφέρετε τις συνδέσεις μετά τη μεταφόρτωση.

Το ESP σας θα πρέπει τώρα να ουρλιάζει τη θερμοκρασία του καφέ σας στον κόσμο, αλλά χρειάζεστε κάποιον που να μπορεί να τον καταλάβει.

Η εφαρμογή Android

Λυπούμαστε για χρήστες iPhone (… όχι πραγματικά).

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

Εάν λάβετε ένα μήνυμα σφάλματος που λέει "η διαφήμιση δεν υποστηρίζεται", κάντε κλικ στο κουμπί OK και αγνοήστε το, αλλά εάν λάβετε ένα μήνυμα ότι "το BLE δεν υποστηρίζεται", τότε το τηλέφωνό σας δεν διαθέτει Bluetooth 4.0 ή νεότερη έκδοση και δεν θα μπορεί να εκτελεστεί η εφαρμογή.

Βεβαιωθείτε ότι το Bluetooth στο τηλέφωνό σας είναι ενεργοποιημένο και κάντε κλικ στο «Έναρξη σάρωσης», εφόσον το esp βρίσκεται σε εμβέλεια και είναι ενεργοποιημένο, θα πρέπει να λαμβάνετε κάποια τιμή θερμοκρασίας.

Πιθανά σφάλματα:

  • -1000:: Αυτό σημαίνει ότι η συσκευή σας δεν μπόρεσε να βρει το ESP. βεβαιωθείτε ότι το Bluetooth είναι ενεργοποιημένο και δοκιμάστε να κάνετε επανεκκίνηση του ESP.
  • SNA:: Αυτό σημαίνει ότι το τηλέφωνό σας λαμβάνει δεδομένα από το ESP αλλά το ίδιο το ESP δεν μπόρεσε να βρει αισθητήρα θερμοκρασίας στο GPIO 2. Βεβαιωθείτε ότι οι συνδέσεις είναι ασφαλείς, δείτε αν χρησιμοποιείτε αντίσταση σωστής τιμής. Ελέγξτε ξανά με τα διαγράμματα της πλακέτας σας ότι είστε συνδεδεμένοι στο GPIO 2 και όχι έναν πείρο με την ένδειξη D2.

Βήμα 2: Η εξήγηση

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

Για πχ. Μια συσκευή που ονομάζεται "Weather Station" μπορεί να έχει εξυπηρετηθεί κάτω από αυτήν, όπως "Θερμοκρασία", "Υγρασία" και "Άνεμος". Όταν μια άλλη συσκευή BLE όπως το smartphone σας σαρώνει για συσκευές, θα βλέπει τον Μετεωρολογικό Σταθμό και όταν συνδέεται σε αυτόν, θα μπορεί να λαμβάνει τις ροές δεδομένων κάτω από αντίστοιχες με τις διάφορες υπηρεσίες.

Οι βιβλιοθήκες (για το ESP32) που είναι διαθέσιμες αυτήν τη στιγμή μας επιτρέπουν να δημιουργήσουμε έναν φάρο που οι άλλοι μπορούν να ανακαλύψουν αλλά αυτό είναι το εύρος του. Δεν μπορούμε να δημιουργήσουμε υπηρεσίες ούτε να συνδεθεί καμία συσκευή σε αυτήν.

Έτσι, το πώς στέλνω δεδομένα χωρίς να δημιουργώ υπηρεσίες είναι χρησιμοποιώντας μια τεχνική παρόμοια με το πρωτόκολλο WiFi που ονομάζεται Beacon Stuffing. Αυτό σημαίνει ότι συμπεριλαμβάνω δεδομένα προς αποστολή εντός του ίδιου του ονόματος του φάρου. Αυτό μου δίνει τη δυνατότητα να διαφημίζω δεδομένα χωρίς να απαιτώ τη σύνδεση άλλων συσκευών στο φάρο.

ble.begin (beaconMsg); // beaconMsg είναι το διαφημιζόμενο όνομα

Χρησιμοποιούμε τη βιβλιοθήκη SimpleBLE για να δημιουργήσουμε έναν φάρο με το όνομά του σε μορφή ESP. Όπου το «ESP» παραμένει πάντα αμετάβλητο στην αρχή του ονόματος και αντικαθίσταται με τα τελευταία δεδομένα που επιστρέφει η συνάρτηση getValue () κάθε 100 χιλιοστά του δευτερολέπτου.

float getValue () {return sensorValue;}

Η εφαρμογή android αναζητά ονόματα συσκευών BLE που ξεκινούν με ‘ESP’, μόλις βρεθεί, χωρίζει το όνομα και εμφανίζει μόνο τα δεδομένα από το τέλος.

Η επικοινωνία είναι μόνο ένας τρόπος, η εφαρμογή δεν στέλνει τίποτα πίσω.

Βήμα 3: Συμπέρασμα

Στο τέλος της ημέρας, αυτή η μέθοδος δεν αντικαθιστά μια σωστά εφαρμοσμένη βιβλιοθήκη BLE, αλλά μπορεί να αρκεί για να ανατρέψουμε ορισμένα έργα μέχρι να έρθει η πλήρης υποστήριξη BLE στο Arduino. Ας ελπίσουμε ότι αυτό το Instructables ήταν κάποια βοήθεια για εσάς.

ΜΕΓΑΛΟ Ευχαριστώ το DFRobot.com που μου έστειλε αυτά τα προϊόντα:

  • ESP32 FireBeetle Board
  • FireBeetle Expantion Shield
  • Αισθητήρας θερμοκρασίας DS18B20

Βρήκα πρόσφατα αυτήν τη βιβλιοθήκη. Το ReadME ισχυρίζεται ότι μπορείτε να συνδεθείτε σε άλλες συσκευές BLE για να λάβετε δεδομένα (Δεν μπορείτε να διαφημιστείτε μόνοι σας). Δεν το έχω δοκιμάσει αλλά μπορείτε να το δείτε αν σας ενδιαφέρει.

Μπορείτε να ελέγξετε το βίντεο του έργου στο: YouTube

Συνιστάται: