Πίνακας περιεχομένων:
- Βήμα 1: Σχεδιασμός υλικού
- Βήμα 2: Συναρμολόγηση
- Βήμα 3: Firmware: Προγραμματισμός του προγράμματος εκκίνησης
- Βήμα 4: Υλικολογισμικό: Κώδικας που αναβοσβήνει με το PlatformIO
- Βήμα 5: Firmware: Αναβοσβήνει η άγκυρα
- Βήμα 6: Προχωρώντας παραπέρα
Βίντεο: Φτερό εντοπισμού UWB: 6 βήματα
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:34
Το Ultra-WideBand Feather ενσωματώνει τη μονάδα Decawave DWM1000 και ένα ATSAMD21 ARM Cortex M0 στον παράγοντα μορφής του φτερού Adafruit. Η μονάδα DWM1000 είναι μια ασύρματη μονάδα συμβατή με IEEE802.15.4-2011 UWB ικανή για ακριβή τοποθέτηση σε εσωτερικούς χώρους και υψηλούς ρυθμούς δεδομένων, καθιστώντας τον πίνακα τέλειο για έργα ρομποτικής όπου απαιτείται εντοπισμός.
Χαρακτηριστικά:-Decawave DWM1000 για παρακολούθηση ακριβείας-ARM Cortex M0 για γρήγορες και ισχυρές εφαρμογές-Adafruit Feather συμβατό για ενσωμάτωση με ένα ευρύ υπάρχον οικοσύστημα-διεπαφή SWD για προγραμματισμό και εντοπισμό σφαλμάτων εφαρμογών-υποδοχή USB-C-ενσωματωμένος φορτιστής μπαταριών LiPo
Για την πλήρη σύνταξη και ενημέρωση του έργου δείτε αυτό το έργο στον ιστότοπό μου Prototyping Corner στη διεύθυνση prototypingcorner.io/projects/uwb-feather
Το υλικό και το λογισμικό πηγής για αυτό το έργο διατίθενται από το GitHub Repository.
Βήμα 1: Σχεδιασμός υλικού
Όπως αναφέρθηκε στην εισαγωγή, το UWB Feather αποτελείται από ένα ATSAMD21 ARM Cortext M0+ για τους εγκεφάλους και μια μονάδα Decawave DWM1000 για ασύρματη εξαιρετικά ευρεία ζώνη, σε συντελεστή μορφής φτερών. Ο σχεδιασμός είναι σχετικά απλός που αποτελείται από 20 αντικείμενα BoM σε ένα PCB 2 επιπέδων. Το Pinout είναι συμβατό με το Adafruit M0 Feather
Η φόρτιση LiPo γίνεται από το MCP73831 μονοκύτταρο, πλήρως ενσωματωμένο ελεγκτή διαχείρισης φόρτισης. Η τάση της μπαταρίας μπορεί να παρακολουθείται στο D9, ωστόσο απαιτείται πρόσβαση σε όλα τα IO, το JP1 μπορεί να κοπεί για να ελευθερωθεί αυτός ο πείρος. Η ρύθμιση 3,3 βολτ έχει προδιαμορφωθεί από τον γραμμικό ρυθμιστή χαμηλής εγκατάλειψης AP2112K-3.3, παρέχοντας έως και 600mA.
Το Pinout είναι πλήρως συμβατό με τη γραμμή φτερών Adafruit M0 για εύκολη φορητότητα κώδικα. Οι γραμμές DWM1000 IO συνδέονται με το δίαυλο SPI και τις ψηφιακές ακίδες 2, 3 & 4 για RST, IRQ & SPI_CS με σεβασμό (οι οποίες δεν εκτίθενται μέσω της κεφαλίδας). Το D13 συνδέεται επίσης με το ενσωματωμένο LED, όπως είναι στάνταρ σε πολλές πλακέτες συμβατές με Arduino.
Ο προγραμματισμός μπορεί να προπαρασκευαστεί μέσω της κεφαλίδας SWD ή μέσω USB εάν έχει φορτωθεί με αντίστοιχο bootloader όπως το uf2-samdx1 από τη Microsoft. Δείτε το firmware για περισσότερα.
Σημείωση για το V1.0
Υπάρχει πρόβλημα με την υποδοχή USB-C στην έκδοση 1 αυτής της πλακέτας. Το αποτύπωμα που χρησιμοποίησα δεν περιλάμβανε την αποκοπή που απαιτείται για τη μέθοδο τοποθέτησης αποκοπής αυτού του εξαρτήματος.
Η έκδοση 1.1 θα περιλαμβάνει μια επιδιόρθωση για αυτό καθώς και την προσθήκη σύνδεσης micro-b για όσους το θέλουν. Δείτε παρακάτω εκδόσεις 1.1.
Για το σχεδιασμό των Υλικών και του Υλικού Έκδοση 1.1, ανατρέξτε στην εγγραφή του έργου.
Βήμα 2: Συναρμολόγηση
Με μόνο 20 αντικείμενα BoM και τα περισσότερα εξαρτήματα να μην είναι μικρότερα από 0603 (οι πυκνωτές κρυστάλλου 2x ήταν 0402), η συναρμολόγηση χειρός αυτού του πίνακα ήταν εύκολη. Είχα το PCB και το στένσιλ συγκόλλησης που κατασκευάστηκε από την JLCPCB σε μαύρο ματ με φινίρισμα επιφάνειας ENIG.
Συνολικό κόστος για 5 σανίδες (αν και οι 10 δεν είχαν διαφορά τιμής) και το στένσιλ ήταν 68 AUD, ωστόσο τα 42 $ από αυτά ήταν τα μεταφορικά. Η πρώτη παραγγελία από JLCPCB και πίνακες ήταν πολύ υψηλής ποιότητας με ωραίο φινίρισμα.
Βήμα 3: Firmware: Προγραμματισμός του προγράμματος εκκίνησης
Το υλικολογισμικό μπορεί να φορτωθεί μέσω της υποδοχής SWD χρησιμοποιώντας έναν προγραμματιστή όπως το J-Link από τον Segger. Εμφανίζεται παραπάνω το J-Link EDU Mini. Για να ξεκινήσουμε τον προγραμματισμό του πίνακα, πρέπει να φορτώσουμε τον bootloader και στη συνέχεια να ρυθμίσουμε την αλυσίδα εργαλείων μας.
Θα χρησιμοποιήσω το Atmel Studio για να αναβοσβήνω το bootloader. Για να το κάνετε αυτό, συνδέστε το J-Link και ανοίξτε το Atmel Studio. Στη συνέχεια, επιλέξτε Εργαλεία> Προγραμματισμός συσκευών. Στην περιοχή Εργαλείο, επιλέξτε το J-Link και ορίστε τη συσκευή σε ATSAMD21G18A και, στη συνέχεια, κάντε κλικ στην επιλογή Εφαρμογή.
Συνδέστε το J-Link στην κεφαλίδα SWD φτερών και εφαρμόστε τροφοδοσία είτε μέσω USB είτε μέσω της μπαταρίας. Μόλις συνδεθείτε, κάτω από την Υπογραφή συσκευής κάντε κλικ στην επιλογή Ανάγνωση. Τα πλαίσια κειμένου "Υπογραφή συσκευής" και "Τάση στόχου" πρέπει να διαδίδονται ανάλογα. Εάν δεν ελέγξουν τις συνδέσεις και προσπαθήστε ξανά.
Για να αναβοσβήνει ο φορτωτής εκκίνησης, πρέπει πρώτα να απενεργοποιήσουμε την ασφάλεια BOOTPROT. Για να το κάνετε αυτό, επιλέξτε Ασφάλειες> USER_WORD_0. NVMCTRL_BOOTPROT και αλλάξτε σε 0 Bytes. Κάντε κλικ στο Πρόγραμμα για να ανεβάσετε τις αλλαγές.
Τώρα μπορούμε να αναβοσβήσουμε το bootloader επιλέγοντας Memories> Flash και να ορίσουμε τη θέση του bootloader. Βεβαιωθείτε ότι διαγράφεται το Flash πριν επιλεγεί ο προγραμματισμός και κάντε κλικ στο πρόγραμμα. Εάν όλα πάνε καλά, η D13 στον πίνακα θα πρέπει να αρχίσει να σφύζει.
Τώρα θα χρειαστεί να ορίσετε την ασφάλεια BOOTPROT στο μέγεθος του bootloader 8kB. Για να το κάνετε αυτό, επιλέξτε Ασφάλειες> USER_WORD_0. NVMCTRL_BOOTPROT και αλλάξτε σε 8192 Bytes. Κάντε κλικ στο πρόγραμμα για να ανεβάσετε τις αλλαγές.
Τώρα που έχει αναβοσβήνει ο φορτωτής εκκίνησης, το D13 θα πρέπει να σφύζει και εάν είναι συνδεδεμένο μέσω USB, θα εμφανιστεί μια συσκευή μαζικής αποθήκευσης. Εδώ μπορείτε να ανεβάσετε αρχεία UF2 για προγραμματισμό του πίνακα.
Βήμα 4: Υλικολογισμικό: Κώδικας που αναβοσβήνει με το PlatformIO
Το υλικολογισμικό μπορεί να μεταφορτωθεί μέσω του πρωτοκόλλου UF2 ή απευθείας μέσω της διεπαφής SWD. Εδώ θα χρησιμοποιήσουμε το PlatformIO για την ευκολία και την απλότητά του. Για να ξεκινήσετε, δημιουργήστε ένα νέο έργο PIO και επιλέξτε το Adafruit Feather M0 ως πίνακα στόχου. Κατά τη μεταφόρτωση μέσω SWD με J-Link ορίστε το upload_protocol στο platformio.ini όπως φαίνεται παρακάτω.
[env: adafruit_feather_m0] πλατφόρμα = atmelsam board = adafruit_feather_m0 framework = arduino upload_protocol = jlink
Τώρα μπορείτε να προγραμματίσετε τον πίνακα με την απλότητα του πλαισίου Arduino.
Βήμα 5: Firmware: Αναβοσβήνει η άγκυρα
Οι μονάδες DWM1000 μπορούν να ρυθμιστούν ώστε να είναι άγκυρες ή ετικέτες. Γενικά οι άγκυρες διατηρούνται σε γνωστές στατικές θέσεις και οι ετικέτες χρησιμοποιούν άγκυρες για να πάρουν μια σχετική θέση. Για να δοκιμάσετε τη μονάδα DWM1000, μπορείτε να ανεβάσετε το παράδειγμα DW1000-Anchor από το αποθετήριο GitHub.
Για να αναβοσβήνετε αυτό το πρόγραμμα με το PlatformIO, από το PIO Home, επιλέξτε Open Project και, στη συνέχεια, βρείτε τη θέση του φακέλου DW1000-Anchor στο αποθετήριο GitHub. Στη συνέχεια, κάντε κλικ στο κουμπί μεταφόρτωσης PIO και θα εντοπίσει αυτόματα τον συνημμένο αισθητήρα εντοπισμού σφαλμάτων (βεβαιωθείτε ότι είναι συνδεδεμένος και ο πίνακας τροφοδοτείται).
Το υλικολογισμικό ετικέτας θα πρέπει να μεταφορτωθεί σε άλλο πίνακα. Στη συνέχεια, το αποτέλεσμα μπορεί να προβληθεί σε σειριακό τερματικό.
Βήμα 6: Προχωρώντας παραπέρα
Περαιτέρω βελτιώσεις σε αυτό το έργο θα περιλαμβάνουν την ανάπτυξη μιας νέας βιβλιοθήκης DW1000, ο πίνακας V1.1 αλλάζει άλλα έργα που χρησιμοποιούν αυτήν την ποικιλία τεχνολογίας. Εάν υπάρχει αρκετό ενδιαφέρον, θα εξετάσω την κατασκευή και την πώληση αυτών των σανίδων.
Ευχαριστώ για την ανάγνωση. Αφήστε τυχόν σκέψεις ή κριτικές στα παρακάτω σχόλια και φροντίστε να δείτε το έργο στο Prototyping Corner
Συνιστάται:
Πώς να αποκτήσετε έναν ΜΥΣΤΙΚΟ ΚΟΣΜΟ !!!!!! (Λειτουργία εντοπισμού σφαλμάτων): 3 βήματα
Πώς να αποκτήσετε έναν ΜΥΣΤΙΚΟ ΚΟΣΜΟ !!!!!! (Λειτουργία εντοπισμού σφαλμάτων): Σε αυτό το διδακτικό, θα σας δείξω να φτάσετε σε μια λειτουργία μυστικού κόσμου στο Minecraft
Πώς να χρησιμοποιήσετε ένα πρόγραμμα εντοπισμού σφαλμάτων σε ένα ESP32: 11 βήματα (με εικόνες)
Πώς να χρησιμοποιήσετε ένα πρόγραμμα εντοπισμού σφαλμάτων σε ένα ESP32: Θέλατε ποτέ να ρίξετε μια ματιά στον κώδικά σας για να δείτε γιατί συμπεριφέρεται όπως είναι; Παραδοσιακά σε έργα ESP32, θα έπρεπε να προσθέσετε ατελείωτη δήλωση εκτύπωσης για να καταλάβετε τι συνέβαινε, αλλά υπάρχει καλύτερος τρόπος! Ένας εντοπιστής σφαλμάτων
(EX) Ραντάρ εντοπισμού εχθρού Arduino: 3 βήματα
(EX) Arduino Enemy-Detecting Radar: Σε αυτό το έργο, θα σας δείξω πώς να φτιάξετε ένα ραντάρ ανίχνευσης εχθρού για να αποκρούσετε τη βάση του σπιτιού σας. Η διαδικασία είναι πολύ απλή, απλώς ακολουθήστε το βήμα μου και ο γείτονάς σας δεν θα σας κλέψει ποτέ ξανά τα φρούτα μόλις εγκαταστήσετε αυτήν τη συσκευή! Αυτό το έργο προέλευσης
Πώς να ρυθμίσετε ένα πρόγραμμα εντοπισμού σφαλμάτων πυρήνα των Windows μέσω του δικτύου σας: 6 βήματα
Τρόπος ρύθμισης εντοπισμού σφαλμάτων πυρήνα των Windows μέσω του δικτύου σας: Η εντοπισμός σφαλμάτων είναι ένα δημοφιλές εργαλείο που χρησιμοποιείται για να εντοπίσει τη βασική αιτία ενός σφάλματος. Ένα σφάλμα μπορεί να εκδηλωθεί με πολλούς διαφορετικούς τρόπους. μπορεί να προκαλέσει συντριβή συστήματος (μπλε οθόνη/BSOD), μπορεί να προκαλέσει συντριβή εφαρμογής, μπορεί να προκαλέσει πάγωμα του συστήματός σας για να ονομάσει ένα fe
Σεμινάριο εντοπισμού αντικειμένων Robot Jetson Nano Quadruped: 4 βήματα
Jetson Nano Quadruped Robot Object Detection Tutorial: Nvidia Το Jetson Nano είναι ένα κιτ προγραμματιστή, το οποίο αποτελείται από ένα SoM (System on Module) και έναν πίνακα φορέα αναφοράς. Στοχεύει κυρίως στη δημιουργία ενσωματωμένων συστημάτων που απαιτούν υψηλή επεξεργαστική ισχύ για μηχανική μάθηση, μηχανική όραση και βιντεοσκόπηση