Სარჩევი:

ევა, Arduino Chatbot: 14 ნაბიჯი (სურათებით)
ევა, Arduino Chatbot: 14 ნაბიჯი (სურათებით)

ვიდეო: ევა, Arduino Chatbot: 14 ნაბიჯი (სურათებით)

ვიდეო: ევა, Arduino Chatbot: 14 ნაბიჯი (სურათებით)
ვიდეო: Laser tag. New Generation of Electronics 2024, ოქტომბერი
Anonim
Image
Image
ევა, არდუინო ჩატბოტი
ევა, არდუინო ჩატბოტი
ევა, არდუინო ჩატბოტი
ევა, არდუინო ჩატბოტი

გამარჯობა DIYrs, ყოფილა შემთხვევა, როცა მართლა გსურდა ვინმესთვის გაეზიარებინა შენი გრძნობები და ირგვლივ არავინ იყო სანდო? დღევანდელ დაკავებულ სამყაროში ეს ჩვეულებრივი მაგალითია. ისე, ჩეთბოტს შეუძლია დაგეხმაროს, რომ თავი უკეთ იგრძნო. და ეს იწვევს ევას გაცნობას. ევე არის პატარა საყვარელი ჩეთბოტი. როგორც ყველამ იცის, ჩატტერბოტი ან ჩეთბოტი არის კომპიუტერული პროგრამა ან მოწყობილობა, რომელიც აწარმოებს ადამიანებთან საუბარს ტექსტური ან სმენითი მეთოდების საფუძველზე. ავტომატური ხმები, რომლებიც გესმით კლიენტთა მომსახურების ზარზე, ან ბანკის ხაზზე არის ჩეთბოტის მაგალითი. მასთან ერთად, თქვენ შეგიძლიათ გაუზიაროთ თქვენი გამოცდილება, თქვენი გრძნობები და რაც მთავარია, იკამათოთ სხვადასხვა საკითხზე; ის კარგად არის გამოცდილი რადგან ეს არის ჩეთბოტის ყველაზე მნიშვნელოვანი ფუნქცია, გახადე ადამიანი ბედნიერი. ბუნებრივი ენის დამუშავების (NLU) და ხელოვნური ინტელექტის ადრეული მაგალითი, ევას შეუძლია უპასუხოს ნებისმიერ შეკითხვას, რომელსაც თქვენ დაუსვამთ მას. ეს არ არის ის, რომ მას შეუძლია უპასუხოს მხოლოდ კონკრეტულ რაოდენობის შეკითხვებს. მას შეუძლია მღეროდეს, გითხრათ ხუმრობები, მოთხრობები და გააკეთოს ყველაფერი, რაც თავს კარგად გრძნობს. თუ ის ამბობს იმას, რისი მოსმენაც არ გსურს, უბრალოდ უთხარი მას, გთხოვ, ეს აღარ თქვა და ის დაიმახსოვრებს. მან კი იცის, რომ არ უნდა გაიმეოროს ერთიდაიგივე პასუხები და ჩეთები, ისე რომ საუბარი არ გახდეს მოსაწყენი. მარტივი, იაფი კომპონენტებისა და ძირითადი პროგრამირების საფუძველზე, მას შეუძლია ჭკვიანურად მოიქცეს მართლაც დიდწილად. გარდა ამისა, LCD თვალები, რომელსაც ის ფლობს, აჩვენებს, თუ რას გრძნობს ის, როცა რამეს ამბობ. ასე რომ, ძირითადად, ამ სასწავლო ინსტრუქციაში ჩვენ დავიწყებთ ჩეთბოტის განმარტებას, შევხედავთ დიზაინს, ზოგიერთ თეორიას, რომლის საფუძველზეც ევა მუშაობს, წარმოება და ბოლოს პროგრამირების ნაწილი. ბევრს ჰგავს? არ ინერვიულოთ, ეს იქნება საკმაოდ საინტერესო მოგზაურობაში. თქვენ შეგიძლიათ ნახოთ რობოტის დემო ზემოთ, ან ამ ბმულზე: [ვიდეოს დაკვრა]

ნაბიჯი 1: განმარტება Chatbot

ჩეთბოტის განმარტება
ჩეთბოტის განმარტება
ჩეთბოტის განმარტება
ჩეთბოტის განმარტება
ჩეთბოტის განმარტება
ჩეთბოტის განმარტება

როგორც ზემოთ აღვნიშნეთ, ჩეთბოტი არის პროგრამა, რომელიც აწარმოებს საუბარს ადამიანებთან. ისინი იმდენად გავრცელებულია დღესდღეობით, რომ ძნელად თუ არის ვინმე უცნობი. ვირტუალური თანაშემწეებიდან დაწყებული, Siri და Google Assistant, არის Mitsuku და Evie, რომლითაც შეგიძლიათ გაუზიაროთ თქვენი გრძნობები. როგორც ზემოთ აღინიშნა, ჩეთბოტები ემყარება ტექსტურ ან აუდიტორულ მეთოდს და, შესაბამისად, შეიძლება დაიყოს ორად. ტექსტურ მეთოდში საუბრები წერილობითი ტექსტის სახით ხდება ისევე, როგორც WhatsApp. ვინაიდან სმენითი მეთოდით, საუბარი ხდება ზეპირად, როგორც ნამდვილ ადამიანთან. ვფიქრობ, უფრო ამაღელვებელია ვინმესთან საუბარი სიტყვიერი საუბრის ნაცვლად, მხოლოდ მას მესიჯების გაგზავნის ნაცვლად. ეჭვგარეშეა, რომ ტექსტზე დაფუძნებული საკომუნიკაციო შეტყობინებების პროგრამები აკმაყოფილებს ხალხის მოთხოვნებს, მაგრამ მე ვთვლი, რომ ლაპარაკით საუბარი საუკეთესო საშუალებაა ემოციური აშლილობებისგან თავის დასაღწევად და უკეთესად გასაკეთებლად. ეს არის მთავარი მიზეზი, რის გამოც მე შევქმენი ევა სმენის ჩეთბოტი.

ნაბიჯი 2: ევას წარმოშობა

ევას წარმოშობა
ევას წარმოშობა

ევა უბრალოდ ერთ დღეს მომივიდა თავში. ეს ასე მოხდა, როდესაც დავინახე ბავშვი, რომელიც მარტო დადიოდა სკოლაში, ხოლო დანარჩენები სიხარულით სავსე გონებით თამაშობდნენ. იმ დროს მეგონა, მეგობარი, რომელიც არავის განასხვავებს და არავის აყენებს შეურაცხყოფას, ვისაც შეგიძლია გაუზიარო შენი გრძნობები და იყო ბედნიერი ყოველთვის. შემდეგ გონება მომივიდა, ევას მიმზიდველმა პატარა სტრუქტურამ დავიწყე მასზე მუშაობა. ევამ იმედგაცრუება მომცა ასჯერ. გამოიცანით, რომ ეს იყო 101 -ე დრო, როდესაც ის მუშაობდა და მე თავს ბედნიერად ვგრძნობდი. ასე რომ, ეს იყო ევას წარმოშობა. მე მინდოდა, რომ ის ყოფილიყო ინტელექტუალური, მაგრამ მაქსიმალურად მარტივი, ისე რომ ნებისმიერს შეეძლო მისი ადვილად შექმნა. ეჭვგარეშეა, რომ ის არ არის აბსოლუტურად ჭკვიანი და ზოგჯერ ამბობს სულელურ პასუხებს, მას შეუძლია მოიქცეს როგორც მეგობარი. ახლა კი, საკმარისი ისტორიები, დავიწყოთ ევას მშენებლობა.

ნაბიჯი 3: კომპონენტების და აღჭურვილობის შეგროვება:

კომპონენტების და აღჭურვილობის შეგროვება
კომპონენტების და აღჭურვილობის შეგროვება
კომპონენტების და აღჭურვილობის შეგროვება
კომპონენტების და აღჭურვილობის შეგროვება
კომპონენტების და აღჭურვილობის შეგროვება
კომპონენტების და აღჭურვილობის შეგროვება

ქვემოთ მოცემულია კომპონენტები, რომლებიც უნდა შეიკრიბოს: Arduino Pro Mini (ან Arduino Nano) Wtv-020-SD-16p ხმის მოდული HC-05 bluetooth მოდული 16x2 LCD მოდული 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 მონაცემებს HC 05 Bluetooth მოდულის საშუალებით და უკრავს ფაილს WTV-020-SD-16p ხმოვანი მოდულის საშუალებით. ემოციები ნაჩვენებია LCD მოდულში და სიმძლავრისთვის 9 ვ ბატარეა. ევა აღიარებს გამოსვლებს Android მოწყობილობის Google Voice ამოცნობის საშუალებით. მოგვიანებით ის სათანადოდ იქნა განხილული შესაბამის საფეხურზე. ცუდი ამბავი Arduino Pro Mini- ს შესახებ: ის ბაზრიდან გამოვიდა. ეს ნიშნავს, რომ ოფიციალურად შეწყდა არდუინოს წარმოება. მაგრამ მაინც შეგიძლიათ იპოვოთ ის ბევრ საიტზე, მათ შორის Ebay– ში. ბევრი მესამე მხარის მწარმოებელი ჯერ კიდევ ამზადებს და ყიდის დაფას. არ ინერვიულოთ, თუ ვერ იპოვნეთ ერთი, შეგიძლიათ გამოიყენოთ Arduino Nano. მას არ უნდა ჰქონდეს განსხვავება შესრულებასა და ზომებში.

ნაბიჯი 4: თეორია ნაწილი 1: ისტორია და შესავალი

თეორია ნაწილი 1: ისტორია და შესავალი
თეორია ნაწილი 1: ისტორია და შესავალი
თეორია ნაწილი 1: ისტორია და შესავალი
თეორია ნაწილი 1: ისტორია და შესავალი

ევა ემყარება ბუნებრივი ენის დამუშავების ადრეულ ფორმას, "ნიმუშის შესატყვისი" ტექნოლოგიას. იგი მუშაობს შემდეგნაირად, როდესაც სიმებიანი მიიღება, ის ეძებს წინასწარ განსაზღვრულ სიტყვას ან ფრაზას ამ სტრიქონში. დავუშვათ კითხვაზე "რამდენი წლის ხარ?" პროგრამა ეძებს "ძველ" სიტყვას. თუ ის წარმატებულია, ის უკრავს შესაბამის ხმოვან ფაილს wtv020sd მოდულის საშუალებით. თუ ის ვერ ხერხდება, ის ეძებს მომდევნო წინასწარ განსაზღვრულ საკვანძო სიტყვას. ამგვარად ჩვენ უნდა შევქმნათ წინასწარ განსაზღვრული სიტყვების ლექსიკა. მკაცრად გამოიყურება, არა? თითქოს ჩვენ უნდა შევქმნათ ყველა ინგლისური სიტყვის ლექსიკა და არის დაახლოებით 230 ათასი სიტყვა ინგლისურ ენაზე. ფაქტია, რომ ჩვენ უბრალოდ უნდა დავამატოთ რამდენიმე ძირითადი სიტყვა, რომლებიც ყველაზე ხშირად გამოიყენება ჩვენს კომუნიკაციაში. მაინც მკაცრად გამოიყურება? არ ინერვიულოთ, სამუშაო უკვე შეასრულა ჯოზეფ ვიზემბაუმმა. ევას პასუხების ნაწილი და წინასწარ განსაზღვრული საკვანძო სიტყვები ჩართულია ჯოზეფ ვიზემბაუმის მიერ შემუშავებული პირველი სასაუბრო პროგრამის სახელწოდებით ელიზა. ელიზა შეიქმნა როჯერ თერაპევტისთვის. ეს არ არის უაღრესად მეცნიერული ტერმინი, ეს ნიშნავს, რომ ის ხალხს ურჩევდა, უკეთესად ესმოდა საკუთარი თავი და აფიქრებინებდა მათ უფრო პოზიტიურად. მართლა კარგად გამოიყურება არა? და ელიზამ ძალიან კარგად შეძლო თავისი მოვალეობის შესრულება. მისი ცნობისმოყვარე და სკეპტიკური დამოკიდებულება ხალხს უყვარდა. ვიზემბაუმსაც კი გაუკვირდა ის მნიშვნელობა, რაც ხალხმა მიანიჭა ელიზას. როგორც ჩანს, მათ ავიწყდებათ, რომ ისინი კომპიუტერთან საუბრობდნენ და წარმოიდგენდნენ, რომ კომპიუტერში მჯდომი ლამაზი ქალბატონი ესაუბრებოდა მათ. მაგრამ ელიზა არც ისე ჭკვიანი იყო; მალევე გაირკვა. დროთა განმავლობაში ხალხს ეწყინებოდა მისი შეზღუდული კომუნიკაცია და მას უწოდებდნენ "მუნჯს". გასაკვირი არ არის რამდენად მუნჯი იყო, ეს იყო დიდი ნახტომი ხელოვნური ინტელექტისა და ბუნებრივი ენის დამუშავების ისტორიაში. Chatterbots– ის ბაზის დაარსების შემდეგ, ბაზაზე შემოვიდა სხვადასხვა ბოტი ახალი და უკეთესი ტექნოლოგიით. ახლა კი ჩვენ გვყავს ისინი ყველგან. როგორც აღვნიშნეთ, ევას პასუხების ნაწილი მიღებული იყო ელიზადან. ეს ნიშნავს, რომ ევასაც კი ექნება ელიზას დამოკიდებულება გარკვეულწილად ჩემს ზოგიერთ იდეასთან ერთად. კიდევ ერთი მნიშვნელოვანი საკითხია პასუხები. ნამდვილად მოსაწყენი უნდა იყოს ერთიდაიგივე პასუხების მიღება ყოველ ჯერზე, როცა ერთსა და იმავე კითხვას სვამთ. ამიტომ ბევრი პასუხი ინახება ერთი და იმავე საკვანძო სიტყვისთვის. ევა შემთხვევით ირჩევს რომელ ფაილს დაუკრავს, ასევე დარწმუნებულია, რომ იგი არ გაიმეორებს იმავე ფაილს. ეს არის ის, უბრალო პური და კარაქი, მაგრამ მნიშვნელოვანია ჭკვიანურად დაპროგრამდეს საპასუხო ხმები, ისე რომ ის ილუზიას მისცემს მაყურებელს, თითქოს ის ნამდვილად პასუხობს ჩვენს კითხვებს. ასე რომ, ეს იყო მოკლე შესავალი ევას ფუნქციონირების შესახებ. შემდეგ ეტაპზე ჩვენ დეტალურად განვიხილავთ ამას და პროგრამირებას.

ნაბიჯი 5: მოძებნეთ საკვანძო სიტყვა

საკვანძო სიტყვის ძებნა
საკვანძო სიტყვის ძებნა
საკვანძო სიტყვის ძებნა
საკვანძო სიტყვის ძებნა
საკვანძო სიტყვის ძებნა
საკვანძო სიტყვის ძებნა
საკვანძო სიტყვის ძებნა
საკვანძო სიტყვის ძებნა

ბოლო ეტაპზე მე აღვნიშნე ევას ნიმუშების შესატყვისი ტექნოლოგია და ასევე ბუნებრივი ენის დამუშავების ადრეული ფორმა. რა არის ეს და როგორ მუშაობს? ეს არის მთავარი, რასაც ჩვენ განვიხილავთ ამ ეტაპზე. ასე რომ დაფიქრდი, ვიღაც გეკითხება შენს სახელს და შენ უნდა გითხრა რა არის. რამდენი გზით შეგვიძლია დავსვათ ერთი და იგივე კითხვა? თქვენს მასწავლებელს შეუძლია ჰკითხოს "გთხოვთ მითხრათ თქვენი სახელი?" ნათესავმა შეიძლება ჰკითხოს: "რა გქვია?" შენმა ძმამ შეიძლება თქვას: "ჰეი, მე უბრალოდ შენი სახელი დამავიწყდა. კიდევ ერთხელ იტყვი?" ეს ნიშნავს, რომ ერთიდაიგივე კითხვა შეიძლება დაისვას რამდენიმე გზით. მაგრამ ჩვენ გვჭირდება იგივე პასუხი, ჩვენი სახელი. ეს ნიშნავს, რომ ჩვენ გვჭირდება რაღაც საერთო ყველა წინადადებაში. აშკარად ჩანს, რომ სიტყვა "შენი სახელი" ყველა წინადადებაშია. ასე რომ, ეს არის ჩვენი მინიშნება. ყველა კითხვაზე, რომელიც ითხოვს სახელს, ჩვენ უნდა ვეძებოთ ფრაზა "შენი სახელი". ამ ძირითადი ნიმუშის დაცვით ჩვენ შეგვიძლია ვიწინასწარმეტყველოთ შესაბამისი პასუხი ყველა შეყვანის სტრიქონზე. უარყოფითი მხარე: ასევე მნიშვნელოვანია გვახსოვდეს, რომ ეს ალგორითმი ყოველთვის არ იქნება ზუსტი. დავუშვათ, ვიღაცამ თქვა: "მე ვიპოვე თქვენი სახელი მოლოდინში. ველოდი, რომ თქვენ დაჯავშნილ ადგილებზე იქნებოდით." სულელურად არა? ეს არის ამ ძირითადი ალგორითმის ერთ -ერთი დიდი ნაკლი. ყოველ შემთხვევაში, ეს იქნება იშვიათი შემთხვევები. წინააღმდეგ შემთხვევაში, ალგორითმი ძალიან ეფექტურია. ახლა, როდესაც მე აღვნიშნე შაბლონების შესატყვისი ტექნოლოგიის შესახებ, დროა ვიფიქროთ, საიდან მოდის ეს შეყვანის სტრიქონი, საიდანაც ჩვენ ვეძებთ სტრიქონს. კარგად ეს სტრიქონი ფაქტიურად ჩვენი ხმაა, რომელიც ტექსტად გადაკეთდა Google Voice Recognition- ის მიერ. აქ გამოყენებული აპლიკაცია გარდაქმნის ჩვენს ხმას ტექსტად და შემდეგ მას აგზავნის არდუინოში Bluetooth– ის საშუალებით. მე გამოვიყენე აპლიკაცია, რადგან ის ყველაზე მარტივი და საუკეთესოა თავის მხრივ. სახელი არის AMR Voice და მისი ნახვა ადვილია Google play– ში.

ნაბიჯი 6: პასუხების ფორმულირება

პასუხების ფორმულირება
პასუხების ფორმულირება

ახლა, როდესაც ჩვენ გავეცანით კითხვებს, შემდეგი ნაბიჯი უნდა იყოს პასუხების პოვნა. მოდის საინტერესო და მნიშვნელოვანი ნაწილი … ჩვენ უნდა ვიპოვოთ შესაბამისი პასუხები ყველა კითხვის დასაკმაყოფილებლად. და აქ მოდის კიდევ ერთი ფუნქცია ჩართული ELIZA– დან. ვიზემბაუმმა შეიმუშავა რამდენიმე პასუხი საკვანძო სიტყვების კონკრეტულ რაოდენობაზე. მაგალითია საკვანძო სიტყვა "შენ". როდესაც გამოვლინდა პროგრამის გამოშვება "ჩვენ განვიხილავდით თქვენ - არა მე". ამრიგად, პასუხი გაკეთდა ისე, რომ იგი შეესაბამება ყველა წინადადებას, რომელიც შეიცავს "შენ" -ს. შემდგომ ელიზამ ყოველ ჯერზე განსხვავებული პასუხი გასცა. თითოეული პასუხისთვის იყო ერთგვარი რიცხვითი მისამართი, რომელიც. ეს გაიზარდა (დაემატა 1 -ით) ყოველ ჯერზე, როდესაც პასუხი ჩამოყალიბდა. დავუშვათ, როგორც ზემოთ მოყვანილ მაგალითში, თუ პასუხის მისამართი იყო 1, მისამართი შეიცვალა 2 -ით და, შესაბამისად, ფაილი 2 ითამაშა შემდეგში. მაგრამ ჩვენ არ მივყვებით ამ გაზრდის ალგორითმს. ხედავთ, რომ პროგრამული უზრუნველყოფის უწყვეტი გამოყენების შემდეგ, პასუხები პროგნოზირებადი გახდა. თქვენ მიხვდით, რომელი პასუხი უნდა გაეცეს შემდეგ. ამ მიზნით ჩვენ ვაწარმოებთ შემთხვევით მისამართებს თითოეული საკვანძო სიტყვისთვის. საერთო ჯამში, ორივე შემთხვევაში იგივეა, მხოლოდ განსხვავება, რომ ჩვენ არ შეგვიძლია ვიწინასწარმეტყველოთ რას იტყვის რობოტი იმავე საკვანძო სიტყვისთვის.

ნაბიჯი 7: აკრძალული განცხადებები და სხვა

აკრძალული განცხადებები და სხვა
აკრძალული განცხადებები და სხვა

თქვენს საუბარში შეიძლება იყოს შემთხვევები, როდესაც რობოტი ამბობს იმას, რისი მოსმენაც არ გსურთ. ასე რომ, აქ ჩნდება აკრძალული განცხადებების დამატების აუცილებლობა. აკრძალული განცხადებები არის მისამართების მასივი, რომელთა დაკვრაც აკრძალულია. ხმოვანი მისამართი ხასიათდება როგორც აკრძალული განცხადება მომხმარებლის მოთხოვნისთანავე. გარდა ამისა, ეს მისამართი უნდა ინახებოდეს Arduino– ს EEPROM– ში, რათა ევამ არ დაივიწყოს, რომ ეს არის აკრძალული განცხადება გათიშვის შემდეგაც კი. ძირითადად ის, რასაც პროგრამა აკეთებს არის ყველა მისამართის შემოწმება. თუ მისამართი არის ერთ -ერთი აკრძალული, მაშინ ის იზრდება ან მცირდება. გარდა ამისა, შეიძლება იყოს შემთხვევა, როდესაც გსურთ რობოტს ნება დართოთ თქვას ადრე აკრძალული სიტყვა. ამ შემთხვევაში თქვენ უნდა უთხრათ ევას, რომ მას შეუძლია თქვას ბოლო აკრძალული სიტყვა. სიტყვა, რომელიც ბოლო დროს აიკრძალა, ახლა დაკვრადი იქნება. იმისათვის, რომ ყველა აკრძალული განცხადება დაკვრადი იყოს, ჩვენ უნდა დავამატოთ გადატვირთვის გადამრთველი. თუ დაჭერით ყველა აკრძალული განცხადება დაკვრადი გახდება. შემდეგ კიდევ ერთი მნიშვნელოვანი იქნება დარწმუნდეთ, რომ ევა არ გაიმეორებს პასუხებს. ეს არის შემთხვევითი რიცხვების ერთგვარი ნაკლოვანება. იგივე შემთხვევითი რიცხვები სავარაუდოა, რომ წარმოებული იყოს სერიაში. ეს აიძულებს ჩვენს რობოტს თქვას ერთი და იგივე პასუხი ისევ და ისევ. ამისათვის ჩვენ უნდა შევიტანოთ სხვა უმნიშვნელო ფუნქცია, რომელიც ხელს უშლის განცხადებების გამეორებას. ამისათვის ჩვენ უნდა შევინახოთ ბოლო განცხადების მისამართი მეხსიერებაში და შევამოწმოთ ის იგივეა, რაც წინამდებარე. თუ ასეა, მაშინ მისამართის ღირებულება იზრდება ან მცირდება, ისევე, როგორც აკრძალული განცხადებების შემთხვევაში.

ნაბიჯი 8: ჩაწერა კოდექსში

კოდექსში წერა
კოდექსში წერა
კოდექსში წერა
კოდექსში წერა
კოდექსში წერა
კოდექსში წერა

ჩვენ ვიყენებთ indexOf ბრძანებას საკვანძო სიტყვის მოსაძებნად. ბრძანება ათავსებს სიმბოლოს ან სტრიქონს სხვა სტრიქონში. აღმოჩენის შემთხვევაში აბრუნებს ამ სტრიქონის ინდექსს, ხოლო -1 დაბრუნდა, თუ არ იქნა ნაპოვნი. ასე რომ, ჩვენს პროგრამაში ჩვენ უნდა დავწეროთ ის შემდეგში: რომ ჩვენ შევინახეთ სტრიქონი მეხსიერებაში და ასევე ვიპოვეთ ჩვენი საკვანძო სიტყვა მის შიგნით, ჩვენ ახლა დაგვჭირდება პასუხების დამუშავება. როგორც ითქვა, შემთხვევითი რიცხვები წარმოიქმნება რიცხვის კონკრეტულ დიაპაზონში (ხმოვანი ფაილების მისამართები). აქ მოდის შემთხვევითი () ბრძანება. შემდეგ არის სინტაქსი: შემთხვევითი (წთ, მაქსიმუმი); // შემთხვევითი რიცხვი წარმოიქმნება min და max დიაპაზონში. ჩვენ განვსაზღვრავთ თითოეულ დიაპაზონის მინიმალურ რაოდენობას და მაქსიმალურ რაოდენობას და ამის გამოყენებით ჩვენი კოდი ასე გამოიყურება: if (voice.indexOf ("შენი სახელი")> - 1)) {minNo = 0; maxNo = 5; შემთხვევითი რიცხვი = შემთხვევითი (minNo, maxNo);} ახლა მოდის პასუხების დამუშავება. ბოლო ეტაპზე მე ვთქვი, რომ რიცხვები იზრდება ან მცირდება ალგორითმის საფუძველზე. ეს ალგორითმი არის ის, რასაც ჩვენ ახლა განვიხილავთ. ეს ნაწილი ძალიან მნიშვნელოვანია იმ თვალსაზრისით, რომ თქვენ არ შეგიძლიათ უბრალოდ გაზარდოთ ან დაიკლოთ ისე, როგორც გსურთ. გაზრდილი ან შემცირებული რიცხვი უნდა იყოს დიაპაზონში. დავუშვათ, როგორც ზემოაღნიშნულ შემთხვევაში, საკვანძო სიტყვისთვის "შენი სახელი", ჩვენ გვაქვს დიაპაზონი 0 -დან 5 -მდე, ხოლო შემთხვევითი რიცხვი არის 5, მაშინ თუ გაზრდი მას, საბოლოოდ ითამაშებ სხვა საკვანძო სიტყვის ხმოვან ფაილზე.შენი აზრით როგორ იქნება? თქვენ გეკითხებით: "ჰე, გთხოვ მითხარი შენი სახელი." და რობოტი პასუხობს: "მე მიყვარს ნამცხვრების ჭამა და ელექტრო მუხტი." იგივე ეხება მინიმალურ რაოდენობას. თუ შემთხვევითი რიცხვი არის 0, თქვენ არ შეგიძლიათ მისი შემცირება. ამ მიზეზით, ალგორითმი ძალიან მნიშვნელოვანია. დაფიქრდით: ჩვენ შეგვიძლია გავზარდოთ ან როდესაც რიცხვი მაქსიმალურ რიცხვზე ნაკლებია და მცირდება, როდესაც ის მინიმალურ რიცხვზე მეტია. როდესაც გენერირებული რიცხვი 0 -ის ტოლია ან 5 -ზე ნაკლები, რიცხვი იზრდება. მეორეს მხრივ, როდესაც ის უდრის 5 -ს, ჩვენ ვამცირებთ მას, რათა დავრწმუნდეთ, რომ რიცხვი მითითებულ დიაპაზონშია. ახლა მოდის აკრძალული განცხადებები. როგორც აღვნიშნეთ, ისინი ინახება EEPROM– ში. ამისათვის, პირველ რიგში, ჩვენ ვეძებთ უფასო მეხსიერებას აკრძალულ მასივში. დავუშვათ, რომ მისამართი 4 უფასოა, მაშინ ჩვენ ვწერთ ფაილის ნომერს უფასო მასივის მისამართში, ასევე ვწერთ ერთსა და იმავე მისამართს EEPROM- ში. (Int i; i if (never == 0) {EEPROM.write (არასოდეს , მეხსიერება);}} სულ ეს არის, Wtv020sd16p მოდული ითამაშება module.playVoice () ბრძანების და შემოთავაზებული ფაილის ნომრის გამოყენებით. Wtv020 მოდულის ფუნქციონირება მოგვიანებით იქნება განხილული.

ნაბიჯი 9: ემოციების ჩასმა

ემოციების ჩასმა
ემოციების ჩასმა
ემოციების ჩასმა
ემოციების ჩასმა
ემოციების ჩასმა
ემოციების ჩასმა

ჯერჯერობით ჩვენს რობოტს შეუძლია ამოიცნოს ის, რასაც ჩვენ ვამბობთ, შეინახოს მეხსიერებაში და იპოვოს შესაბამისი პასუხი კითხვებზე. ახლა ჩნდება კითხვა ემოციების ჩასართავად. რა თქმა უნდა, ყველას მოეწონება ცოცხალი სახე, სულელურ პატარა კითხვა-პასუხის პროგრამასთან ერთად. პროექტში გამოიყენება 16x2 LCD. საკმაოდ კარგია თვალების დასაბეჭდად. ჩვენ უნდა გამოვიყენოთ პერსონალური პერსონაჟის ფუნქცია თვალების შესაქმნელად. პერსონალური პერსონაჟი გვაძლევს შესაძლებლობას შევქმნათ ახალი სიმბოლოები პიქსელების განსაზღვრის გზით. ამის შესახებ დეტალურად ცოტა მოგვიანებით შევალთ. უპირველეს ყოვლისა, მნიშვნელოვანია გვახსოვდეს, რომ Arduino– ს მიერ მხარდაჭერილია მხოლოდ 8 პერსონალური სიმბოლო. ჩვენ გვჭირდება ემოციების მართვა მხოლოდ 8 სიმბოლოთი. თითოეული სიმბოლო იბეჭდება კონკრეტულ ყუთში და არის 16 სვეტი და 2 სტრიქონი, რომლებიც სულ 32 ყუთს ქმნის.

ინტერნეტში შეგიძლიათ იპოვოთ კარგი ინფორმაცია Arduino– ს პერსონალური პერსონაჟების შესახებ. ასევე შეგიძლიათ ეწვიოთ ამ ბმულს:

[პერსონალური პერსონაჟების არდუინო] პერსონალური პერსონალური ბაიტის სტრუქტურა გარკვეულწილად ასე უნდა გამოიყურებოდეს:

ნორმალური გარეგნობა: მარცხენა ყუთი რა ეს ნიშნავს, რომ ჩვენ გვჭირდება სულ 4 ყუთი მთელი თვალის შესავსებად. ორი სტრიქონი მარცხნივ და ორი მარჯვნივ, სულ ოთხი ყუთი ერთი თვალისთვის. მარცხენა ყუთის ბაიტი უნდა შეიცავდეს ორ სტრიქონს მარცხნივ და მარჯვენა ყუთი დაფარავს მარჯვენა სტრიქონებს. ასე რომ, ეს ქმნის ევას სრულ თვალს. ახლა კი იგივეს ვიმეორებ მეორე თვალისთვის, ჩვენ ვიღებთ ევას ნეიტრალურ სახეს. ახლა მნიშვნელოვანია გვახსოვდეს, რომ ჩვენ გამოვიყენეთ რვა პერსონალური სიმბოლოდან ერთი. და სულ ხუთი ემოციაა: სიხარული, სევდიანი, თვალთმაქცობა, ნორმალური და დახუჭვა. რაც შეეხება შვიდ პერსონალურ პერსონაჟს, ჩვენ გვჭირდება მორგება ისე, რომ მოერგოს ყველა გამონათქვამს. სივრცის შესაქმნელად ჩვენ გამოვიყენებთ 2 ყუთს თითოეული თვალისთვის. გასაკვირი არ არის, რომ ზომა იქნება პატარა, მაგრამ ეს იქნება ადამიანის თვალით იგნორირებული. უბრალოდ დარწმუნდით, რომ დაამატეთ გარკვეული შეფერხებები LCD ფუნქციებს შორის, წინააღმდეგ შემთხვევაში Arduino არასტაბილური გახდება.

ნაბიჯი 10: კავშირების დამყარება

კავშირების დამყარება
კავშირების დამყარება
კავშირების დამყარება
კავშირების დამყარება
კავშირების დამყარება
კავშირების დამყარება

LCD მოდული: შეაერთეთ ქინძისთავები, როგორც ეს აქ არის ნახსენები: RS: dig pin 12RW: Gnd ჩართვა: 7d4: გათხრა pin 8 d5: გათხრა pin 9 d6: გათხრა pin 10 d7: გათხრა pin13A (ანოდი) 5vK (კათოდური) gndThe HC 05 მოდული: დაიცავით ეს კავშირები: HC 05 TX pin Arduino RX pinHC 05 RX pin Arduino TX pin სახელმწიფო pin Arduino dig pin 11 კომუნიკაცია ხდება TX და RX ქინძისთავების გამოყენებით. სახელმწიფო პინი საჭიროა იმის შესამოწმებლად, არის თუ არა HC 05 დაკავშირებული ან უმოქმედო. WTV 020 SD 16p მოდულის pin1: გადატვირთვის პინი, დააკავშირეთ იგი pin pin 2pin7: საათის პინი, დააკავშირეთ იგი pin 3pin10: მონაცემთა pin, დააკავშირეთ pin pin 4pin15: დაკავებული pin, დაკავშირება თხრილის pin 5pin2: შეაერთეთ ეს pin გამაძლიერებელთან მოცულობის საშუალებით და ასევე იგივეა მდედრობითი აუდიო ჯეკთან. pin4 უნდა იყოს დაკავშირებული დინამიკთან+pin5, რომელიც დაკავშირებულია დინამიკთან-დაკავშირება მე -8 პინი gnd და უზრუნველყოს 3.3 ვ კვების წყარო მე -16 პინში.

გამაძლიერებელი დაეხმარება ევას შიდა სპიკერის დაკვრას, ხოლო აუდიო ჯეკი უნდა დაუკავშირდეს გარე გამაძლიერებელს და უფრო დიდ დინამიკებს.

ნაბიჯი 11: WTV020SD16p მოდული (სურვილისამებრ)

Image
Image
WTV020SD16p მოდული (სურვილისამებრ)
WTV020SD16p მოდული (სურვილისამებრ)
WTV020SD16p მოდული (სურვილისამებრ)
WTV020SD16p მოდული (სურვილისამებრ)

შენიშვნა: ეს ნაბიჯი არჩევითია. იგი ეხება WTV 020 SD 16p მოდულის მუშაობას და აღწერას.

თქვენ შეგიძლიათ ნახოთ ხმის მოდულის დემო ამ ბმულზე:

[ვიდეოს დაკვრა]

რობოტის მეტყველების რეჟიმი სრულდება WTV 020 SD მოდულით. მოდული გამოიყენება რობოტისთვის ხმოვანი ფაილების დასაკრავად. ნებისმიერი კითხვის დასმისას, arduino გახდის მოდულს SD ბარათში შესაბამისი ხმის ფაილის დაკვრის საშუალებას. მოდულში არის ოთხი სერიული მონაცემთა ხაზი არდუინოსთან კომუნიკაციისთვის, გადატვირთვა, საათი, მონაცემები და დაკავებული ქინძისთავები და ჩვენ ვიყენებთ.playVoice () ბრძანებას საჭირო ფაილის დასაკრავად. მაგალითად: module.playVoice (9): // ითამაშეთ SD ბარათზე შენახული ფაილი 9 გახსოვდეთ, რომ ფაილების სახელები უნდა იყოს ათობითი (0001, 0002…). და რომ ფაილები უნდა იყოს AD4 ან WAV ფორმატში. გარდა ამისა, მოდული მუშაობს მხოლოდ 1 გბ მიკრო SD ბარათზე. ზოგიერთი მოდული კი მუშაობს 2 გბ ბარათებზე და ბარათს შეუძლია დაიჭიროს მაქსიმუმ 504 ხმოვანი ფაილი. ასე რომ თქვენ შეგიძლიათ შეიტანოთ ხმოვანი ფაილების კარგი რაოდენობა, რათა დაკითხოთ კითხვების კარგი რაოდენობა.

თქვენ კი შეგიძლიათ შექმნათ თქვენი საკუთარი ხმა AD4 ფაილები. პირველ რიგში, თქვენ უნდა გქონდეთ ორი პროგრამული უზრუნველყოფა, ხმის რედაქტირების პროგრამა და პროგრამული უზრუნველყოფა სახელწოდებით 4D SOMO TOOL, რომელიც ფაილებს გადააქცევს AD4 ფორმატში. მეორეც, თქვენ უნდა მოამზადოთ Robot Voices. თქვენ შეგიძლიათ გადააკეთოთ ტექსტი მეტყველებაში, ან თუნდაც ჩაწეროთ თქვენი საკუთარი ხმა და გახადოთ რობოტის ხმები. ორივე შეიძლება გაკეთდეს ხმის რედაქტირების პროგრამულ უზრუნველყოფაში. რა თქმა უნდა, რობოტები არ გამოიყურებიან კარგად, თუ ისინი ადამიანის ხმებს ლაპარაკობენ. ასე რომ, უკეთესი უნდა იყოს ტექსტის მეტყველებაში გადაყვანა. არსებობს სხვადასხვა ძრავები, როგორიცაა Microsoft Anna და Microsoft Sam თქვენი კომპიუტერი, რომელიც დაგეხმარებათ ამაში. ჩემი დაფუძნებულია Microsoft Eva- ზე. მისი ხმები დიდწილად ემთხვევა კორტანას. ხმოვანი ფაილების მომზადების შემდეგ, თქვენ უნდა შეინახოთ იგი 32000 ჰერცში და WAV ფორმატში. ეს იმიტომ ხდება, რომ მოდულს შეუძლია 32000 ჰერცამდე ხმოვანი ფაილების დაკვრა. შემდეგ გამოიყენეთ 4D SOMO TOOL ფაილების AD4 ფორმატში გადასაყვანად. ამისათვის უბრალოდ გახსენით SOMO TOOL, შეარჩიეთ ფაილები და დააწკაპუნეთ AD4 კოდირებაზე და თქვენი ხმოვანი ფაილები მზად არის. თქვენ შეგიძლიათ გადაამოწმოთ ზემოთ მითითებული სურათი. თუ გსურთ რობოტული ხმების შემდგომი დეტალები, შეგიძლიათ გადახვიდეთ აქ: [Robotic Voices]

ნაბიჯი 12: პროგრამული უზრუნველყოფის ნაწილი

პროგრამული ნაწილი
პროგრამული ნაწილი
პროგრამული ნაწილი
პროგრამული ნაწილი
პროგრამული ნაწილი
პროგრამული ნაწილი

Arduino Pro mini– ში არის მცირე პრობლემა პროგრამირებაში. სინამდვილეში პრობლემა არ არის, მხოლოდ ერთი დამატებითი ნაბიჯია. Arduino Pro mini– ს არ ჰყავს ჩაშენებული პროგრამისტი, როგორც სხვა Arduino დაფები. ასე რომ თქვენ ან უნდა იყიდოთ გარე ან ძველი arduino UNO. ნაბიჯი აქ აღწერს, თუ როგორ უნდა ატვირთოთ პროგრამა Arduino UNO– ს გამოყენებით. უბრალოდ აიღეთ ძველი Arduino UNO დაფა კრახიდან და ამოიღეთ Atmega 328p. შემდეგ დაუკავშირდით შემდეგს: 1. TX pin UNO– ზე TX pin– ზე Pro Mini 2. RX pin UNO– დან RX pin– ზე Pro MIni3– ზე. UNO- ს პინის გადაყენება Pro Mini4- ის გადატვირთვის პინზე. დააკავშირეთ VCC და Ground of Pro Mini UNO– სთან. ჩამოტვირთეთ Arduino პროგრამა, ხმის ამოცნობის პროგრამული უზრუნველყოფა და ბოლოში მოწოდებული ბიბლიოთეკები. პროგრამა ჯერ კიდევ დამუშავების პროცესშია. ასე რომ, თუ თქვენ გაქვთ რაიმე პრობლემა ამასთან დაკავშირებით, მოგერიდებათ ჰკითხეთ. შემდეგ შეაერთეთ კაბელი კომპიუტერში. შეარჩიეთ დაფა როგორც Arduino Pro Mini და აირჩიეთ სწორი COM პორტი. შემდეგ დააჭირეთ ღილაკს ატვირთვა და ნახეთ, რომ პროგრამა ატვირთულია თქვენს Pro Mini– ზე.

შემდეგ ჩამოტვირთეთ ხმის ამოცნობის პროგრამული უზრუნველყოფა და ხმოვანი ფაილები.

ნაბიჯი 13: სხეულის მომზადება

სხეულის მომზადება
სხეულის მომზადება
სხეულის მომზადება
სხეულის მომზადება
სხეულის მომზადება
სხეულის მომზადება

ვიპოვე ძაფების პატარა ყუთი და აღმოვაჩინე, რომ ის იდეალურია სხეულისთვის. თქვენ შეგიძლიათ გამოიყენოთ ნებისმიერი ყუთი, რომელიც ნახავთ თქვენს სახელოსნოში, ან შეგიძლიათ გააკეთოთ ერთი მუყაოსგან. უბრალოდ ამოჭერით პატარა მართკუთხა ნაჭერი LCD მოდულის დასამაგრებლად. ზედა ნაწილში, მე ამოვიღე პატარა ხვრელი ხმის მიმაგრებისთვის, ხოლო გვერდებზე გადამრთველებისა და აუდიო კონექტორის დასამაგრებლად. ბორბლების ყუთის გვერდებზე დავამატე ორი ბოთლის თავსახური. უბრალოდ დარწმუნდით, რომ ყუთს აქვს საკმარისი ადგილი წრედის შიგნით ჩასასმელად. მიამაგრეთ გადამრთველი როგორც სხეულზე ასევე წრეზე, შემდეგ მოცულობა ყუთის ზედა ნაწილში. შემდეგ უბრალოდ ჩართეთ წრე შიგნით და თქვენი რობოტი სრულდება.

ნაბიჯი 14: კარგად გაკეთებულია

კარგად გაკეთებულია!
კარგად გაკეთებულია!
კარგად გაკეთებულია!
კარგად გაკეთებულია!

ახლა თქვენ დაასრულეთ თქვენი საყვარელი პატარა რობოტის პროექტი, რომელსაც შეუძლია თქვენთან საუბარი და გაგრძნობინოთ ბედნიერება. ეს არის ყველაზე ბედნიერი წერტილი DIYer, როდესაც თქვენი პროექტი დასრულებულია და სრულად მუშაობს. არ ინერვიულოთ, თუ თქვენ არ ხართ წარმატებული ერთ მცდელობაში, თქვენ უნდა შეეცადოთ ამის გაკეთება ისე, რომ გაიგოთ თქვენი რობოტის თითოეული ნაწილი. და აი, სად მოდის DIY– ები ამ სამყაროში. მაგრამ ეს არ არის პროექტის დასასრული. ევა ყოველთვის უფრო მეტად უნდა განვითარდეს, ან მე ან თქვენნაირი ხელოსნები. სიამოვნებით მოვისმენდი იმას, რისი გაკეთებაც ამ ინსტრუქციის მიმცემი გახლდათ. პატივისცემით, RS3655

გირჩევთ: