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

1984 WeatherMan Pi: 7 βήματα (με εικόνες)
1984 WeatherMan Pi: 7 βήματα (με εικόνες)

Βίντεο: 1984 WeatherMan Pi: 7 βήματα (με εικόνες)

Βίντεο: 1984 WeatherMan Pi: 7 βήματα (με εικόνες)
Βίντεο: The Giant Wave - The Perfect Storm (3/5) Movie CLIP (2000) HD 2024, Νοέμβριος
Anonim
Image
Image
1984 WeatherMan Pi
1984 WeatherMan Pi
1984 WeatherMan Pi
1984 WeatherMan Pi

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

Ανοίγοντας τη λειτουργική πόρτα ταινίας, μπορούμε να δούμε ότι τα σκονισμένα αρχικά εξαρτήματα έχουν αντικατασταθεί με ένα Raspberry Pi Zero W, ένα Pimoroni Unicorn Hat HD (LED Matrix) και ένα μικρό σερβο. Τα δεδομένα καιρού προέρχονται από ένα σενάριο Python που ερωτά το εξαιρετικά ακριβές API καιρού Dark Sky Weather, προσαρμοσμένο στη συγκεκριμένη τοποθεσία μου.

Είναι μια απλή αλλά όμορφη και λειτουργική κατασκευή IoT που βρίσκεται στο απέναντι ηχείο γραφείου στον πάγκο μου στο YouTube, με κρατά ήσυχα ενημερωμένο με τον καιρό.

Προμήθειες

Raspberry Pi Zero

Pimoroni Unicorn HAT HD

Μικρό Servo

1984 Προσωπικά στερεοφωνικά και ακουστικά Hitachi SP-1

Προσαρμογέας WiFi USB

Βιδωτή ράβδος 2mm

Sugru (Μαύρο & Γκρι)

Μαγνήτης GeoMag

Βήμα 1: Tape Teardown

Tape Teardown
Tape Teardown
Tape Teardown
Tape Teardown
Tape Teardown
Tape Teardown

Μου δόθηκε αυτό το υπέροχο παλιό κασετόφωνο από την πεθερά μου τον Σεπτέμβριο και ερωτεύτηκα αμέσως την εικονική του εμφάνιση και τα χοντρά κουμπιά. Η πραγματική κλήρωση όμως ήταν αυτό το μεγάλο παράθυρο κασέτας - αφού το κατέκτησα για περίπου 15 δευτερόλεπτα είχα έναν χάρακα και έμεινα έκπληκτος όταν διαπίστωσα ότι είναι, κατά mm, το ίδιο μέγεθος με ένα τυπικό Raspberry Pi HAT (Hardware Attached on Top).

Αυτή η ανακάλυψη από μόνη της ήταν αρκετή για να ανατρέψει το έργο μου με το ρολόι κούκου πιο κάτω στη λίστα "to do" και άρχισα να δουλεύω αμέσως, αποσυναρμολογώντας τον παίκτη.

Το teardown πήγε αρκετά καλά και κατέληξα με τρία ξεχωριστά κομμάτια για να δουλέψω - κατάφερα να σπάσω μερικά από τα πλαστικά μέρη, αλλά τίποτα που δεν μπορούσε να κολληθεί ξανά μεταξύ τους.

Βήμα 2: Dark Sky Pi

Dark Sky Pi
Dark Sky Pi
Dark Sky Pi
Dark Sky Pi
Dark Sky Pi
Dark Sky Pi

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

Πρώτα πηγαίνετε στο https://darksky.net/dev και εγγραφείτε για έναν δωρεάν λογαριασμό - ένας λογαριασμός "δοκιμής" σάς επιτρέπει να υποβάλετε 1000 αιτήματα API την ημέρα, τα οποία είναι αρκετά για ανανέωση κάθε 1,5 λεπτά - αρκετά συχνά ακόμη και για το δικό μου Βρετανικό επίπεδο εμμονής στον καιρό.

Μόλις εγγραφείτε, θα λάβετε ένα "μυστικό κλειδί" - αυτό είναι που χρειάζεστε για να έχετε πρόσβαση στα δεδομένα και χρησιμοποιείται στο σενάριο Python, οπότε κρατήστε το πρακτικό (και, ξέρετε, μυστικό).

Ξεκίνησα προσαρμόζοντας ένα σενάριο που χρησιμοποίησα στη δημιουργία μετρητή συνδρομητών YouTube, το οποίο χρησιμοποιεί τη μονάδα αιτημάτων στην Python για να ανακτήσει δεδομένα API. Το σενάριο που χρησιμοποίησα είναι στο GitHub, απλώς πρέπει να προσθέσετε στο κλειδί API Dark Sky και, φυσικά, να αντικαταστήσετε τις δικές σας τιμές Latitude & Γεωγραφικό μήκος.

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

Βήμα 3: Ο κώδικας

Ο κώδικας
Ο κώδικας

Εάν θέλετε να επαναχρησιμοποιήσετε ή να αφαιρέσετε τον κώδικα που χρησιμοποίησα, βρίσκεται στο αποθετήριο WeatherMan στο GitHub - κλωνοποιήστε ή κατεβάστε το φάκελο "καιρός" στο φάκελο "pi" στο Raspberry Pi.

Οι κύριες λειτουργίες σεναρίου είναι οι εξής:

weatherman.py

Αυτό είναι το κύριο σενάριο που εξάγει τα δεδομένα καιρού από το Dark Sky. Θα πρέπει να δημιουργήσετε έναν λογαριασμό Dark Sky στη διεύθυνση https://darksky.net/dev και να βάλετε το μυστικό σας κλειδί στο σενάριο όπου υποδεικνύεται. Θα χρειαστεί επίσης να ορίσετε το γεωγραφικό πλάτος και το γεωγραφικό μήκος της καιρικής τοποθεσίας που σας ενδιαφέρει - μπορείτε να το βρείτε στους Χάρτες Google, απλώς κάντε δεξί κλικ και επιλέξτε "Τι είναι εδώ;" και θα λάβετε ένα αναδυόμενο παράθυρο που θα δείχνει το lat/long της τοποθεσίας.

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

Το σενάριο έχει ρυθμιστεί να λειτουργεί κατά την εκκίνηση με επεξεργασία του αρχείου εκκίνησης…

sudo nano /home/pi/.config/lxsession/LXDE-pi/autostart

… Και προσθέτοντας:

@python3 /home/pi/weather/weatherman.py &

στο τέλος του αρχείου.

icon.py

Αυτό το σενάριο λαμβάνει μια παράμετρο "τρέχουσες συνθήκες" από το σενάριο weatherman.py και το χρησιμοποιεί για να εμφανίσει μια κινούμενη εικόνα καιρού 16x16 - όλα αυτά αποθηκεύονται στο φάκελο "εικονίδια" και αποτελούν μέρος της τυπικής τεκμηρίωσης Unicorn HAT HD. Μπορείτε να επεξεργαστείτε τα αρχεία κινούμενων εικόνων-p.webp

τηλέφωνα.py

Εάν οι καιρικές συνθήκες έχουν αλλάξει από το τελευταίο αίτημα API (ή είναι μια νέα εκκίνηση και δεν χιονίζει), τότε αυτό το σενάριο καλείται από το weatherman.py και δίνει εντολή στο σερβο να "τρέξει" μπρος -πίσω για να σας ειδοποιήσει ότι οι συνθήκες έχουν άλλαξε.

precip.py

Αυτό το σενάριο δέχεται μια παράμετρο "πιθανότητα βροχόπτωσης" από το weatherman.py και εμφανίζει γραμμές με μπλε χρώμα στο Unicorn HAT που σχετίζονται με το % πιθανότητα. Εάν 100% και οι 16 σειρές θα λάμψουν μπλε, αν το 50% μόνο 8 σειρές κ.λπ.

temp.py

Ένα άλλο τυπικό σενάριο Pimoroni, αυτό παίρνει μια παράμετρο "temp" από το weatherman.py και την εμφανίζει με κύλιση κειμένου. Είναι ρυθμισμένο να χρησιμοποιεί τη γραμματοσειρά Herkules truetype (στο φάκελο "γραμματοσειρές"), αλλά θα μπορούσε να χρησιμοποιήσει μια τυπική γραμματοσειρά αν προτιμάτε. Θα μπορούσατε ακόμη και να την ενισχύσετε έτσι ώστε το εμφανιζόμενο κείμενο να αλλάζει χρώμα ανάλογα με την τιμή της θερμοκρασίας!

Βήμα 4: Μονόκερος HAT & Servo

Μονόκερος HAT & Servo
Μονόκερος HAT & Servo
Μονόκερος HAT & Servo
Μονόκερος HAT & Servo
Μονόκερος HAT & Servo
Μονόκερος HAT & Servo

Το να μπορώ να καταλάβω τα δεδομένα του καιρού ήταν υπέροχο, αλλά τώρα έπρεπε να τα εμφανίσω στο καπέλο του μονόκερου. Κοίταξα διάφορα σύνολα εικονιδίων καιρού στο Διαδίκτυο και στα μισά της διαδρομής τα προσάρμοσα όταν συνειδητοποίησα ότι υπήρχε ένα παράδειγμα καιρού που περιλαμβάνεται στην τεκμηρίωση Pimoroni - και αυτό περιλάμβανε κινούμενα σχέδια καιρού!

Αυτό εξοικονόμησε τεράστιο όγκο εργασίας και άρχισα να τρέχω σε χρόνο μηδέν, με ένα κινούμενο εικονίδιο για τις τρέχουσες συνθήκες, κάποιο κείμενο κύλισης για τη θερμοκρασία και ένα γράφημα για την % βροχόπτωση (που περιλάμβανε ελαφριά μαθηματικά). Κράτησα τα σενάρια χωριστά και χρησιμοποίησα την υποενότητα επεξεργασίας της Python για να περάσω παραμέτρους από εδώ και πέρα.

Η προσθήκη του σερβο ήταν το ιδανικό όχημα για αυτές τις ειδοποιήσεις, καθώς θα έκανε λίγο θόρυβο και θα τραβούσε τα βλέμματα χωρίς να είναι πολύ ενοχλητικό. Με το HAT να έχει ήδη καταλάβει πολλές από τις καρφίτσες του Pi, κόλλησα τα σερβο καλώδια στο κάτω μέρος του πίνακα, χρησιμοποιώντας το Pin 17 για να ελέγξω την κίνηση του σερβο, χρησιμοποιώντας Pulse Width Modulation.

Η τροφοδοσία του σερβο από το Pi δεν ήταν ιδανική, αλλά θα χρησιμοποιούνταν μόνο για ένα στιγμιαίο κούνημα, οπότε η ακρίβεια δεν ήταν μεγάλη υπόθεση εδώ. Συνδέθηκε όπως φαίνεται στο διάγραμμα, με καφέ καλώδιο στο GND, κόκκινο σε 5v και πορτοκαλί (το καλώδιο ελέγχου) στο GPIO17.

Τέλος, επεξεργάστηκα μερικά από τα κινούμενα αρχεία καιρού στο GIMP για να προσθέσω τις δικές μου προσωπικές πινελιές, όπως νυχτερίδες στο φεγγάρι και ένα χαμογελαστό πρόσωπο στον ήλιο. Πρόσθεσα επίσης σε ένα προσαρμοσμένο animation τροχού κασέτας "Old Tech New Spec" για αναπαραγωγή κατά την εκκίνηση, μόνο για διασκέδαση.

Βήμα 5: Ακουστικά Jiggle

Ακουστικά Jiggle
Ακουστικά Jiggle
Jiggle ακουστικών
Jiggle ακουστικών
Jiggle ακουστικών
Jiggle ακουστικών
Jiggle ακουστικών
Jiggle ακουστικών

Η ιδέα του WeatherMan ήταν ότι θα καθόταν παθητικά στο ηχείο του γραφείου μου, εμφανίζοντας περιστασιακά τον καιρό, αλλά ήθελα να κάνει λίγο περισσότερο! Τα ακουστικά που συνοδεύουν ήταν τοστ αλλά κλασικά 80s, έτσι αποφάσισα να κάνω κάτι με αυτά. Αφού έβγαλα όλο το καλώδιο και κόλλησα θερμά το σπασμένο, μου έμειναν τρία μέρη, το βύσμα 3,5 χιλιοστών, το κουμπί σε σχήμα διαμαντιού και τα ίδια τα τηλέφωνα στην εύκαμπτη μεταλλική ζώνη τους.

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

Πρώτα τρύπησα το βύσμα 3,5 χιλιοστών και αποσυναρμολόγησα τον διαμαντένιο διακόπτη, και στη συνέχεια τα γλίστρησα σε ένα κομμάτι με ράβδο με σπείρωμα. Στη συνέχεια κόλλησα ένα παξιμάδι σε έναν πλαστικό σύνδεσμο, έτσι ώστε η ράβδος να μπορεί να κάθεται με ασφάλεια (και ευθεία) πάνω από το σερβο. Στην άλλη άκρη της ράβδου πρόσθεσα ένα άλλο παξιμάδι. Τέλος, χρησιμοποίησα γκρι Sugru για να συνδέσω το πάνω μέρος της ράβδου με τη ζώνη ακουστικών και επίσης να καλύψω το παξιμάδι στο κάτω μέρος της διάταξης. Αν δεν έχετε ακούσει για το Sugru, είναι μια κολλώδης κόλλα που έρχεται σε μικρά χρωματιστά φακελάκια - πλάθεται σαν το Play -Doh, αλλά κολλάει σαν superglue και δένεται σκληρά σαν πλαστικό!

Με τον πρόσφατο κρύο, το Sugru χρειάστηκε μερικές ημέρες για να σκληρύνει πλήρως, αλλά τα ακουστικά και η βάση τους ήταν σύντομα έτοιμα για την τελική συναρμολόγηση.

Βήμα 6: Συναρμολόγηση

Συνέλευση
Συνέλευση
Συνέλευση
Συνέλευση
Συνέλευση
Συνέλευση
Συνέλευση
Συνέλευση

Το Pi, το HAT και το Servo δούλευαν καλά στον πάγκο, οπότε η επόμενη δουλειά ήταν να τους βάλουμε στη θήκη. Πριν ξεκινήσω με τα μεγάλα εξαρτήματα, χρησιμοποίησα λίγο γκρι Sugru για να στερεώσω τον επιλογέα έντασης, την υποδοχή ακουστικών και τον διακόπτη "μεταλλικής ταινίας", ταξινομώντας τα καλλυντικά. Κόλλησα επίσης τα αρχικά κουμπιά Play, Stop, FF & Rew σε ένα κομμάτι πλαστικού αγωγού, ώστε να μείνουν στο σωστό μέρος. Aταν κρίμα να μην ξαναχρησιμοποιήσω κανένα από τα κουμπιά αυτή τη φορά, αλλά δεν υπήρχε τίποτα για να ελέγξουν!

Χρησιμοποίησα το τελευταίο από το γκρι Sugru για να κρατήσω το σερβο στη θέση του, με τον άξονά του να σπρώχνει μέσα από τη διευρυμένη υποδοχή ακουστικών. Προχωρώντας στο άλλο μισό της θήκης, χρησιμοποίησα λίγο μαύρο Sugru για να στερεώσω το συγκρότημα HAT και Pi στην πόρτα της ταινίας, έτσι ώστε να ανοίξουν με αυτό. Μου άρεσε πολύ το τελευταίο μικρό άγγιγμα - η τοποθέτηση σε μαγνήτη GeoMag, έτσι ώστε η πόρτα να κρατηθεί σταθερά κλειστή.

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

Βήμα 7: ietσυχη εμμονή

Quσυχη Εμμονή
Quσυχη Εμμονή
Ietσυχη Εμμονή
Ietσυχη Εμμονή

Δεύτερο Βραβείο στο Διαγωνισμό Επαναχρησιμοποίησης

Συνιστάται: