Πίνακας περιεχομένων:

Υψόμετρο RC Plane (συμβατό με τηλεμετρία Spektrum): 7 βήματα
Υψόμετρο RC Plane (συμβατό με τηλεμετρία Spektrum): 7 βήματα

Βίντεο: Υψόμετρο RC Plane (συμβατό με τηλεμετρία Spektrum): 7 βήματα

Βίντεο: Υψόμετρο RC Plane (συμβατό με τηλεμετρία Spektrum): 7 βήματα
Βίντεο: Tobyrich SmartPlane Pro Flight Mode 2024, Ιούλιος
Anonim
Υψόμετρο RC Plane (συμβατό με τηλεμετρία Spektrum)
Υψόμετρο RC Plane (συμβατό με τηλεμετρία Spektrum)

Έφτιαξα αυτό το υψόμετρο, ώστε ο πιλότος να γνωρίζει ότι βρίσκονται κάτω από το όριο των 400 ποδιών στα αεροσκάφη RC στις ΗΠΑ. Ο φίλος μου ανησυχούσε αφού δεν μπορούσε να πει με βεβαιότητα ότι ήταν πάντα κάτω από τα 400 πόδια και ήθελε την πρόσθετη διαβεβαίωση ότι θα παρέχει ένας αισθητήρας με δεδομένα τηλεμετρίας. Ναι, μπορείτε να αγοράσετε έναν αισθητήρα από το Spektrum, αλλά μπορείτε να δημιουργήσετε αυτό το έργο με λιγότερα από 20 $ με πίνακες διαρροής (οι οποίοι είναι ήδη φουσκωμένοι σε τιμή). Εάν έχετε ήδη τον προγραμματιστή J-link, μπορείτε να το δημιουργήσετε σε έναν προσαρμοσμένο πίνακα για μερικά δολάρια. Για να μην αναφέρουμε μόλις κατανοήσετε το πρωτόκολλο Xbus, μπορείτε να δημιουργήσετε οποιονδήποτε από τους άλλους υποστηριζόμενους αισθητήρες! Αλλά απλώς θα καλύψω ένα υψόμετρο σε αυτό το έργο…

Λίστα μερών:

  • Χρησιμοποίησα μια πλακέτα μικροελεγκτή Seeeduino XIAO για αυτό το έργο, επειδή είναι μικροσκοπική, χρησιμοποιεί επεξεργαστή M0 που έχει αρκετή ισχύ για αυτό το έργο, έχει τόσο I2C όσο και SPI έτοιμα για έξοδο και χρησιμοποιεί λογική 3.3v, ώστε να μην αλλάζει επίπεδο απαιτείται.

    https://www.seeedstudio.com/Seeeduino-XIAO-Arduino…

  • Για την ανίχνευση πίεσης αέρα, αγόρασα ένα BMP388 breakout board από την Adafruit. Ο πίνακας έχει I2C και SPI που έχουν σπάσει και μπορεί να λειτουργήσει σε λογική 3.3v ή 5v.

    https://www.adafruit.com/product/3966

  • Protoboard για καλωδίωση του κυκλώματος
  • Συγκολλητικό/συγκολλητικό σίδερο
  • Επικεφαλίδες αρσενικές/θηλυκές καρφίτσες ώστε να μπορώ εύκολα να αποσυνδέσω τον αισθητήρα/μικροελεγκτή.
  • Μικρό κουμπί. Το χρησιμοποιώ για επαναφορά του αρχικού υψομέτρου.
  • Αντίσταση 10k για αναδίπλωση του κουμπιού.
  • JST-XH θηλυκή υποδοχή 4 ακίδων για σύνδεση στη θύρα τηλεμετρίας του δέκτη Spektrum
  • Προγραμματιστής SEGGER J-Link EDU για να αναβοσβήνει το M0 χωρίς bootloader.

    https://www.adafruit.com/product/3571

  • Adafruit SWD 10-pin breakout board

    www.adafruit.com/product/2743

Προμήθειες

  • Εκτύπωσα επίσης 3D ένα μικρό περίβλημα για το υψόμετρο, αλλά αυτό δεν είναι απαραίτητο.
  • Παλαιογράφο- Εάν δεν έχετε ένα, το συνιστώ ανεπιφύλακτα αυτό:

    https://store.digilentinc.com/analog-discovery-2-1…

Βήμα 1: Μάθετε το πρωτόκολλο τηλεμετρίας Spektrum

Μάθετε το πρωτόκολλο τηλεμετρίας Spektrum
Μάθετε το πρωτόκολλο τηλεμετρίας Spektrum
Μάθετε το πρωτόκολλο τηλεμετρίας Spektrum
Μάθετε το πρωτόκολλο τηλεμετρίας Spektrum
Μάθετε το πρωτόκολλο τηλεμετρίας Spektrum
Μάθετε το πρωτόκολλο τηλεμετρίας Spektrum

Αυτό έγινε κυρίως για μένα από τον Ρέιμοντ Ντομίνγκο. Είχαν ήδη κάνει ένα υψόμετρο συμβατό με το Spektrum, οπότε η παρακολούθηση αυτού του πηγαίου κώδικα βοήθησε πραγματικά. Το φύλλο δεδομένων τηλεμετρίας Spektrum συμπλήρωσε τα υπόλοιπα κενά. Η μέτρηση των επιπέδων δεδομένων εκτός του δέκτη έδειξε ότι θα χρειαζόμουν λογική 3.3v.

Ο δέκτης στέλνει τη διεύθυνση της συσκευής και στη συνέχεια αναμένει μια απάντηση 16 byte. Το φύλλο δεδομένων δείχνει τις δομές για όλους τους διάφορους αισθητήρες. Ακόμα κι αν η δομή δεν έχει μήκος 16 byte, ο δέκτης αναμένει 16 bytes κάθε φορά.

Φύλλο δεδομένων Spektrum:

www.spektrumrc.com/ProdInfo/Files/SPM_Tele…

Το έργο του Raymond Domingo:

www.aerobtec.com/download/altisSpektrumInte…

Βήμα 2: Επιλέξτε Υλικό

Επιλέξτε Υλικό
Επιλέξτε Υλικό
Επιλέξτε Υλικό
Επιλέξτε Υλικό
Επιλέξτε Υλικό
Επιλέξτε Υλικό

Χρησιμοποίησα ένα BMP388 breakout board από την Adafruit για ανίχνευση πίεσης. Το ξεμπλοκάρισμα παρέχει διακοπές I2C και SPI και λειτουργεί σε λογική 3.3v ή 5v. Η Adafruit κάνει πάντα καταπληκτική δουλειά με τις σανίδες ξεμπλοκαρίσματος, οπότε το αγόρασα. Χρησιμοποίησα έναν πίνακα DFRobot Gravity BMP388 αντ 'αυτού στην κατασκευή μου, επειδή ο πίνακας Adafruit ήταν ήδη σε χρήση.

Δεδομένου ότι η κεντρική συσκευή I2C χρησιμοποιεί λογική 3.3v, χρειαζόμουν έναν μικροελεγκτή 3.3v και ήθελα να είναι μικρός. Θα επρόκειτο να χρησιμοποιήσω ένα Adafruit Trinket M0, αλλά είναι σχετικά ακριβά και δεν έχουν σπάσει πολλές καρφίτσες. Στη συνέχεια βρήκα τον πίνακα Seeeduino XIAO. Είναι μια πλακέτα M0 με I2C και SPI έτοιμα για λειτουργία, με υποδοχή USB-C. Επίσης, είναι πραγματικά μικροσκοπικό! Συνολικά μου αρέσει πολύ αυτός ο πίνακας (αν και ο αργός κρύσταλλος εκκίνησης με πήρε για πάντα για να το καταλάβω).

Το Spektrum χρησιμοποιεί έναν αρσενικό σύνδεσμο μεγέθους 4 ακίδων JST-XH στον δέκτη για τη θύρα "Xbus" στην οποία θα πατήσουμε. Χρησιμοποίησα ένα θηλυκό βύσμα 4 ακίδων JST-XH στο υψόμετρο και λειτούργησε τέλεια.

Βήμα 3: Γράψτε λογισμικό

Χρησιμοποίησα το Arduino IDE για να γράψω όλο τον κώδικα. Αντέγραψα το πρωτόκολλο τηλεμετρίας Spektrum από το φύλλο δεδομένων και το πρόσθεσα στη βιβλιοθήκη Arduino μου. Δεδομένου ότι το Adafruit έχει πάντα ωραίες βιβλιοθήκες για τις διακοπές τους, χρησιμοποίησα τη βιβλιοθήκη BMP3XX για τον αισθητήρα BMP388.

Τα κυριότερα συμπεράσματα από το σχέδιό μου είναι:

  • Ρυθμίστε το I2C ώστε να συμπεριφέρεται ως συσκευή πελάτη και να ανταποκρίνεται στη διεύθυνση του υψομέτρου Spektrum (0x12).
  • Διαβάστε το βαρόμετρο BMP388 μέσω SPI.
  • Αποθηκεύστε τα δεδομένα υψομέτρου σε δύο διαφορετικά buffer, έτσι ώστε ένα αίτημα I2C από τον δέκτη να μην καταστρέψει τα δεδομένα και εναλλάσσεται μεταξύ των δύο buffer κατά την ανάκτηση των δεδομένων. Αυτό διασφαλίζει ότι τα δεδομένα που αποστέλλονται στον δέκτη είναι πάντα πλήρη.
  • Χρησιμοποιεί ένα κουμπί για να μηδενίσει το υψόμετρο.

Για περισσότερες λεπτομέρειες και ανάλυση κώδικα, δείτε το βίντεο.

Βήμα 4: Σύρμα στο κύκλωμα

Wire the Circuit
Wire the Circuit
Wire the Circuit
Wire the Circuit
Wire the Circuit
Wire the Circuit
Wire the Circuit
Wire the Circuit

Χρησιμοποίησα το protoboard, αλλά αν θέλετε να αφιερώσετε χρόνο για να σχεδιάσετε έναν προσαρμοσμένο αλεσμένο πίνακα, μπορείτε να κάνετε το κύκλωμα πολύ πιο καθαρό.

Συνδέσα το βύσμα JST-XH στις ακίδες I2C του XIAO. Δεδομένου ότι ο δέκτης εξάγει 5 βολτ στο δίαυλο τηλεμετρίας, το θετικό από το δίαυλο πήγε στον πείρο VCC του XIAO. Με αυτόν τον τρόπο ο ενσωματωμένος ρυθμιστής 3.3v χρησιμοποιείται για την τροφοδοσία του αισθητήρα BMP388.

Βήμα 5: Μεταγλώττιση χωρίς πρόγραμμα εκκίνησης

Μεταγλώττιση χωρίς πρόγραμμα εκκίνησης
Μεταγλώττιση χωρίς πρόγραμμα εκκίνησης
Μεταγλώττιση χωρίς πρόγραμμα εκκίνησης
Μεταγλώττιση χωρίς πρόγραμμα εκκίνησης
  1. Βρείτε το αρχείο boards.txt (για όποιο πίνακα χρησιμοποιείτε).

    Στην περίπτωσή μου, εντοπίστηκε εδώ: C: / Users / AppData / Local / Arduino15 / πακέτα / Seeeduino / hardware / samd / 1.7.7 / boards.txt

  2. Αντιγράψτε τον πίνακα και μετονομάστε το πρώτο κλειδί για να καθορίσετε μια έκδοση χωρίς εκκίνηση. Πρόσθεσα το _nbl στο αρχικό όνομα.

    • Παλιά: seeed_XIAO_m0
    • Νέο: seeed_XIAO_m0_nbl
  3. Αλλάξτε την τιμή.name:

    • Old: seeed_XIAO_m0_nbl.name = Seeeduino XIAO
    • Νέο: seeed_XIAO_m0_nbl.name = Seeeduino XIAO No Bootloader
  4. Τροποποιήστε το σύνδεσμο να αναβοσβήνει χωρίς το πρόγραμμα εκκίνησης αλλάζοντας το σενάριο ld του οικοδόμου:

    • Old: seeed_XIAO_m0_nbl.build.ldscript = linker_scripts/gcc/flash_with_bootloader.ld
    • Νέο: seeed_XIAO_m0_nbl.build.ldscript = linker_scripts/gcc/flash_with out _bootloader.ld
  5. Επανεκκινήστε το Arduino IDE.
  6. Επιλέξτε τη νέα πλακέτα "Seeeduino XIAO No Bootloader" από το μενού των πλακέτων.
  7. Επιλέξτε "Εξαγωγή μεταγλωττισμένου δυαδικού"
  8. Μόλις καταρτιστεί, το αρχείο.bin θα βρίσκεται στο φάκελο του έργου σας Arduino.

Βήμα 6: Flash MCU με J-Link

Flash MCU με J-Link
Flash MCU με J-Link
Flash MCU με J-Link
Flash MCU με J-Link
Flash MCU με J-Link
Flash MCU με J-Link

Το Adafruit διαθέτει έναν φανταστικό οδηγό για τον επαναπρογραμματισμό ενός bootloader σε μια συσκευή M0/M4. Στην περίπτωσή μας, θέλουμε να απαλλαγούμε από το bootloader, αλλά λειτουργεί με τον ίδιο τρόπο.

learn.adafruit.com/how-to-program-samd-boo…

Μόλις το κάνετε αυτό, δεν θα μπορείτε να ανεβάσετε κώδικα μέσω USB. Μπορείτε να ακολουθήσετε τον παραπάνω οδηγό για να αναβοσβήσετε ξανά το πρόγραμμα εκκίνησης στη συσκευή για να ανεβάσετε ξανά κώδικα μέσω USB όπως μπορούσατε από το εργοστάσιο.

Ο οδηγός του Adafruit είναι πολύ λεπτομερής, αλλά αυτά είναι τα βασικά βήματα:

  1. Συγκόλληση καλωδίων jumper στο πίσω μέρος του πίνακα XIAO.

    • Ο οδηγός του Adafruit δεν είπε ότι ο πείρος RST στον πίνακα διαρροής 2x5 πρέπει να συνδεθεί με τον πείρο επαναφοράς στις πλακέτες Adafruit. Αλλά για το XIAO, έπρεπε να συνδεθώ και με τα τέσσερα τακάκια στο πίσω μέρος του πίνακα.
    • Ο πείρος VREF πρέπει να συνδεθεί με τον ακροδέκτη XIAO 3.3v. Αυτό λέει στον εντοπιστή εντοπισμού σφαλμάτων ότι η λογική της συσκευής είναι 3.3v. Χωρίς αυτό, εάν επιλέξετε λάθος επιλογή, μπορεί να προκαλέσετε ζημιά στον μικροελεγκτή.
  2. Συνδέστε τα καλώδια του βραχυκυκλωτήρα στο J-Link.
  3. Ενεργοποιήστε την πλακέτα XIAO με καλώδιο USB.
  4. Ανοίξτε το Atmel Studio.
  5. Επιλέξτε Εργαλεία Προγραμματισμός συσκευής
  6. Επιλέξτε την πλακέτα M0. Σε αυτή την περίπτωση, το ATSAMD21G18A
  7. Επιλέξτε SWD.
  8. Διαβάστε τη διαμόρφωση από τον στόχο.
  9. Εάν χρησιμοποιείτε το EDU J-Link, συμφωνήστε με τους όρους χρήσης (εάν τηρείτε τους όρους χρήσης).
  10. Βεβαιωθείτε ότι η ένδειξη τάσης είναι σωστή στην επάνω δεξιά γωνία. Εάν δεν είναι 3.3v, θα μπορούσατε να σπάσετε τον πίνακα σας!
  11. Εκκαθαρίστε την ασφάλεια προστασίας εκκίνησης (ρυθμίστε το μέγεθος του φορτωτή εκκίνησης σε 0 byte) και, στη συνέχεια, επιλέξτε πρόγραμμα.
  12. Στην ενότητα αναμνήσεων, επιλέξτε το μεταγλωττισμένο αρχείο.bin ή.hex και επιλέξτε πρόγραμμα.

Αντιμετώπιση προβλημάτων:

Όταν διαβάζετε τη διαμόρφωση της συσκευής, εάν λάβετε σφάλμα τάσης εκτός εμβέλειας, βεβαιωθείτε ότι το MCU είναι συνδεδεμένο στην τροφοδοσία και ότι ο πείρος J-Link VREF είναι συνδεδεμένος στα 3,3 βολτ

Βήμα 7: Ανασυγκρότηση χωρίς τον εξωτερικό κρύσταλλο

Ανασυγκρότηση χωρίς τον εξωτερικό κρύσταλλο
Ανασυγκρότηση χωρίς τον εξωτερικό κρύσταλλο

Ο πίνακας XIAO διαθέτει έναν εξωτερικό κρύσταλλο που χρειάζεται πολύ χρόνο για να ξεκινήσει. Ο δέκτης Spektrum κάνει μια ανακάλυψη συσκευής στο δίαυλο τηλεμετρίας 350 χιλιοστά του δευτερολέπτου μετά την ενεργοποίηση, οπότε πρέπει να πούμε στον μεταγλωττιστή να χρησιμοποιήσει τον εσωτερικό ταλαντωτή, ο οποίος θα κάνει την εκκίνηση σχεδόν στιγμιαία.

  1. Βρείτε το αρχείο boards.txt που τροποποιήσατε νωρίτερα (ναι, θα μπορούσα να σας είχα αποθηκεύσει αυτό το βήμα νωρίτερα, αλλά αυτή ήταν μια διαδικασία εκμάθησης για μένα)
  2. Προσθέστε "-DCRYSTALLESS" στη συμβολοσειρά seeed_XIAO_m0_nbl.build.extra_flags. Αυτό θα πει στον μεταγλωττιστή να χρησιμοποιήσει τον εσωτερικό ταλαντωτή.
  3. Συγκεντρώστε ξανά τον κώδικα.
  4. Αναβοσβήνετε ξανά το MCU.
  5. Βεβαιωθείτε ότι ο χρόνος εκκίνησης είναι αρκετά γρήγορος χρησιμοποιώντας παλμογράφο.

Όπως μπορείτε να δείτε από την εικόνα, το κίτρινο κανάλι 1 είναι το τροφοδοτικό. Το κυανό κανάλι 2 είναι η έτοιμη ακίδα στον μικροελεγκτή. Περίπου 10 χιλιοστά του δευτερολέπτου μετά την ενεργοποίηση, το κανάλι δύο τραβιέται ψηλά από τον μικροελεγκτή, γεγονός που υποδεικνύει ότι βρίσκεται στον βρόχο εγκατάστασης. Μόλις ολοκληρωθεί η ρύθμιση, το MCU κωδικοποιείται για να τραβήξει τον πείρο χαμηλά, υποδεικνύοντας ότι ο κύριος βρόχος ξεκινά. Το εύρος δείχνει ότι η εγκατάσταση διαρκεί περίπου 3 χιλιοστά του δευτερολέπτου. Συνολικά ο μικροελεγκτής χρειάζεται 13 χιλιοστά του δευτερολέπτου μετά την ενεργοποίηση για να είναι έτοιμος να ξεκινήσει.

Συνιστάται: