- Arduino Nano 33 BLE Sense
- Επισκόπηση υλικού Arduino Nano 33 BLE Sense
- Βελτιώσεις λογισμικού με Arduino Nano 33 BLE
- Προετοιμασία του Arduino IDE για το Arduino Nano 33 BLE sense
- Πρόγραμμα ανάγνωσης δεδομένων αισθητήρα και εμφάνισης στο Serial Monitor
- Arduino Nano 33 BLE - Μεταφόρτωση του κωδικού
Το Arduino ήταν η πλατφόρμα ανάπτυξης για γρήγορο πρωτότυπο και επικύρωση ιδεών. Πολλοί από εμάς θα είχαμε ξεκινήσει με τον πίνακα ανάπτυξης του Arduino UNO, αλλά σήμερα καθώς προχωρούμε προς το Διαδίκτυο των πραγμάτων, του Computer Vision, της Τεχνητής Νοημοσύνης, της μηχανικής μάθησης και άλλων φουτουριστικών τεχνολογιών, το ταπεινό Arduino UNO δεν μπορούσε πλέον να αντεπεξέλθει στα 8 του. - Μικροελεγκτής bit. Αυτό απαιτούσε την έναρξη νέων πινάκων με πιο ισχυρούς επεξεργαστές που διαθέτουν ενσωματωμένο Wi-Fi, Bluetooth, GSM και άλλες ασύρματες δυνατότητες, όπως τα δημοφιλή MKR1000 ή MKR GSM 1400. Σε αυτό το πλαίσιο, το Arduino κυκλοφόρησε πρόσφατα μια νέα έκδοση του Nano που ονομάζεται Arduino Nano 33.
Υπάρχουν συνολικά δύο τύποι σανίδων Arduino Nano 33, δηλαδή Arduino Nano 33 IoT και Arduino Nano 33 BLE. Η κύρια διαφορά μεταξύ των δύο μονάδων είναι ότι η μονάδα Arduino Nano 33 BLE έχει μερικούς ενσωματωμένους αισθητήρες (θα αναφερθούν αργότερα) ενώ το Arduino Nano 33 IoT δεν τους έχει. Σε αυτό το άρθρο θα αναθεωρήσουμε τον πίνακα Arduino Nano 33 BLE, θα σας παρουσιάσουμε τις δυνατότητες και τις λειτουργίες του και, τέλος, γράψτε ένα δείγμα κώδικα για να διαβάσετε τις τιμές των αισθητήρων και να εμφανιστούν στη σειριακή οθόνη. Ας μάθουμε λοιπόν….!
Arduino Nano 33 BLE Sense
Το όνομα "Arduino Nano 33 BLE Sense" είναι γευστικό, αλλά το ίδιο το όνομα βγάζει μερικές σημαντικές πληροφορίες. Ονομάζεται "Nano" επειδή οι διαστάσεις, το pinout και ο συντελεστής μορφής είναι πολύ παρόμοια με το κλασικό Arduino Nano, στην πραγματικότητα σχεδιάζεται να χρησιμοποιηθεί ως αντικατάσταση του Arduino Nano στα υπάρχοντα έργα σας, αλλά το πλεονέκτημα είναι ότι αυτή η νέα μονάδα λειτουργεί σε 3.3V ενώ το κλασικό Nano λειτουργεί σε 5V. Νομίζω, λοιπόν, που έρχεται το όνομα "33", για να δείξει ότι η πλακέτα λειτουργεί σε 3.3V. Στη συνέχεια, το όνομα "BLE" δείχνει ότι η μονάδα υποστηρίζει Bluetooth Low Energy (BLE5 5.0)και το όνομα «αίσθηση» υποδηλώνει ότι διαθέτει ενσωματωμένους αισθητήρες όπως επιταχυνσιόμετρο, γυροσκόπιο, μαγνητόμετρο, αισθητήρα θερμοκρασίας και υγρασίας, αισθητήρα πίεσης, αισθητήρα εγγύτητας, αισθητήρα χρώματος, αισθητήρα χειρονομίας και ακόμη και ένα ενσωματωμένο μικρόφωνο. Θα αναφερθούμε αργότερα στις λεπτομέρειες του BLE και άλλων αισθητήρων, αλλά προς το παρόν έτσι φαίνεται πως ένας πίνακας αίσθησης Arduino Nano 33 BLE φαίνεται απλός.
Επισκόπηση υλικού Arduino Nano 33 BLE Sense
Στην πρώτη ματιά του πίνακα μπορείτε να βρείτε πολλά εξαρτήματα γεμάτα στην κορυφή, τα περισσότερα από τα οποία είναι αισθητήρες που είπα νωρίτερα. Αλλά ο κύριος εγκέφαλος κρύβεται πίσω από το μεταλλικό περίβλημα στη δεξιά πλευρά. Αυτό το περίβλημα διαθέτει τον επεξεργαστή Nordic nRF52840 που περιέχει ένα ισχυρό Cortex M4F και τη μονάδα NINA B306 για επικοινωνία BLE και Bluetooth 5. Αυτό επιτρέπει στην πλακέτα να λειτουργεί με πολύ χαμηλή ισχύ και να επικοινωνεί χρησιμοποιώντας το Bluetooth 5, ιδανικό για εφαρμογές δικτύου πλέγματος χαμηλής ισχύος στον οικιακό αυτοματισμό και σε άλλα συνδεδεμένα έργα. Επίσης, καθώς ο επεξεργαστής nRF υποστηρίζει το ARM Mbed OSΠαρέχει επίσης ορισμένες βελτιώσεις λογισμικού τις οποίες θα συζητήσουμε αργότερα. Οι αισθητήρες, τα LED, τα κουμπιά και άλλα σημαντικά πράγματα που πρέπει να γνωρίζετε στην πλακέτα σας επισημαίνονται στην παρακάτω εικόνα.
Όπως μπορείτε να δείτε από την παραπάνω εικόνα, η πλακέτα είναι γεμάτη με αισθητήρες που μπορούν να σας βοηθήσουν στην οικοδόμηση του δεξιού κουτιού χωρίς καν να χρειάζεται να συνδέσετε την πλακέτα με εξωτερικούς αισθητήρες. Η πλακέτα προορίζεται να χρησιμοποιηθεί σε φορητές συσκευές και άλλες έξυπνες φορητές συσκευές όπως ζώνες γυμναστικής, παρακολούθηση γλυκόζης, βηματόμετρα, smartwatch, μετεωρολογικός σταθμός, οικιακή ασφάλεια κ.λπ. όπου θα χρησιμοποιείτε τους περισσότερους από αυτούς τους αισθητήρες. Και όπως πάντα όλοι αυτοί οι αισθητήρες έχουν προ-χτισμένες βιβλιοθήκες για το Arduino, τις οποίες μπορείτε να χρησιμοποιήσετε εύκολα. Στο τέλος αυτού του άρθρου θα διαβάσουμε τιμές από όλους αυτούς τους αισθητήρες και θα τις εμφανίσουμε στη σειριακή οθόνη. Οι λεπτομέρειες του αισθητήρα στον πίνακα αισθητήρων Arduino Nano 33 BLE μαζί με τις απαιτούμενες βιβλιοθήκες του παρατίθενται παρακάτω
Όνομα αισθητήρα |
Παράμετροι |
Συνδέσεις |
LSM9DSI - ST Μικροηλεκτρονική |
Επιταχυνσιόμετρο, Γυροσκόπιο, Μαγνητόμετρο |
Φύλλο δεδομένων LSMDSI Βιβλιοθήκη Arduino_LSM9DS1 |
LPS22HB - ST Μικροηλεκτρονική |
Πίεση |
Φύλλο δεδομένων LPS22HB Βιβλιοθήκη Arduino_LPS22HB |
HTS221 - ST Μικροηλεκτρονική |
Θερμοκρασία και υγρασία |
Φύλλο δεδομένων LPS22HB Βιβλιοθήκη Arduino_HTS221 |
APDS9960 - Avago Tech. |
Εγγύτητα, Φως, Χρώμα, Χειρονομία |
Φύλλο δεδομένων LPS22HB Βιβλιοθήκη Arduino_APDS9960 |
MP34DT05 - ST Μικροηλεκτρονική |
Μικρόφωνο |
Φύλλο δεδομένων MP34DT05 Ενσωματωμένη βιβλιοθήκη PDM |
Οι περισσότεροι από αυτούς τους αισθητήρες προέρχονται από την ST Microelectronics και υποστηρίζουν τη λειτουργία χαμηλής κατανάλωσης, καθιστώντας το ιδανικό για σχέδια με μπαταρία. Λίγοι άνθρωποι μπορεί να είναι ήδη εξοικειωμένοι με τον αισθητήρα APDS9960, καθώς είναι ήδη διαθέσιμος ως μονάδα spate και έχουμε χρησιμοποιήσει επίσης τον αισθητήρα APDS9960 με τον Arduino στο παρελθόν. Για περισσότερες πληροφορίες σχετικά με αυτούς τους αισθητήρες, μπορείτε να επισκεφθείτε το αντίστοιχο δελτίο δεδομένων και επίσης να βεβαιωθείτε ότι έχετε προσθέσει ολόκληρη τη βιβλιοθήκη που παρέχεται στο Arduino IDE σας για να αρχίσετε να τα χρησιμοποιείτε με το Arduino Nano 33 BLE. Για να προσθέσετε μια βιβλιοθήκη, μπορείτε να χρησιμοποιήσετε τον δεδομένο σύνδεσμο για να μεταβείτε στην αντίστοιχη σελίδα GitHub και να κατεβάσετε το αρχείο ZIP και, στη συνέχεια, χρησιμοποιήστε το Σκίτσο -> Συμπερίληψη βιβλιοθήκης -> Προσθήκη. Βιβλιοθήκη ZIP ή μπορείτε επίσης να χρησιμοποιήσετε τη διαχείριση βιβλιοθήκης στο Arduino IDE και να τα προσθέσετε βιβλιοθήκες.
Τεχνικές προδιαγραφές Arduino Nano 33 BLE sense Board:
Με την υποστήριξη του Nordic nRF52840 επεξεργαστή, η πλακέτα Arduino Nano 44 BLE έχει τις ακόλουθες τεχνικές προδιαγραφές
- Τάση λειτουργίας: 3.3V
- Τάση εισόδου USB: 5V
- Τάση ακίδων εισόδου: 4,5V έως 21V
- Τσιπ: NINA-B3 - RF52840
- Ρολόι: 64MHz
- Flash: 1MB
- SRAM: 256 KB
- Ασύρματη συνδεσιμότητα: Bluetooth 5.0 / BLE
- Διεπαφές: USB, I2C, SPI, I2S, UART
- Ψηφιακές καρφίτσες εισόδου / εξόδου: 14
- PWM Pins: 6 (ανάλυση 8-bit)
- Αναλογικές ακίδες: 8 (10-bit ή 12-bit διαμορφώσιμες)
Βελτιώσεις λογισμικού με Arduino Nano 33 BLE
Ακριβώς όπως όλοι οι πίνακες Arduino εκεί έξω, το Arduino Nano 33 BLE sense μπορεί να προγραμματιστεί με το Arduino IDE. Όμως, πρέπει να χρησιμοποιήσετε τον διαχειριστή του διοικητικού συμβουλίου και να προσθέσετε τα στοιχεία του πίνακα στο IDE σας προτού ξεκινήσετε. Όπως γνωρίζουμε ότι το nRF 52840 μπορεί να προγραμματιστεί χρησιμοποιώντας το ARM Mbed OS, αυτό σημαίνει ότι η πλακέτα Arduino Nano 33 υποστηρίζει το λειτουργικό σύστημα πραγματικού χρόνου (RTOS). Με τον προγραμματισμό Mbed OS μπορούμε να εκτελέσουμε πολλά νήματα ταυτόχρονα στο πρόγραμμα για να εκτελέσουμε πολλαπλές εργασίες. Επίσης, η κατανάλωση ισχύος της πλακέτας θα μειωθεί σημαντικά, κάθε φορά που καλούμε τη λειτουργία καθυστέρησης, ο πίνακας θα μπαίνει σε λειτουργία γαργαλήματος κατά τη διάρκεια του χρόνου καθυστέρησης για εξοικονόμηση ενέργειας και θα επανέλθει σε λειτουργία μόλις τελειώσει η καθυστέρηση. Αναφέρεται ότι αυτή η λειτουργία θα καταναλώνει 4,5uA λιγότερο από μια κανονική λειτουργία καθυστέρησης Arduino.
Τούτου λεχθέντος, η ενσωμάτωση του Mbed OS με το Arduino IDE είναι σχετικά νέα και θα χρειαστεί λίγος χρόνος για να μπορέσουμε να αξιοποιήσουμε πλήρως την πλήρη ισχύ του Mbed OS με το Arduino IDE. Έτσι, για μια γρήγορη εκκίνηση, θα γράψουμε ένα πρόγραμμα για να διαβάσουμε όλες τις τιμές του αισθητήρα και να το εμφανίσουμε στις σειριακές οθόνες.
Προετοιμασία του Arduino IDE για το Arduino Nano 33 BLE sense
Εκκινήστε το Arduino IDE και μεταβείτε στα Εργαλεία -> Πίνακες -> Board Manger για να ξεκινήσετε τον διαχειριστή του Arduino Board. Τώρα αναζητήστε το "Mbed OS" και εγκαταστήστε το πακέτο. Θα χρειαστεί λίγος χρόνος για να ολοκληρωθεί η εγκατάσταση.
Μόλις ολοκληρωθεί η εγκατάσταση, κλείστε το παράθυρο διαλόγου και συνδέστε την πλακέτα Arduino 33 χρησιμοποιώντας ένα καλώδιο micro USB με το φορητό υπολογιστή σας. Μόλις συνδέσετε τα παράθυρα της πλακέτας θα ξεκινήσει αυτόματα η εγκατάσταση των απαιτούμενων προγραμμάτων οδήγησης για την πλακέτα. Στη συνέχεια, ανοίξτε το Arduino IDE και επιλέξτε Εργαλεία -> Πίνακας -> Arduino Nano 33. Στη συνέχεια, επίσης, επιλέξτε τη σωστή θύρα COM επιλέγοντας Εργαλεία -> Θύρα, η δική μου είναι συνδεδεμένη στη θύρα COM3, αλλά η δική σας ενδέχεται να διαφέρει. Αφού επιλεγεί η θύρα, η κάτω δεξιά γωνία του IDE θα πρέπει να μοιάζει με αυτό
Τώρα για να ελέγξετε γρήγορα αν όλα λειτουργούν μπορούμε να χρησιμοποιήσουμε ένα παράδειγμα προγράμματος, ας δοκιμάσουμε αυτό που παρέχεται στο Αρχείο -> Παραδείγματα -> PDM -> PDMSerialPlotter. Αυτό το πρόγραμμα θα χρησιμοποιήσει το ενσωματωμένο μικρόφωνο για να ακούσει ήχο και να το σχεδιάσει σε σειριακό σχεδιαστή. Μπορείτε να ανεβάσετε το πρόγραμμα και να ελέγξετε αν το διοικητικό συμβούλιο και το IDE λειτουργούν.
Τώρα, αν αντιμετωπίσετε μια γελοία αργή σύνταξη, τότε δεν είστε μόνοι, πολλοί άνθρωποι, συμπεριλαμβανομένου και εγώ, αντιμετωπίζουν αυτό το ζήτημα και κατά τη στιγμή της σύνταξης αυτού του άρθρου, φαίνεται ότι δεν υπάρχει λύση. Μου χρειάζονται περίπου 2-3 λεπτά για να μεταγλωττίσω και να ανεβάσω απλά προγράμματα και όταν δοκίμασα κάποια προγράμματα BLE ή προσπάθησα να δουλέψω με το Mbed OS, ο χρόνος συλλογής αυξήθηκε σε περισσότερα από 10 λεπτά, κάτι που δεν με ενθάρρυνε να δοκιμάσω κάτι άλλο. Αυτό οφείλεται στην ενσωμάτωση του Mbed OS με το Arduino IDE, ας ελπίσουμε ότι κάποιος από την υπέροχη κοινότητα Arduino θα βρει μια λύση για αυτό.
Πρόγραμμα ανάγνωσης δεδομένων αισθητήρα και εμφάνισης στο Serial Monitor
Εάν δεν χρησιμοποιούμε τις λειτουργίες BLE ή core Mbed OS του πίνακα, ο χρόνος μεταγλώττισης ήταν λογικός. Έτσι έγραψα ένα απλό σκίτσο για να διαβάσω όλες τις τιμές του αισθητήρα και να το εμφανίσω στη σειριακή οθόνη, όπως φαίνεται παρακάτω
Ο πλήρης κωδικός για να κάνετε το ίδιο δίνεται στο κάτω μέρος αυτής της σελίδας, αλλά βεβαιωθείτε ότι έχετε εγκαταστήσει όλες τις βιβλιοθήκες που αναφέρονται παραπάνω. Η εξήγηση του κώδικα έχει ως εξής.
Ξεκινήστε το πρόγραμμα συμπεριλαμβάνοντας όλα τα απαιτούμενα αρχεία κεφαλίδας. Εδώ θα χρησιμοποιήσουμε και τους τέσσερις αισθητήρες εκτός από το μικρόφωνο
#include // Συμπερίληψη βιβλιοθήκης για 9-άξονα IMU #include // Συμπερίληψη βιβλιοθήκης για ανάγνωση Pressure #include // Συμπερίληψη βιβλιοθήκης για ανάγνωση θερμοκρασίας και υγρασίας #include // Συμπερίληψη βιβλιοθήκης για αναγνώριση χρώματος, εγγύτητας και χειρονομίας
Μέσα στη λειτουργία ρύθμισης αρχικοποιούμε τη σειριακή οθόνη με ρυθμό baud 9600 για να εμφανίσουμε όλες τις τιμές του αισθητήρα και επίσης να προετοιμάσουμε όλες τις απαιτούμενες βιβλιοθήκες. Ο κώδικας στο εσωτερικό της εγκατάστασης φαίνεται παρακάτω
άκυρη ρύθμιση () {Serial.begin (9600); // Σειριακή οθόνη για εμφάνιση όλων των τιμών του αισθητήρα εάν (! IMU.begin ()) // Εκκίνηση του αισθητήρα IMU {Serial.println ("Αποτυχία προετοιμασίας του IMU!"); ενώ (1);} if (! BARO.begin ()) // Αρχικοποίηση αισθητήρα πίεσης {Serial.println ("Αποτυχία αρχικοποίησης αισθητήρα πίεσης!"); ενώ (1);} εάν (! HTS.begin ()) // Αρχικοποιήστε τον αισθητήρα θερμοκρασίας και υγρασίας {Serial.println ("Αποτυχία προετοιμασίας του αισθητήρα θερμοκρασίας και υγρασίας!"); ενώ (1);} εάν (! APDS.begin ()) // Αρχικοποιήστε τον αισθητήρα χρώματος, εγγύτητας και χειρονομίας {Serial.println ("Απέτυχε η προετοιμασία του αισθητήρα χρώματος, εγγύτητας και χειρονομίας!"); ενώ (1);}}
Μέσα στη λειτουργία βρόχου, διαβάζουμε τις απαιτούμενες τιμές αισθητήρα από τη βιβλιοθήκη και στη συνέχεια τις εκτυπώνουμε στη σειριακή οθόνη. Η σύνταξη μπορεί να αναφερθεί από το παράδειγμα προγράμματος κάθε βιβλιοθήκης, έχουμε διαβάσει το επιταχυνσιόμετρο, το γυροσκόπιο, το μαγνητόμετρο, την πίεση, τη θερμοκρασία, την υγρασία και τις τιμές αισθητήρα εγγύτητας και τις εμφανίζουμε στη σειριακή οθόνη. Ο κώδικας για τη μέτρηση της τιμής του επιταχυνσιόμετρου φαίνεται παρακάτω, επίσης, μπορούμε να μετρήσουμε για όλους τους αισθητήρες.
// Τιμές επιταχυνσιόμετρου εάν (IMU.accelerationAvailable ()) {IMU.readAcceleration (accel_x, accel_y, accel_z); Serial.print ("Accelerometer ="); Serial.print (accel_x); Serial.print (","); Serial.print (accel_y); Serial.print (","); Serial.println (accel_z); } καθυστέρηση (200)
Arduino Nano 33 BLE - Μεταφόρτωση του κωδικού
Η μεταφόρτωση του κωδικού στο Nano 33 είναι παρόμοια με οποιαδήποτε άλλη πλακέτα, αλλά σημειώστε ότι ο πίνακας έχει δύο θύρες COM. Όταν κάνετε κλικ στο κουμπί αποστολής, το Arduino IDE μεταγλωττίζει τον κώδικα και, στη συνέχεια, επαναφέρει αυτόματα την πλακέτα μέσω της εντολής λογισμικού, αυτό θα θέσει τον πίνακα σε λειτουργία φόρτωσης εκκίνησης και θα ανεβάσει τον κωδικό σας. Εξαιτίας αυτού, μόλις ολοκληρωθεί η μεταφόρτωση, ενδέχεται να παρατηρήσετε ότι το Arduino IDE άλλαξε αυτόματα τη θύρα COM σε διαφορετικό αριθμό και ίσως θελήσετε να το αλλάξετε ξανά πριν ανοίξετε τη σειριακή οθόνη.
Αυτή είναι λοιπόν η εμπειρία μου με τον πίνακα Arduino Nano 33 μέχρι τώρα, θα προσπαθήσω να φτιάξω κάτι με τους αισθητήρες και τις δυνατότητες BLE κάποια στιγμή αργότερα στο μέλλον. Πώς ήταν η εμπειρία σας με το διοικητικό συμβούλιο; Τι θα θέλατε να δημιουργήσω μαζί του; Αφήστε τις απαντήσεις στην ενότητα σχολίων και θα συζητήσουμε περισσότερα.