Πίνακας περιεχομένων:
- Προμήθειες
- Βήμα 1: Χτίζοντας την καρδιά του Pipboy
- Βήμα 2: Πρωτότυπο από χαρτόνι
- Βήμα 3: Από το πρωτότυπο στο πρότυπο
- Βήμα 4: Προσθήκη θήκης για οθόνη & Pi
- Βήμα 5: Επαναλάβετε για τον Πίνακα Ελέγχου
- Βήμα 6: Κόψτε τον σωλήνα
- Βήμα 7: Πλαίσιο
- Βήμα 8: Δοκιμή μπαταρίας
- Βήμα 9: Testing Fit
- Βήμα 10: Προσθέστε στοιχεία ελέγχου και λεπτομέρειες
- Βήμα 11: Bezel Rebuild No. 3
- Βήμα 12: Πρωτοτυπία των Ηλεκτρονικών
- Βήμα 13: Μεταφορά των ηλεκτρονικών στο σώμα
- Βήμα 14: Fine Tuning the Fit
- Βήμα 15: Retro Up the Rotary Encoder
- Βήμα 16: Εσωτερική επένδυση
- Βήμα 17: Προσθήκη λεπτομερειών
- Βήμα 18: Ζωγραφική και φινίρισμα Body Build
- Βήμα 19: Κωδικοποίηση
- Βήμα 20: Οθόνη στατιστικών
- Βήμα 21: Οθόνη αποθέματος
- Βήμα 22: Οθόνη χάρτη
- Βήμα 23: Οθόνη δεδομένων
- Βήμα 24: Οθόνη ραδιοφώνου
- Βήμα 25: Τελικές σκέψεις
- Βήμα 26: Άνοιγμα κώδικα στο Github
Βίντεο: Pipboy χτισμένο από παλιοσίδερα: 26 βήματα (με εικόνες)
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:32
Αυτό είναι το Pipboy που εργάζομαι, χτισμένο από τυχαία σκουπίδια από το γκαράζ και μια επιδρομή στο απόθεμα ηλεκτρονικών εξαρτημάτων μου. Βρήκα αυτή την πρόκληση και μου πήρε αρκετούς μήνες δουλειάς, οπότε δεν θα την κατηγοριοποιούσα ως ολοκληρωμένο έργο για αρχάριους. Οι δεξιότητες που απαιτούνται περιλαμβάνουν πλαστικές και ξύλινες εργασίες, ηλεκτρονικά και κωδικοποίηση. Το σώμα είναι κατασκευασμένο από διάφορα κομμάτια πλαστικών απορριμμάτων κομμένα και συγκολλημένα μεταξύ τους. Χρησιμοποίησα ένα Raspberry Pi 0 ως μικροελεγκτή, με μια κεφαλίδα οθόνης τοποθετημένη σε μέρος των ακίδων GPIO. Οι υπόλοιπες ακίδες χρησιμοποιούνται για την οδήγηση LED και τη σύνδεση κουμπιών/χειριστηρίων. Έγραψα μια διεπαφή χρήστη στυλ "Pipboy" με μερικές οθόνες επίδειξης στην Python για να ολοκληρώσω το έργο.
Οι στόχοι μου για το έργο ήταν:
- Έπρεπε να δουλεύω - δηλαδή έπρεπε να έχω στην πραγματικότητα μια οθόνη που έκανε πράγματα
- Wantedθελα να έχει ένα "καντράν" για την επιλογή των διαφορετικών οθονών, όπως αυτό που πάντα ξεχώριζε για μένα ως ένα εικονικό μέρος του UI στο Fallout
- Όλη η κατασκευή έπρεπε να ολοκληρωθεί χρησιμοποιώντας αντικείμενα που είχα ήδη στο γκαράζ ή στο γραφείο μου (αυτό δεν επιτεύχθηκε πλήρως, αλλά πλησίασα - πάνω από το 90% αυτού βρέθηκαν αντικείμενα ή πράγματα που είχα ήδη τοποθετήσει)
- Χρειάζεται να φορεθεί
Ένας στόχος που δεν είχα ήταν να το κάνω ακριβές αντίγραφο ενός από τα μοντέλα του παιχνιδιού - προτιμώ να κατασκευάζω πράγματα «στο στυλ» ενός πράγματος, καθώς μου δίνει χώρο να προσαρμόσω τυχαία σκουπίδια που βρίσκω και επιτρέψτε μου να είμαι λίγο πιο δημιουργικός. Τέλος, ναι ξέρω ότι μπορείτε να τα αγοράσετε αλλά ούτε αυτό ήταν το ζητούμενο;)
Προμήθειες
Προμήθειες
- Ευρυγώνιος σωλήνας (όπως ένα κομμάτι σωλήνα αποστράγγισης)
- Σκουπίδια πλαστικών (τόσο για τη δημιουργία του σώματος όσο και για διακοσμητικούς σκοπούς)
- Μικρό δοχείο
- Στρώμα δαπέδου αφρού
- Raspberry Pi
- Οθόνη 3,5"
- KY040 Περιστροφικός κωδικοποιητής
- 3x LED
- 2x κουμπιά
- ΑΠΟΘΗΚΗ ΕΝΕΡΓΕΙΑΣ
- Καλωδίωση
- Βίδες, κόλλες, χρώματα, πληρωτικά κλπ
Εργαλεία
- Ντρέμελ
- Πολυεργαλείο με εξαρτήματα κοπής και λείανσης
- Τρυπάνι
- Αρχεία
- Συγκολλητικό σίδερο
- Πυροβόλο θερμής κόλλας
- Βιδωτός οδηγός
- Κοφτερό μαχαίρι
- Είδε
Βήμα 1: Χτίζοντας την καρδιά του Pipboy
Το πρώτο πράγμα που έπρεπε να κάνω ήταν να διασφαλίσω ότι θα μπορούσα να πάρω μια οθόνη και έναν μικροελεγκτή σε έναν παράγοντα μορφής με τον οποίο θα μπορούσα να συνεργαστώ. Έτυχε να έχω μια οθόνη 3,5 ιντσών που χτυπάει ως ΚΑΠΕΤΟ στις καρφίτσες GPIO ενός Raspberry PI, οπότε αποφάσισα να το χρησιμοποιήσω. Το συνδύασα με ένα Raspberry Pi 0 και βεβαιώθηκα ότι λειτουργεί καλά, υπάρχουν μερικά βήματα για να αναγνωρίσει το Linux την οθόνη που πρέπει να εκτελέσετε.
Όπως μπορείτε να δείτε στη δεύτερη εικόνα, πρόσθεσα μια μικρή πλατφόρμα από χαρτόνι/αφρό που κόλλησα στη θήκη για να υποστηρίξω την οθόνη. Το έκανα αυτό καθώς ήξερα ότι θα χειρίζομαι αυτό το μέρος πολύ και δεν ήθελα να σπάσω τις καρφίτσες ή την οθόνη λόγω έλλειψης υποστήριξης. Τελικά αυτό αντικαταστάθηκε, αλλά ήταν μια καλή πρόσθετη προστασία κατά τη διαδικασία κατασκευής.
Αξίζει επίσης να σημειωθεί σε αυτό το σημείο, ότι αργότερα στην κατασκευή αντιμετώπισα προβλήματα απόδοσης με αυτήν τη ρύθμιση - κυρίως ο ρυθμός ανανέωσης στη διεπαφή μεταξύ του Pi και της οθόνης, θα ασχοληθώ με αυτό αργότερα αργότερα στην κατασκευή, αλλά αν το έκανα ξανά αυτό, ίσως να σκεφτώ διαφορετικό υλικό εδώ.
Ακολουθούν ορισμένοι χρήσιμοι σύνδεσμοι για αυτό:
www.raspberrypi.org/forums/viewtopic.php?t…
www.raspberrypi.org/forums/viewtopic.php?t…
www.raspberrypi.org/forums/viewtopic.php?f…
learn.sparkfun.com/tutorials/serial-periph…
Θα συμπεριλάβω επίσης στο github που σχετίζεται με αυτό κάποιες σημειώσεις για το τι πραγματικά έκανα για να δουλέψει αυτό (αν και από την ανάγνωση του θέματος υπάρχει μεγάλη διακύμανση στο πώς λειτουργεί αυτό για συγκεκριμένες περιπτώσεις/οδηγούς, οπότε η διαρροή σας μπορεί να διαφέρει).
Βήμα 2: Πρωτότυπο από χαρτόνι
Βρήκα κάποια παλιά υδρορροή/σωλήνα που θα μπορούσα να χρησιμοποιήσω για το σώμα, αλλά έπρεπε να βρω ένα σχέδιο για την πραγματική περιοχή της οθόνης και τον πίνακα ελέγχου. Για αυτό έκανα απλώς χάλκινα χαρτόνι και χρησιμοποίησα ταινία κάλυψης για να τα στερεώσω στο σωλήνα. Το πρώτο ήταν ένα απλό "κουτί" αλλά μου φαινόταν πολύ απλό, οπότε το τροποποίησα για να κάνω την περιοχή της οθόνης πιο ενδιαφέρουσα και πρόσθεσα μια ξεχωριστή περιοχή πίνακα ελέγχου. Αυτό έγινε λίγο πολύ ο τελικός σχεδιασμός (υπήρξαν μερικές τροποποιήσεις όπως θα δείτε, αλλά είναι κοντά).
Βήμα 3: Από το πρωτότυπο στο πρότυπο
Τώρα είχα ένα πρωτότυπο με το οποίο ήμουν ευχαριστημένος, μπορούσα να ισιώσω το χαρτόνι και να το μετατρέψω σε ένα πρότυπο το οποίο στη συνέχεια μετέφερα σε μέρος μιας παλιάς θήκης υπολογιστών που είχα κλωτσήσει. Οποιοδήποτε παρόμοιο σκληρό πλαστικό θα λειτουργούσε, απλώς χρησιμοποιούσα σκουπίδια που έπρεπε να παραδώσω. Μόλις επισημάνθηκα, ήμουν τότε σε θέση να κόψω τα κομμάτια για να μπορέσω να αρχίσω να συναρμολογώ το κύριο σώμα. Μια χρήσιμη συμβουλή εδώ, για να είναι ευκολότερο να σημειώσετε και στη συνέχεια να κόψετε το πλαστικό, κάλυψα τις περιοχές που θα έπρεπε να κόψω πρώτα με ταινία κάλυψης, και τα δύο μου έδωσαν έναν ευκολότερο τρόπο να σχεδιάσω το πρότυπο στο πλαστικό, και κάτι για να σταματήσει να γλιστράει ο δίσκος κοπής καθώς έκανα τις πρώτες κοπές.
Βήμα 4: Προσθήκη θήκης για οθόνη & Pi
Iθελα οι γωνίες της περιοχής της οθόνης να είναι καμπύλες και χρειαζόμουν κάτι για να κρατήσω πραγματικά το Pi και να το εμφανίσω - η λύση μου ήταν να χρησιμοποιήσω ένα μικρό πλαστικό δοχείο που είχα. Έκοψα μια τρύπα από την κορυφή του σώματος και κόλλησα το δοχείο μέσα από αυτό. Στη συνέχεια κόλλησα όλες τις πλευρές μεταξύ τους. Χρησιμοποίησα σούπερ κόλλα εδώ με άφθονη μαγειρική σόδα για να βοηθήσω στην ενίσχυση των συγκολλήσεων. Αργότερα συμπλήρωσα και κατέθεσα/λείανσα τα πάντα για να τα τακτοποιήσω όλα και να του δώσω μια πιο «καλουπωμένη» αίσθηση.
Βήμα 5: Επαναλάβετε για τον Πίνακα Ελέγχου
Στη συνέχεια, έκανα ακριβώς το ίδιο πρότυπο μεταφοράς, κοπής και κόλλησης για να κατασκευάσω το περίβλημα του πίνακα ελέγχου.
Βήμα 6: Κόψτε τον σωλήνα
Όπως μπορείτε να δείτε το δοχείο που σκοπεύω να χρησιμοποιήσω για να στεγάσω τα κύρια ηλεκτρονικά εξαρτήματα κάθεται τώρα περήφανο μέσα στο μαύρο πλαστικό περίβλημα, αυτό σημαίνει ότι πρέπει να ανοίξω ένα σωλήνα για να τοποθετηθεί. Χρησιμοποίησα ξανά ταινία κάλυψης για να ευθυγραμμίσω εκεί που ήθελα να κόψω και έκοψα ένα τετράγωνο του σωλήνα έτσι ώστε τα μέρη να ταιριάζουν.
Βήμα 7: Πλαίσιο
Μια πρόκληση που κατά λάθος επέβαλα στον εαυτό μου ήταν να βρω μια στεφάνη που θα γέμιζε την περιοχή γύρω από την οθόνη μέχρι τις άκρες του δοχείου. Δυστυχώς, ο τρόπος κατασκευής της οθόνης δεν έχει τίποτα χρήσιμο στο σχεδιασμό της (όπως τρύπες ή οτιδήποτε άλλο) για να την τοποθετήσετε, οπότε το πλαίσιο έπρεπε επίσης να κρατήσει τη οθόνη στη θέση της. Η πρώτη μου προσπάθεια (φαίνεται εδώ) ήταν ένα μείγμα πλαστικού και αφρού. Τελικά κατέληξα να το επαναλαμβάνω αρκετές φορές και κατέληξε να είναι ένα από τα πιο απαιτητικά μέρη της κατασκευής. Χειροτερεύει από τις μικρές ανοχές και τη λεπτή φύση τόσο του ίδιου του πλαισίου όσο και της οθόνης.
Βήμα 8: Δοκιμή μπαταρίας
Σε αυτό το σημείο, έστρεψα το μυαλό μου στο πώς να το κάνω αυτό ανεξάρτητα από το τροφοδοτικό USB που παρέχεται από το δίκτυο. Δοκίμασα διάφορες μπαταρίες και διαπίστωσα ότι η οθόνη Raspberry Pi + δεν έβγαζε πραγματικά τόσο μεγάλη δύναμη και ήταν πολύ χαρούμενη όταν λειτουργούσα ακόμη και σε ένα από τα μικρότερα πακέτα μπαταριών μου (δωρεάν από εμπορική έκθεση). Αυτό ήταν πραγματικά τυχερό καθώς το πακέτο ταιριάζει απόλυτα σε ένα κενό μέσα στην κατασκευή (φωτογραφίες αργότερα). Τώρα μπορούμε να κολλήσουμε προσωρινά τα κύρια εξαρτήματα του σώματος μαζί και να κάνουμε την πρώτη δοκιμαστική εκτέλεση στο χέρι μου!
Βήμα 9: Testing Fit
Εδώ μπορείτε να δείτε πού έχω τροποποιήσει περαιτέρω τον σωλήνα πυρήνα ώστε να επιτρέπεται η πρόσβαση στο κάτω μέρος των εξαρτημάτων. Μπορείτε επίσης να δείτε πώς ήμουν τυχερός με την μπαταρία να ταιριάζει όμορφα σε μια κοιλότητα στη μία πλευρά του δοχείου Pi. Τελικά ξεκίνησε η διαδικασία καθαρισμού των δεσμών, γέμισης, λείανσης και έκανα μια δοκιμαστική στρώση αστάρι για να έχετε μια αίσθηση της τελικής εμφάνισης (ήξερα ότι σε αυτό το στάδιο θα το τρίψω αυτό πολλές φορές και σχεδόν όλο το αστάρι θα φύγει, αλλά ήθελα να έχω μια αίσθηση για το πώς θα φαινόταν).
Βήμα 10: Προσθέστε στοιχεία ελέγχου και λεπτομέρειες
Wantedθελα μια σειρά κόκκινων/κίτρινων/πράσινων LED για να σχηματίσουν ένα μετρητή, καθώς και έναν περιστροφικό επιλογέα και τουλάχιστον 2 κουμπιά. Όλα αυτά τοποθετήθηκαν στο τμήμα του πίνακα ελέγχου - απλώς μια περίπτωση διάτρησης όλων των σωστών οπών. Άρχισα επίσης να προσθέτω μικρά κομμάτια απορριμμάτων από πλαστικά εξαρτήματα (βασικά kit bashing) για να προσθέσω λεπτομέρειες και περισσότερο ενδιαφέρον στο σώμα και στον πίνακα ελέγχου.
Βήμα 11: Bezel Rebuild No. 3
Όπως ανέφερα νωρίτερα, αγωνίστηκα με το πλαίσιο για αυτήν την κατασκευή και το ξανάφτιαξα αρκετές φορές. Αυτή είναι η τρίτη επανάληψη με την οποία κόλλησα. Η προσέγγισή μου εδώ είναι να χρησιμοποιήσω σανίδες και να κόψω 2 διαφορετικά σχήματα, το ένα στοχαστικό από το άλλο και στη συνέχεια να τα κολλήσω (και να τα σφίξω) για να σχηματίσω τη μεσαία εικόνα. Αυτά τα σχήματα επέτρεψαν στην τετράγωνη οθόνη να καθίσει μέσα σε αυτό και στη συνέχεια κράτησε την οθόνη στη θέση του μέσα στο δοχείο (όπως στην εικόνα 3). Αυτό μου έδωσε αρκετό υλικό για να χρησιμοποιήσω 4 πολύ μικρές βίδες ως εξαρτήματα - τα οποία χρησιμοποίησα για να το στερεώσω σταθερά στη θέση του μέσα στη θήκη και με τη σειρά του θα κρατούσε την οθόνη σταθερή και ασφαλή. Εκ των υστέρων θα έβρισκα μια οθόνη που συνοδευόταν από κάποιες αξιοπρεπείς επιλογές τοποθέτησης (ή χρησιμοποιούσα έναν εκτυπωτή 3D - που δεν είχα εκείνη τη στιγμή).
Βήμα 12: Πρωτοτυπία των Ηλεκτρονικών
Χρησιμοποιώ ένα breadboard για να σχεδιάσω τα απλά κυκλώματά μου έτσι και καθώς συχνά κάνω αυτό το μέρος του έργου σε διαφορετικό χώρο με την κατασκευή του κύριου σώματος, το συνδύασα επίσης με ένα διαφορετικό Raspberry PI. Εδώ χρησιμοποίησα ένα μοντέλο 3, το οποίο μου έδωσε λίγο περισσότερη ισχύ για να συνδεθώ απευθείας με αυτό και να εκτελέσω ένα IDE επί του σκάφους. Αυτό απλώς διευκόλυνε λίγο τη δημιουργία πρωτοτύπου κωδικού για μένα. Υπάρχουν πολλοί άλλοι τρόποι για απομακρυσμένη σύνδεση/κωδικοποίηση/εντοπισμός σφαλμάτων, αυτό είναι το μόνο που προτίμησα να κάνω εδώ.
Ο σχεδιασμός εδώ είναι αρκετά απλός, έχουμε.
- Περιστροφικός κωδικοποιητής - αυτός χρησιμοποιεί μια γείωση και μια δέσμη καρφιτσών GPIO για να αντιμετωπίσει την κατεύθυνση κλικ και το κουμπί ώθησης.
- Ζεύγος κουμπιών, αυτά χρησιμοποιούν απλώς έναν μόνο καρφίτσα GPIO το καθένα και μια κοινή βάση
- 3 LED, το καθένα με μια ενσωματωμένη αντίσταση για να σταματήσει να εμφανίζεται, όλα πηγαίνουν σε ένα κοινό έδαφος, αλλά με ένα μεμονωμένο καρφίτσα GPIO το καθένα έτσι ώστε να μπορεί να αντιμετωπιστεί το καθένα ξεχωριστά.
Αυτό μου έδωσε 3 LED για το μετρητή μου, έναν περιστροφικό κωδικοποιητή που περιστρέφεται μέσα από τις οθόνες του pipboy και 3 κουμπιά για να κινεί ενέργειες (ένα στον περιστροφικό κωδικοποιητή και 2 ξεχωριστά ενσύρματα). Αυτό ήταν το μόνο που μπορούσα να χωρέσω και με την οθόνη να πιάνει ένα σωρό καρφίτσες, καταναλώνει σχεδόν αυτό που έχετε σε μια τυπική διάταξη Pi GPIO. Ωστόσο, ήταν εντάξει για τους σκοπούς μου.
Η δεύτερη εικόνα δείχνει λίγο πολύ την τελική εσωτερική διάταξη με την οποία πήγα. Πέρασα λίγο χρόνο εδώ δοκιμάζοντας τρόπους οδήγησης των εξαρτημάτων και επαληθεύοντας ότι όλα λειτούργησαν προτού το μεταφέρω στο σώμα της κατασκευής. Όλος ο κώδικας είναι στο github.
Σημείωση σχετικά με τους περιστροφικούς κωδικοποιητές. Πέρασα ένα σωρό χρόνο γράφοντας τη δική μου μηχανή κατάστασης Rotary Encoder για να παρακολουθώ τις υψηλές/χαμηλές αλλαγές GPIO και να τις αντιστοιχίζω σε περιστροφικές θέσεις. Είχα μικτή επιτυχία εδώ, το έκανα να λειτουργεί για τις "περισσότερες" περιπτώσεις, αλλά πάντα υπάρχουν προχωρημένες περιπτώσεις και (απο) αναπήδηση κλπ. Είναι πολύ, πολύ πιο εύκολο να χρησιμοποιήσετε μια έτοιμη βιβλιοθήκη και υπάρχει μια εξαιρετική για αυτές που είναι διαθέσιμες για εγκατάσταση για την Python. Το χρησιμοποίησα στο τέλος καθώς μου επέτρεψε να επικεντρωθώ στο διασκεδαστικό κομμάτι του κτιρίου, αντί να περάσω ηλικίες για να διορθώσω ζητήματα. Όλες οι λεπτομέρειες για αυτό περιλαμβάνονται στον πηγαίο κώδικα.
Εάν είστε νέοι στο Raspberry Pi, το GPIO και τα ηλεκτρονικά, συνιστώ ανεπιφύλακτα τα παρακάτω μαθήματα που σας καθοδηγούν σε όλα όσα χρειάζεστε για να κάνετε την παραπάνω διάταξη.
projects.raspberrypi.org/en/projects/physi…
thepihut.com/blogs/raspberry-pi-tutorials/…
Βήμα 13: Μεταφορά των ηλεκτρονικών στο σώμα
Αφού ολοκλήρωσα τη διάταξη χρησιμοποιώντας ένα breadboard, ήρθε η ώρα να αρχίσω να σκέφτομαι πώς να τα τοποθετήσω στο σώμα του πιπεριού. Αποφάσισα ότι ήθελα να το φτιάξω έτσι ώστε να μπορώ να διαλύσω και να αφαιρέσω όλα τα ηλεκτρονικά εξαρτήματα σε περίπτωση που χρειαστεί να επισκευάσω ή να αλλάξω κάτι στο μέλλον. Για να το πετύχω αυτό, αποφάσισα να κάνω όλα τα υπο-τμήματα βύσματα, χρησιμοποιώντας συνδετήρες dupont.
Για τα κουμπιά που κόλλησα σε ορισμένα καλώδια προέκτασης και χρησιμοποίησα περιτύλιγμα σύρματος για να μονώσω τα άκρα, αυτό μου επέτρεψε να συναρμολογήσω και να αποσυναρμολογήσω αυτά από το σώμα (π.χ. για δοκιμή, μετά βαφή κλπ). Ο περιστροφικός κωδικοποιητής είχε ήδη καρφίτσες που μπορούσαν να δεχτούν συνδετήρες dupont, οπότε χρειάστηκε να κάνω μερικά καλώδια στο σωστό μήκος.
Τα LED χρειάστηκαν λίγο περισσότερη δουλειά - για αυτό, αποφάσισα να χρησιμοποιήσω λίγο παλιοσίδερα που είχα (κομμένο για να χωρέσει) για να φτιάξω ένα αφαιρούμενο πάνελ για να τοποθετήσω τα LED. Στη συνέχεια, τα κόλλησα ζεστά στη θέση τους και κόλλησα τις αντιστάσεις και τα καλώδια. Αυτό έκανε μια μονάδα αφαίρεσης που μπορούσα να χωρέσω και να αφαιρέσω και διευκόλυνε τη ζωγραφική και το φινίρισμα.
Σημειώστε ότι η συγκόλλησή μου είναι τρομερή, οπότε κράτησα αυτό το απλό και απέφυγα οτιδήποτε πολύ λεπτομερές/καλό. Στην τελική εικόνα που βλέπετε είχα επίσης μερικούς πολύ μικρούς πίνακες (5x5), χρησιμοποίησα έναν από αυτούς που είναι τοποθετημένος στο εσωτερικό για να παράσχω έναν πίνακα για να συνδέω τα πάντα με/από το GPIO. Ιδιαίτερα αυτό ήταν χρήσιμο για τη δημιουργία ενός κοινού σιδηροδρόμου εδάφους που θα μπορούσα να χρησιμοποιήσω και να αποφύγω να έχω πολλά καλώδια εδάφους να σπρώχνουν πίσω στο Pi.
Στη συνέχεια έκοψα διάφορες τρύπες στο δοχείο για να τροφοδοτήσω τα καλώδια στο Pi και να συνδεθώ μέχρι το GPIO. Αυτός ο σχεδιασμός μου επέτρεψε να ολοκληρώσω τα πάντα αν χρειαζόταν (κάτι που έκανα αρκετές φορές ενώ τελείωνα την κατασκευή).
Βήμα 14: Fine Tuning the Fit
Σε αυτό το σημείο αντιμετώπισα κάποια «ταιριαστά» θέματα. Πρώτον, η χρήση συνδετήρων dupont για την καλωδίωση σήμαινε ότι ήταν δύσκολο να τους βάλουμε να προσαρμοστούν στις ακίδες με το καπέλο της οθόνης στη θέση του, καθώς δεν υπήρχε αρκετό διάκενο ύψους. Το έλυσα αγοράζοντας (αυτό είναι ένα από τα λίγα πράγματα που αγόρασα πραγματικά για αυτό το έργο) ένα μικρό πρόγραμμα επέκτασης καρφιτσών GPIO, ώστε να μπορώ να τοποθετήσω το καπέλο της οθόνης ψηλότερα και να αφήσω χώρο για πρόσβαση στους υπόλοιπους ακροδέκτες GPIO χρησιμοποιώντας συνδετήρες dupont.
Έκοψα επίσης μερικά μικρά κομμάτια αφρώδους δαπέδου για να φτιάξω κάποια πλευρική επένδυση μέσα στο δοχείο, αυτό βοήθησε να καθίσει η οθόνη Pi + στο σωστό μέρος και να σταματήσει να κινείται.
Βήμα 15: Retro Up the Rotary Encoder
Οι περιστροφικοί κωδικοποιητές έρχονται συχνά (όπως και ο δικός μου) με ένα ωραίο λαμπερό μοντέρνο κουμπί στυλ "hi fi". Αυτό ήταν εντελώς εκτός χαρακτήρα για την κατασκευή, οπότε έπρεπε να καταλήξω σε κάτι άλλο. Στο τυχαίο κουτί με τα μέρη μου, συνάντησα ένα παλιό γρανάζι από ένα τρυπάνι που έσπασα πολύ καιρό πριν. Αυτό φαινόταν καλό, αλλά δεν ταιριάζει στον περιστροφικό κωδικοποιητή. Η λύση μου εδώ ήταν να δοκιμάσω διάφορα βύσματα τοίχου μέχρι να βρω ένα που να ταιριάζει με περιστροφικό καντράν και στη συνέχεια να το κόψω σε σχήμα ώστε να μπορώ να το χρησιμοποιήσω ως "εσωτερικό κολάρο" για να τοποθετήσω το γρανάζι στο περιστροφικό κωδικοποιητή ως πιο κατάλληλο θέμα έλεγχος.
Βήμα 16: Εσωτερική επένδυση
Περισσότερα πλακάκια δαπέδου από αφρώδες υλικό! Αυτή τη φορά, τα χρησιμοποίησα για να φτιάξω μια απαλή επένδυση για να είναι πιο άνετη η εφαρμογή (χωρίς να είναι πολύ χαλαρή). Κόβοντας μια τρύπα από τον αφρό ήμουν επίσης σε θέση να απορροφήσω λίγο από το "κομμάτι" που κάνει το δοχείο για το Pi. Γενικά αυτό το έκανε πολύ πιο φορετό. Δεν φαίνεται σε αυτές τις φωτογραφίες, αλλά το έκανα ελαφρώς μεγαλύτερο από το κύριο σώμα, οπότε είναι ορατό στα άκρα, το οποίο αργότερα ζωγράφισα και όλα βοήθησαν να προσθέσω λίγο αντίθεση και ενδιαφέρον στο τελικό προϊόν.
Βήμα 17: Προσθήκη λεπτομερειών
Timeρθε η ώρα να αρχίσετε να προσθέτετε κάποια διακόσμηση και να την κάνετε πιο ενδιαφέρουσα. Πρώτα απ 'όλα πρόσθεσα μερικές λωρίδες πλαστικού κατά μήκος ενός προσώπου για να δώσω λίγο οπτικό ενδιαφέρον. Στη συνέχεια πρόσθεσα μερικά ψεύτικα καλώδια σε μερικούς ακροδέκτες και απλώς τα έσπρωξα σε μια τρύπα που άνοιξα στο σώμα. Όλα αυτά αργότερα βάφτηκαν σε διαφορετικά χρώματα.
Βήμα 18: Ζωγραφική και φινίρισμα Body Build
Δεν ανησυχούσα πολύ για ένα παρθένο φινίρισμα - όπως υποτίθεται ότι είναι παλιό και καλά χρησιμοποιημένο ούτως ή άλλως (στην πραγματικότητα μπορεί να επιστρέψω και να κάνω ακόμα περισσότερες καιρικές συνθήκες σε αυτό κάποια στιγμή). Αλλά ήθελα να μοιάζει με ένα συνεπές και ολοκληρωμένο αντικείμενο που δεν συγκρατείται από τυχαία σκουπίδια (παρόλο που αυτό ακριβώς ήταν). Πέρασα από πολλές επαναλήψεις λείανσης, γέμισης (η πολλαπλή μάζα είναι η επιλογή μου για το πλαστικό) και επαναλάβω. Στη συνέχεια, πολλά στρώματα αστάρι και μπογιά για περαιτέρω εξομάλυνση όλων των συνδέσεων. Στη συνέχεια περισσότερο τρίψιμο και περισσότερη γέμιση, και περισσότερο βάψιμο.
Μόλις είχα ένα βλέμμα και αίσθηση του σώματος με το οποίο ήμουν ευχαριστημένος, άρχισα να προσθέτω μερικές λεπτομέρειες. Χρησιμοποίησα τρίψιμο και μπαστούνι στις σχάρες στα χειριστήρια για να τους δώσω μια πιο αίσθηση από συρματόπλεγμα. Πρόσθεσα επίσης μικρές λεπτομέρειες χρώματος εδώ και εκεί χρησιμοποιώντας ακρυλικά.
Μπήκα στη συλλογή μου με τυχαία αυτοκόλλητα και πρόσθεσα μερικά για να τελειώσω το αποτέλεσμα. Στη συνέχεια, έκανα ένα πλύσιμο με καιρικές συνθήκες με μερικά μικτά χρώματα για να προσθέσω λίγη βρωμιά και βρωμιά στις δυσπρόσιτες περιοχές που θα ήταν δύσκολο να καθαριστούν. Αυτό είναι ίσως λίγο πολύ λεπτό αυτή τη στιγμή, και ίσως επιστρέψω και προσθέσω μερικά ακόμη αργότερα.
Βήμα 19: Κωδικοποίηση
Μέρος της φιλοδοξίας μου για αυτό το έργο ήταν να το κάνω να αντιδράσει σαν ένα πραγματικό αγόρι - και για μένα το πιο εμβληματικό μέρος αυτού του παιχνιδιού είναι να γυρίσω το καντράν για να γυρίσει ανάμεσα σε διαφορετικές οθόνες. Για να το πετύχω αυτό, αποφάσισα να γράψω μια διεπαφή χρήστη pipboy που θα μπορεί να εμφανίζει μια σειρά οθονών και να σας επιτρέπει να κάνετε κύλιση μεταξύ τους. Wantedθελα να κάνω το περιεχόμενο των οθονών κάτι που θα μπορούσα εύκολα να αλλάξω και πράγματι να μπορώ να προσθέσω/αφαιρέσω οθόνες.
Επιλέγω να το γράψω σε Python λόγω της εξαιρετικής υποστήριξης για Raspberry Pi, GPIO κ.λπ. ακατάστατο ως αποτέλεσμα. Θα το ενημερώσω με την πάροδο του χρόνου καθώς δεν έχω τελειώσει εντελώς όλα όσα ήθελα να κάνω εδώ - αλλά είναι αρκετά κοντά για να μοιραστώ τώρα καθώς όλες οι βασικές έννοιες είναι εκεί.
Ο σχεδιασμός μου για τον κώδικα UI είναι αρκετά απλός, υπάρχει ένα κύριο σενάριο Python που ρυθμίζει την οθόνη, διαμορφώνει το GPIO, φορτώνει τις οθόνες και εισάγει έναν άπειρο βρόχο ενημέρωσης, περιμένοντας τα συμβάντα του χρήστη και ενημερώνοντας την οθόνη, όπως απαιτείται. Επιπλέον, υπάρχουν διάφορα σενάρια υποστήριξης που βοηθούν στη δημιουργία των οθονών UI εκ των προτέρων.
Κύριες βιβλιοθήκες που χρησιμοποιήθηκαν:
- pygame: Το χρησιμοποιώ ως κινητήρα για να εκτελέσω το περιβάλλον χρήστη, καθώς μου επέτρεψε να σχεδιάσω αυθαίρετα γραφικά, να χειριστώ εικόνες, γραμματοσειρές, να πάω σε πλήρη οθόνη κ.λπ.
- pyky040: Αυτό παρέχει τον χειρισμό του περιστροφικού επιλογέα και με εξοικονόμησε πολύ χρόνο (ευχαριστώ πολύ τον Raphael Yancey που το κυκλοφόρησε.
- RPi. GPIO: Για καλή οδήγηση GPIO, έπαιξα με μερικές επιλογές εδώ, αλλά αυτό μου έδωσε το σωστό επίπεδο ευελιξίας που ήθελα, ιδιαίτερα με πράγματα όπως η χρήση ενός εφεδρικού GPIO ως άλλου 3.3v για την οδήγηση του περιστροφικού κωδικοποιητή κ.λπ.
- θόρυβος: Για τη δημιουργία θορύβου perlin, επιτρέψτε μου να δημιουργήσω μια τυχαία κυματομορφή για την οθόνη του ραδιοφώνου που φαίνεται πιο φυσική
- ουρά: αντιμετώπισα ένα απογοητευτικό σφάλμα με τον χρόνο των γεγονότων από τον περιστροφικό κωδικοποιητή να γυρίζει και τον (πολύ) αργό ρυθμό ανανέωσης της οθόνης LCD. Τελικά ο τρόπος που το έλυσα ήταν να βάλω στην ουρά εισερχόμενα συμβάντα από τον περιστροφικό κωδικοποιητή και να τα επιλέξω ένα κάθε φορά καθώς ανανεώνεται η οθόνη.
- os, sys, threading, time: όλα χρησιμοποιούνται για τυπικές συναρτήσεις python
Σημείωση για το σχεδιασμό του χειρισμού της οθόνης. Οι οθόνες ορίζονται ως μια λίστα ονομάτων εντός του κώδικα. Κάθε καταχώριση στη λίστα μπορεί να έχει είτε ένα αρχείο-p.webp
Τα περιεχόμενα αυτών των αρχείων δημιουργούνται αλλού (με το χέρι ή από άλλα σενάρια), η έξοδος των οποίων αποθηκεύεται ως αρχεία-p.webp
Υπάρχουν περίεργες εξαιρέσεις όπου μερικά πράγματα κωδικοποιούνται - όπως η κυματομορφή για την τυχαία οθόνη ραδιοφώνου, όπως αυτή υπολογίζεται σε πραγματικό χρόνο και κινείται.
Εάν βοηθάει μια αναλογία, σκεφτείτε το σχεδιασμό του UI ως ένα εξαιρετικά ακατέργαστο και απλό πρόγραμμα περιήγησης ιστού - κάθε "οθόνη" είναι σαν μια πραγματικά απλή ιστοσελίδα που μπορεί να αποτελείται μόνο από ένα png, ένα αρχείο txt ή έναν συνδυασμό των δύο. Τα περιεχόμενα αυτών είναι ανεξάρτητα και απλώς σχεδιάζονται από το περιβάλλον χρήστη, όπως ένα πρόγραμμα περιήγησης που θα σχεδίαζε μια ιστοσελίδα.
Ακολουθούν σύνδεσμοι προς τις κύριες βιβλιοθήκες που χρησιμοποίησα εδώ:
www.pygame.org/news
pypi.org/project/pyky040/
pypi.org/project/noise/
Βήμα 20: Οθόνη στατιστικών
Κανένας pipboy δεν θα ήταν πλήρης χωρίς την κλασική οθόνη στατιστικών σιλουέτας pipboy. Για αυτό, ένας φίλος μου δημιούργησε ένα στατικό-p.webp
Βήμα 21: Οθόνη αποθέματος
Κάτι που είναι πάντα χρήσιμο με τα έργα Pi είναι ο τρόπος εμφάνισης βασικών πληροφοριών, όπως η διεύθυνση IP, η DHCP'd του κ.λπ. Έγραψα ένα μικρό σενάριο Linux για να συλλέξω αυτές τις πληροφορίες και απλώς να τις ανακατευθύνω σε ένα κατάλληλα ονομασμένο αρχείο κειμένου (.txt) που στη συνέχεια το σύστημα διεπαφής χρήστη λαμβάνει και εμφανίζει. Με αυτόν τον τρόπο, εάν βρίσκομαι ποτέ σε διαφορετική τοποθεσία, μπορώ να ενεργοποιήσω το σενάριο και να παραλάβω ένα νέο αρχείο.txt με την ενημερωμένη διεύθυνση IP κ.λπ.
Βήμα 22: Οθόνη χάρτη
Αυτή η οθόνη ήταν μία από τις πιο πολύπλοκες οθόνες για εργασία. Το Raspberry Pi 0 δεν συνοδεύεται από μονάδα GPS, αλλά ήθελα να κάνω τον χάρτη να έχει κάποια ισχύ στο σημείο που ήταν το Pi. Η λύση μου σε αυτό είναι ένα ξεχωριστό σενάριο που τραβά τη διεύθυνση IP Pi, χρησιμοποιεί το https://ipinfo.io για να αναζητήσει μια κατά προσέγγιση τοποθεσία. Η απάντηση JSON καταγράφεται και στη συνέχεια μετατρέπω τις συντεταγμένες, ώστε να μπορώ να κατεβάσω ένα πλακίδιο openstreetmap.org για την περίπου τοποθεσία.
Τα πλακάκια κατεβαίνουν σε πολλά χρώματα, αλλά ήθελα μια εικόνα σε πράσινη κλίμακα να ταιριάζει με την εμφάνιση και την αίσθηση του Pipboy και δεν μπορούσα να βρω ένα τέτοιο ακριβώς, οπότε έγραψα ένα φίλτρο πράσινης κλίμακας στην Python για να αλλάξω τα χρώματα του κεραμιδιού του openstreetmap και, στη συνέχεια, αποθηκεύστε την προσωρινή μνήμη της νέας εικόνας σε ένα αρχείο png.
Κατά τη διάρκεια της παραπάνω διαδικασίας δημιουργείται ένα αρχείο κειμένου με την κατά προσέγγιση τοποθεσία και συντεταγμένες και το πλακίδιο του χάρτη δημιουργείται ως png. Η διεπαφή χρήστη pipboy ανασύρει και τα δύο αυτά αρχεία και επικαλύπτει το περιεχόμενο για να δημιουργήσει μια οθόνη Χάρτη που λειτουργεί (εντός της ακρίβειας της ανάλυσης της διεύθυνσης IP σε μια τοποθεσία).
Βήμα 23: Οθόνη δεδομένων
Αυτή είναι απλώς μια δοκιμαστική κάρτα (που δημιουργείται από άλλο σενάριο python και εξάγεται σε αρχείο png) που εμφανίζεται για να βοηθήσει στη δοκιμή μεγέθους/διάταξης. Το άφησα γιατί είναι ακόμα χρήσιμο να επαληθεύσω με πόση ακίνητη περιουσία πρέπει να παίζω όταν χλευάζω τις οθόνες.
Βήμα 24: Οθόνη ραδιοφώνου
Μαζί με την οθόνη του χάρτη, αυτή είναι η άλλη οθόνη που μου προκάλεσε πραγματικά πολλή δουλειά. Αυτή είναι η μόνη οθόνη όπου έπαιξα με κινούμενα σχέδια - και λειτουργεί ως επί το πλείστον, αλλά η απόδοση εξακολουθεί να αποτελεί πρόβλημα με τους ρυθμούς ανανέωσης της οθόνης LCD. Η δομή της οθόνης είναι ένα αρχείο κειμένου που περιέχει ορισμένα τυχαία επιλεγμένα ονόματα ραδιοφώνου (αυτά είναι απλώς αυθαίρετες συμβολοσειρές και δεν κάνουν τίποτα άλλο από την παρουσίαση μιας λίστας στην οθόνη), ένα αρχείο-p.webp
Αυτή είναι η μόνη οθόνη όπου ο βρόχος pygame κάνει πραγματική δουλειά καθώς κάθε κύκλος, πρέπει να υπολογίσει τη νέα κυματομορφή, να διαγράψει το τμήμα της οθόνης σε αυτήν τη ζωή και να επανασχεδιάσει.
Βήμα 25: Τελικές σκέψεις
Αυτή είναι ίσως η πιο απαιτητική κατασκευή που έχω κάνει, με πολλές διαφορετικές έννοιες και δεξιότητες, αλλά είναι επίσης ένα από τα πιο ευχάριστα με πραγματικά πράγματα που λειτουργούν ως αποτέλεσμα. Είμαι ακόμα στη διαδικασία να τακτοποιήσω μερικές από τις πιο τεχνικές σημειώσεις μου καθώς και το github repo για τον κώδικα. Όλα αυτά θα τα διαθέσω σύντομα, οπότε επιστρέψτε ξανά σύντομα για περισσότερες λεπτομέρειες και πληροφορίες καθώς έχω χρόνο να τα προσθέσω στην εγγραφή.
Αν ξεκινήσετε να κάνετε κάτι τέτοιο, θα ήθελα πολύ να δω τα αποτελέσματα και αν έχετε οποιεσδήποτε ερωτήσεις, μη διστάσετε να επικοινωνήσετε μαζί μου και θα προσπαθήσω να προσθέσω περισσότερες πληροφορίες σε οποιαδήποτε βήματα όπου θέλετε να βοηθήσετε.
Βήμα 26: Άνοιγμα κώδικα στο Github
Τελικά έφτασα να ανοίξω τον κώδικα στο Github. Διατίθεται σε αυτόν τον σύνδεσμο:
Συνιστάται:
RC V.E.P. Πολύ εύκολο αεροπλάνο, χτισμένο με δίσκους πίτσας πολυστερίνης: 5 βήματα
RC V.E.P. Πολύ εύκολο αεροπλάνο, χτισμένο με δίσκους πίτσας πολυστερίνης: Έχω συμμετάσχει στον διαγωνισμό Epilog VIII, αν σας αρέσει αυτό το έργο, ψηφίστε! 37ABC, χωρίς να μπορώ να σχεδιάσω μια άτρακτο που δημιουργεί αρκετή ανύψωση, αποφάσισα να μην
Πώς να φτιάξετε ένα ρομπότ από βάτραχο από χαρτόνι: 15 βήματα (με εικόνες)
Πώς να φτιάξετε ένα ρομπότ από βάτραχο από χαρτόνι: Χαίρομαι που πήρα επιτέλους το χρόνο να δημιουργήσω αυτόν τον οδηγό για την κατασκευή ενός ρομπότ βάτραχου! Υπάρχουν αρκετοί οδηγοί βίντεο στο YouTube αυτή τη στιγμή που δείχνουν πώς να φτιάξετε ένα μοντέλο παρόμοιο με αυτό που έχω δημιουργήσει εδώ. Αυτή είναι λοιπόν η παραλλαγή μου στο frog-ro
Φορητό ηχείο Bluetooth κατασκευασμένο από παλιοσίδερα: 9 βήματα (με εικόνες)
Φορητό ηχείο Bluetooth κατασκευασμένο από παλιοσίδερα: Γεια σε όλους, έχει περάσει πολύς καιρός από την τελευταία δημοσίευση εδώ και σκέφτηκα ότι θα δημοσιεύσω το τρέχον έργο μου. Στο παρελθόν έφτιαξα λίγα φορητά ηχεία, αλλά τα περισσότερα ήταν κατασκευασμένα από πλαστικό/ακρυλικό, αφού είναι εύκολο να δουλέψεις και δεν απαιτεί
Εργαλείο μέτρησης ρυθμού τροφοδοσίας CNC κατασκευασμένο από παλιοσίδερα: 5 βήματα
Εργαλείο μέτρησης ρυθμού τροφοδοσίας CNC κατασκευασμένο από θραύσματα: Έχει ποτέ κάποιος θελήσει να μετρήσει την πραγματική απόδοση τροφοδοσίας σε ένα μηχάνημα CNC; Πιθανώς όχι, έως ότου τα κομμάτια φρεζαρίσματος είναι άθικτα μετά από μια εργασία CNC … αλλά όταν αρχίσουν να σπάνε σε τακτική βάση, ίσως είναι καιρός να ερευνήσουμε. Σε αυτό το διδακτικό μπορείτε
Αποκτήστε μεγάλα χρήματα για μπαταρίες παλιοσίδερα: 3 βήματα (με εικόνες)
Πάρτε μεγάλα χρήματα για μπαταρίες παλιοσίδερα: Μόλις πληρώθηκα 300 $ σε μετρητά για δύο ντουζίνες παλιές μπαταρίες μολύβδου-οξέος. Δείτε πώς. Πολλοί αναγνώστες ρωτούν: Πού μπορώ να βρω τις νεκρές μπαταρίες;: Τις περισσότερες φορές τις πήρα βλέποντας και ζητώντας τις. Τα νέα αυτοκίνητα καταστρέφουν τις μπαταρίες πολύ γρήγορα επειδή το αυτοκίνητο