Πίνακας περιεχομένων:
- Προμήθειες
- Βήμα 1: Εξετάζοντας τον κώδικα:
- Βήμα 2: Ο υπόλοιπος κώδικας…
- Βήμα 3: Σύνδεση με καθαρά δεδομένα…
- Βήμα 4:
Βίντεο: Χρήση του πίνακα αισθητήρων Complex Arts για τον έλεγχο καθαρών δεδομένων μέσω WiFi: 4 βήματα (με εικόνες)
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:34
Θέλατε ποτέ να πειραματιστείτε με τον χειρονομικό έλεγχο; Κάνετε τα πράγματα να κινούνται με μια κίνηση του χεριού σας; Ελέγξτε τη μουσική με μια συστροφή του καρπού σας; Αυτό το Instructable θα σας δείξει πώς!
Το Complex Arts Sensor Board (complexarts.net) είναι ένας ευέλικτος μικροελεγκτής βασισμένος στο ESP32 WROOM. Διαθέτει όλες τις δυνατότητες της πλατφόρμας ESP32, συμπεριλαμβανομένου του ενσωματωμένου WiFi και Bluetooth και 23 διαμορφώσιμες καρφίτσες GPIO. Ο πίνακας αισθητήρων διαθέτει επίσης τον BNO_085 IMU - έναν επεξεργαστή κίνησης 9 DOF που εκτελεί επί του σκάφους εξισώσεις σύντηξης και τεταρτημορίου, παρέχοντας εξαιρετικά ακριβή προσανατολισμό, διάνυσμα βαρύτητας και γραμμικά δεδομένα επιτάχυνσης. Ο πίνακας αισθητήρων μπορεί να προγραμματιστεί χρησιμοποιώντας Arduino, MicroPython ή ESP-IDF, αλλά για αυτό το μάθημα θα προγραμματίσουμε τον πίνακα με το Arduino IDE. Είναι σημαντικό να σημειωθεί ότι οι μονάδες ESP32 δεν είναι εγγενώς προγραμματιζόμενες από το Arduino IDE, αλλά το καθιστά δυνατό αυτό είναι πολύ απλό. υπάρχει ένα υπέροχο σεμινάριο εδώ: https://randomnerdtutorials.com/installing-the-esp32-board-in-arduino-ide-windows-instructions/ που θα χρειαστεί περίπου 2 λεπτά για να ολοκληρωθεί. Το τελευταίο κομμάτι της ρύθμισης που χρειαζόμαστε είναι το πρόγραμμα οδήγησης για το τσιπ USB-to-UART στον πίνακα αισθητήρων, το οποίο μπορείτε να βρείτε εδώ: https://www.silabs.com/products/development-tools/software/usb-to -uart-bridge-vcp-drivers. Απλώς επιλέξτε το λειτουργικό σας σύστημα και εγκαταστήστε το, το οποίο θα διαρκέσει περίπου 2 λεπτά. Μόλις γίνει αυτό, είμαστε καλά να πάμε!
[Αυτό το μάθημα δεν προϋποθέτει καμία εξοικείωση με το Arduino ή το Pure Data, ωστόσο δεν θα καλύψει την εγκατάστασή τους. Το Arduino μπορείτε να το βρείτε στο aduino.cc. Μπορείτε να βρείτε τα Καθαρά Δεδομένα στη διεύθυνση puredata.info. Και οι δύο ιστότοποι έχουν εύκολες οδηγίες για εγκατάσταση και εγκατάσταση.]
Επίσης… οι έννοιες που καλύπτονται σε αυτό το σεμινάριο, όπως η δημιουργία συνδέσεων UDP, ο προγραμματισμός του ESP32 με το Arduino και το βασικό κτίριο Pure Data patch - είναι δομικά στοιχεία που μπορούν να εφαρμοστούν για αμέτρητα έργα, οπότε μην σκύβετε εδώ μόλις τελειώσετε κατέρριψε αυτές τις έννοιες!
Προμήθειες
1. Complex Arts Sensor Board
2. Arduino IDE
3. Καθαρά δεδομένα
Βήμα 1: Εξετάζοντας τον κώδικα:
Αρχικά, θα δούμε τον κώδικα Arduino. (Η πηγή είναι διαθέσιμη στη διεύθυνση https://github.com/ComplexArts/SensorBoardArduino. Συνιστάται να ακολουθείτε μαζί με τον κώδικα.) Χρειαζόμαστε μερικές βιβλιοθήκες, μία εκ των οποίων δεν είναι βασική βιβλιοθήκη Arduino. ίσως χρειαστεί να το εγκαταστήσετε. Αυτό το έργο βασίζεται στο αρχείο SparkFun_BNO080_Arduino_Library.h, οπότε αν δεν το έχετε, θα πρέπει να μεταβείτε στο Sketch -> Include Library -> Manage Libraries. Πληκτρολογήστε "bno080" και θα εμφανιστεί η προαναφερθείσα βιβλιοθήκη. Πατήστε εγκατάσταση.
Οι άλλες τρεις βιβλιοθήκες που χρησιμοποιούνται πρέπει να συνοδεύονται από Arduino από προεπιλογή. Πρώτον, θα χρησιμοποιήσουμε τη βιβλιοθήκη SPI για να επικοινωνήσουμε με το BNO. Είναι επίσης δυνατό να χρησιμοποιήσετε το UART μεταξύ του ESP32 και του BNO, αλλά επειδή το SparkFun έχει ήδη μια βιβλιοθήκη που χρησιμοποιεί SPI, θα μείνουμε σε αυτό. (Ευχαριστώ, SparkFun!) Συμπεριλαμβανομένου του αρχείου SPI.h θα μας επιτρέψετε να επιλέξουμε ποιες καρφίτσες και θύρες θέλουμε να χρησιμοποιήσουμε για την επικοινωνία SPI.
Η βιβλιοθήκη WiFi περιέχει τις λειτουργίες που μας επιτρέπουν να συνδεθούμε σε ασύρματο δίκτυο. Το WiFiUDP περιέχει τις λειτουργίες που μας επιτρέπουν να στέλνουμε και να λαμβάνουμε δεδομένα μέσω αυτού του δικτύου. Οι δύο επόμενες γραμμές μας οδηγούν στο δίκτυο - εισαγάγετε το όνομα και τον κωδικό πρόσβασης του δικτύου σας. Οι δύο γραμμές μετά καθορίζουν τη διεύθυνση δικτύου και τη θύρα στην οποία στέλνουμε τα δεδομένα μας. Σε αυτήν την περίπτωση, απλώς θα μεταδώσουμε, πράγμα που σημαίνει ότι θα το στείλουμε σε οποιονδήποτε στο δίκτυό μας ακούει. Ο αριθμός θύρας καθορίζει ποιος ακούει, όπως θα δούμε σε λίγο.
Αυτές οι δύο επόμενες γραμμές δημιουργούν μέλη για τις αντίστοιχες τάξεις τους, ώστε να έχουμε εύκολη πρόσβαση αργότερα στις λειτουργίες τους.
Στη συνέχεια, εκχωρούμε τους κατάλληλους πείρους του ESP στους αντίστοιχους πείρους του BNO.
Τώρα ρυθμίζουμε το μέλος κλάσης SPI, ορίζοντας επίσης την ταχύτητα θύρας SPI.
Τέλος φτάνουμε στη συνάρτηση εγκατάστασης. Εδώ, θα ξεκινήσουμε μια σειριακή θύρα, ώστε να μπορούμε να παρακολουθούμε την έξοδο μας με αυτόν τον τρόπο, αν το θέλουμε. Στη συνέχεια ξεκινάμε το WiFi. Παρατηρήστε ότι το πρόγραμμα περιμένει μια σύνδεση WiFi πριν προχωρήσετε. Μόλις συνδεθεί το WiFi, ξεκινάμε τη σύνδεση UDP και στη συνέχεια εκτυπώνουμε το όνομα του δικτύου μας και τη διεύθυνση IP μας στη σειριακή οθόνη. Μετά από αυτό ξεκινάμε τη θύρα SPI και ελέγχουμε για επικοινωνία μεταξύ του ESP και του BNO. Τέλος, καλούμε τη συνάρτηση "enableRotationVector (50);" καθώς θα χρησιμοποιήσουμε μόνο το διάνυσμα περιστροφής για αυτό το μάθημα.
Βήμα 2: Ο υπόλοιπος κώδικας…
Πριν πάμε στον κύριο βρόχο (), έχουμε μια συνάρτηση που ονομάζεται "mapFloat".
Αυτή είναι μια προσαρμοσμένη συνάρτηση που έχουμε προσθέσει για να αντιστοιχίσουμε ή να κλιμακώσουμε τιμές σε άλλες τιμές. Η ενσωματωμένη συνάρτηση χάρτη στο Arduino επιτρέπει τη χαρτογράφηση ακέραιων όρων, αλλά όλες οι αρχικές μας τιμές από το BNO θα είναι μεταξύ -1 και 1, οπότε θα πρέπει να τις κλιμακώσουμε χειροκίνητα στις τιμές που πραγματικά θέλουμε. Μην ανησυχείτε, όμως - εδώ είναι η απλή λειτουργία για να κάνετε ακριβώς αυτό:
Τώρα ερχόμαστε στον κύριο βρόχο (). Το πρώτο πράγμα που θα παρατηρήσετε είναι μια άλλη λειτουργία αποκλεισμού, όπως αυτή που κάνει το πρόγραμμα να περιμένει μια σύνδεση δικτύου. Αυτό σταματά μέχρι να υπάρξουν δεδομένα από το BNO. Όταν αρχίσουμε να λαμβάνουμε αυτά τα δεδομένα, εκχωρούμε τις εισερχόμενες τιμές τεταρτοταγούς σε μεταβλητές κυμαινόμενου σημείου και εκτυπώνουμε αυτά τα δεδομένα στη σειριακή οθόνη.
Τώρα πρέπει να χαρτογραφήσουμε αυτές τις τιμές.
[Λίγα λόγια για την επικοινωνία UDP: τα δεδομένα μεταφέρονται μέσω UDP σε πακέτα 8 bit ή τιμές από 0-255. Οτιδήποτε πάνω από 255 θα μεταφερθεί στο επόμενο πακέτο, προσθέτοντας την αξία του. Επομένως, πρέπει να βεβαιωθούμε ότι δεν υπάρχουν τιμές πάνω από 255.]
Όπως αναφέρθηκε προηγουμένως, έχουμε εισερχόμενες τιμές στην περιοχή -1 -1. Αυτό δεν μας δίνει πολλά να δουλέψουμε, αφού οτιδήποτε κάτω από το 0 θα διακοπεί (ή θα εμφανιστεί ως 0) και δεν μπορούμε να το κάνουμε ένας τόνος με τιμές μεταξύ 0 -1. Πρέπει πρώτα να δηλώσουμε μια νέα μεταβλητή για να κρατήσει τη χαρτογραφημένη τιμή μας, στη συνέχεια παίρνουμε αυτήν την αρχική μεταβλητή και τη χαρτογραφούμε από -1 -1 σε 0 -255, εκχωρώντας το αποτέλεσμα στη νέα μας μεταβλητή που ονομάζεται Nx
Τώρα που έχουμε τα χαρτογραφημένα δεδομένα μας, μπορούμε να συνδυάσουμε το πακέτο μας. Για να γίνει αυτό, πρέπει να δηλώσουμε ένα buffer για τα πακέτα δεδομένων, δίνοντάς του ένα μέγεθος [50] για να βεβαιωθούμε ότι όλα τα δεδομένα θα ταιριάζουν. Στη συνέχεια ξεκινάμε το πακέτο με τη διεύθυνση και τη θύρα που καθορίσαμε παραπάνω, γράφουμε το buffer και 3 τιμές στο πακέτο to και μετά τελειώνουμε το πακέτο.
Τέλος, εκτυπώνουμε τις αντιστοιχισμένες συντεταγμένες μας στη σειριακή οθόνη. Τώρα ο κώδικας Arduino ολοκληρώθηκε! Μετακινήστε τον κωδικό στην πλακέτα αισθητήρων και ελέγξτε τη σειριακή οθόνη για να βεβαιωθείτε ότι όλα λειτουργούν όπως αναμένεται. Θα πρέπει να δείτε τις τιμές τεταρτοταγούς καθώς και τις αντιστοιχισμένες τιμές.
Βήμα 3: Σύνδεση με καθαρά δεδομένα…
Τώρα για τα καθαρά δεδομένα! Ανοίξτε το Pure Data και ξεκινήστε μια νέα ενημερωμένη έκδοση κώδικα (ctrl n). Το έμπλαστρο που θα δημιουργήσουμε είναι πολύ απλό, έχει μόνο επτά αντικείμενα. Το πρώτο που θα δημιουργήσουμε είναι το [netreceive] αντικείμενο. Αυτό είναι το ψωμί και το βούτυρο του επιθέματος μας, που χειρίζεται όλη την επικοινωνία UDP. Παρατηρήστε ότι υπάρχουν τρία επιχειρήματα για το αντικείμενο [netreceive]. το -u καθορίζει το UDP, το -b καθορίζει το δυαδικό και το 7401 είναι φυσικά η θύρα που ακούμε. Μπορείτε επίσης να στείλετε το μήνυμα "listen 7401" στο [netreceive] για να καθορίσετε τη θύρα σας.
Μόλις έχουμε δεδομένα που έρχονται, πρέπει να τα αποσυσκευάσουμε. Αν συνδέσουμε ένα [print] αντικείμενο στο [netrecieve], μπορούμε να δούμε ότι τα δεδομένα αρχικά μας έρχονται ως μια ροή αριθμών, αλλά θέλουμε να αναλύσουμε αυτούς τους αριθμούς και να χρησιμοποιήσουμε τον καθένα για κάτι διαφορετικό. Για παράδειγμα, μπορεί να θέλετε να χρησιμοποιήσετε περιστροφή του άξονα Χ για να ελέγξετε το βήμα ενός ταλαντωτή και τον άξονα Υ για τον όγκο ή οποιοδήποτε αριθμό άλλων δυνατοτήτων. Για να γίνει αυτό, η ροή δεδομένων περνάει από ένα αντικείμενο [αποσυσκευασία] που έχει τρία floats (f f f) είναι τα ορίσματά του.
Τώρα που είσαι τόσο μακριά, ο κόσμος είναι το στρείδι σου! Έχετε έναν ασύρματο ελεγκτή που μπορείτε να χρησιμοποιήσετε για να χειριστείτε οτιδήποτε θέλετε στο σύμπαν των Pure Data. Σταμάτα όμως εκεί! Εκτός από το Rotation Vector, δοκιμάστε το επιταχυνσιόμετρο ή το μαγνητόμετρο. Δοκιμάστε να χρησιμοποιήσετε ειδικές λειτουργίες του BNO, όπως "διπλό πάτημα" ή "ανακίνηση". Το μόνο που χρειάζεται είναι μια μικρή αναζήτηση στα εγχειρίδια χρήστη (ή στο επόμενο Instructable…).
Βήμα 4:
Αυτό που κάναμε παραπάνω είναι η δημιουργία επικοινωνίας μεταξύ του πίνακα αισθητήρων και των Pure Data. Αν θέλετε να αρχίσετε να διασκεδάζετε περισσότερο, συνδέστε τις εξόδους δεδομένων σας με κάποιους ταλαντωτές! Παίξτε με έλεγχο έντασης! Controlσως ελέγξτε κάποιους χρόνους καθυστέρησης ή αντηχήστε! ο κόσμος είναι το στρείδι σου!
Συνιστάται:
Επαναχρησιμοποίηση της επιφάνειας αφής του παλιού φορητού υπολογιστή για τον έλεγχο μιας βηματικής μηχανής: 11 βήματα (με εικόνες)
Επαναχρησιμοποιήστε το Touchpad του Old Laptop για τον έλεγχο ενός Stepper Motor: Έφτιαξα αυτό το έργο πριν από μερικούς μήνες. Λίγες μέρες πριν, δημοσίευσα ένα βίντεο του έργου στο r/Arduino στο Reddit. Βλέποντας τους ανθρώπους να ενδιαφέρονται για το έργο, αποφάσισα να κάνω αυτό το Instructable όπου έχω κάνει κάποιες αλλαγές στον κώδικα Arduino
Δημιουργία ειδοποιήσεων μέσω ηλεκτρονικού ταχυδρομείου για τον αισθητήρα ασύρματης θερμοκρασίας και υγρασίας NCD με χρήση του Κόμβου-Κόκκινου: 22 Βήματα
Δημιουργία ειδοποιήσεων μέσω ηλεκτρονικού ταχυδρομείου για τον αισθητήρα ασύρματης θερμοκρασίας και υγρασίας NCD χρησιμοποιώντας το Node-Red: Χρησιμοποιούμε εδώ τον αισθητήρα θερμοκρασίας και υγρασίας του NCD, αλλά τα βήματα παραμένουν ίσα για οποιοδήποτε προϊόν ncd, οπότε αν έχετε άλλους ασύρματους αισθητήρες ncd, δοκιμάστε δωρεάν παρατηρήστε παράλληλα. Με τη διακοπή αυτού του κειμένου, πρέπει να
Ένας νέος τρόπος για τον έλεγχο του Arduino ενός αυτοκινήτου RC: 7 βήματα (με εικόνες)
Ένας νέος τρόπος για τον έλεγχο του Arduino ενός αυτοκινήτου RC: Έχω κάνει κάποια δουλειά με αυτοκίνητα που ελέγχονται με Arduino, αλλά αυτά στα οποία έχω δουλέψει ήταν πάντα αργά και μεθοδικά. Αυτό είναι υπέροχο όταν μαθαίνω arduino, αλλά ήθελα κάτι λίγο πιο … διασκεδαστικό. Εισάγετε το αυτοκίνητο RC. Τα αυτοκίνητα RC είναι κυριολεκτικά σχεδιασμένα για να είναι
Χρήση του τηλεφώνου Sony Ericsson με δυνατότητα Bluetooth για τον έλεγχο του υπολογιστή σας: 6 βήματα
Χρήση του τηλεφώνου Sony Ericsson με δυνατότητα Bluetooth για τον έλεγχο του υπολογιστή σας: Διαβάζω οδηγίες εδώ και λίγο καιρό και πάντα ήθελα να κάνω μερικά από τα πράγματα για τα οποία έχουν γράψει οι άνθρωποι, αλλά έχω βρεθεί να κοιτάζω πράγματα που είναι δύσκολο να γίνουν επειδή είναι πραγματικά δύσκολο να γίνουν, ή
Χρήση του Meshlab για τον καθαρισμό και τη συναρμολόγηση δεδομένων σάρωσης λέιζερ: 8 βήματα
Χρήση του Meshlab για τον καθαρισμό και τη συναρμολόγηση δεδομένων σάρωσης λέιζερ: Το Meshlab είναι ένα λογισμικό ανοιχτού κώδικα που χρησιμοποιείται για τον χειρισμό και την επεξεργασία δεδομένων πλέγματος. Αυτό το σεμινάριο θα δείξει συγκεκριμένα πώς να συγκεντρώσετε, να καθαρίσετε και να αναδημιουργήσετε δεδομένα από έναν σαρωτή 3D λέιζερ. Οι τεχνικές που χρησιμοποιούνται με το σαρωτή που χρησιμοποιούνται εδώ πρέπει να εφαρμοστούν