Πίνακας περιεχομένων:
- Προμήθειες
- Βήμα 1: Σχεδιάστε προσαρμοσμένες υπηρεσίες και χαρακτηριστικά
- Βήμα 2: Κωδικός Arduino
- Βήμα 3: Κωδικός Android Studio
- Βήμα 4: Τελική εφαρμογή
Βίντεο: Δημιουργήστε ένα Wearable Motion Tracker (BLE Από Arduino σε μια Προσαρμοσμένη εφαρμογή Android Studio): 4 βήματα
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:32
Το Bluetooth Low Energy (BLE) είναι μια μορφή επικοινωνίας Bluetooth χαμηλής ισχύος. Οι φορετές συσκευές, όπως τα έξυπνα ρούχα που σχεδιάζω στο Predictive Wear, πρέπει να περιορίζουν την κατανάλωση ενέργειας όπου είναι δυνατόν για να παρατείνουν τη διάρκεια ζωής της μπαταρίας και να χρησιμοποιούν συχνά BLE. Η Ομάδα Ειδικού Ενδιαφέροντος Bluetooth (SIG) ορίζει διάφορες προδιαγραφές που πρέπει να εφαρμόσει μια συσκευή για να αλληλεπιδράσει με μια συσκευή Bluetooth, τις οποίες ονομάζουν "προφίλ". Τα περισσότερα προφίλ εφαρμογών χρησιμοποιούν το Γενικό προφίλ χαρακτηριστικών (GATT) για την αποστολή δεδομένων μέσω ενός συνδέσμου BLE. Υπάρχουν τρεις θεμελιώδεις έννοιες στο BLE: προφίλ, υπηρεσίες και χαρακτηριστικά.
Το Bluetooth SIG έχει τυποποιήσει πολλά κοινά προφίλ, υπηρεσίες και χαρακτηριστικά. Ωστόσο, κατά τη δημιουργία προσαρμοσμένου υλικού υπάρχει συχνά ανάγκη δημιουργίας προσαρμοσμένων υπηρεσιών και χαρακτηριστικών και δεν υπάρχουν πολλά διαθέσιμα σεμινάρια. Για να γίνουν τα πράγματα πιο δύσκολα, η Adafruit δεν παρέχει καμία καθοδήγηση σχετικά με το σχεδιασμό εφαρμογών για κινητά ώστε να συνδυάζονται με τις μονάδες BLE και ο πηγαίος κώδικας για τις εφαρμογές τους είναι δύσκολο να αντιστραφεί.
Αυτό το σεμινάριο στοχεύει να εξηγήσει:
- Πώς να σχεδιάσετε προσαρμοσμένες υπηρεσίες και χαρακτηριστικά GATT
- Πώς να προγραμματίσετε το Adafruit Bluefruit LE SPI Friend να λειτουργεί ως διακομιστής GATT για αυτές τις προσαρμοσμένες υπηρεσίες και χαρακτηριστικά
- Πώς να προγραμματίσετε μια συσκευή Android να λειτουργεί ως πελάτης GATT για να διαβάζει τα δεδομένα από τον διακομιστή GATT
Αυτό το σεμινάριο δεν προορίζεται να μεταφραστεί σε μια εφαρμογή έτοιμη για παραγωγή - αυτό είναι απλώς μια εισαγωγή στο BLE.
Ανάγνωση φόντου:
- Τεκμηρίωση Adafruit Bluefruit LE SPI Friend
- Εάν δεν είστε εξοικειωμένοι με το GATT ή το BLE
Προμήθειες
- 1x - Μια συσκευή Arduino (χρησιμοποιώ το UNO για αυτό το σεμινάριο)
- 1x - Adafruit Bluefruit LE SPI Friend
- 8x - αρσενικά προς αρσενικά καλώδια άλτη
- Βασικός εξοπλισμός συγκόλλησης (για συγκόλληση ακίδων κεφαλίδας στο SPI Friend)
- Υπολογιστής (για τον προγραμματισμό της συσκευής Arduino και της συσκευής Android)
Βήμα 1: Σχεδιάστε προσαρμοσμένες υπηρεσίες και χαρακτηριστικά
ΕΙΣΑΓΩΓΗ
Αυτό το άρθρο κάνει εξαιρετική δουλειά εξηγώντας πώς να σχεδιάσετε προσαρμοσμένες υπηρεσίες και χαρακτηριστικά. Συνιστώ ανεπιφύλακτα να διαβάσετε αυτό το άρθρο. Παραθέτω μια πολύ απλή επισκόπηση παρακάτω που παραμελεί τις λεπτότητες υπέρ της απλότητας.
Οι υπηρεσίες GATT είναι μια συλλογή χαρακτηριστικών.
Τα χαρακτηριστικά της GATT περιέχουν μια ιδιότητα, μια τιμή και μηδέν ή περισσότερους περιγραφείς.
- Ιδιότητα: πώς πρέπει να χειρίζεται τα δεδομένα ο πελάτης (Android App) π.χ. διαβάστε, γράψτε, γράψτε χωρίς απάντηση, ειδοποιήστε και υποδείξτε.
- Τιμή: η πραγματική τιμή του χαρακτηριστικού π.χ. 1089
- Περιγραφείς: πρόκειται για πληροφορίες σχετικά με την τιμή π.χ. η μονάδα, χιλιοστά του δευτερολέπτου
ΣΧΕΔΙΟ
Εντάξει, τώρα γνωρίζετε τι είναι οι υπηρεσίες και τα χαρακτηριστικά, πρέπει να καταλάβουμε πώς να σχεδιάσουμε ορισμένες υπηρεσίες και χαρακτηριστικά για να λάβουμε τα προσαρμοσμένα δεδομένα μας και να τα στείλουμε από τον διακομιστή GATT (Arduino) στον πελάτη (Android App). Ας εξετάσουμε μια συσκευή Arduino που συλλέγει δεδομένα από μονάδα επιταχυνσιόμετρου-γυροσκοπίου (AGM). Θέλουμε να συλλέξουμε γυροσκόπιο και μετρήσεις επιτάχυνσης από τρεις χωρικούς άξονες και το χρόνο λήψης αυτών των μετρήσεων και να μεταφέρουμε αυτά τα δεδομένα στην εφαρμογή μας για κινητά. Θέλουμε επίσης να γνωρίζουμε πότε πρέπει να φορτίσουμε τη συσκευή, οπότε θέλουμε να διαβάσουμε το επίπεδο της μπαταρίας και να το μεταδώσουμε στην εφαρμογή μας για κινητά.
1. Μπορούμε να χρησιμοποιήσουμε κάποια από τις τυπικές υπηρεσίες και χαρακτηριστικά;
Το Bluetooth SIG έχει τυποποιήσει πολλές κοινές υπηρεσίες και χαρακτηριστικά. Πρώτα, ελέγξτε αυτά για να δείτε εάν μπορείτε να επιλέξετε κάποια από τις τυποποιημένες υπηρεσίες και χαρακτηριστικά. Οι τυπικές υπηρεσίες και χαρακτηριστικά μπορούν να χρησιμοποιήσουν πολύ μικρότερα πακέτα δεδομένων καθώς το Universal Unique Identifier (UUID) είναι 16 bit, ενώ οι προσαρμοσμένες υπηρεσίες και χαρακτηριστικά πρέπει να χρησιμοποιούν 128 bits για τα UUID τους. Περισσότερα για τα UUID αργότερα. Από την αναζήτησή μας, βρήκαμε μια τυποποιημένη "υπηρεσία μπαταρίας" που περιέχει ένα χαρακτηριστικό "επίπεδο μπαταρίας".
2. Διαχωρίστε όλες τις τιμές δεδομένων που θέλετε να στείλετε μέσω του BLE σε χαρακτηριστικά και υπηρεσίες
Μπορούμε να χωρίσουμε τα προσαρμοσμένα σημεία δεδομένων μας σε επτά προσαρμοσμένα χαρακτηριστικά εντός μιας προσαρμοσμένης υπηρεσίας. Θα ονομάσουμε αυτήν την υπηρεσία "υπηρεσία AGM". Θα περιέχει 7 χαρακτηριστικά: επιτάχυνση x, επιτάχυνση y, επιτάχυνση z, γυροσκόπιο x, γυροσκόπιο y, ζ-γυροσκόπιο και χρονική αναφορά.
3. Προσδιορίστε τις ιδιότητες που απαιτούνται για κάθε χαρακτηριστικό
Υπάρχουν πολλές ιδιότητες που μπορεί να έχει ένα χαρακτηριστικό.
- Διαβάστε: ο Πελάτης (Android App) μπορεί να διαβάσει μια τιμή από τον διακομιστή GATT (Arduino)
- Γράψτε: ο Πελάτης μπορεί να αλλάξει μια τιμή από τον διακομιστή GATT
- Υποδείξτε: ο Πελάτης θα ειδοποιηθεί εάν αλλάξει μια τιμή από τον Διακομιστή GATT και ο Πελάτης αναμένεται να στείλει επιβεβαίωση στον Διακομιστή GATT
- Ειδοποίηση: ο Πελάτης θα ειδοποιηθεί εάν αλλάξει μια τιμή από τον Διακομιστή GATT και ο Πελάτης δεν αναμένεται να στείλει επιβεβαίωση στον Διακομιστή GATT
Για αυτό το σεμινάριο, θα ορίσουμε όλα τα χαρακτηριστικά μας να διαβάζονται, με εξαίρεση το επίπεδο μπαταρίας που θα έχει ιδιότητες ειδοποίησης και ανάγνωσης.
4. Δημιουργήστε UUID για προσαρμοσμένες υπηρεσίες και χαρακτηριστικά και βρείτε τυπικά UUID
Όπως ανέφερα εν συντομία προηγουμένως, οι τυποποιημένες υπηρεσίες και χαρακτηριστικά Bluetooth SIG χρησιμοποιούν UUID 16 bit, ενώ οι προσαρμοσμένες υπηρεσίες και χαρακτηριστικά χρησιμοποιούν UUID 128 bit. Για παράδειγμα, δείτε τον αριθμό που έχει εκχωρηθεί στην υπηρεσία μπαταρίας στο Bluetooth SIG. Ο εκχωρημένος αριθμός 0x180F αντιπροσωπεύει το UUID 128 bit "0000180F-0000-1000-8000-00805F9B34FB". Τα τέσσερα ψηφία (16 bit) με έντονη γραφή είναι μοναδικά για τη συγκεκριμένη τυποποιημένη υπηρεσία ή χαρακτηριστικό, ενώ οι άλλοι χαρακτήρες διατηρούνται μεταξύ όλων των τυποποιημένων υπηρεσιών και χαρακτηριστικών. Δεδομένου ότι τόσο ο πελάτης όσο και ο διακομιστής GATT γνωρίζουν ότι οι τυποποιημένες υπηρεσίες και χαρακτηριστικά διαφέρουν μόνο με τα έντονα ψηφία, τα μεγέθη των πακέτων δεδομένων μπορούν να μειωθούν σημαντικά. Ωστόσο, οι προσαρμοσμένες υπηρεσίες και χαρακτηριστικά δεν μπορούν να λειτουργήσουν με την ίδια υπόθεση.
Αντ 'αυτού, οι προσαρμοσμένες υπηρεσίες και χαρακτηριστικά πρέπει να χρησιμοποιούν μη συντομευμένα UUID 128 bit. Εδώ είναι μια ηλεκτρονική γεννήτρια UUID. Κάθε UUID διαφορετικό από το τυποποιημένο UUID είναι αποδεκτό για ένα προσαρμοσμένο UUID. Ωστόσο, μια τυπική σύμβαση ονοματοδοσίας είναι να υποδηλώνει μια προσαρμοσμένη υπηρεσία 00000001-… και χαρακτηριστικά εντός αυτής της προσαρμοσμένης υπηρεσίας 00000002-…
Ακολουθεί ένα συνοπτικό υπολογιστικό φύλλο των υπηρεσιών και των χαρακτηριστικών που θα εφαρμόσουμε μαζί με τα UUID τους
Βήμα 2: Κωδικός Arduino
ΕΝΗΜΕΡΩΣΤΕ ΤΟ BLUEFRUIT LE SPI FRIEND
Πρώτα, συνδέστε το Adafruit Bluefruit LE SPI Friend όπως ορίζουν στον οδηγό σύνδεσης και ενεργοποιήστε τη συσκευή Arduino. Βεβαιωθείτε ότι μπορείτε να βρείτε το Adafruit Bluefruit LE SPI Friend στη συσκευή σας Android κατά τη σάρωση για συσκευές Bluetooth. Κατεβάστε την εφαρμογή Bluefruit Connect, συνδεθείτε στο Adafruit Bluefruit LE SPI Friend και αφήστε το να ενημερώσει το υλικολογισμικό στη συσκευή. Αυτό το βήμα είναι σημαντικό. Εάν δεν ενημερώσετε το υλικολογισμικό, οι εντολές που εκδίδετε τη συσκευή μέσω Arduino πιθανότατα θα αποτύχουν και δεν θα υπάρχει προφανές σφάλμα για να ανακαλύψετε ποιο είναι το πρόβλημα.
Εδώ το repo μου για αυτό το έργο. Μπορείτε να δείτε τον πλήρη κώδικα Arduino εδώ.
ΣΦΑΙΡΙΚΗ ΕΙΚΟΝΑ
Μερικά σημαντικά πράγματα που πρέπει να σημειωθούν:
- Στη μέθοδο setup (), όλα τα προσαρμοσμένα UUID πρέπει να περιέχουν "-" μεταξύ δύο χαρακτήρων. Για παράδειγμα, "AT+GATTADDCHAR = UUID128 = 00-00-00-05-62-7E-47-E5-A3-FC-DD-AB-D9-7A-A9-66" θα λειτουργήσει. "AT+GATTADDCHAR = UUID128 = 00000005-627E-47E5-A3fCDDABD97AA966" δεν θα λειτουργήσει.
- Σημειώστε ότι στη μέθοδο setup (), "battery.begin (true);" καλεί "ble.reset ();" αυτομάτως. Εάν δεν χρησιμοποιείτε την υπηρεσία μπαταρίας όπως έχω, πρέπει να επαναφέρετε τη μονάδα ble (χρησιμοποιήστε "ble.reset ();") όπου έχω την εντολή "battery.begin (true);".
- Στη μέθοδο setup (), αλλάξτε το "if (! Ble.begin (false))" σε "if (! Ble.begin (true))" αν θέλετε να κάνετε εντοπισμό σφαλμάτων.
Αυτός ο κώδικας είναι αρκετά αυτονόητος. Έχω συμπεριλάβει περιγραφές κάθε προσαρμοσμένης μεθόδου. Η μέθοδος εγκατάστασης καθιστά τη μονάδα BLE έτοιμη να λειτουργήσει ως διακομιστής GATT. Η μέθοδος βρόχου περνάει από μια ψεύτικη σάρωση της μονάδας γυροσκοπίου επιταχυνσιόμετρου (AGM) και παράγει έναν τυχαίο αριθμό από 1 έως 100 για αυτές τις τιμές. Η μπαταρία αποφορτίζεται κατά 1% για προσομοίωση της χρήσης της μπαταρίας. Μπορείτε εύκολα να αντικαταστήσετε αυτόν τον κωδικό με τις πραγματικές τιμές του αισθητήρα. Αυτός ο κώδικας υποθέτει ότι θα μεταδώσετε μια σειρά δεδομένων AGM, μήκους 6 μετρήσεων και όχι μία μέτρηση, καθώς η ανάλυση ενός παραθύρου δεδομένων AGM είναι πιθανότατα πιο χρήσιμη από ένα μόνο σημείο δεδομένων. Εάν αλλάξετε το μέγεθος του πίνακα, σημειώστε ότι θα απαιτηθούν αλλαγές στον κώδικα του στούντιο Android. Για να καταγράψετε μια σειρά δεδομένων, πρέπει να περάσετε έναν μετρητή μαζί με τα δεδομένα που σκοπεύετε να στείλετε. Αυτός ο μετρητής σάς επιτρέπει να βρείτε πού βρίσκεστε στο παράθυρο από την εφαρμογή στούντιο android, ώστε να μπορείτε να περιμένετε να ακούσετε τα σημεία δεδομένων που λείπουν στο παράθυρο. Χωρίς τον μετρητή ή με διαφορετικό μέγεθος πίνακα, το android studio project είτε θα χάσει σημεία δεδομένων είτε θα κολλήσει σε έναν βρόχο περιμένοντας τα υπόλοιπα σημεία δεδομένων που αναμένει.
Βήμα 3: Κωδικός Android Studio
Εδώ το repo μου για αυτό το έργο. Μπορείτε να δείτε τον πλήρη κώδικα του Android Studio εδώ.
ΣΦΑΙΡΙΚΗ ΕΙΚΟΝΑ
Θα συνεχίσω να το ενημερώνω με μια πιο εμπεριστατωμένη επισκόπηση του τρόπου με τον οποίο λειτουργούν λεπτομερώς ο κώδικας arduino και android… Η εφαρμογή είναι πλήρως λειτουργική, οπότε μη διστάσετε να κοιτάξετε μόνοι σας τον κώδικα εν τω μεταξύ.
Βήμα 4: Τελική εφαρμογή
Συγχαρητήρια! Η εφαρμογή σας μεταφορτώνεται στο τηλέφωνό σας και η φορητή συσκευή σας φορτίζεται και μεταδίδει δεδομένα.
ΕΚΚΙΝΗΣΗ ΤΗΣ ΕΦΑΡΜΟΓΗΣ
Για να ξεκινήσετε, κάντε κλικ στο εικονίδιο εκκίνησης για την εφαρμογή.
ΑΔΕΙΑ ΧΟΡΗΓΗΣΗΣ
Θα χρειαστεί να εγκρίνετε τη χρήση ορισμένων δικαιωμάτων για να λειτουργεί σωστά η εφαρμογή.
ΣΑΡΩΣΗ ΣΥΣΚΕΥΩΝ
Στη συνέχεια, κάντε κλικ στο κουμπί "Σάρωση" στην επάνω αριστερή γωνία της εφαρμογής.
ΕΠΙΛΕΞΤΕ ΤΗ ΦΟΡΗΤΗ ΣΑΣ ΣΥΣΚΕΥΗ
Στη συνέχεια, επιλέξτε τη φορετή συσκευή σας από τη λίστα διαθέσιμων συσκευών BLE. Το όνομά του είναι "BLE Arduino Hardware". ΛΗETΗ ΔΕΔΟΜΕΝΩΝ Περιμένετε όσο η εφαρμογή λαμβάνει τα δεδομένα AGM και καθορίζει πού βρίσκεται ή μετακινείται ο χρήστης. ΔΕΙΤΕ ΤΑ ΑΠΟΤΕΛΕΣΜΑΤΑ ΣΑΣ Ελέγξτε τα αποτελέσματα στην οθόνη! Κάντε κλικ στο κουμπί συγχρονισμού για να λάβετε άλλη ανάγνωση δεδομένων.
Συνιστάται:
Πώς να δημιουργήσετε μια εφαρμογή Android με το Android Studio: 8 βήματα (με εικόνες)
Πώς να δημιουργήσετε μια εφαρμογή Android με το Android Studio: Αυτό το σεμινάριο θα σας διδάξει τα βασικά για τον τρόπο δημιουργίας μιας εφαρμογής Android χρησιμοποιώντας το περιβάλλον ανάπτυξης του Android Studio. Καθώς οι συσκευές Android γίνονται όλο και πιο συχνές, η ζήτηση για νέες εφαρμογές θα αυξηθεί. Το Android Studio είναι εύκολο στη χρήση (ένα
Δημιουργήστε ένα ερασιτεχνικό ραδιόφωνο APRS RX Only IGate χρησιμοποιώντας ένα Raspberry Pi και ένα RTL-SDR Dongle σε λιγότερο από μισή ώρα: 5 βήματα
Δημιουργήστε ένα ερασιτεχνικό ραδιόφωνο APRS RX Only IGate χρησιμοποιώντας ένα Raspberry Pi και ένα RTL-SDR Dongle σε λιγότερο από μισή ώρα: Λάβετε υπόψη ότι αυτό είναι τώρα αρκετά παλιό, οπότε ορισμένα μέρη είναι λανθασμένα και παλιά. Τα αρχεία που πρέπει να επεξεργαστείτε έχουν αλλάξει. Έχω ενημερώσει τον σύνδεσμο για να σας δώσω την πιο πρόσφατη έκδοση της εικόνας (χρησιμοποιήστε το 7-zip για να την αποσυμπιέσετε) αλλά για πλήρη εγκατάσταση
Δημιουργήστε μια συσκευή Apple HomeKit Temperature Sensor (DHT22) χρησιμοποιώντας μια RaspberryPI και μια DHT22: 11 βήματα
Δημιουργήστε μια συσκευή Apple HomeKit Temperature Sensor (DHT22) χρησιμοποιώντας μια RaspberryPI και μια DHT22: Έψαχνα για έναν χαμηλού κόστους αισθητήρα θερμοκρασίας / υγρασίας που θα μπορούσα να χρησιμοποιήσω για να παρακολουθήσω τι συμβαίνει στον ανιχνευτικό μου χώρο, καθώς διαπίστωσα ότι αυτή την άνοιξη ήταν πολύ υγρό , και είχε πολύ υγρασία. Έτσι έψαχνα έναν αισθητήρα σε λογικές τιμές που θα μπορούσα να
Πώς να φτιάξετε ένα βίντεο πράσινης οθόνης από μια εφαρμογή: 5 βήματα
Πώς να φτιάξετε ένα βίντεο πράσινης οθόνης από μια εφαρμογή: Σε αυτό το διδακτικό θα σας δείξω πώς να φτιάξετε και να χρησιμοποιήσετε μια πράσινη οθόνη για τη δημιουργία φωτογραφιών και βίντεο. Υπάρχουν αρκετές εφαρμογές πράσινης οθόνης που μπορείτε να χρησιμοποιήσετε για να έχετε το σωστό αποτέλεσμα. Απαιτούμενα υλικά: Συσκευή εγγραφής βίντεο (θα μπορούσε να είναι iPod, iPad, o
Δημιουργήστε μια προσαρμοσμένη οθόνη στο LCD Studio (Για πληκτρολόγιο G15 και οθόνες LCD) .: 7 βήματα
Δημιουργήστε μια προσαρμοσμένη οθόνη στο LCD Studio (Για πληκτρολόγιο G15 και οθόνες LCD) .: Εντάξει αν έχετε μόλις το πληκτρολόγιο G15 και δεν σας εντυπωσιάζουν πολύ οι βασικές οθόνες που συνοδεύουν, τότε θα σας καθοδηγήσω στα βασικά της χρήσης του LCD Studio για να φτιάξετε τη δική σας. Αυτό το παράδειγμα θα κάνει μια οθόνη που θα δείχνει μόνο τα βασικά