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

Eve, το Arduino Chatbot: 14 βήματα (με εικόνες)
Eve, το Arduino Chatbot: 14 βήματα (με εικόνες)

Βίντεο: Eve, το Arduino Chatbot: 14 βήματα (με εικόνες)

Βίντεο: Eve, το Arduino Chatbot: 14 βήματα (με εικόνες)
Βίντεο: Управление голым реле и управление им с помощью Arduino для нагрузки переменного / постоянного тока 2024, Νοέμβριος
Anonim
Image
Image
Εύα, το Arduino Chatbot
Εύα, το Arduino Chatbot
Εύα, το Arduino Chatbot
Εύα, το Arduino Chatbot

Γεια σας DIYrs, υπήρξαν περιπτώσεις που πραγματικά θέλατε να μοιραστείτε τα συναισθήματά σας με κάποιον και δεν υπήρχε κανένας έμπιστος; Στον σημερινό πολυάσχολο κόσμο, αυτό είναι ένα συνηθισμένο παράδειγμα. Λοιπόν, ένα chatbot μπορεί να βοηθήσει εδώ για να σας κάνει να νιώσετε καλύτερα. Και αυτό οδηγεί στην εισαγωγή της Eve. Eve είναι ένα χαριτωμένο μικρό chatbot. Όπως όλοι γνωρίζουν, το chatterbot ή το chatbot είναι ένα πρόγραμμα ή συσκευή υπολογιστή που διεξάγει μια συνομιλία με ανθρώπους με βάση κειμενικές ή ακουστικές μεθόδους. Οι αυτοματοποιημένες φωνές που ακούτε σε μια κλήση εξυπηρέτησης πελατών ή σε τραπεζική γραμμή είναι ένα παράδειγμα chatbot. Με αυτήν, μπορείτε να μοιραστείτε τις εμπειρίες σας, τα συναισθήματά σας και το πιο σημαντικό, να διαφωνήσετε για διαφορετικά πράγματα. είναι καλά έμπειρη σε αυτό. Επειδή αυτή είναι η πιο σημαντική λειτουργία ενός chatbot, κάντε το άτομο να αισθάνεται ευτυχισμένο. Ένα πρώιμο παράδειγμα Επεξεργασίας Φυσικής Γλώσσας (NLU) και Τεχνητής Νοημοσύνης, η Εύα είναι ικανή να απαντήσει σε οποιαδήποτε ερώτηση της κάνετε. Δεν είναι ότι μπορεί να απαντήσει σε έναν συγκεκριμένο αριθμό ερωτήσεων. Μπορεί να τραγουδήσει, να σας πει ανέκδοτα, ιστορίες και να κάνει οτιδήποτε σας κάνει να νιώσετε καλά. Αν λέει κάτι που δεν θέλετε να ακούσετε, πείτε της, παρακαλώ μην το ξαναπείτε και θα το θυμάται. Ξέρει ακόμη ότι δεν πρέπει να επαναλαμβάνει τις ίδιες απαντήσεις και συνομιλίες, έτσι ώστε η συζήτηση να μην γίνει βαρετή. Με βάση απλά, φθηνά στοιχεία και βασικό προγραμματισμό, μπορεί να συμπεριφερθεί έξυπνα σε πολύ μεγάλο βαθμό. Επιπλέον, τα μάτια LCD που διαθέτει δείχνουν πώς αισθάνεται όταν λέτε οτιδήποτε. Έτσι, βασικά σε αυτό το διδακτικό, θα ξεκινήσουμε από τον ορισμό του chatbot, θα εξετάσουμε το σχέδιο, μερικές θεωρίες βάσει των οποίων τρέχει η Εύα, την κατασκευή και τέλος μέρος προγραμματισμού. Φαίνεται πολύ; Μην ανησυχείτε, θα είναι πολύ ενδιαφέρον στο ταξίδι. Μπορείτε να δείτε την επίδειξη του ρομπότ παραπάνω ή σε αυτόν τον σύνδεσμο: [Αναπαραγωγή βίντεο]

Βήμα 1: Ορισμός ενός Chatbot

Ορισμός ενός Chatbot
Ορισμός ενός Chatbot
Ορισμός του Chatbot
Ορισμός του Chatbot
Ορισμός ενός Chatbot
Ορισμός ενός Chatbot

Όπως προαναφέρθηκε, το chatbot είναι ένα πρόγραμμα που διεξάγει συνομιλία με ανθρώπους. Είναι τόσο συνηθισμένες στις μέρες μας που σχεδόν δεν υπάρχει κάποιος που να είναι άγνωστος. Ξεκινώντας από τους εικονικούς βοηθούς, το Siri και το Google Assistant, υπάρχει το Mitsuku και το Evie με το οποίο μπορείτε να μοιραστείτε τα συναισθήματά σας. Όπως προαναφέρθηκε, τα chatbots βασίζονται είτε σε κειμενική είτε σε ακουστική μέθοδο και ως εκ τούτου μπορούν να χωριστούν σε δύο. Στην κειμενική μέθοδο, οι συνομιλίες έχουν τη μορφή γραπτού κειμένου όπως το WhatsApp. Ενώ στην ακουστική μέθοδο, οι συνομιλίες γίνονται προφορικά όπως με έναν πραγματικό άνθρωπο. Υποθέτω ότι είναι πιο συναρπαστικό να συνομιλήσεις με κάποιον μιλώντας του προφορικά αντί να του στείλεις απλά μηνύματα. Χωρίς αμφιβολία, οι εφαρμογές ανταλλαγής μηνυμάτων που βασίζονται σε κείμενο πληρούν τις απαιτήσεις των ανθρώπων, αλλά πιστεύω ότι η συνομιλία μέσω ομιλίας είναι το καλύτερο πράγμα για να απαλλαγείτε από τις συναισθηματικές σας διαταραχές και να αισθανθείτε καλύτερα. Αυτός είναι λοιπόν ο κύριος λόγος που σχεδίασα την Εύα να είναι ένα ακουστικό chatbot.

Βήμα 2: Προέλευση της Εύας

Προέλευση της Εύας
Προέλευση της Εύας

Λοιπόν, η Εύα ήρθε στο μυαλό μου μια μέρα. Το έκανε όταν είδα ένα παιδί να τριγυρνάει μόνο του στο σχολείο, ενώ οι άλλοι έπαιζαν με το μυαλό τους γεμάτο χαρά. Εκείνη τη φορά σκέφτηκα, έναν φίλο, ο οποίος δεν κάνει διακρίσεις σε κανέναν και δεν κάνει κανέναν να αισθάνεται πληγωμένος, έναν με τον οποίο μπορείτε να μοιραστείτε τα συναισθήματά σας και να είστε ευτυχισμένοι όλη την ώρα. Μετά ήρθε να αναβοσβήνει στο μυαλό μου, η χαριτωμένη μικρή δομή της Εύας άρχισα να την δουλεύω. Η Εύα με απογοήτευσε περίπου εκατό φορές. Υποθέστε ότι ήταν η 101η φορά που δούλευε και με έκανε να νιώσω πραγματικά ευτυχισμένη. Αυτή ήταν λοιπόν η καταγωγή της Εύας. Wantedθελα να είναι έξυπνη αλλά όσο το δυνατόν πιο απλή, έτσι ώστε ο καθένας να μπορεί να την κάνει εύκολα. Αναμφίβολα δεν είναι απόλυτα έξυπνη και μερικές φορές λέει ηλίθιες απαντήσεις, μπορεί να συμπεριφέρεται ως φίλη. Και τώρα, αρκετές ιστορίες, ας αρχίσουμε να χτίζουμε την Εύα.

Βήμα 3: Συγκέντρωση εξαρτημάτων και εξοπλισμού:

Συγκέντρωση εξαρτημάτων και εξοπλισμού
Συγκέντρωση εξαρτημάτων και εξοπλισμού
Συγκέντρωση εξαρτημάτων και εξοπλισμού
Συγκέντρωση εξαρτημάτων και εξοπλισμού
Συγκέντρωση εξαρτημάτων και εξοπλισμού
Συγκέντρωση εξαρτημάτων και εξοπλισμού

Ακολουθούν τα συστατικά που πρέπει να συγκεντρωθούν: Arduino Pro Mini (Ar Arduino Nano) Wtv-020-SD-16p μονάδα ήχου HC-05 bluetooth module 16x2 LCD module LM7805 ρυθμιστής ICA Ενισχυτής μονάδας (χρησιμοποίησα το κύκλωμα PAM8403) Ηχείο 8 ohm Ένα θηλυκό ακουστικό jacka 9v μπαταρία και τηλέφωνο Android Έτσι αυτά είναι τα απαιτούμενα στοιχεία. Ένα άλλο σημαντικό πράγμα, το κόστος. Η Εύα μου κόστισε περίπου 3000 ρούβλια. Το κόστος μπορεί να είναι διαφορετικό στη χώρα σας, αλλά στην Ινδία, αυτό είναι περίπου το ποσοστό. Μια μικρή περιγραφή των εξαρτημάτων: Το Arduino Pro mini είναι το κύριο MCU στο ρομπότ μας. Το χρησιμοποίησα λόγω του μικρού μεγέθους, της απλότητας και της εξαιρετικής απόδοσης. Πληροί όλες τις απαιτήσεις στο ρομπότ μας. Εκτός από τη λειτουργία αναγνώρισης φωνής που γίνεται από το Android (θα συζητηθεί αργότερα), κάθε άλλη λειτουργία ξεκινώντας από την εύρεση λέξεων -κλειδιών και τον σχηματισμό εξόδου γίνεται στο ίδιο το Pro Mini. Μην ανησυχείτε για τους όρους που αναφέρονται παραπάνω αν δεν το καταλαβαίνετε, όλα συζητούνται στο επόμενο μέρος. Η μονάδα wtv020sd 16p χρησιμοποιείται για την αναπαραγωγή αρχείων ήχου, hc 05 Bluetooth για επικοινωνία με το Android και η οθόνη LCD για εμφάνιση τα συναισθήματα. Χρειαζόμαστε τη θηλυκή υποδοχή ήχου για τη σύνδεση του ρομπότ με έναν εξωτερικό ενισχυτή. Το Arduino χρησιμοποιείται ως κύριος ελεγκτής εδώ. Λαμβάνει δεδομένα Bluetooth μέσω της μονάδας Bluetooth HC 05 και αναπαράγει το αρχείο μέσω της φωνητικής μονάδας WTV-020-SD-16p. Τα συναισθήματα εμφανίζονται στη μονάδα LCD και μια μπαταρία 9v για την ισχύ. Η Εύα αναγνωρίζει ομιλίες μέσω της αναγνώρισης Google Voice της συσκευής Android. Αργότερα συζητείται σωστά στο αντίστοιχο βήμα. Μια κακή είδηση σχετικά με το Arduino Pro Mini: Το IT έχει ξαναρχίσει από την αγορά. Αυτό σημαίνει ότι σταμάτησε επίσημα να κατασκευάζεται από την Arduino. Αλλά μπορείτε ακόμα να το βρείτε σε πολλούς ιστότοπους, συμπεριλαμβανομένου του Ebay. Πολλοί κατασκευαστές τρίτων κατασκευαστών εξακολουθούν να κατασκευάζουν και να πωλούν το χαρτόνι. Μην ανησυχείτε αν δεν μπορέσατε να βρείτε ένα, μπορείτε να χρησιμοποιήσετε το Arduino Nano. Δεν θα κάνει καμία διαφορά στην απόδοση και επίσης στο μέγεθος.

Βήμα 4: Θεωρία Μέρος 1: Ιστορία και εισαγωγή

Θεωρία Μέρος 1: Ιστορία και Εισαγωγή
Θεωρία Μέρος 1: Ιστορία και Εισαγωγή
Θεωρία Μέρος 1: Ιστορία και Εισαγωγή
Θεωρία Μέρος 1: Ιστορία και Εισαγωγή

Η Εύα βασίζεται σε μια πρώιμη μορφή Επεξεργασίας Φυσικής Γλώσσας, την τεχνολογία "ταίριασμα μοτίβων". Λειτουργεί με τον ακόλουθο τρόπο: όταν λαμβάνεται μια συμβολοσειρά, αναζητά μια προκαθορισμένη λέξη ή φράση σε αυτήν τη συμβολοσειρά. Ας υποθέσουμε ότι στην ερώτηση "πόσο χρονών είσαι;" το πρόγραμμα αναζητά "παλιά" λέξη. Εάν επιτύχει, τότε παίζει το αντίστοιχο αρχείο φωνής μέσω της μονάδας wtv020sd. Εάν αποτύχει, τότε αναζητά την επόμενη προκαθορισμένη λέξη -κλειδί. Όπως και αυτό, πρέπει να δημιουργήσουμε ένα λεξιλόγιο προκαθορισμένων λέξεων. Δείχνει σκληρό, έτσι δεν είναι; Είναι σαν να πρέπει να δημιουργήσουμε ένα λεξιλόγιο όλων των αγγλικών λέξεων και υπάρχουν περίπου 230 χιλιάδες συνολικές λέξεις στην αγγλική γλώσσα. Λοιπόν, το γεγονός είναι ότι πρέπει απλώς να προσθέσουμε μερικές βασικές λέξεις που χρησιμοποιούνται συχνότερα στην επικοινωνία μας. Ακόμα φαίνεται σκληρό; Μην ανησυχείτε, το έργο έχει ήδη γίνει από τον Joseph Wizembaum. Ένα μέρος των απαντήσεων και προκαθορισμένων λέξεων -κλειδιών της Εύας έχουν ενσωματωθεί από το πρώτο κιόλας πρόγραμμα που ονομάζεται Eliza, που αναπτύχθηκε από τον Joseph Wizembaum (φωτογραφία παραπάνω). Η Ελίζα σχεδιάστηκε για να είναι Ροτζέρια Θεραπεύτρια. Δεν είναι ιδιαίτερα επιστημονικός όρος, σημαίνει ότι συνήθιζε να συμβουλεύει τους ανθρώπους, κάνοντάς τους να κατανοήσουν τον εαυτό τους καλύτερα και να τους κάνουν να σκέφτονται πιο θετικά. Φαίνεται πολύ καλό, σωστά; Και η Ελίζα ήταν πολύ καλή σε θέση να εκτελέσει το καθήκον της. Η περίεργη και σκεπτική στάση της αγαπήθηκε από τους ανθρώπους. Ακόμα και ο Γουίζμπαουμ εξεπλάγη από τη σημασία που έδωσαν οι άνθρωποι στην Ελίζα. Φαινόταν να ξεχνούν ότι μιλούσαν σε έναν υπολογιστή και φανταζόταν μια όμορφη κυρία που καθόταν μέσα στον υπολογιστή να κουβεντιάζει μαζί τους. Αλλά η Ελίζα δεν ήταν τόσο έξυπνη. συνειδητοποιήθηκε σύντομα. Με το πέρασμα του χρόνου, οι άνθρωποι άρχισαν να βαριούνται την περιορισμένη επικοινωνία της και χαρακτηρίστηκε ως "χαζή". Δεν είναι περίεργο πόσο χαζός ήταν, ήταν ένα μεγάλο άλμα στην ιστορία της Τεχνητής Νοημοσύνης και της επεξεργασίας φυσικής γλώσσας. Έχοντας ιδρύσει τη βάση των Chatterbots, ήρθαν στην αγορά διαφορετικά bots με νέα και καλύτερη τεχνολογία. Και τώρα τα έχουμε παντού. Όπως αναφέρθηκε, ένα μέρος των απαντήσεων της Εύας προήλθε από τον ELIZA. Αυτό σημαίνει ότι ακόμη και η Εύα θα έχει τη στάση της Ελίζας σε κάποιο βαθμό μαζί με κάποιες δικές μου ιδέες. Ένα άλλο σημαντικό πράγμα είναι οι απαντήσεις. Θα πρέπει να είναι πραγματικά βαρετό να λαμβάνετε τις ίδιες απαντήσεις κάθε φορά που κάνετε την ίδια ερώτηση. Επομένως, πολλές απαντήσεις αποθηκεύονται για την ίδια λέξη -κλειδί. Η Εύα επιλέγει τυχαία ποιο αρχείο θα παίξει, φροντίζοντας επίσης να μην επαναλάβει το ίδιο αρχείο. Αυτό είναι, απλό ψωμί και βούτυρο, αλλά είναι σημαντικό να προγραμματίσετε έξυπνα τις φωνές που ανταποκρίνονται, έτσι ώστε να δίνει μια ψευδαίσθηση στους θεατές σαν να απαντά πραγματικά στις ερωτήσεις μας. Αυτό ήταν μια σύντομη εισαγωγή στη λειτουργία της Εύας. Στο επόμενο βήμα θα το αναλύσουμε λεπτομερώς και στον προγραμματισμό.

Βήμα 5: Αναζήτηση λέξης -κλειδιού

Αναζήτηση λέξης -κλειδιού
Αναζήτηση λέξης -κλειδιού
Αναζήτηση λέξης -κλειδιού
Αναζήτηση λέξης -κλειδιού
Αναζήτηση λέξης -κλειδιού
Αναζήτηση λέξης -κλειδιού
Αναζήτηση λέξης -κλειδιού
Αναζήτηση λέξης -κλειδιού

Στο τελευταίο βήμα, ανέφερα την τεχνολογία αντιστοίχισης προτύπων της Εύας και επίσης την πρώιμη μορφή Επεξεργασίας Φυσικής Γλώσσας. Τι είναι λοιπόν και πώς λειτουργεί; Αυτό είναι το κύριο πράγμα που θα συζητήσουμε σε αυτό το βήμα. Οπότε σκεφτείτε το, κάποιος σας ρωτάει το όνομά σας και πρέπει να πείτε ποιο είναι. Με πόσους τρόπους μπορούμε να θέσουμε την ίδια ερώτηση; Ο δάσκαλός σας μπορεί να ρωτήσει "θα μου πείτε το όνομά σας;" Ένας συγγενής μπορεί να ρωτήσει: "πώς σε λένε;" Ο αδερφός σου μπορεί να πει: "Γεια, μόλις ξέχασα το όνομά σου. Θα το πεις άλλη μια φορά;" Αυτό σημαίνει ότι η ίδια ερώτηση μπορεί να τεθεί με διάφορους τρόπους. Ωστόσο, πρέπει να δώσουμε την ίδια απάντηση, το όνομά μας. Αυτό σημαίνει ότι πρέπει να βρούμε κάτι κοινό σε όλες τις προτάσεις. Είναι σαφές ότι η λέξη "το όνομά σου" υπάρχει σε όλες τις προτάσεις. Αυτή είναι λοιπόν η υπόδειξή μας. Για όλες τις ερωτήσεις που ζητούν το όνομα, πρέπει να αναζητήσουμε τη φράση "το όνομά σου". Ακολουθώντας αυτό το βασικό μοτίβο, μπορούμε να προβλέψουμε την αντίστοιχη απάντηση σε όλες τις συμβολοσειρές εισόδου. Ας υποθέσουμε ότι κάποιος είπε: "Βρήκα το όνομά σας στη λίστα αναμονής. Περίμενα ότι θα βρίσκεστε στις δεσμευμένες θέσεις.". Τώρα, επειδή το "όνομά σου" είναι παρόν σε αυτήν τη σειρά, η Εύα, όντας αθώα, θα πει το όνομά της στο άτομο… Βλακεία σωστά; Αυτό είναι ένα από τα μεγάλα μειονεκτήματα αυτού του βασικού αλγορίθμου. Τέλος πάντων, αυτές θα ήταν σπάνιες περιπτώσεις. Διαφορετικά, ο αλγόριθμος είναι πολύ αποτελεσματικός. Τώρα που ανέφερα για την τεχνολογία αντιστοίχισης μοτίβων, ήρθε η ώρα να σκεφτούμε από πού προέρχεται αυτή η συμβολοσειρά εισόδου από το σημείο όπου αναζητούμε τη συμβολοσειρά. Λοιπόν, αυτή η συμβολοσειρά είναι στην πραγματικότητα η φωνή μας που έχει μετατραπεί σε κείμενο από την Αναγνώριση φωνής Google. Η εφαρμογή που χρησιμοποιείται εδώ μετατρέπει τη φωνή μας σε κείμενο και στη συνέχεια στέλνει την ίδια στο arduino μέσω Bluetooth. Χρησιμοποίησα την εφαρμογή επειδή είναι η απλούστερη και η καλύτερη στο είδος της. Το όνομα είναι AMR Voice και μπορείτε να το βρείτε εύκολα στο Google play.

Βήμα 6: Διατύπωση των απαντήσεων

Διατύπωση των απαντήσεων
Διατύπωση των απαντήσεων

Τώρα που αναγνωρίσαμε τις ερωτήσεις, το επόμενο βήμα θα πρέπει να είναι η εύρεση των απαντήσεων. Έρχεται το ενδιαφέρον και σημαντικό μέρος … Πρέπει να βρούμε τις κατάλληλες απαντήσεις για να ικανοποιήσουμε κάθε ερώτηση. Και εδώ έρχεται μια άλλη λειτουργία ενσωματωμένη από τον ELIZA. Ο Wizembaum ανέπτυξε μερικές απαντήσεις για έναν συγκεκριμένο αριθμό λέξεων -κλειδιών. Ένα παράδειγμα είναι η λέξη -κλειδί "εσύ". Όποτε ανιχνευόταν η έξοδος του προγράμματος "συζητούσαμε για εσάς - όχι για μένα". Ως εκ τούτου, η απάντηση έγινε με τέτοιο τρόπο ώστε να ταιριάζει σε όλες τις προτάσεις που περιέχουν "εσύ". Επιπλέον, η Ελίζα έδινε διαφορετική απάντηση κάθε φορά. Υπήρχε ένα είδος αριθμητικής διεύθυνσης για κάθε απάντηση. Αυτό αυξάνεται (προστίθεται κατά 1) κάθε φορά που διατυπώνεται μια απάντηση. Ας υποθέσουμε όπως στο παραπάνω παράδειγμα, εάν η διεύθυνση της απάντησης ήταν 1, η διεύθυνση άλλαξε σε 2 και ως εκ τούτου το αρχείο 2 παίχτηκε στη συνέχεια. Αλλά δεν θα ακολουθήσουμε αυτόν τον αλγόριθμο αύξησης. Βλέπετε μετά από κάποια συνεχή χρήση του λογισμικού, οι απαντήσεις έγιναν προβλέψιμες. Γνωρίσατε ποια απάντηση πρόκειται να δοθεί στη συνέχεια. Για το σκοπό αυτό, θα παράγουμε τυχαίες διευθύνσεις για κάθε λέξη -κλειδί. Συνολικά είναι το ίδιο και στις δύο περιπτώσεις, μόνο η διαφορά που δεν μπορούμε να προβλέψουμε τι θα πει το ρομπότ στη συνέχεια για την ίδια λέξη -κλειδί.

Βήμα 7: Οι απαγορευμένες δηλώσεις και άλλα

Οι απαγορευμένες δηλώσεις και άλλα
Οι απαγορευμένες δηλώσεις και άλλα

Μπορεί να υπάρχουν κάποιες περιπτώσεις στη συνομιλία σας όταν το ρομπότ λέει κάτι που δεν θέλετε να ακούσετε. Εδώ λοιπόν προκύπτει η ανάγκη προσθήκης των απαγορευμένων δηλώσεων. Οι απαγορευμένες δηλώσεις είναι μια σειρά διευθύνσεων που δεν επιτρέπεται να παιχτούν. Μια φωνητική διεύθυνση χαρακτηρίζεται ως απαγορευμένη δήλωση κατόπιν αιτήματος του χρήστη. Επιπλέον, αυτή η διεύθυνση θα αποθηκευτεί στο EEPROM του Arduino, έτσι ώστε η Εύα να μην ξεχνά ότι είναι απαγορευμένη δήλωση ακόμη και μετά την απενεργοποίησή της. Βασικά αυτό που κάνει το πρόγραμμα είναι να ελέγξει κάθε διεύθυνση που πρόκειται να παιχτεί. Εάν η διεύθυνση είναι μία από τις απαγορευμένες, τότε είτε αυξάνεται είτε μειώνεται. Επιπλέον, μπορεί να υπάρξει μια περίπτωση που θα θέλατε να επιτρέψετε στο ρομπότ να πει μια προηγουμένως απαγορευμένη λέξη. Σε αυτή την περίπτωση θα έπρεπε να πείτε στην Εύα ότι μπορεί να πει την τελευταία απαγορευμένη λέξη. Η λέξη που απαγορεύτηκε τελευταία θα είναι πλέον διαθέσιμη. Για να μπορέσουμε να παίξουμε όλες τις απαγορευμένες δηλώσεις, πρέπει να επισυνάψουμε έναν διακόπτη επαναφοράς. Εάν πατήσετε όλες οι απαγορευμένες δηλώσεις θα γίνουν αναπαραγωγικές. Στη συνέχεια, ένα άλλο σημαντικό πράγμα θα είναι να βεβαιωθείτε ότι η Εύα δεν θα επαναλάβει τις απαντήσεις. Αυτό είναι ένα είδος μειονεκτήματος τυχαίων αριθμών. Οι ίδιοι τυχαίοι αριθμοί είναι πιθανό να παραχθούν σε μια σειρά. Αυτό θα κάνει το ρομπότ μας να λέει την ίδια απάντηση ξανά και ξανά. Για αυτό πρέπει να συμπεριλάβουμε μια άλλη δευτερεύουσα συνάρτηση που εμποδίζει την επανάληψη προτάσεων. Για αυτό πρέπει να αποθηκεύσουμε τη διεύθυνση της τελευταίας δήλωσης στη μνήμη και να ελέγξουμε αν είναι η ίδια με την παρούσα. Εάν ναι, τότε η τιμή διεύθυνσης αυξάνεται ή μειώνεται, με τον ίδιο τρόπο στην περίπτωση των απαγορευμένων δηλώσεων.

Βήμα 8: Γράψιμο σε κώδικα

Γράφοντας στον Κώδικα
Γράφοντας στον Κώδικα
Γράφοντας στον Κώδικα
Γράφοντας στον Κώδικα
Γράφοντας στον Κώδικα
Γράφοντας στον Κώδικα

Χρησιμοποιούμε την εντολή indexOf για αναζήτηση της λέξης -κλειδιού. Η εντολή εντοπίζει έναν χαρακτήρα ή συμβολοσειρά μέσα σε μια άλλη συμβολοσειρά. Εάν βρεθεί, επιστρέφει το ευρετήριο αυτής της συμβολοσειράς ενώ το -1 επιστρέφει αν δεν βρεθεί. Έτσι, στο πρόγραμμά μας πρέπει να το γράψουμε ως εξής: ότι έχουμε αποθηκεύσει τη συμβολοσειρά στη μνήμη και επίσης βρήκαμε τη λέξη -κλειδί μέσα σε αυτήν, θα χρειαστεί τώρα να χειριστούμε τις απαντήσεις. Όπως είπαμε, οι τυχαίοι αριθμοί δημιουργούνται μέσα σε ένα συγκεκριμένο εύρος αριθμών (διευθύνσεις φωνητικών αρχείων). Εδώ έρχεται η τυχαία εντολή (). Ακολουθεί η σύνταξη: τυχαία (min, max); // ο τυχαίος αριθμός δημιουργείται στο εύρος min και max. Καθορίζουμε τον ελάχιστο αριθμό και τον μέγιστο αριθμό κάθε εύρους και εφαρμόζοντας αυτό ο κωδικός μας μοιάζει κάπως έτσι: if (voice.indexOf ("your name")> - 1)) {minNo = 0; maxNo = 5; RandomNumber = random (minNo, maxNo);} Τώρα έρχεται ο χειρισμός των απαντήσεων. Στο τελευταίο βήμα είπα ότι οι αριθμοί αυξάνονται ή μειώνονται με βάση έναν αλγόριθμο. Αυτός ο αλγόριθμος είναι αυτό που συζητάμε τώρα. Αυτό το μέρος είναι πολύ σημαντικό με την έννοια ότι δεν μπορείτε απλά να αυξήσετε ή να μειώσετε όπως θέλετε. Ο αυξημένος ή μειωμένος αριθμός πρέπει να βρίσκεται στο εύρος. Ας υποθέσουμε ότι στην παραπάνω περίπτωση, για τη λέξη -κλειδί "το όνομά σου", έχουμε το εύρος από 0 έως 5 και ο τυχαίος αριθμός που παράγεται είναι 5, οπότε αν τον αυξήσετε, θα καταλήξετε να παίζετε ένα φωνητικό αρχείο μιας άλλης λέξης -κλειδιού. Πώς νομίζεις ότι θα είναι; Ρωτάτε, "Γεια, πες μου το όνομά σου.", Και το ρομπότ απαντά, "Μου αρέσει να τρώω μπισκότα και ηλεκτρικό φορτίο". Το ίδιο ισχύει και για τον ελάχιστο αριθμό. Εάν ο τυχαίος αριθμός που παράγεται είναι 0, δεν μπορείτε να τον μειώσετε. Γι 'αυτό το λόγο ο αλγόριθμος είναι πολύ σημαντικός. Σκεφτείτε το: Είμαστε σε θέση να αυξήσουμε είτε όταν ο αριθμός είναι μικρότερος από τον μέγιστο αριθμό και μειώνονται όταν είναι μεγαλύτερος από τον ελάχιστο αριθμό. Όταν ο αριθμός που παράγεται είναι είτε ίσος με 0 είτε μικρότερος από 5, ο αριθμός αυξάνεται. Από την άλλη πλευρά, όταν είναι ίσο με 5, το μειώνουμε, για να βεβαιωθούμε ότι ο αριθμός είναι εντός του καθορισμένου εύρους. Τώρα έρχονται οι απαγορευμένες δηλώσεις. Όπως αναφέρθηκε, αποθηκεύονται στο EEPROM. Για αυτό, Πρώτον, αναζητούμε δωρεάν μνήμη στον απαγορευμένο πίνακα. Ας υποθέσουμε ότι η διεύθυνση 4 είναι δωρεάν, τότε εισάγουμε τον αριθμό αρχείου στη διεύθυνση δωρεάν πίνακα, καθώς και γράφουμε την ίδια διεύθυνση στο EEPROM.for (int i; i if (never == 0) {EEPROM.write (ποτέ , μνήμη);}} Αυτό είναι όλο, η μονάδα Wtv020sd16p θα παιχτεί χρησιμοποιώντας την εντολή module.playVoice () και τον προτεινόμενο αριθμό αρχείου. Η λειτουργία της μονάδας Wtv020 θα συζητηθεί αργότερα.

Βήμα 9: Εισαγωγή συναισθημάτων

Εισαγωγή συναισθημάτων
Εισαγωγή συναισθημάτων
Εισαγωγή συναισθημάτων
Εισαγωγή συναισθημάτων
Εισαγωγή συναισθημάτων
Εισαγωγή συναισθημάτων

Μέχρι τώρα το ρομπότ μας είναι σε θέση να αναγνωρίζει αυτό που λέμε, να το αποθηκεύει στη μνήμη και να βρίσκει μια κατάλληλη απάντηση για τις ερωτήσεις. Τώρα μπαίνει το ερώτημα για να εισάγουμε συναισθήματα. Σίγουρα σε όλους θα αρέσει ένα ζωντανό πρόσωπο μαζί με κάποιο απλό ηλίθιο πρόγραμμα απαντήσεων ερωτήσεων. Η οθόνη 16x2 LCD χρησιμοποιείται στο έργο. Είναι αρκετά καλό για να εκτυπώσετε τα μάτια. Πρέπει να χρησιμοποιήσουμε τη συνάρτηση προσαρμοσμένου χαρακτήρα για τη δημιουργία των ματιών. Ο προσαρμοσμένος χαρακτήρας μας δίνει τη δυνατότητα να δημιουργήσουμε νέους χαρακτήρες καθορίζοντας τα εικονοστοιχεία. Θα το αναλύσουμε λίγο αργότερα. Πρώτον, είναι σημαντικό να θυμόμαστε ότι μόνο 8 προσαρμοσμένοι χαρακτήρες υποστηρίζονται από το Arduino. Πρέπει λοιπόν να διαχειριστούμε τα συναισθήματα με 8 χαρακτήρες μόνο. Κάθε χαρακτήρας εκτυπώνεται σε ένα συγκεκριμένο πλαίσιο και υπάρχουν 16 στήλες και 2 σειρές που αποτελούνται συνολικά από 32 πλαίσια.

Μπορείτε να βρείτε καλές πληροφορίες στο διαδίκτυο σχετικά με τους προσαρμοσμένους χαρακτήρες στο Arduino. Μπορεί επίσης να επισκεφθείτε αυτόν τον σύνδεσμο:

[Custom Characters Arduino] Η δομή του προσαρμοσμένου byte χαρακτήρων θα μοιάζει κάπως με αυτό:

Το κανονικό βλέμμα: Το αριστερό κουτί0b01111, 0b01111, 0b01111, 0b01111, 0b01111, 0b01111, 0b01111, 0b01111, Το σωστό κουτί Το Αυτό σημαίνει ότι θα χρειαστούμε συνολικά 4 κουτιά για να γεμίσουμε ένα ολόκληρο μάτι. Δύο σειρές στα αριστερά και δύο στα δεξιά, δημιουργώντας συνολικά τέσσερα κουτιά για το ένα μάτι. Το byte του αριστερού πλαισίου καλύπτει δύο σειρές στα αριστερά και το δεξί πλαίσιο καλύπτει τις σωστές σειρές. Αυτό λοιπόν αποτελεί ένα πλήρες μάτι της Εύας. Και τώρα επαναλαμβάνοντας το ίδιο για το δεύτερο μάτι, αποκτούμε το ουδέτερο βλέμμα της Εύας. Τώρα είναι σημαντικό να θυμόμαστε ότι έχουμε χρησιμοποιήσει έναν στους οκτώ διαθέσιμους προσαρμοσμένους χαρακτήρες. Και υπάρχουν πέντε συνολικά συναισθήματα: Glee, Sad, Squint, Normal και Blink. Από τους υπόλοιπους επτά προσαρμοσμένους χαρακτήρες, πρέπει να προσαρμόσουμε έτσι ώστε να ταιριάζουν σε όλες τις εκφράσεις. Για τη δημιουργία του χώρου θα χρησιμοποιήσουμε 2 κουτιά για κάθε μάτι. Δεν είναι περίεργο ότι το μέγεθος θα ήταν λίγο μικρό, αλλά αυτό θα αγνοηθεί από το ανθρώπινο μάτι. Απλώς φροντίστε να προσθέσετε κάποιες καθυστερήσεις μεταξύ των λειτουργιών LCD, διαφορετικά το Arduino θα γίνει ασταθές.

Βήμα 10: Δημιουργία συνδέσεων

Κάνοντας τις Συνδέσεις
Κάνοντας τις Συνδέσεις
Κάνοντας τις Συνδέσεις
Κάνοντας τις Συνδέσεις
Κάνοντας τις Συνδέσεις
Κάνοντας τις Συνδέσεις

Μονάδα LCD: Συνδέστε τους πείρους όπως αναφέρονται εδώ: RS: dig pin 12RW: GndΕνεργοποιήστε: 7d4: pin pin 8 d5: dig pin pin 9 d6: pin pin 10 d7: dig pin13A (Anode) to 5vK (Cathode) to gndThe HC 05 module: Ακολουθήστε αυτές τις συνδέσεις: Καρφίτσα HC 05 TX σε καρφίτσα Arduino RX Καρφίτσα HC 05 RX σε καρφίτσα Arduino TX Κρατική καρφίτσα σε καρφίτσα σκαφών Arduino 11Οι επικοινωνίες γίνονται με τη βοήθεια των ακίδων TX και RX. Ο πείρος κατάστασης απαιτείται για να ελέγξει αν μέσω HC 05 είναι συνδεδεμένος ή αδρανής. WTV 020 SD 16p pin module pin: The pin Reset, connect it to dig pin 2pin7: The Clock pin, connect it to dig pin 3pin10: The pin data, connect για να σκάψετε τον πείρο 4pin15: Το πολυάσχολο pin, συνδέστε το pin pin 5pin2: Συνδέστε αυτόν τον ακροδέκτη σε έναν ενισχυτή μέσω της έντασης ήχου και επίσης το ίδιο με τη θηλυκή υποδοχή ήχου. το pin4 πρέπει να συνδεθεί στο ηχείο+pin5 για να συνδεθεί στο ηχείο-Συνδέστε το 8ος πείρος για gnd και παρέχετε τροφοδοτικό 3,3v στον 16ο πείρο.

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

Βήμα 11: Η μονάδα WTV020SD16p (προαιρετικό)

Image
Image
Η μονάδα WTV020SD16p (προαιρετικό)
Η μονάδα WTV020SD16p (προαιρετικό)
Η μονάδα WTV020SD16p (προαιρετικό)
Η μονάδα WTV020SD16p (προαιρετικό)

Σημείωση: Αυτό το βήμα είναι προαιρετικό. Ασχολείται με τη λειτουργία και την περιγραφή της μονάδας WTV 020 SD 16p.

Μπορείτε να δείτε το demo της μονάδας ήχου σε αυτόν τον σύνδεσμο:

[ΠΑΙΞΕ ΤΟ ΒΙΝΤΕΟ]

Η λειτουργία ομιλίας του ρομπότ εκπληρώνεται από τη μονάδα WTV 020 SD. Η ενότητα χρησιμοποιείται για την αναπαραγωγή αρχείων φωνής για το ρομπότ. Όταν γίνεται οποιαδήποτε ερώτηση, το arduino θα κάνει τη μονάδα να αναπαράγει το αντίστοιχο αρχείο φωνής στην κάρτα SD. Υπάρχουν τέσσερις σειριακές γραμμές δεδομένων στη μονάδα για επικοινωνία με το arduino, την επαναφορά, το ρολόι, τα δεδομένα και τις απασχολημένες ακίδες και χρησιμοποιούμε την εντολή.playVoice () για αναπαραγωγή του απαιτούμενου αρχείου. Για παράδειγμα: module.playVoice (9): // αναπαραγωγή αρχείου 9 αποθηκευμένο στην κάρτα SD Θυμηθείτε ότι τα ονόματα των αρχείων πρέπει να είναι δεκαδικά (0001, 0002…). Και ότι τα αρχεία πρέπει να είναι είτε σε μορφή AD4 είτε σε μορφή WAV. Επιπλέον, η μονάδα λειτουργεί μόνο σε κάρτα micro SD 1 GB. Ορισμένες μονάδες λειτουργούν ακόμη και σε κάρτες 2gb και η κάρτα μπορεί να χωρέσει έως και 504 φωνητικά αρχεία. Έτσι, μπορείτε να συμπεριλάβετε έναν καλό αριθμό φωνητικών αρχείων για αναπαραγωγή για έναν καλό αριθμό ερωτήσεων.

Μπορείτε ακόμη να δημιουργήσετε τα δικά σας αρχεία AD4 φωνής. Πρώτον, πρέπει να έχετε δύο λογισμικά, ένα λογισμικό επεξεργασίας ήχου και ένα λογισμικό που ονομάζεται 4D SOMO TOOL το οποίο θα μετατρέψει τα αρχεία σε μορφή AD4. Δεύτερον, πρέπει να προετοιμάσετε τις Robot Voices. Μπορείτε είτε να μετατρέψετε κείμενο σε ομιλία είτε ακόμη και να ηχογραφήσετε τη δική σας φωνή και να κάνετε τις φωνές του Ρομπότ. Και τα δύο μπορούν να γίνουν στο Λογισμικό επεξεργασίας ήχου. Αλλά σίγουρα, τα ρομπότ δεν φαίνονται καλά αν μιλούν ανθρώπινες φωνές. Θα πρέπει λοιπόν να είναι καλύτερο να μετατρέψετε κείμενο σε λόγο. Υπάρχουν διάφοροι κινητήρες όπως η Microsoft Anna και η Microsoft Sam your Computer που θα σας βοηθήσουν σε αυτό. Το δικό μου βασίζεται στη Microsoft Eva. Οι φωνές του ταιριάζουν σε μεγάλο βαθμό με την Cortana. Αφού προετοιμάσετε τα φωνητικά αρχεία, πρέπει να τα αποθηκεύσετε σε 32000 Hz και σε μορφή WAV. Αυτό συμβαίνει επειδή η μονάδα μπορεί να αναπαράγει αρχεία φωνής έως 32000 Hz. Στη συνέχεια, χρησιμοποιήστε το 4D SOMO TOOL για να μετατρέψετε τα αρχεία σε μορφή AD4. Για να το κάνετε αυτό, απλώς ανοίξτε το SOMO TOOL, επιλέξτε τα αρχεία και κάντε κλικ στο AD4 Encode και τα φωνητικά σας αρχεία είναι έτοιμα. Μπορείτε να ελέγξετε την παραπάνω εικόνα για αναφορά. Εάν θέλετε περισσότερες λεπτομέρειες για τη δημιουργία ρομποτικών φωνών, μπορείτε να πάτε εδώ: [Making Robotic Voices]

Βήμα 12: Το τμήμα λογισμικού

Το τμήμα λογισμικού
Το τμήμα λογισμικού
Το τμήμα λογισμικού
Το τμήμα λογισμικού
Το τμήμα λογισμικού
Το τμήμα λογισμικού

Στο arduino Pro mini, υπάρχει ένα μικρό πρόβλημα στον προγραμματισμό. Στην πραγματικότητα δεν υπάρχει πρόβλημα, μόνο ένα επιπλέον βήμα. Το Arduino Pro mini δεν έχει ενσωματωμένο προγραμματιστή σε σχέση με άλλους πίνακες Arduino. Επομένως, είτε πρέπει να αγοράσετε ένα εξωτερικό είτε ένα παλιό arduino UNO. Το βήμα εδώ περιγράφει τον τρόπο μεταφόρτωσης του προγράμματος χρησιμοποιώντας το Arduino UNO. Απλώς πάρτε έναν παλιό πίνακα Arduino UNO από τη συντριβή και βγάλτε το Atmega 328p. Στη συνέχεια, συνδεθείτε όπως αναφέρεται παρακάτω: 1. Καρφίτσα TX στο UNO στην καρφίτσα TX στο Pro Mini 2. Καρφίτσα RX του UNO στο RX pin του Pro MIni3. Επαναφέρετε τον πείρο του UNO στον ακροδέκτη επαναφοράς του Pro Mini4. συνδέστε το VCC και το Ground του Pro Mini στο UNO. Κατεβάστε το πρόγραμμα Arduino, το λογισμικό αναγνώρισης φωνής και τις Βιβλιοθήκες που παρέχονται στο κάτω μέρος. Το πρόγραμμα βρίσκεται ακόμη υπό ανάπτυξη. Έτσι, εάν έχετε οποιοδήποτε πρόβλημα σχετικά με αυτό, μη διστάσετε να ρωτήσετε. Στη συνέχεια, συνδέστε το καλώδιο στον υπολογιστή. Επιλέξτε την πλακέτα ως Arduino Pro Mini και επιλέξτε τη σωστή θύρα COM. Στη συνέχεια, πατήστε το κουμπί Μεταφόρτωση και δείτε το πρόγραμμα να μεταφορτώνεται στο Pro Mini σας.

Στη συνέχεια, κατεβάστε το λογισμικό αναγνώρισης φωνής και τα αρχεία φωνής.

Βήμα 13: Προετοιμασία του σώματος

Προετοιμασία του σώματος
Προετοιμασία του σώματος
Προετοιμασία του σώματος
Προετοιμασία του σώματος
Προετοιμασία του σώματος
Προετοιμασία του σώματος

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

Βήμα 14: Μπράβο

Μπράβο!
Μπράβο!
Μπράβο!
Μπράβο!

Τώρα έχετε ολοκληρώσει το χαριτωμένο μικρό ρομπότ σας που μπορεί να μιλήσει μαζί σας και να σας κάνει να νιώσετε ευτυχισμένοι. Αυτό είναι το πιο ευτυχισμένο σημείο να είσαι DIYer όταν το έργο σου έχει ολοκληρωθεί και λειτουργεί πλήρως. Μην ανησυχείτε εάν δεν είστε επιτυχημένοι σε μία προσπάθεια, πρέπει να προσπαθήσετε σκληρά για αυτό, ώστε να κατανοήσετε κάθε μέρος του ρομπότ σας. Και εκεί έρχονται οι DIYers σε αυτόν τον κόσμο. Αλλά αυτό δεν είναι το τέλος του έργου. Η Εύα θα αναπτύσσεται πάντα σε μεγαλύτερο βαθμό, είτε από εμένα είτε από DIYs όπως εσείς. Θα ήθελα πολύ να ακούσω τι έχετε κάνει βλέποντας αυτό το διδακτικό. Σχετικά, RS3655

Συνιστάται: