Πίνακας περιεχομένων:
- Βήμα 1: Μια σύντομη ιστορία των έξυπνων κουνελιών
- Βήμα 2: Nabaztag 2.0
- Βήμα 3: Bunny Chop
- Βήμα 4: Ομιλία και Ακρόαση
- Βήμα 5: Διαβάζοντας σαν κουνέλια
- Βήμα 6: Πείτε τι;
- Βήμα 7: ΚΑΠΕΛΟ για το RabbitPi
- Βήμα 8: Κάμερα και τροποποιήσεις
- Βήμα 9: Τι είναι το Cookin 'Doc; Συνταγές IFTTT
- Βήμα 10: Συναρμολόγηση & Δοκιμή
- Βήμα 11: Έτοιμο κουνέλι;
- Βήμα 12: Το Nabaztag επέστρεψε
Βίντεο: RabbitPi - το Alexa Enabled, IFTTT Connected, Ear -Wiggling IoT Assistant: 12 βήματα
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:37
Πρόκειται για ένα παρωχημένο «έξυπνο κουνέλι» Nabaztag του 2005, το οποίο μετέτρεψα σε ένα σύγχρονο IoT Assistant χρησιμοποιώντας ένα Raspberry Pi 3 και ένα Adafruit Motor HAT, με μικρόφωνο κάμερας και ηχείο Philips Soundshooter που περιέχεται στην χαριτωμένη αρχική θήκη. το κουμπί ξεκίνησε φωνητικές εντολές χρησιμοποιώντας τη φωνητική υπηρεσία Alexa του Amazon, διαβάζοντας τις απαντήσεις μέσω του ενσωματωμένου ηχείου. Οι φωνητικές εντολές χρησιμοποιούνται επίσης για την ενεργοποίηση συνταγών IFTTT (If This Then That), για αλληλεπίδραση με άλλες συσκευές συνδεδεμένες στο Διαδίκτυο, όπως έξυπνες πρίζες και κινητά τηλέφωνα. Οχι αρκετά? Εκτός από την ενεργοποίηση συμβάντων IFTTT, τα λαμβάνει επίσης μέσω Gmail, χρησιμοποιώντας τη μηχανή μετατροπής κειμένου σε ομιλία Ivona για την ανάγνωση μηνυμάτων ηλεκτρονικού ταχυδρομείου, μηνυμάτων κειμένου και άλλων ειδοποιήσεων, για παράδειγμα ειδοποιήσεις γύρης ή ειδοποιήσεις από κάμερα ασφαλείας στο σπίτι. Αναφέραμε ότι δίνει έχετε οπτική ανατροφοδότηση με LEDS και μηχανοκίνητα αυτιά; Ω και έχει μια V2 Raspberry Pi Camera στην κοιλιά του για να ανεβάζει selfies με φωνή στο Twitter. Είναι δύσκολο να περιγράψω με λόγια την ομορφιά του RabbitPi, δείτε το βίντεο για να το δείτε σε δράση!
Βήμα 1: Μια σύντομη ιστορία των έξυπνων κουνελιών
Το πρωτότυπο Nabaztag "πρώτο έξυπνο κουνέλι" κυκλοφόρησε το 2005, χρεώθηκε ως βοηθός οικιακού σπιτιού (ακούγεται οικείο Amazon & Google;) - αναμφισβήτητα ήταν το πρώτο πράγμα "Internet of Things" και ήταν από πολλές απόψεις μπροστά από την εποχή του, Αγόρασα ένα αμέσως. Κάθισε στο τζάμι μας διαβάζοντας καθημερινές προβλέψεις καιρού και περιστασιακές ειδοποιήσεις, αλλά ποτέ δεν είχε πολλές δυνατότητες, βασίζοντας σε μια σύνδεση WEP wi-fi και ιδιόκτητο λογισμικό και διακομιστές για την παροχή των υπηρεσιών του κειμένου σε ομιλία (TTS). Είναι δύσκολο να το φανταστώ τώρα, αλλά εκείνη τη στιγμή δεν υπήρχε τόσο πολύ που να μπορούσε να συνδεθεί, τα μέσα κοινωνικής δικτύωσης ήταν σχεδόν κάτι, η Nokia αποφάσισε τον κόσμο των smartphone και οι λαμπτήρες LED ήταν μια ακριβή καινοτομία.
Τα επόμενα χρόνια ακολούθησαν δύο επιπλέον εκδόσεις, το Nabaztag: Tag και το Karotz, και τα δύο προσέφεραν βελτιωμένη λειτουργικότητα, αλλά κανένα δεν βρήκε τη θέση του στην αγορά, τελικά απογοητεύτηκε από τους περιορισμούς υλικού και λογισμικού. Η ντροπή ήταν ότι μόλις απενεργοποιήθηκαν οι διακομιστές υποστήριξης, τα προηγουμένως έξυπνα κουνέλια έγιναν κάτι περισσότερο από στολίδια. Αρκετά κοινοτικά προγράμματα προσπάθησαν να αντικαταστήσουν τις υπηρεσίες των "επίσημων" διακομιστών και χρησιμοποιήσαμε το "OpenKarotz" για λίγο, αλλά και αυτό φάνηκε να εξαφανίστηκε πριν από ένα ή δύο χρόνια, αφήνοντας τα κουνέλια μου σιωπηλά και ακίνητα πάνω από τα ηχεία μου.
Τέλος πάντων το μάθημα της ιστορίας τελείωσε! Το αποτέλεσμα είναι ότι θυμόμαστε με αγάπη την παρουσία του Nabaztag στο σαλόνι μας και το ήθελα πίσω, αλλά ως μια σωστή σύγχρονη συσκευή IoT.
Βήμα 2: Nabaztag 2.0
Εμπνεύστηκα να ξεκινήσω επιτέλους το RabbitPi όταν διάβασα τον Μάρτιο ότι η φωνητική υπηρεσία Amazon Alexa είχε διατεθεί στο Raspberry Pi - το βασικό είναι ότι απαιτείται ένα κουμπί για την ενεργοποίηση της "ακρόασης" - αυτό ταιριάζει απόλυτα με το Nabaztag, καθώς έχει ένα κουμπί στο ίδιο επίπεδο με το πάνω μέρος του γυαλιστερού μικρού κεφαλιού του. Εξάρθρωσα το κουνέλι μου και σύντομα ο εξαιρετικός κώδικας AlexaPi του Sam Machin εκτελέστηκε στο Pi 3 μου, ενεργοποιημένος πατώντας το κουμπί του κουνελιού. Σε αυτό το σημείο αποσπάστηκα τελείως με την κατασκευή του AlexaPhone, αλλά πήδηξα κατευθείαν κάτω από την έξυπνη ραββιτόλη μόλις τελείωσε. Χρειαζόμουν το νέο βελτιωμένο Nabaztag για να είναι τουλάχιστον τόσο έξυπνο όσο το πρωτότυπο, οπότε το ήθελα:
Εκτελέστε φωνητικές αναζητήσεις και διαβάστε τα αποτελέσματα
Διαβάστε τις ειδοποιήσεις
Μετακινήστε τα αυτιά του και αναβοσβήστε τα LED
Τραβήξτε φωτογραφίες και επιτρέψτε την απομακρυσμένη παρακολούθηση
Αλληλεπιδράστε με έξυπνες πρίζες, λαμπτήρες και ούτω καθεξής
Βήμα 3: Bunny Chop
Η πρώτη δουλειά ήταν να διαλύσουμε το Nabaztag και να δούμε ποια μέρη θα μπορούσαν να επαναχρησιμοποιηθούν. Τα αυτιά έχουν σχεδιαστεί για να είναι εναλλάξιμα και κρατούνται μόνο με μαγνήτες, έτσι ήταν εύκολο και το κύριο κάλυμμα κρατήθηκε μόνο από δύο (περίεργες τριγωνικές) βίδες. Αυτό εξέθεσε όλα τα κυκλώματα και τα εξαρτήματα, χτισμένα γύρω από έναν κεντρικό πλαστικό στύλο. Η μία πλευρά κρατούσε το κύριο κύκλωμα και τα LED, με ένα ηχείο στην άλλη πλευρά και κινητήρες/κουμπί ενσωματωμένα στην κολόνα στο επάνω μέρος.
Καθώς σχεδίαζα να κρατήσω τους κινητήρες, πέρασα τα περισσότερα καλώδια και άρχισα να βγάζω βίδες. Είχα μια πραγματική έκπληξη σε αυτό το σημείο! Πίσω από το κύκλωμα "εγκεφάλου" του κουνελιού υπήρχε μια υποδοχή σε όλο το ύψος της κολόνας, η οποία περιείχε μια κάρτα wi-fi PCMCIA πλήρους μεγέθους, αυτή που θα χρησιμοποιούσατε σε παλιούς φορητούς υπολογιστές. Υποθέτω ότι ήταν ένας συμβιβασμός σχεδιασμού ή συμβατότητας εκείνη τη στιγμή, αλλά η σύγκρισή του σε μέγεθος με ένα σύγχρονο dongle USB έφερε πραγματικά στο σπίτι πόσο συρρικνώθηκε η τεχνολογία σε διάστημα 10 ετών.
Τα υπόλοιπα μέρη αφαιρέθηκαν εύκολα, αφήνοντας μόνο τον γυμνό πλαστικό στύλο στήριξης με σίγουρα άφθονο χώρο γύρω του;
Βήμα 4: Ομιλία και Ακρόαση
Δεν μπορείτε να έχετε ένα κουνέλι που μιλάει με φωνή χωρίς ηχείο και μικρόφωνο, οπότε αυτά ήταν από τα πρώτα πράγματα που έβγαλα. Δεν χρειάστηκε πραγματικά να προσπαθήσω πολύ, το Pi φαίνεται να είναι πολύ ευέλικτο για τα μικρόφωνα USB και απλώς χρησιμοποίησα μια παλιά κάμερα MSI StarCam Clip για την είσοδο, προσαρμόζοντας το επίπεδο ήχου στο Max στις ρυθμίσεις ήχου Pi. Για εξοικονόμηση χώρου, αποσυναρμολόγησα την κάμερα web, απορρίπτοντας τον φακό και τη θήκη της κάμερας. Διάτρησα μια τρύπα στη βάση για να περάσει το μικρόφωνο και το συνέδεσα στο USB του Pi, τρέχοντας τα καλώδια όσο το δυνατόν πιο τακτοποιημένα.
Χρησιμοποίησα το ηχείο KitSound MiniBuddy στο AlexaPhone, καθώς αποδείχθηκε πραγματικά αποτελεσματικό, αλλά όταν πήγα να αγοράσω ένα για αυτό το έργο διαπίστωσα ότι ο σχεδιασμός είχε αλλάξει και δεν φορτίζονταν πλέον χρησιμοποιώντας μια υποδοχή micro-usb! Κοίταξα γύρω μου για κάτι παρόμοιο και βρήκα το Philips SoundShooter, μια μικρή μονάδα που μοιάζει με χειροβομβίδα. Hopλπιζα ότι θα ταιριάζει στη θήκη χωρίς αποσυναρμολόγηση, αλλά ήταν πολύ μεγάλο, έτσι βγήκε το κατσαβίδι για να το διαλύσει. Κατάφερα να σπάσω τα καλώδια των ηχείων στη διαδικασία, έτσι συγκολλήθηκαν σε μερικά καλώδια βραχυκυκλωτήρων για να διευκολύνουν την επανασύνδεση. Αυτό το τμήμα ηχείου ήταν κολλημένο στη θήκη στην ίδια θέση με το αρχικό ηχείο, με το κύκλωμα και την μπαταρία να στερεώνονται στο μικρό ράφι από κάτω.
Εκ των υστέρων θα ήθελα να είχα χρησιμοποιήσει απλώς τα κότσια μιας βάσης ηχείων που τροφοδοτείται από το δίκτυο ή κάτι τέτοιο, καθώς δεν είναι ιδανικό να χρειάζεται να φορτίζετε το ηχείο - ωστόσο διαρκεί πολύ και ακούγεται υπέροχα, και ως κύριο εξώφυλλο σηκώνεται εύκολα δεν είναι πραγματικά ένα πρόβλημα που σταματά την εμφάνιση.
Βήμα 5: Διαβάζοντας σαν κουνέλια
Τώρα που λειτουργούσε το τμήμα Alexa, προχώρησα στην επίλυση του επόμενου προβλήματος, πώς θα έβαζα το κουνέλι να διαβάζει τις ειδοποιήσεις; Το κείμενο σε ομιλία του αρχικού Nabaztag ήταν εκπληκτικά καλό, αν και θυμάμαι ότι διαβάζα πάντα τις εγγραφές μηνυμάτων κειμένου μου (MM) ως "Millimeters" και της συζύγου μου (CM) ως "Centimeters"-ήθελα να χρησιμοποιήσω ένα μοντέρνο και κινητήρας με φυσικό ήχο που θα ερμηνεύει σωστά πράγματα όπως το σύμβολο "&" και θα καταλαβαίνει απλά emoticons όπως:).
Όπως συμβαίνει με όλα στο Raspberry Pi, υπάρχουν πολλές διαφορετικές επιλογές εκεί και εξέτασα αρκετές πριν αποφασίσω για το Ivona, το οποίο φαίνεται να είναι ο ίδιος υποκείμενος κινητήρας που χρησιμοποιείται από την υπηρεσία Alexa. Wasταν η καλύτερη επιλογή για μένα, καθώς υπάρχει μια σειρά από διαθέσιμες φωνές και επιλογές διαμόρφωσης - επίσης ένα μεγάλο πλεονέκτημα ήταν ότι ο Zachary Bears είχε διαθέσει ένα βολικό περιτύλιγμα Python για την υπηρεσία, Pyvona.
Για να προχωρήσετε με το Ivona, πρέπει πρώτα να δημιουργήσετε έναν λογαριασμό προγραμματιστή, στη συνέχεια, όπως και με τη ρύθμιση Alexa, σας παρέχονται διαπιστευτήρια για χρήση στην εφαρμογή σας, σε αυτήν την περίπτωση ένα σενάριο για την ανάγνωση ειδοποιήσεων. Σας επιτρέπονται 50.000 αναζητήσεις το μήνα με έναν από αυτούς τους λογαριασμούς, κάτι που σίγουρα είναι αρκετό για μένα.
Η ρύθμιση του Pyvona ήταν πραγματικά απλή, μέσα σε λίγα λεπτά είχα ένα σενάριο Python που δημιουργήθηκε από το παρεχόμενο παράδειγμα που θα διάβαζε κάθε φράση που έγραψα. Αλλά αυτή ήταν μόνο εν μέρει η λύση φυσικά - δεν ήθελα η Ivona να διαβάζει σκληρά κωδικοποιημένα κείμενο αλλά δυναμικές εισερχόμενες ειδοποιήσεις.
Βήμα 6: Πείτε τι;
Έτσι είχα τώρα ένα κουνέλι (σε κομμάτια σε όλο τον πάγκο) που μπορούσε να μιλήσει, αλλά χρειαζόταν ένας μηχανισμός για να λάβει ειδοποιήσεις και να τις περάσει στην υπηρεσία Ivona για ανάγνωση. Κοίταξα τη δυνατότητα ανταλλαγής μηνυμάτων κειμένου μέσω διαδικτυακής υπηρεσίας ή προσαρμογέα κάρτας SIM, καθώς και Twitter και Dropbox για παράδοση συμβολοσειρών/αρχείων κειμένου, αλλά αποφάσισα τελικά να χρησιμοποιήσω το imaplib, ένα μέσο αλληλεπίδρασης που βασίζεται σε Python με λογαριασμούς email IMAP. Αποφάσισα αυτήν την επιλογή κυρίως επειδή ενσωματώθηκε καλά με την υπηρεσία IFTTT, μπορείτε να είστε πραγματικά δημιουργικοί με τη μορφοποίηση των μηνυμάτων ηλεκτρονικού ταχυδρομείου ειδοποιήσεων. Επίσης σήμαινε ότι θα μπορούσα να στείλω μηνύματα ηλεκτρονικού ταχυδρομείου απευθείας στο RabbitPi για να διαβαστούν δυνατά.
Έψαξα πολλά παραδείγματα imaplib python στο διαδίκτυο και αφού συνδύαζα κομμάτια και δούλεψα μέσα από την τεκμηρίωση του imaplib κατάφερα να καταλήξω σε ένα σενάριο που να ελέγχει το Gmail για μη αναγνωσμένα μηνύματα ανά τακτά χρονικά διαστήματα και να τυπώνει διαφορετικό κείμενο στην οθόνη ανάλογα με το περιεχόμενο του το θέμα του μηνύματος. Αυτό ήταν πραγματικά βολικό, καθώς θα μπορούσα να προσαρμόσω μια δήλωση "IF" στον κώδικα για να λειτουργεί μόνο εάν το μήνυμα ηλεκτρονικού ταχυδρομείου προέρχεται από τον εαυτό μου και, στη συνέχεια, να αλλάξω τη δράση "Εκτύπωση" για τον κωδικό που καλεί την υπηρεσία Ivona.
Πέρασα αρκετό καιρό προσπαθώντας να προσαρμόσω τον κώδικα imaplib & Pyvona για να διαβάσω το σώμα των μηνυμάτων ηλεκτρονικού ταχυδρομείου, αλλά αυτό αποδείχθηκε εξαιρετικά περίπλοκο - σύντομα έμαθα ότι τα βασικά πεδία ηλεκτρονικού ταχυδρομείου (Από, Προς, Θέμα κ.λπ.) διαμορφώνονται πολύ απλά, αλλά το σώμα του κειμένου του email μπορεί να δομηθεί με πολλούς διαφορετικούς τρόπους. Τελικά δεν είχε μεγάλη σημασία, ήμουν σε θέση να επιτύχω αυτό που χρειαζόμουν χρησιμοποιώντας το Θέμα Email ως πεδίο από το οποίο θα διαβαζόταν το κείμενο ειδοποίησης.
Στη συνέχεια, προσάρμοσα το παράδειγμα του κώδικα imaplib έτσι ώστε αντί να σταματήσω μετά από κάθε έλεγχο για email, να περιστρέφεται απεριόριστα, να ελέγχω τα μηνύματα ηλεκτρονικού ταχυδρομείου μερικές φορές το λεπτό και να διαβάζω τυχόν νέα μόλις έφταναν. Αυτό ήταν χρήσιμο για δοκιμές, αλλά στην πράξη μάλλον θα το έκανα λίγο λιγότερο συχνά. Επίσης, αξίζει να σημειωθεί ότι το σενάριο αποθηκεύει τον κωδικό πρόσβασης σε απλό κείμενο, επομένως θα χρειαστεί κάποια κρυπτογράφηση που θα προστεθεί κάποια στιγμή.
Είμαι 100% σίγουρος ότι αυτό μπορεί να επιτευχθεί πολύ πιο κομψά και αποτελεσματικά στην Python, αλλά ήταν διασκεδαστικό και δύσκολο να λειτουργήσει καθόλου - δανείστηκα το "Python for Kids" από τη βιβλιοθήκη αυτή την εβδομάδα, οπότε ο κώδικας μου ελπίζω ότι θα βελτιωθεί καθώς μαθαίνω περισσότερα.
Με τη λειτουργία του βασικού σεναρίου get-an-email-and-read-it-out πρόσθεσα τα επιπλέον κομμάτια κώδικα που θα κάνουν τα αυτιά του κουνελιού να κινούνται και τα LED να ανάβουν κατά την ανάγνωση των ειδοποιήσεων. Ο κώδικας που χρησιμοποίησα είναι στο GitHub, αλλά λάβετε υπόψη σας την τρέχουσα έλλειψη ικανότητας python!
Βήμα 7: ΚΑΠΕΛΟ για το RabbitPi
Ένα από τα πιο εμβληματικά πράγματα για το Nabaztag ήταν ο τρόπος με τον οποίο θα κινούσε τα αυτιά του όταν έμπαινε μια ειδοποίηση. Θα μπορούσαν να ρυθμιστούν σε έναν συγκεκριμένο προσανατολισμό είτε με τη χειροκίνητη μετακίνησή τους είτε με τον καθορισμό μιας θέσης χρησιμοποιώντας το λογισμικό ελέγχου - ο στόχος μου ήταν απλώς για να τους κάνει να κινούνται.
Δεν είχα χρησιμοποιήσει κινητήρες με το Raspberry Pi, οπότε αυτό ήταν ένα άλλο νέο ερευνητικό θέμα για μένα - πρώτα έπρεπε να μάθω με τι κινητήρες ασχολούμαι, το μόνο που ήξερα ήταν ότι υπήρχαν 2 κινητήρες, ο καθένας με 2 καλώδια. Διαβάζοντας στο διαδίκτυο κατέληξα στο συμπέρασμα ότι αυτοί πρέπει να είναι απλοί κινητήρες DC και όχι βηματικοί, γεγονός που επιβεβαιώνεται από αυτό το φανταστικά χρήσιμο διδακτικό "Hack the Nabaztag" της Liana_B, το οποίο θα ήθελα να είχα διαβάσει περίπου ένα μήνα νωρίτερα.
Και πάλι χάρη στην ευελιξία του Pi υπάρχουν πολλοί διαφορετικοί τρόποι ελέγχου των κινητήρων, αλλά αποφάσισα να χρησιμοποιήσω μια πλακέτα Adafruit DC & Stepper Motor HAT. Έχω χρησιμοποιήσει οθόνες και μπιχλιμπίδια Adafruit στο παρελθόν και μου αρέσουν οι λεπτομερείς οδηγίες και τα παραδείγματα που έρχονται ως στάνταρ.
Η χρήση μιας πλακέτας με το πρότυπο HAT (Hardware Attached on Top) σήμαινε ότι ο ελεγκτής κινητήρα θα ταιριάζει τακτοποιημένα πάνω από το Pi καταλαμβάνοντας ελάχιστο χώρο και επειδή χρησιμοποιεί τη διεπαφή I2C άφησε ελεύθερους τους ακροδέκτες GPIO που χρειαζόμουν για το Alexa/Clap κουμπί και LED.
Όπως ήταν αναμενόμενο, η συγκόλληση του HAT ήταν πραγματικά απλή και σύντομα το έβαλα στο PI και συνδεδεμένο στους δύο κινητήρες αυτιών. Είχα προγραμματίσει να τρέξω τους κινητήρες από μια τράπεζα ισχύος usb, έτσι ώστε να χρειάζομαι μόνο ένα μόνο βύσμα τροφοδοσίας, αλλά αυτό αποδείχθηκε ότι δεν είχε αρκετό γρύλισμα, ούτε καν θα ανάψει το "Working" led στο HAT. Αποφάσισα να χρησιμοποιήσω έναν προσαρμογέα ρεύματος DC για να λειτουργήσει το ΚΑΠ και τα αυτιά, είχα βολικά ένα από αυτά τα καθολικά με εναλλάξιμες άκρες. Αυτό που δεν είχα ήταν μια πρίζα DC για σύνδεση του προσαρμογέα στο HAT. Wasμουν στο σημείο να φύγω για το Norwich Maplin (ξανά) όταν θυμήθηκα από το δάκτυλο ότι το αρχικό καλώδιο τροφοδοσίας του Nabaztag ήταν ένα τυπικό βύσμα DC - επομένως μπορούσα να επανασυνδέσω την αρχική πρίζα στο HAT - καθαρό! Στο τέλος, ξαναχρησιμοποίησα επίσης το αρχικό τροφοδοτικό Nabaztag, καθώς παρείχε τη σωστή ποσότητα ισχύος.
Με όλα συνδεδεμένα και μια λογική τάση επιλεγμένη, πρόχειρα έτρεξα το παράδειγμα πύθωνα που περιλαμβάνεται στο DC Motor Hat, δείγμα κώδικα που άλλαζε συνεχώς την ταχύτητα και την κατεύθυνση του κινητήρα για να απεικονίσει τις διαφορετικές επιλογές ελέγχου. Wasμουν τόσο ενθουσιασμένος όταν λειτούργησε, ο πρώτος μου κινητήρας με έλεγχο Pi! Αλλά τότε παρατήρησα κάτι - μια πολύ δυνατή γκρίνια σαν κάποιος που έτρεχε ένα βρεγμένο δάχτυλο γύρω από ένα ποτήρι κρασί. Αυτό δεν ήταν καθόλου καλό, ήθελα να κάνω τα αυτιά να κινούνται ενώ διαβάζονταν οι ειδοποιήσεις και αν και δεν εκκωφαντική η γκρίνια ήταν πραγματικά αισθητή. Δοκίμασα διαφορετικές τάσεις αλλά καμία αλλαγή. Στρέφοντας στο Google διαπίστωσα ότι αυτό μπορεί να συμβεί λόγω PWM (διαμόρφωση πλάτους παλμού) και ότι μια λύση μπορεί να είναι η συγκόλληση μικρών πυκνωτών στους ακροδέκτες του κινητήρα. Κοιτάζοντας τους κινητήρες, αυτά ήταν ήδη στη θέση τους. Πειραματίστηκα επίσης με την αλλαγή της συχνότητας PWM αλλά ακόμα καμία αλλαγή. Μετά από κάποιους πειραματισμούς συνειδητοποίησα ότι η γκρίνια συνέβη μόνο όταν η ταχύτητα του κινητήρα αλλάζει από τον κώδικα από χαμηλή σε υψηλή - έτσι η ρύθμισή της σε σταθερή υψηλή ταχύτητα εξάλειψε τη γκρίνια εντελώς - φού!
Δημιούργησα μερικά δοκιμαστικά σενάρια python με βάση τα παραδείγματα του Adafruit, ένα για κίνηση κατά τη διάρκεια των ειδοποιήσεων και ένα άλλο για να κάνω τα αυτιά να εκτελούν ένα πλήρες "κύκλωμα" κατά την εκκίνηση, με στόχο να αντιγράψω τον κώδικα εργασίας από αυτά στα κύρια σενάρια που χρησιμοποιούνται για τον χειρισμό του Αλληλεπιδράσεις Alexa και Gmail/Ivona.
Βήμα 8: Κάμερα και τροποποιήσεις
Πριν ξεκινήσω τη συναρμολόγηση δοκίμασα τα πάντα. Όπου ήταν δυνατόν σε αυτήν την κατασκευή χρησιμοποίησα καλώδια jumper για να συνδέσω τα επιμέρους εξαρτήματα μεταξύ τους, αν οι προηγούμενες κατασκευές μου έχουν μάθει κάτι, πρέπει να σχεδιάσω για μελλοντική αποσυναρμολόγηση! Έκανα επίσης ένα σημείο να σχεδιάσω ένα διάγραμμα σύνδεσης που δείχνει τι χρώμα καλώδια πήγαν πού, τα καλώδια βραχυκυκλωτήρων είναι εξαιρετικά, αλλά μερικές φορές εύκολα αποσπώνται όταν στριμώχνονται εξαρτήματα σε στενούς χώρους!
Αποφάσισα αρκετά πολύ στην κατασκευή να συμπεριλάβω επίσης μια μονάδα κάμερας Pi, η έκδοση 8MP 2 μόλις κυκλοφόρησε και ως κάτι άλλο νέο για μένα σκέφτηκα ότι θα κάνει μια καλή προσθήκη. Η τελευταία έκδοση του κουνελιού Karotz είχε συμπεριλάβει μια κάμερα στο στομάχι του, αλλά αυτό δεν λειτούργησε τόσο καλά, σκέφτηκα ότι η κάμερα Pi θα ήταν διασκεδαστική για selfie με φωνητική ενεργοποίηση και ίσως ακόμη και απομακρυσμένη παρακολούθηση εάν το Pi μπορούσε να χειριστεί τον κώδικα ταυτόχρονα με όλα τα άλλα.
Δημιούργησα ένα στήριγμα για την κάμερα από πλαστικό μεκάνι και το τοποθέτησα πρώτα στη θήκη και μετά μετρήθηκα πολύ προσεκτικά όπου έπρεπε να ανοίξω την τρύπα της βαλίτσας. Αυτό ήταν σίγουρα μια περίπτωση "μέτρου που κόπηκε δύο φορές μία φορά" καθώς μια τρύπα σε λάθος μέρος θα ήταν καταστροφή. Ευτυχώς βγήκε νεκρό κέντρο και λίγο πολύ ψηλά, οπότε ήμουν σε θέση να αντισταθμίσω προσθέτοντας ροδέλες μεταξύ του βραχίονα της κάμερας και της βάσης.
Πρόσθεσα επίσης ένα καλώδιο τροφοδοσίας Pimoroni Dual Micro USB σε αυτό το σημείο - αυτό μου έδωσε μια ωραία υποδοχή micro -usb στο πίσω μέρος της θήκης και παρείχε ένα δεύτερο βύσμα τροφοδοσίας. Είχα σκοπό να χρησιμοποιήσω το πρόσθετο βύσμα για να φορτίσω την μπαταρία του ηχείου και το έσπασα ώστε να μπορέσω να συνδεθώ στον αρχικό διακόπτη "σίγασης" του Nabaztag για τον έλεγχο της φόρτισης.
Βήμα 9: Τι είναι το Cookin 'Doc; Συνταγές IFTTT
Το εκπληκτικό πράγμα για τη δημιουργία μιας συσκευής IoT αυτή τη στιγμή είναι ο τεράστιος αριθμός διαθέσιμων υπηρεσιών διαδικτύου και η υπηρεσία IFTTT (If This Then That) κάνει καταπληκτική δουλειά συνδέοντας όλα αυτά σε ένα απλό και λειτουργικό πακέτο. Εάν δεν το έχετε χρησιμοποιήσει ακόμα, είναι μια διαδικτυακή υπηρεσία και μόλις εγγραφείτε, μπορείτε να συνδέσετε όλα τα άλλα περιεχόμενά σας στον ιστό σε αυτό, όπως το Gmail, το Facebook, το Twitter και (το μαντέψατε) Amazon Alexa. Υπάρχει μια συνολική ποικιλία υπηρεσιών για να διαλέξετε, συμπεριλαμβανομένων των επιλογών ελέγχου για έξυπνες συσκευές όπως λαμπτήρες, θερμοστάτες και πρίζες.
Οι κανόνες IFTTT έχουν οριστεί σε "συνταγές" - κάπως σαν έναν κανόνα του Outlook ή μια δήλωση IF σε SQL ή Visual Basic, για παράδειγμα έχω μια συνταγή που λέει "ΑΝ κάποιος μου κάνει ετικέτα σε μια φωτογραφία στο Facebook ΤΟΤΕ στείλτε μου ένα email με το θέμα "Holy guacamole, [tagging name of person] just tagged you in a facebook photo" - επειδή αυτό μου αποστέλλεται από τη δική μου διεύθυνση, το RabbitPi διαβάζει στη συνέχεια το Κείμενο του Θέματος.
Μια άλλη εξαιρετική χρήση του IFTTT είναι η φωνητική υπηρεσία Alexa - για το τμήμα IF μιας συνταγής μπορείτε να ρυθμίσετε μια φράση, για παράδειγμα "το λέιζερ" και αν στη συνέχεια πείτε στην Alexa "Ενεργοποιήστε το λέιζερ" θα περάσει το αίτημα IFTTT, το οποίο θα ενεργοποιήσει το ΤΟΤΕ μέρος της συνταγής, σε αυτήν την περίπτωση ενεργοποιώντας μια απομακρυσμένη πρίζα συνδεδεμένη με ένα λέιζερ ντίσκο.
Ξεπερνά ακόμη και τα "έξυπνα πράγματα" - αν έχετε εγκατεστημένο το IFTTT στο τηλέφωνό σας (το δικό μου είναι η έκδοση Android), τότε μπορείτε να αλληλεπιδράσετε με αυτό και προς τις δύο κατευθύνσεις, μια συνταγή που χρησιμοποιείται στο βίντεο είναι: "IF I say" Trigger Chas & Dave "στην Alexa, ΤΟΤΕ παίζει το συγκεκριμένο τραγούδι" Rabbit "στο τηλέφωνό μου Android. Λειτουργεί επίσης αντίστροφα - η εφαρμογή γενικού τηλεχειριστηρίου AnyMote στο τηλέφωνό μου μπορεί να προσαρμοστεί έτσι ώστε ένα συγκεκριμένο κουμπί να ενεργοποιεί το μέρος" IF " μιας συνταγής - έτσι έχω ένα κουμπί στην οθόνη μου που προκαλεί το RabbitPi να βγάλει μια selfie και να την ανεβάσει στο Twitter.
Μια άλλη λειτουργία επιτρέπει στο RabbitPi να διαβάζει τα μηνύματα κειμένου μου, στο τηλέφωνό μου έχω μια συνταγή "ΕΑΝ λάβω νέο μήνυμα SMS ΤΟΤΕ στείλτε μου ένα email με το ακόλουθο θέμα" Γεια! [αποστολέας κειμένου] λέει [σώμα μηνύματος κειμένου]"
Είναι εύκολο στη χρήση, πολύ διασκεδαστικό και λειτουργεί καλά, οι ειδοποιήσεις μεταδίδονται πολύ γρήγορα, ειδικά στον διακόπτη WeMo Insight που έχω, ο οποίος είναι λίγο πολύ άμεσος. Έχοντας το IFTTT και το RabbitPi κάνει τη σύνδεση πραγμάτων και υπηρεσιών πολύ απλή.
Βήμα 10: Συναρμολόγηση & Δοκιμή
Τώρα ήρθε το δύσκολο κομμάτι - στριμώχνοντας όλα τα εξαρτήματα στη θήκη! Wasμουν αρκετά σίγουρος ότι θα ταίριαζε όλα, αλλά η πραγματική συναρμολόγηση ήταν πραγματικά ακατάστατη, χρησιμοποίησα καλά κάποια χειρουργικά όργανα και τσιμπιδάκια για να σπρώξω καλώδια μέσα από μικροσκοπικά κενά.
Μόλις τα πάντα τοποθετήθηκαν με ασφάλεια, πρόσθεσα μερικές αυτοκόλλητες βάσεις καλωδίων, έτσι ώστε τα πολλά καλώδια να μπορούν να τραβηχτούν τακτοποιημένα - αυτό ήταν πραγματικά σημαντικό καθώς δεν ήθελα να αποσυνδέσω τυχαία κανένα από αυτά όταν ξαναβάζω τη θήκη.
Βήμα 11: Έτοιμο κουνέλι;
Τώρα που ολοκληρώθηκε όλη η φυσική πλευρά του κτιρίου, ήρθε η ώρα να "κόψουμε το καλώδιο", αφαιρώντας το RabbitPi από την άνεση του καλωδίου ethernet, της οθόνης και του πληκτρολογίου στο εργαστήριο, ώστε να μπορέσω να ολοκληρώσω τον κώδικα αλλού μέσω SSH (Το ασύρματο σήμα είναι πραγματικά αδύναμος εκεί μέσα!)
Εγκαταστάθηκα στο γραφείο στο γραφείο μου, έβαλα το κουνέλι και - καμία σύνδεση Wi -Fi καθόλου, τίποτα. Iξερα ότι έπρεπε να υπάρχει σήμα καθώς το τηλέφωνό μου λειτουργούσε καλά - υπήρχε πρόβλημα με τον προσαρμογέα δικτύου στο Pi 3 για το οποίο δεν είχα ακούσει; Ένα γρήγορο googling με ενημέρωσε ότι το Pi 3 θα βρει σήμα wi-fi μόνο αν ο δρομολογητής εκπέμπει στα κανάλια 1-11-το δικό μου ορίστηκε στο κανάλι 13! Λίγα τσιμπήματα αργότερα και ήμασταν συνδεδεμένοι, ένας μεγάλος αναστεναγμός ανακούφισης.
Στη συνέχεια ήρθε η ταξινόμηση των διαφόρων σεναρίων. Πρώτα τροποποίησα το σενάριο main.py του κώδικα AlexaPi, προσθέτοντας επιπλέον γραμμές έτσι ώστε, εκτός από το να αναβοσβήνει τα LED του κατά την εκκίνηση, το RabbitPi θα έκανε επίσης μια ωραία κούνημα αυτιών. Αντικατέστησα επίσης το τυπικό μήνυμα "Hello" με ένα παιχνιδιάρικο ηχητικό εφέ "boing" για διασκέδαση.
Το δεύτερο σενάριο ονομάζεται rabbit.py (SWIDT?) Και περιέχει όλο τον κώδικα για την ανάκτηση μηνυμάτων gmail και την ανάγνωσή τους με το Pyvona. Πρόσθεσα επίσης κάποιον κώδικα Twython που προσαρμόστηκα από ένα σεμινάριο Raspberry Pi "Tweeting Babbage", επιτρέποντας στο RabbitPi να τραβήξει μια φωτογραφία και να την ανεβάσει στο λογαριασμό του στο Twitter (@NabazPi). Πρόσθεσα κάποια κίνηση του αυτιού και αναβοσβήνει LED για να σας δώσω μια δίκαιη προειδοποίηση όταν πρόκειται να τραβηχτεί η φωτογραφία, καθώς και έναν θόρυβο κλείστρου και επιβεβαίωση tweet που διαβάστηκε από την Pyvona.
Τέλος, πρόσθεσα σε μια δήλωση IF στον κώδικα gmail του imaplib, έτσι ώστε αν το θέμα του email ήταν "selfie", τότε το RabbitPi θα έκανε το selfie του, αλλά διαφορετικά θα διάβαζε το θέμα του email ως συνήθως.
Ο κώδικας που χρησιμοποίησα είναι διαθέσιμος στο GitHub - διαβάστε το αρχείο ReadMe!
Ως τελική πινελιά, εκτύπωσα ένα λογότυπο Raspberry Pi σε χαρτί διαφάνειας και το κόλλησα μέσα στη θήκη RabbitPi, έτσι ώστε η λευκή κοιλιά LED να φωτίζει την εικόνα μέσα από το ημιδιαφανές δέρμα.
Βήμα 12: Το Nabaztag επέστρεψε
Με όλα που έγιναν, έμεινε μόνο το βίντεο για να γίνει. Greatταν πολύ διασκεδαστικό να βάζω το RabbitPi στους ρυθμούς του στην κάμερα, το μόνο μειονέκτημα ήταν η επεξεργασία του υλικού HD στο ηλικιωμένο φορητό υπολογιστή μου αργότερα. Για ορισμένες από τις ειδοποιήσεις (κυρίως μηνύματα κειμένου λόγω του τρομερού σήματος Vodafone) έκοψα τις παύσεις μεταξύ δράσης και ειδοποίησης, διαφορετικά θα ήταν ένα μακρύ και βαρετό βίντεο, αλλά τα περισσότερα δείχνουν την πραγματική ταχύτητα απόκρισης.
Πειραματίστηκα χρησιμοποιώντας έναν αισθητήρα χειροκροτήματος για να ενεργοποιήσω την υπηρεσία Alexa (όπως φαίνεται στο βίντεο Snap to it Alexa), αλλά το άφησα εκτός της τελικής κατασκευής καθώς δεν ήταν αρκετά αξιόπιστο όταν υπήρχε θόρυβος στο παρασκήνιο. Γνωρίζω ότι άλλοι εργολάβοι εργάζονται για τη χρήση τηλεχειριστηρίων IR, ελεγκτών wii και ακόμη και ενεργής ακρόασης με τον κώδικα AlexaPi, οπότε υπάρχουν πολλές επιλογές για το μέλλον.
Ελπίζω να προσθέσω ένα δαχτυλίδι neopixel adafruit για να αντικαταστήσω το LED της κοιλιάς, καθώς αυτό θα έκανε πολύ καλύτερες οπτικές ειδοποιήσεις, επίσης θα ήθελα να συνεισφέρω στη "σίγαση" των φωνητικών ειδοποιήσεων τη νύχτα. Τα παιδιά μου έδωσαν επίσης μερικές υπέροχες προτάσεις και τώρα που είμαι πιο άνετα με την Python, θα συνεργαστούμε για να διευρύνουμε το φάσμα των ειδοποιήσεων, για παράδειγμα, ώστε το κείμενο επιβεβαίωσης selfie να ληφθεί από μια λίστα τιμών τυχαία, και έτσι το κουνέλι μπορεί να λάβει οδηγίες να προσπαθήσει να χορέψει τη μακαρένα με τα αυτιά και τα LED.
Απλώς τυχαίνει να έχω ένα άλλο Nabaztag εδώ, καθώς και ένα μεταγενέστερο κουνέλι Karotz, οπότε μπορεί κάλλιστα να φτιάξω κάτι άλλο μαζί τους - είναι δελεαστικό να πειραματίζεσαι με απομακρυσμένη παρακολούθηση και αισθητήρες όλων των ειδών! Είναι μια ιδανική πλατφόρμα υλικού για το Pi με τη θήκη, τους κινητήρες και το κουμπί τέλειου μεγέθους. Αναρωτιέμαι αν οι αρχικοί κατασκευαστές έχουν κάπου ένα απόθεμα απούλητων Nabaztags, όπως ο ΧΥΤΑ Atari; Σίγουρα με κάποια τρισδιάστατη εκτύπωση καλοσύνης για την τοποθέτηση της κάμερας και PI και ένα προσαρμοσμένο ΚΑΠΕΛΟ για να λειτουργούν οι κινητήρες, τα LED και ο ήχος θα έκαναν ένα ιδανικό κιτ κατασκευής Raspberry Pi, κάθε κώδικας κωδικοποίησης θα πρέπει να έχει ένα!
Αν σας αρέσει αυτό το έργο και θέλετε να δείτε περισσότερα μπορείτε να δείτε τον ιστότοπό μου για εν εξελίξει ενημερώσεις έργου στη διεύθυνση bit.ly/OldTechNewSpec, εγγραφείτε στο Twitter @OldTechNewSpec ή εγγραφείτε στο αναπτυσσόμενο κανάλι YouTube στη διεύθυνση bit.ly/oldtechtube - δώστε μερικά από τα Old Tech σας μια νέα προδιαγραφή!
Διαγωνισμός Διαδικτύου των πραγμάτων 2016
Συνιστάται:
Alexa Enabled Remote Control (χρησιμοποιώντας WEMO D1 Mini): 3 βήματα
Alexa Enabled Remote Control (χρησιμοποιώντας WEMO D1 Mini): Αυτή είναι μια ενημερωμένη έκδοση μιας προηγούμενης ανάρτησης: https: //www.instructables.com/id/Voice-Activated-R..Στην προηγούμενη έκδοση, χρησιμοποίησα ένα Geetech μονάδα φωνής για τον έλεγχο ενός συνηθισμένου τηλεχειριστηρίου τύπου ανοιχτήρι γκαράζ. Σε αυτό το διδακτικό έχω αντικαταστήσει το φωνητικό
Alexa Enabled Elevator Button: 4 βήματα
Alexa Enabled Elevator Button: Η μέθοδος σε αυτό το εκπαιδευτικό μπορεί να χρησιμοποιηθεί για οποιοδήποτε κουμπί, αλλά για αυτήν την περίπτωση έχουμε έναν ανελκυστήρα που θέλουμε να καλέσουμε χρησιμοποιώντας το Amazon Alexa. Έχω μια προηγούμενη οδηγία όπου χρησιμοποίησα μια ηλεκτρομαγνητική βαλβίδα που ελέγχεται από την Alexa για να κάνω το ίδιο πράγμα, αλλά
Ελέγξτε τις οικιακές συσκευές χρησιμοποιώντας το Node MCU και το Google Assistant - IOT - Μπλίνκ - IFTTT: 8 βήματα
Ελέγξτε τις οικιακές συσκευές χρησιμοποιώντας το Node MCU και το Google Assistant | IOT | Μπλίνκ | IFTTT: Ένα απλό έργο για τον έλεγχο συσκευών χρησιμοποιώντας το Google Assistant: Προειδοποίηση: Χειρισμός ρεύματος Η ηλεκτρική ενέργεια μπορεί να είναι επικίνδυνη. Χειριστείτε με μεγάλη προσοχή. Προσλάβετε έναν επαγγελματία ηλεκτρολόγο ενώ εργάζεστε με ανοιχτά κυκλώματα. Δεν θα αναλάβω ευθύνες για τον
Alexa-Enabled Death Star Lamp: 17 βήματα (με εικόνες)
Alexa-Enabled Death Star Lamp: Φέρτε ένα απόσπασμα από τη σκοτεινή πλευρά στο σαλόνι σας με αυτόν τον μοναδικό λαμπτήρα με φωνητική ενεργοποίηση. Ένα λειτουργικό έργο τέχνης που είναι χρήσιμο και ευχάριστο να το κοιτάξεις. Ενεργοποίηση ή απενεργοποίηση; Όλες οι λάμπες το κάνουν! Αλλαγή φωτεινότητας; Πολύ κοινό! Μπορεί όμως το δικό σας
Βελτιώστε τα ακουστικά In-Ear (Ear-Buds): 6 βήματα
Βελτιώστε τα ακουστικά In-Ear (Ear-Buds): Αυτά τα μπουμπούκια δεν χωράνε ποτέ στα αυτιά μου. Αλλά υπάρχει μια απλή λύση σε αυτό