- Πώς διαφέρει το Bluetooth Low Energy (BLE);
- BLE Ικανότητα NRF24L01 Module
- Απαιτούμενα στοιχεία
- Ξεκινώντας με nRF24L01 Module
- Arduino
- Διασύνδεση nRF24L01 με Arduino για επικοινωνία BLE
Το Bluetooth Low Energy (BLE) είναι μια έκδοση Bluetooth και υπάρχει ως μια μικρότερη, εξαιρετικά βελτιστοποιημένη έκδοση του κλασικού Bluetooth. Είναι επίσης γνωστό ως Smart Bluetooth. Το BLE σχεδιάστηκε λαμβάνοντας υπόψη τη χαμηλότερη δυνατή κατανάλωση ενέργειας ειδικά για χαμηλό κόστος, χαμηλό εύρος ζώνης, χαμηλή ισχύ και χαμηλή πολυπλοκότητα. Το ESP32 έχει ενσωματωμένες δυνατότητες BLE, αλλά για άλλους μικροελεγκτές όπως το Arduino, ο nRF24L01 μπορεί να χρησιμοποιηθεί. Αυτή η μονάδα RF μπορεί επίσης να χρησιμοποιηθεί ως μονάδα BLE για την αποστολή δεδομένων σε άλλη συσκευή Bluetooth, όπως smartphone, υπολογιστή κ.λπ.
Εδώ σε αυτό το σεμινάριο θα δείξουμε πώς να στείλουμε δεδομένα μέσω BLE χρησιμοποιώντας το nRF24L01. Θα στείλουμε μετρήσεις θερμοκρασίας από το DHT11 σε smartphone χρησιμοποιώντας τη μονάδα Arduino και nRF μέσω BLE.
Πώς διαφέρει το Bluetooth Low Energy (BLE);
Το BLE υιοθετήθηκε λόγω των χαρακτηριστικών κατανάλωσης ενέργειας, καθώς μπόρεσε να τρέξει για μεγάλο χρονικό διάστημα χρησιμοποιώντας μόνο ένα κελί νομισμάτων. Σε σύγκριση με άλλα ασύρματα πρότυπα, η ταχεία ανάπτυξη του BLE έχει προχωρήσει ακόμη πιο γρήγορα λόγω των εκπληκτικών εφαρμογών της σε smartphone, tablet και φορητούς υπολογιστές.
BLE Ικανότητα NRF24L01 Module
Το BLE χρησιμοποιεί την ίδια ζώνη ISM 2,4 GHz με ρυθμό baud από 250Kbps έως 2Mbps που επιτρέπεται σε πολλές χώρες και μπορεί να εφαρμοστεί σε βιομηχανικές και ιατρικές εφαρμογές. Η ζώνη ξεκινά από 2400 MHz έως 2483,5 MHz και χωρίζεται σε 40 κανάλια. Τρία από αυτά τα κανάλια είναι γνωστά ως «Διαφήμιση» και χρησιμοποιούνται από συσκευές για την αποστολή διαφημιστικών πακέτων με πληροφορίες σχετικά με αυτά, ώστε να μπορούν να συνδεθούν και άλλες συσκευές BLE. Αυτά τα κανάλια επιλέχθηκαν αρχικά στο κάτω μέρος της ζώνης και στη μέση της ζώνης για να αποφευχθούν παρεμβολές οι οποίες ενδεχομένως να επηρεάσουν έναν αριθμό καναλιών. Για να μάθετε περισσότερα σχετικά με το BLE, ακολουθήστε αυτό το σεμινάριο.
Αυτό το σεμινάριο θα εξηγήσει τον τρόπο χρήσης της μονάδας NRF24L01 ως πομποδέκτη BLE. Το σεμινάριο για το NRF24L01 ως μονάδα RF έχει ήδη εξηγηθεί στη διασύνδεση του nRF24L01 με το εκπαιδευτικό πρόγραμμα Arduino. Σήμερα η λειτουργία BLE αυτής της ενότητας θα εξηγηθεί στέλνοντας δεδομένα αισθητήρα σε ένα έξυπνο τηλέφωνο. Εδώ αυτή η μονάδα nRF24L01 θα διασυνδεθεί με τον Arduino Microcontroller και τα δεδομένα θερμοκρασίας αισθητήρα DHT11 θα σταλούν στην επίσημη εφαρμογή Android Nordic BLE.
Απαιτούμενα στοιχεία
Σκεύη, εξαρτήματα:
- Arduino UNO
- nRF24L01 BLE Ενότητα
- Αισθητήρας θερμοκρασίας και υγρασίας DHT11
- Άλτες
Λογισμικό:
- Arduino IDE
- Nordic BLE Android εφαρμογή (nRF Temp 2.0 για BLE ή nRF Connect για κινητά)
Ξεκινώντας με nRF24L01 Module
Οι μονάδες nRF24L01 είναι μονάδες πομποδέκτη, που σημαίνει ότι κάθε λειτουργική μονάδα μπορεί να στέλνει και να λαμβάνει δεδομένα, αλλά δεδομένου ότι είναι ημι-αμφίδρομη μπορεί είτε να στείλει είτε να λάβει δεδομένα κάθε φορά. Η μονάδα διαθέτει το γενικό ICRR24L01 από Nordic ημιαγωγούς που είναι υπεύθυνος για τη μετάδοση και τη λήψη δεδομένων. Το IC επικοινωνεί χρησιμοποιώντας το πρωτόκολλο SPI και ως εκ τούτου μπορεί να συνδεθεί εύκολα με οποιονδήποτε μικροελεγκτή. Γίνεται πολύ πιο εύκολο με το Arduino, καθώς οι βιβλιοθήκες είναι άμεσα διαθέσιμες. Χρησιμοποιήσαμε ήδη τη μονάδα nRF24L01 με το Arduino για να δημιουργήσουμε μια αίθουσα συνομιλίας και για τον ασύρματο έλεγχο των σερβοκινητήρων.
Τα pinouts μιας τυπικής μονάδας nRF24L01 παρουσιάζονται παρακάτω:
Η μονάδα έχει τάση λειτουργίας από 1,9V έως 3,6V (συνήθως 3,3V) και καταναλώνει πολύ λιγότερο ρεύμα μόνο 12mA κατά τη διάρκεια της κανονικής λειτουργίας, γεγονός που το καθιστά αποδοτικό στην μπαταρία και ως εκ τούτου μπορεί ακόμη και να λειτουργήσει σε κελιά νομισμάτων. Παρόλο που η τάση λειτουργίας είναι 3,3V, οι περισσότερες ακίδες είναι ανθεκτικές στα 5V και ως εκ τούτου μπορούν να συνδεθούν απευθείας με μικροελεγκτές 5V όπως το Arduino. Ένα άλλο πλεονέκτημα της χρήσης αυτών των ενοτήτων είναι ότι, κάθε ενότητα έχει 6 αγωγούς. Δηλαδή, κάθε ενότητα μπορεί να επικοινωνήσει με 6 άλλες ενότητες για μετάδοση ή λήψη δεδομένων. Αυτό καθιστά τη μονάδα κατάλληλη για τη δημιουργία δικτύων αστεριού ή πλέγματος σε εφαρμογές IoT. Επίσης, έχουν ένα ευρύ φάσμα διευθύνσεων 125 μοναδικών αναγνωριστικών, επομένως σε μια κλειστή περιοχή μπορούμε να χρησιμοποιήσουμε 125 από αυτές τις ενότητες χωρίς να παρεμβαίνουμε.
Arduino
Διασύνδεση nRF24L01 με Arduino για επικοινωνία BLE
Το nRF24L01 λειτουργεί στο SPI, επομένως η διασύνδεση θα χρησιμοποιεί το SPI Protocol. Ο πλήρης κωδικός και το βίντεο θα επισυναφθούν στο τέλος αυτού του σεμιναρίου. Ο οδηγός εφαρμογών Android εξηγείται επίσης στο βίντεο. Εδώ η μονάδα nRF24L01 χρησιμοποιείται για επικοινωνία με την εφαρμογή Smartphone της Nordic.Πρώτα συμπεριλάβετε τις απαιτούμενες βιβλιοθήκες. Η βιβλιοθήκη περιλαμβάνει RF24 για πρόσβαση σε εντολές nRF24L01, βιβλιοθήκη DHT11 για πρόσβαση σε εντολές DHT11 και βιβλιοθήκη BTLE για χρήση λειτουργιών BLE.
#περιλαμβάνω
Ορίστε και αρχικοποιήστε τις ακίδες και τις λειτουργίες για τη μονάδα DHT11 και BLE. Ο τύπος DHT αρχικοποιείται ως DHT11 δεδομένου ότι χρησιμοποιούμε DHT11. Το DHT συνδέεται με το GPIO Pin 4 και οι καρφίτσες CE και CSN της μονάδας nRF συνδέονται με τους Pin 9 και 10 αντίστοιχα.
#define DHTPIN #define DHTTYPE DHT11 DHT22 DHT dht (DHTPIN, DHTTYPE); Ραδιόφωνο RF24 (9, 10); BTLE btle (& ραδιόφωνο);
Ξεκινήστε τη σειριακή θύρα στο 9600, μπορείτε να επιλέξετε οποιαδήποτε θύρα. Στη συνέχεια, ξεκινήστε τον αισθητήρα DHT και ξεκινήστε επίσης το BTLE με το τοπικό όνομα Bluetooth με μέγιστο μήκος 8 χαρακτήρων.
Serial.begin (9600); dht.begin (); btle.begin ("CD Temp");
Διαβάστε τη θερμοκρασία πάνω από τον βρόχο και αποθηκεύστε την σε μια μεταβλητή θερμοκρασία . Προσθέστε μια γραμμή εντοπισμού σφαλμάτων για την εμφάνιση ενός μηνύματος σφάλματος εάν η DHT χάσει την ισχύ της ή συμβεί κάτι απρόσμενο.
float temp = dht.readTemperature (); // ανάγνωση δεδομένων θερμοκρασίας εάν (isnan (h) - isnan (t)) { Serial.println (F ("Απέτυχε η ανάγνωση από τον αισθητήρα DHT!")); ΕΠΙΣΤΡΟΦΗ; }
Αποθηκεύστε την τιμή στο Buffer και αναλύστε την στην ενότητα BLE. Στείλτε επίσης την τιμή θερμοκρασίας στο BLE Module. Η ενότητα BLE θα διαφημίσει τα δεδομένα θερμοκρασίας. Η εφαρμογή Android μπορεί να πραγματοποιήσει αναζήτηση στην ενότητα BLE και να λάβει τα δεδομένα του αισθητήρα.
nrf_service_data buf; buf.service_uuid = NRF_TEMPERATURE_SERVICE_UUID; buf.value = BTLE:: to_nRF_Float (temp); εάν (! btle.advertise (0x16, & buf, sizeof (buf))) { Serial.println ("Το BTLE απέτυχε..!"); }
Όταν τελειώσετε, μεταβείτε στο επόμενο κανάλι.
btle.hopChannel ();
Δεδομένου ότι η τεκμηρίωση του αισθητήρα DHT συνιστά τη διατήρηση καθυστέρησης τουλάχιστον 2 δευτερολέπτων μετά από μία ανάγνωση, προσθέστε λοιπόν καθυστέρηση 2 δευτερολέπτων.
καθυστέρηση (2000);
Μετά τη μεταφόρτωση και τη σύζευξη του smartphone με τη μονάδα nRF, θα αρχίσετε να λαμβάνετε τις τιμές στο nRF Temp 2.0 για εφαρμογή Android BLE όπως φαίνεται παρακάτω. Η πλήρης διαδικασία σύζευξης και λήψης των δεδομένων στην εφαρμογή Android εξηγείται επίσης στο βίντεο:
Αυτό ολοκληρώνει το πλήρες σεμινάριο για τη διαφήμιση των δεδομένων αισθητήρα στην εφαρμογή Nordic Android χρησιμοποιώντας το BLE nRF24L01. Εάν δυσκολεύεστε, τότε σχολιάστε παρακάτω ή γράψτε στο φόρουμ μας. Για να εξερευνήσετε περισσότερα σχετικά με το nRF24L02, μπορείτε επίσης να δοκιμάσετε να δημιουργήσετε μια ιδιωτική αίθουσα συνομιλίας χρησιμοποιώντας τα Arduino, nRF24L01 και Processing.