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

Pi Zero Talking Radio: 7 βήματα (με εικόνες)
Pi Zero Talking Radio: 7 βήματα (με εικόνες)

Βίντεο: Pi Zero Talking Radio: 7 βήματα (με εικόνες)

Βίντεο: Pi Zero Talking Radio: 7 βήματα (με εικόνες)
Βίντεο: ΜΟΥ ΕΠΕΣΕ ΤΟ ΣΑΓΟΝΙ ΜΟΛΙΣ ΕΙΔΑ ΤΗ JOSEPHINE 2024, Ιούλιος
Anonim
Image
Image
Pi Zero Talking Radio
Pi Zero Talking Radio
Pi Zero Talking Radio
Pi Zero Talking Radio
Pi Zero Talking Radio
Pi Zero Talking Radio

Αυτό είναι ένα επιτραπέζιο ραδιόφωνο DeWald στα τέλη της δεκαετίας του 1940 που έδωσα μια νέα ζωή χρησιμοποιώντας ένα Raspberry Pi Zero, ένα Blinkt! Λωρίδα LED και ένα ζευγάρι ηχεία υπολογιστή. Διαβάζει ειδοποιήσεις από μια σειρά υπηρεσιών συνδεδεμένες στο Διαδίκτυο χρησιμοποιώντας τον κινητήρα Pyvona text-to-speech (TTS) και την ενσωμάτωση IF This Then That (IFTTT). Οι λυχνίες LED είναι εκπληκτικά φωτεινές και ανάβουν το καντράν του ραδιοφώνου με διαφορετικό χρώμα ανάλογα με τις λέξεις -κλειδιά στο κείμενο ειδοποιήσεων, για παράδειγμα "youtube" = Κόκκινο.

Πήρα αυτό το γλυκό μικρό ραδιόφωνο σε μια πώληση πορτμπαγκάζ αυτοκινήτου το καλοκαίρι για 3 £ - με τράβηξε αμέσως το συμπαγές μέγεθος και ο κλασικός σχεδιασμός του και κατάφερα να δω τις δυνατότητές του μέσα από το ηλιοκαμένο εξωτερικό και πολλές ρωγμές! I'veθελα να δημιουργήσω "κάτι αξιοπρεπές για το σαλόνι" εδώ και λίγο καιρό και αυτό ήταν το ιδανικό σημείο εκκίνησης. Έχω πειραματιστεί με ειδοποιήσεις από κείμενο σε ομιλία στο παρελθόν για το έργο Rabbit Pi και ήλπιζα να βασιστώ σε αυτό που έμαθα για να φτιάξω κάτι που «θα λειτουργούσε» σε καθημερινή βάση.

Σε περίπτωση που δεν μπορείτε να δείτε το ενσωματωμένο βίντεο βρίσκεται στη διεύθυνση:

Βήμα 1: Blinkty Pi

Μπλίνκτι Πι
Μπλίνκτι Πι
Μπλίνκτι Πι
Μπλίνκτι Πι

Πήρα το πρώτο μου Pi Zeros πρόσφατα και έμεινα έκπληκτος αμέσως από το μικροσκοπικό τους μέγεθος! Μετά τη συγκόλληση στην κεφαλίδα GPIO και τη σύνδεση των προσαρμογέων, ο πρώτος ήταν έτοιμος να ξεκινήσει. Αρχικά είχα προγραμματίσει να φτιάξω ένα βελτιωμένο Rabbit Pi, αλλά μετά από λίγο αυτό έμοιαζε περισσότερο με δουλειά παρά διασκέδαση, οπότε το άφησα - αν και όχι πριν ξεκινήσω να πειραματίζομαι με ένα pHAT μονόκερου, μια μήτρα 4x8 προγραμματιζόμενων LED, που ήταν απόλυτος σωρός της διασκέδασης! Το μόνο αρνητικό ήταν ότι η χρήση του pHAT περιπλέκει την ρύθμιση του ήχου και ήθελα να κρατήσω το επόμενο έργο μου πολύ απλό.

Όλα μπήκαν στη θέση τους στο Cambridge Raspberry Jam τον Σεπτέμβριο όταν είδα το Blinkt! προς πώληση στον πάγκο Pimoroni - είναι ακριβώς όπως το pHAT Unicorn αλλά με μία μόνο σειρά 8 LED, τέλειου μεγέθους για να ταιριάζει στην κεφαλίδα GPIO του pi zero. Έρχεται με πολλά έγγραφα και παραδείγματα και ήταν σε λειτουργία σε ελάχιστο χρόνο - τώρα ήταν καιρός να ξεκινήσουμε να συνθέτουμε τον υπόλοιπο κώδικα.

Βήμα 2: Κωδικός ομιλίας

Κώδικας ομιλίας
Κώδικας ομιλίας

Ξεκίνησα με ένα αντίγραφο του κύριου κωδικού από το Rabbit Pi, καθώς αυτό είχε ήδη αποθηκεύσει τα διαπιστευτήριά μου Ivona για μετατροπή κειμένου σε ομιλία. Πρέπει να δημιουργήσετε έναν λογαριασμό προγραμματιστή Ivona πριν χρησιμοποιήσετε την υπηρεσία, αλλά η διαδικασία είναι απλή, όπως έχω τεκμηριώσει προηγουμένως.

Το επόμενο βήμα ήταν να εγκαταστήσετε το Pyvona, το περιτύλιγμα Python για να ενσωματωθεί στην υπηρεσία Ivona TTS, η οποία δεν θα μπορούσε να είναι ευκολότερη (pip install pyvona).

Με αυτόν τον τρόπο άρχισα να τροποποιώ τον κώδικα Rabbit Pi, βγάζοντας τις αναφορές στον έλεγχο κινητήρα και τη λήψη selfie για να μου αφήσουν μόνο τα κομμάτια που διαβάζουν τις ειδοποιήσεις από τις γραμμές Θέματος των μηνυμάτων Gmail. Η κρίσιμη εξέλιξη με αυτόν τον κώδικα ήταν η προσθήκη σε μια σειρά δηλώσεων IF για αναζήτηση συγκεκριμένων λέξεων -κλειδιών στα μηνύματα, έτσι ώστε το Blinkt! ανάβουν διαφορετικά χρώματα ανάλογα με το μήνυμα.

Αυτό μου πήρε λίγο χρόνο, καθώς εξακολουθώ να βρίσκω τα πόδια μου με την Python, αλλά έχοντας καθορίσει τις λέξεις -κλειδιά μου ("Συννεφιασμένο", "Ηλιοβασίλεμα", "Ντους", "Facebook", "Twitter", "Youtube" και "Sunny") Wasμουν σε θέση να ελέγξω το Blinkt! χρώμα ανάλογα με το κείμενο που διαβάστηκε.

Ο απλός, αν άκομψος, κώδικας που χρησιμοποίησα είναι στο GitHub, αν και έχω ήδη προσθέσει περισσότερες λέξεις -κλειδιά και χρώματα! Το δοκίμασα έξω από τη θήκη χρησιμοποιώντας ηχείο με μπαταρία - περισσότερα για τη ρύθμιση του ήχου αργότερα. Το τελευταίο βήμα ήταν να ρυθμίσετε το σενάριο python, radiot.py, για εκτέλεση κατά την εκκίνηση.

Βήμα 3: Κεντρική ειδοποίηση

Κεντρική ειδοποίηση
Κεντρική ειδοποίηση

Τώρα που το Pi θα διάβαζε αξιόπιστα μηνύματα και θα έβγαζε διαφορετικά χρώματα, χρειάστηκα για να ρυθμίσω τις ειδοποιήσεις έτσι ώστε να έρχονται αυθόρμητα - θυμάμαι σε ένα παλιό καρτούν του Tom & Jerry το ραδιόφωνο χτυπούσε περιστασιακά (Jerry's Diary (1949) - ίδια περίοδος με το ραδιόφωνο!) και αυτό είναι το αποτέλεσμα που ήθελα, ότι θα καθόταν στη γωνία και θα φαινόταν ωραίο, ανά τακτά χρονικά διαστήματα και διάβαζε ειδοποιήσεις που διαφορετικά δεν θα έπαιρνα στο τηλέφωνό μου.

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

Στη συνέχεια, μπήκα στο IFTTT (IF This Then That) για να ρυθμίσω τον αυτοματισμό. Με το IFTTT μπορείτε εύκολα να συνδέσετε πολλά "Κανάλια" στο λογαριασμό σας και να τα ορίσετε να αλληλεπιδρούν μεταξύ τους χρησιμοποιώντας "Συνταγές", σε αυτήν την περίπτωση διοχετεύοντας πολλαπλά κοινωνικά μέσα και ενέργειες πραγματικού κόσμου σε μια ροή μηνυμάτων ηλεκτρονικού ταχυδρομείου. Προσάρμοσα το μέρος "Στη συνέχεια" των Συνταγών, έτσι ώστε να στέλνουν όλοι ένα email στον λογαριασμό Gmail που είχα δημιουργήσει για ειδοποιήσεις και χρησιμοποίησα την ενότητα "Συστατικά" για να βεβαιωθώ ότι οι βασικές πληροφορίες θα συμπεριληφθούν στο Θέμα email, το μέρος που διαβάζεται. Προς το παρόν έχω ρυθμίσει τις ακόλουθες συνταγές IFTTT, αλλά αυτές προστίθενται συνεχώς!

  • Καθημερινά στις 9 το βράδυ στείλτε με email τον καιρό του αύριο
  • Κάθε μέρα στο Sunset στείλτε την ημερομηνία και την ώρα με email
  • ΕΑΝ είμαι με ετικέτα σε μια φωτογραφία στο Facebook στείλτε ένα email
  • ΑΝ το τηλέφωνό μου είναι συνδεδεμένο/αποσυνδεδεμένο στείλτε το ποσοστό της μπαταρίας μέσω email
  • ΑΝ εισάγω μια γεωγραφική περιοχή στείλτε ένα email "Ο MisterM έφτασε στη δουλειά!"
  • ΑΝ ανεβάσω ένα βίντεο στο YouTube στείλτε ένα email
  • ΕΑΝ ένα συγκεκριμένο άτομο κάνει tweet, στείλτε το με email
  • ΑΝ ξεκινήσει ένα συμβάν ημερολογίου Google, στείλτε το με email
  • ΑΝ ο καιρός αλλάξει σε βροχή στείλτε ένα email ("Προσοχή, πρόκειται να αρχίσει να βρέχει!"
  • ΕΑΝ η έξυπνη πρίζα είναι ενεργοποιημένη ή απενεργοποιημένη, στείλτε ένα email
  • ΑΝ ληφθεί νέο μήνυμα SMS στείλτε το με email
  • ΑΝ η μπαταρία του τηλεφώνου πέσει κάτω από το 15% στείλτε ένα email ("Φόρτισε το τηλέφωνό σου ηλίθιε")
  • ΕΑΝ έχω νέο ακόλουθο στο Twitter ή αναφέρω αποστολή email

Είναι ένα υπέροχο μείγμα προβλέψιμων καθημερινών γεγονότων και απροσδόκητων ανακοινώσεων - το αγαπημένο μου είναι η ειδοποίηση Sunset, είναι ενδιαφέρον αυτή τη στιγμή του χρόνου να δούμε πώς αλλάζει η ώρα του καθημερινά. Οι ειδοποιήσεις στο Twitter είναι οι πιο διασκεδαστικές, αυτή τη στιγμή διαβάζουν τυχόν νέα tweets από το "Beef & Dairy Network", "Very British Problems", "My Sweary Cat" και "Henry Thoreau" (αν και μερικά από αυτά αλλάζουν σε η εφαρμογή IFTTT σε ευγενική εταιρεία). Η δυνατότητα ανάγνωσης συγκεκριμένων λογαριασμών Twitter το καθιστά πραγματικά ευέλικτο και μπορεί να προσαρμοστεί μέσω IFTTT αντί να χρειάζεται να επαναπρογραμματίζεται το Pi κάθε φορά.

Βήμα 4: Επιλογές ήχου

Επιλογές ήχου
Επιλογές ήχου
Επιλογές ήχου
Επιλογές ήχου
Επιλογές ήχου
Επιλογές ήχου
Επιλογές ήχου
Επιλογές ήχου

Στη συνέχεια έπρεπε να τακτοποιήσω τον ήχο, με δύο προκλήσεις! Πρώτον πώς να αφαιρέσετε τον ήχο από το Pi. Σε αντίθεση με το μεγαλύτερο αδελφό του, το Pi Zero δεν έχει έξοδο ήχου 3,5 mm, οπότε χρειάστηκε να χρησιμοποιήσω κάποιο είδος προσαρμογέα. Αρχικά σκέφτηκα ότι θα χρησιμοποιούσα μια υποδοχή HDMI σε VGA + Audio, αλλά αυτό μου φάνηκε υπερβολικό (και το χρειάστηκα για άλλο έργο!), Έτσι χρησιμοποίησα έναν φθηνό προσαρμογέα ήχου USB. Αυτό ήταν αρκετά εύκολο να ρυθμιστεί, μόνο μια περίπτωση ρύθμισης της κάρτας ήχου USB ως προεπιλεγμένης συσκευής ALSA στο Pi. Αυτό σήμαινε ότι έπρεπε να συμπεριλάβω ένα διανομέα USB για να τοποθετήσω τον προσαρμογέα WiFi, αλλά κατάφερα να διαλύσω και να επαναχρησιμοποιήσω ένα παλιό που είχα γύρω μου.

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

Πήγα με κάτι καινούργιο στο τέλος, ένα ζευγάρι ηχεία υπολογιστών για την τιμή ευκαιρίας των 6,99 £. Δεν περίμενα πάρα πολλά, αλλά η ποιότητα του ήχου ήταν εντάξει, χωρίς σφύριγμα ή χρονικό όριο. Το πρόσθετο πλεονέκτημα των ηχείων του υπολογιστή ήταν ότι περιλάμβαναν διακόπτη ενεργοποίησης/απενεργοποίησης και επιλογέα έντασης ήχου, τα οποία ήλπιζα ότι θα μπορούσα να συνδεθώ με τα αρχικά χειριστήρια του ραδιοφώνου. Όλα δούλεψαν στον πάγκο, οπότε τώρα ήρθε η ώρα να το τοποθετήσουμε στη θήκη!

Βήμα 5: Ρετρό τοποθέτηση

Ρετρό τοποθέτηση
Ρετρό τοποθέτηση
Ρετρό τοποθέτηση
Ρετρό τοποθέτηση
Ρετρό τοποθέτηση
Ρετρό τοποθέτηση

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

Ξεκίνησα με ένα λεπτό ξύλινο ράφι από ένα παλιό ράφι DVD, κόβοντας το σε μέγεθος και ανοίγοντας τρύπες για τα μπουλόνια της θήκης. Στη συνέχεια, αποσυναρμολόγησα τα ηχεία, κόβοντας τις πλαστικές θήκες με ένα πριόνι και περιστροφικό εργαλείο. Τα πλέον αδύνατα ηχεία στερεώθηκαν στην ξύλινη βάση με ένα βραχίονα 90 μοιρών κατασκευασμένο από Meccano. Το κύκλωμα του ενισχυτή ήταν το επόμενο - λόγω των περιορισμών του χώρου αυτό δυστυχώς έπρεπε να τοποθετηθεί ανάποδα και να ανυψωθεί περίπου μια ίντσα πάνω από τη βάση. Έπρεπε να φτιάξω ένα είδος διάταξης πυλώνα για να υποστηρίξω και να ασφαλίσω τον πίνακα, αλλά κόλλησα με το πώς να το κάνω αυτό τακτοποιημένα. Η ιδανική λύση ήταν ακριβώς κάτω από τη μύτη μου - ένα χρωματιστό μολύβι! Έκοψα τμήματα του μολυβιού στο μέγεθος και μετά τα τοποθέτησα σε τρύπες που έχουν ανοίξει στη βάση. Το τέλειο με τη χρήση χρωματιστού μολυβιού είναι ότι το "μόλυβδο" στο κέντρο μπορεί πραγματικά να τρυπηθεί, αφήνοντας μια βολική τρύπα για τις βίδες της πλακέτας κυκλώματος.

Χρησιμοποίησα ένα συνδυασμό κομματιών Meccano και Lego για να φτιάξω ένα στήριγμα για να υποστηρίξω το ίδιο το Pi και τακτοποίησα τα αδέσποτα καλώδια με δεσμούς καλωδίων. Οι διακόπτες έντασης και ενεργοποίησης/απενεργοποίησης ήταν πιο μακριά μεταξύ τους στην πλακέτα κυκλώματος ηχείων από τις τρύπες στη θήκη του ραδιοφώνου (δεν μπορείτε να τα έχετε όλα), οπότε τα επέκτεινα χρησιμοποιώντας τμήματα ενός κοίλου πλαστικού μπαλονιού.

Βήμα 6: Εργασία υπόθεσης

Case Work
Case Work
Case Work
Case Work
Case Work
Case Work

Όπως ανέφερα νωρίτερα, η θήκη του ραδιοφώνου ήταν σε τρομακτική κατάσταση, έτσι έκανα μπαλώματα στις χειρότερες τρύπες και ρωγμές χρησιμοποιώντας το polyfilla και το τρίψαμε παντού. Αποφάσισα να κολλήσω με ένα ωραίο κρεμ χρώμα για το χρώμα, για να συντονιστώ με το καφέ του καντράν συντονισμού. Το χρώμα ισχυρίστηκε ότι είναι "αστάρι & βαφή σε ένα", αλλά του έδωσα μερικές στρώσεις αστάρι πρώτα για να είναι στην ασφαλή πλευρά. Τα πόμολα έκαναν λίγο τρίψιμο (60+ χρόνια βρωμιά!), Αλλά βγήκαν καλά - απλώς στερέωσα το αυθεντικό κουμπί ρύθμισης κρέμας στο ίδιο το καντράν με ένα μπουλόνι, καθώς δεν συνδέθηκε με κανένα εξάρτημα.

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

Το πίσω εξώφυλλο του ραδιοφώνου έλειπε, οπότε έφτιαξα ένα νέο από μια παλιά κορνίζα, βάφοντάς το με το ίδιο κρεμ χρώμα.

Βήμα 7: Radio Times

Radio Times
Radio Times
Radio Times
Radio Times
Radio Times
Radio Times

Αυτό ήταν ένα πραγματικά διασκεδαστικό έργο για κατασκευή, ήταν καλό να κρατήσουμε τα πράγματα αρκετά απλά και να επικεντρωθούμε στο να τα κάνουμε όσο πιο καθαρά γίνεται. Μερικές φορές μπήκα στον πειρασμό να προσθέσω ένα μικρόφωνο για την ενσωμάτωση της Alexa, και μάλιστα σκεφτόμουν σοβαρά να δημιουργήσω ένα Chromecast Audio (για τα αγαπημένα μου podcasts νέας εποχής με το στυλ του παλιού ραδιοφώνου), αλλά χαίρομαι που το κράτησα απλό και Είμαι ενθουσιασμένος με το αποτέλεσμα.

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

Αν σας αρέσει αυτό το έργο και θέλετε να δείτε περισσότερα μπορείτε να δείτε τον ιστότοπό μου για εν εξελίξει ενημερώσεις έργου στη διεύθυνση bit.ly/OldTechNewSpec, εγγραφείτε στο Twitter @OldTechNewSpec ή εγγραφείτε στο αναπτυσσόμενο κανάλι YouTube στη διεύθυνση bit.ly/oldtechtube - δώστε μερικά από τα Old Tech σας μια νέα προδιαγραφή!

Διαγωνισμός IoT Builders
Διαγωνισμός IoT Builders
Διαγωνισμός IoT Builders
Διαγωνισμός IoT Builders

Δεύτερο Βραβείο στο Διαγωνισμό IoT Builders

Συνιστάται: