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

Ρολόι επιστροφής στο μέλλον: 8 βήματα (με εικόνες)
Ρολόι επιστροφής στο μέλλον: 8 βήματα (με εικόνες)

Βίντεο: Ρολόι επιστροφής στο μέλλον: 8 βήματα (με εικόνες)

Βίντεο: Ρολόι επιστροφής στο μέλλον: 8 βήματα (με εικόνες)
Βίντεο: 8 Προειδοποιητικά Σημάδια Πως Δεν Γίνεται Σωστή Λειτουργία Της Καρδιάς 2024, Νοέμβριος
Anonim
Ένα ρολόι επιστροφής στο μέλλον
Ένα ρολόι επιστροφής στο μέλλον

Αυτό το έργο ξεκίνησε τη ζωή ως ξυπνητήρι για τον γιο μου. Έκανα να μοιάζει με το χρονικό κύκλωμα από το Back to the Future. Η οθόνη μπορεί να εμφανίσει την ώρα σε διάφορες μορφές, συμπεριλαμβανομένης φυσικά αυτής της ταινίας. Διαμορφώνεται μέσω των κουμπιών στο πάνω μέρος του περιβλήματος αλλά και μέσω μιας ιστοσελίδας που εξυπηρετείται από το Raspberry Pi Zero στο εσωτερικό. Σε μία από τις λειτουργίες οθόνης θα εμφανίζει τον τοπικό καιρό (από τον μετεωρολογικό σταθμό με τροφοδοσία Arduino) καθώς και την πρόγνωση και τυχόν καθημερινές υπενθυμίσεις, που διαμορφώνονται μέσω της διεπαφής ιστού. Έχει επίσης ήχο χάρη σε ένα DAC και θα μεταδίδει μουσική χρησιμοποιώντας το πρωτόκολλο AirPlay. Ο ήχος συναγερμού μπορεί να είναι οποιοδήποτε αρχείο ήχου επιλέγετε. Θα μειώσει και θα φωτίσει την οθόνη αυτόματα σε συγκεκριμένες ώρες της ημέρας (π.χ. αυγή και σούρουπο).

Βήμα 1: Ιστορικό

Πέρυσι έψαχνα για ένα νέο έργο Arduino έχοντας μόλις τελειώσει το πρώτο μου ποτέ, έναν μετεωρολογικό σταθμό στο σπίτι. Ο 11χρονος γιος μου είχε μόλις δει τις ταινίες Back to the Future για πρώτη φορά, οπότε σκέφτηκα ότι θα ήταν διασκεδαστικό να του φτιάξω ένα ξυπνητήρι που έμοιαζε με το χρονοδιάγραμμα στο Delorean για τα γενέθλιά του. Αυτή δεν είναι μια νέα ιδέα, υπάρχουν αρκετά παρόμοια έργα εκεί έξω (αυτό για παράδειγμα), οπότε σκέφτηκα ότι θα ήταν ένα ωραίο έργο να μάθεις από άλλους και να αποκτήσεις νέες δεξιότητες.

Η πρώτη έκδοση λειτούργησε αρκετά καλά (δεν ήταν έτοιμη για τα γενέθλιά του: το έκανα μέχρι τα Χριστούγεννα) αλλά έγινα αρκετά φιλόδοξος σε αυτό που ήθελα να κάνει και διαπίστωσα ότι το σκίτσο μου συνέχιζε να τρέχει στο όριο μνήμης του Arduino. Είχα επίσης αρκετές μικρές εξωτερικές μονάδες υλικού (WiFi, MP3 player, ενισχυτής ήχου, RTC κ.λπ.), οπότε όλα έγιναν λίγο δυσκίνητα. Στο τέλος, αποφάσισα να μετακομίσω σε μια πλατφόρμα Raspberry Pi που απλοποίησε το υλικό και μου επέτρεψε να συσκευάσω πολύ περισσότερες λειτουργίες και δυνατότητες.

Βήμα 2: Κύρια εξαρτήματα υλικού

Μέσα στο κουτί

Εδώ είναι τα ηλεκτρονικά εξαρτήματα που χρησιμοποίησα. Οι περισσότερες από αυτές ήταν πηγές από την Core Electronics στην Αυστραλία, αλλά φυσικά είναι άμεσα διαθέσιμες και αλλού:

  • 4 x τετραπλή αλφαριθμητική οθόνη -κίτρινο -πράσινο
  • Raspberry Pi Zero W
  • Pimoroni pHAT DAC για Raspberry Pi Zero
  • Ενισχυτής ήχου (PAM8403 IC)
  • Τροφοδοτικό Raspberry Pi 3+
  • 4 x καλώδιο βραχυκυκλωτήρα - 0,1 ", 5 ακίδων, 12"
  • 40 καλώδιο κορδέλας (2 x 20)
  • Raspberry Pi GPIO Male Header
  • Raspberry Pi Model B - GPIO Shrouded Header (2X20)
  • GPIO Stacking Header for Pi A+/B+/PI 2/PI 3 - extra -long 2X20
  • Αρσενική κεφαλίδα 4 x 5 ακίδων
  • 2 μικρά ηχεία 3W
  • 2 x ομοαξονικά καλώδια για αναλογική σύνδεση ήχου DAC με ενισχυτή
  • Veraboard ή προσαρμοσμένο PCB για χειρισμό Rpi σε κουμπιά ενισχυτή, LED
  • 5 x στιγμιαίοι διακόπτες κουμπιού
  • 4 x μπλοκ ακροδεκτών με βίδα που μπορούν να τοποθετηθούν σε PCB 2 κατευθύνσεων

Το κιβώτιο

  • Κομμάτια από MDF, βίδες και μπουλόνια για να φτιάξετε το «πλαίσιο»
  • Πράσινο φιμέ perspex, τοπικός προμηθευτής
  • Στυρένιο, κόλλα μοντελοποίησης, βαφή σπρέι (χρώμα αλουμινίου) από τοπικό κατάστημα χόμπι
  • Αυτοκόλλητα (αρχείο διαθέσιμο κατόπιν αιτήματος - τυπωμένο από το Redbubble)

Βήμα 3: Το βάζουμε όλα μαζί

Το βάζουμε όλα μαζί
Το βάζουμε όλα μαζί

Η οθόνη LED για το ρολόι αποτελείται από αλφαριθμητικές οθόνες 16x14 τμημάτων, ευτυχώς τον ίδιο αριθμό χαρακτήρων με το χρονικό κύκλωμα Επιστροφή στο μέλλον. Ενώ μόνο οι τρεις πρώτοι χαρακτήρες πρέπει να είναι αλφαριθμητικοί και οι υπόλοιποι θα μπορούσαν να είναι αριθμητικές οθόνες 7 τμημάτων για να μιμηθούν το στήριγμα της ταινίας, αποφάσισα να τους κάνω όλους αλφαριθμητικούς για να επιτρέψω κάποια ευελιξία σε αυτό που θα μπορούσε να εμφανιστεί και να τους κρατήσω όλους να φαίνονται ίδιο. Τα τετράγωνα σακίδια Adafruit είναι μια εξαιρετική λύση εδώ και μπορούν να χρησιμοποιηθούν στο λεωφορείο I2C του Raspberry Pi. Περισσότερες πληροφορίες σχετικά με αυτές τις μονάδες και πώς να τις συνδέσετε μπορείτε να βρείτε εδώ στην ιστοσελίδα του Adafruit. Το μόνο ελαφρώς μη τυπικό πράγμα που έπρεπε να κάνω ήταν να αλλάξω τις διευθύνσεις τριών από αυτούς, έτσι ώστε κάθε σακίδιο να είναι μοναδικό.

Για αναπαραγωγή ήχου (σε στερεοφωνικό), συμπεριέλαβα το Pimoroni pHAT DAC και έναν στερεοφωνικό ενισχυτή ήχου 2 x 3W βασισμένο στο τσιπ PAM8403. Το pHAT DAC είναι πραγματικά εύκολο να συνδεθεί με το Pi. Έβαλα μια αντρική κεφαλίδα 2 x 20 ακίδων στο Pi και μια κεφαλίδα στοίβαξης GPIO στο DAC, ώστε να μπορούν να συνδεθούν μεταξύ τους το ένα πάνω στο άλλο. Οι αρσενικές καρφίτσες κεφαλίδας περνούν από την κορυφή του DAC, επιτρέποντάς μου να τρέξω ένα καλώδιο με κορδέλες με θηλυκές συνδέσεις, αρχικά σε ένα ξεμπλοκάρισμα Raspberry Pi για δοκιμή ψωμιού, αλλά τελικά σε μια επικαλυμμένη κεφαλίδα σε προσαρμοσμένο PCB.

Για τον ενισχυτή ήχου, υπάρχουν πολλές επιλογές (συμπεριλαμβανομένης της απόκτησης του τσιπ και της συναρμολόγησης του δικού σας). Αυτό έχει τη δυνατότητα σίγασης της εξόδου αλλάζοντας απλώς την κατάσταση μιας από τις ακίδες (το υψηλό είναι ενεργοποιημένο, το χαμηλό είναι απενεργοποιημένο) και το συνδέω έτσι ώστε να μπορεί να ελεγχθεί από το Pi. Στις αρχικές μου προσπάθειες να το συνδέσω, ανακάλυψα πολύ θόρυβο στο παρασκήνιο όταν ήταν ενεργοποιημένος ο ήχος. Μετά από πολύ παιχνίδι με τη γείωση, τελικά προσπάθησα να μετακινήσω την τάση τροφοδοσίας εισόδου από τα 5V του Pi σε 3,3V και αυτό το διόρθωσε. Υποθέτω ότι παράγεται πολύς θόρυβος από τα διάφορα ψηφιακά σήματα που πετούν, αλλά φαίνεται ότι η τροφοδοσία των 3.3V είναι κάπως απομονωμένη.

Άλλες συνδέσεις περιλαμβάνουν τον αναλογικό ήχο από το DAC στον ενισχυτή (χρησιμοποίησα εδώ ομοαξονικό καλώδιο για τη διαχείριση του θορύβου) και έξοδο ήχου σε ένα ζευγάρι μικρών ηχείων 3W που ταιριάζουν στο περίβλημα. Υπάρχουν επίσης συνδέσεις GPIO για τους τέσσερις στιγμιαίους διακόπτες στο πάνω μέρος του κιβωτίου και ένωσα ένα στιγμιαίο κουμπί στις καρφίτσες "RUN" της σκληρής επαναφοράς (δείτε την ενότητα Πρόσθετες συνδέσεις σε αυτήν τη σελίδα). Το κουμπί επαναφοράς είναι τοποθετημένο εκτός οράματος στο πίσω μέρος του περιβλήματος. Ακολουθεί ένα διάγραμμα που δείχνει τις συνδέσεις:

Βήμα 4: Ένα προσαρμοσμένο PCB

Ένα προσαρμοσμένο PCB
Ένα προσαρμοσμένο PCB

Ενώ δεν υπάρχει τίποτα πολύ περίπλοκο στο κύκλωμα, υπάρχει αρκετή καλωδίωση και μια σανίδα μπορεί να μοιάζει με μακαρόνια πολύ γρήγορα. Έτσι σχεδίασα ένα PCB για να τα κρατάω όλα υπό έλεγχο. Είναι ένας πίνακας μονόπλευρης παρασκευής στο σπίτι και πήρα έναν φίλο για να το βοηθήσει. Αφού κατασκευάστηκε και συνδέθηκε, συνειδητοποίησα ότι ξέχασα να συμπεριλάβω συνδέσεις για τα μπλοκ ακροδεκτών για τον ήχο και αργότερα έκανα μια αλλαγή για να μετακινήσω την παροχή ενισχυτή ήχου από 5V σε 3.3V, οπότε δεν είναι ιδανικό και έπρεπε να κολλήσω κάποια Veroboard για να επιτρέψει τις συνδέσεις ήχου. Επίσης, τα pinouts της κάρτας ενισχυτή ήχου βρίσκονται σε μη τυπικό διαχωρισμό (διαφέρουν ακόμη και μεταξύ ακίδων), οπότε η σύνδεση για αυτό με το κύριο PCB είναι λίγο φρικτή με 11 σύντομα καλώδια σύνδεσης ~ 1cm.

Αν έκανα έναν άλλο πίνακα, θα συμπεριλάμβανα όλες αυτές τις τροποποιήσεις και θα άλλαζα επίσης τη σύνδεση για τα τέσσερα κουμπιά σε κάτι λίγο πιο ωραίο. Το DAC και το Pi θα στοιβάζονταν ακριβώς από πάνω, οπότε δεν χρειαζόταν καλώδιο κορδέλας. Το παραπάνω διάγραμμα δείχνει πώς μπορεί να φαίνεται.

Βήμα 5: Το περίβλημα

Το περίβλημα
Το περίβλημα
Το περίβλημα
Το περίβλημα
Το περίβλημα
Το περίβλημα

Wantedθελα να φτιάξω ένα περίβλημα που έμοιαζε με μια σειρά του χρονοδιαγράμματος της ταινίας. Τρεις σειρές οθονών LED θα ήταν πάρα πολλές για ξυπνητήρι και θα είχαν αυξηθεί σημαντικά στο κόστος. Σκέφτηκα να φτιάξω το περίβλημα από αλουμίνιο, αλλά δεν έχω ικανότητες σε αυτόν τον τομέα. Έχω φτιάξει όμως αρκετά πλαστικά μοντέλα στη ζωή μου και έχω κάποια εμπειρία στην ξυλουργική, οπότε αποφάσισα να φτιάξω ένα πλαίσιο χρησιμοποιώντας MDF για να τοποθετήσω τα LED και τα ηχεία και να στερεώσω το perspex στο μπροστινό μέρος και στη συνέχεια να το καλύψω με στυρόλιο 5 όψεων κουτί με στεφάνη στο μπροστινό μέρος, βαμμένο σε αλουμινένιο μεταλλικό χρώμα σπρέι. Το πλαστικό και το χρώμα προήλθαν από τοπικό κατάστημα μοντέλων. Έριξα μια προσεκτική ματιά στις ετικέτες στο στήριγμα της ταινίας και έβαλα τα δυνατά μου για να αντιγράψω τα χρώματα, τον τύπο γραμματοσειράς και το μέγεθος. Χρησιμοποίησα το Photoshop για να φτιάξω τις ετικέτες και τις εκτύπωσα ως αυτοκόλλητα από το Redbubble.

Οι παραπάνω εικόνες δείχνουν:

  1. Το μπροστινό μέρος του πλαισίου MDF. Τα 4 σακίδια LED είναι τοποθετημένα στο μπροστινό μέρος με πράσινο χρώμα
  2. Μέσα στο κουτί. Σακίδια όλα τοποθετημένα και ευθυγραμμισμένα, Raspberry Pi και προσαρμοσμένο PCB, ηχεία εκατέρωθεν.
  3. Η καλωδίωση είναι εγκατεστημένη και το εξωτερικό περίβλημα είναι έτοιμο να συνεχιστεί. Aταν λίγο συμπίεση!

Βήμα 6: Ρύθμιση του Raspberry Pi

Είχα κάποια προβλήματα συμβατότητας με το Raspbian Stretch (που μπορεί να ήταν επιλύσιμο αν επέμενα), αλλά η Jessie δουλεύει μια χαρά, οπότε αποφάσισα να συνεχίσω.

Έστησα το Pi ως μονάδα κεφαλής με πρόσβαση VNC και SSH. Αυτό θα μπορούσε να είχε γίνει χωρίς να συνδέσω ποτέ πληκτρολόγιο ή οθόνη, αλλά δανείστηκα την τηλεόραση και σκούπισα ένα πληκτρολόγιο και το πήγα ακέφαλο αρκετά γρήγορα. Από εκεί και πέρα, χρησιμοποιούσα πολύ VNC από εκεί και πέρα.

Ο κωδικός ρολογιού μου χρησιμοποιεί Python 2.7.9 και βασίζεται σε αρκετές βιβλιοθήκες, που αναφέρονται παρακάτω. Εκτός από αυτό, τρέχω Flask web server και MQTT για τηλεχειρισμό και Shairplay για ροή μουσικής. Ακολούθησα τις σημειώσεις εγκατάστασης σε απευθείας σύνδεση για όλα αυτά και δεν είχα κανένα απολύτως πρόβλημα. Εδώ είναι οι βιβλιοθήκες python και άλλα πακέτα κ.λπ.

Βιβλιοθήκες Python

  • Adafruit_LED_Backpack
  • Rpi. GPIO (apt-get install python-rpi.gpio)
  • alsaaudio
  • paho.mqtt.client (pip install paho-mqtt)
  • φιάλη (apt-get install python-flask)

Άλλα πακέτα κλπ

  • κουνούπι (apt-get install mosquito)
  • shairport
  • Ο ιστότοπος Pimoroni έχει κάποια καλή τεκμηρίωση για τη ρύθμιση του DAC, οπότε έτρεξα με αυτό.

Βήμα 7: Λογισμικό

Image
Image
Λογισμικό
Λογισμικό

Ο κωδικός ρολογιού γράφτηκε σε Python και χρησιμοποιεί κλωστή για να αναπαράγει το ξυπνητήρι και περιστασιακά αναβοσβήνει στο παρασκήνιο χωρίς να αποκλείει τις ενημερώσεις της οθόνης. Χρησιμοποίησα τη βιβλιοθήκη ConfigParser και το αρχείο ρυθμίσεων που διατηρεί διαβάζεται και γράφεται από τον κωδικό ρολογιού καθώς και την εφαρμογή Ιστού Flask, έτσι ώστε κάθε φορά που αλλάζει η διαμόρφωση μέσω της διεπαφής ιστού ή του ρολογιού, να συγχρονίζεται. Το λογισμικό ρολογιού περιλαμβάνει επίσης έναν μεσίτη MQTT που επιτρέπει τον έλεγχο της λειτουργίας εμφάνισης και τη σίγαση για τον έλεγχο από απόσταση. Το τελευταίο μου κίνητρο είναι τελικά να γράψω μια εφαρμογή iOS για το τηλεχειριστήριο, αλλά η διεπαφή ιστού λειτουργεί αρκετά καλά προς το παρόν.

Η πρώτη εικόνα παραπάνω δείχνει πώς φαίνεται το ρολόι στις διάφορες λειτουργίες εμφάνισης και υπάρχει ένα σύντομο βίντεο που το δείχνει σε λειτουργία κύλισης.

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

Η εφαρμογή Ιστού

Η επόμενη εικόνα δείχνει πώς φαίνεται η διεπαφή ιστού στο ρολόι. Υπάρχουν επίσης σελίδες διαμόρφωσης και ελέγχου και αυτές διευκολύνουν πολύ το παιχνίδι με το ρολόι χωρίς πολλή ανάμειξη κουμπιών:-).

Βήμα 8: Τι στη συνέχεια;

Ποιο είναι το επόμενο?
Ποιο είναι το επόμενο?

Υπάρχει διαθέσιμος αποκωδικοποιητής μεταδεδομένων Python shareport, οπότε νομίζω ότι θα προσθέσω έναν κώδικα για να εμφανίσω πληροφορίες όπως τίτλος και καλλιτέχνης όταν παίζεται μουσική. Θα ήταν επίσης πολύ εύκολο να υπολογίσετε τους χρόνους ανατολής και δύσης του ηλίου, έτσι ώστε η οθόνη να φωτίζεται και να μειώνεται αυτόματα, αντί να ρυθμίζεται χειροκίνητα. Maybeσως η προσθήκη μιας λειτουργίας ραδιοφώνου στο Διαδίκτυο θα ήταν επίσης διασκεδαστική. Η οθόνη κύλισης θα μπορούσε επίσης να είναι πιο διαμορφώσιμη.

Συνιστάται: