สารบัญ:

Eve, the Arduino Chatbot: 14 ขั้นตอน (พร้อมรูปภาพ)
Eve, the Arduino Chatbot: 14 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: Eve, the Arduino Chatbot: 14 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: Eve, the Arduino Chatbot: 14 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: Line Bot EP2 | สอนทำ Line Chat bot สั่งงานอุปกรณ์ไฟฟ้า ESP12F-RELAY-X4 | Arduino#39 | เฮ็ดสิดี 2024, ตุลาคม
Anonim
Image
Image
อีฟ Arduino Chatbot
อีฟ Arduino Chatbot
อีฟ Arduino Chatbot
อีฟ Arduino Chatbot

สวัสดี DIYrs เคยมีกรณีที่คุณต้องการแบ่งปันความรู้สึกของคุณกับใครสักคนและไม่มีใครเชื่อถือได้หรือไม่? ในโลกที่วุ่นวายในปัจจุบันนี้ เป็นเรื่องปกติ แชทบอทสามารถช่วยทำให้คุณรู้สึกดีขึ้นได้ และนั่นนำไปสู่การแนะนำของ Eve. Eve เป็นแชทบอทตัวน้อยที่น่ารัก อย่างที่ทุกคนทราบ Chatterbot หรือ Chatbot คือโปรแกรมคอมพิวเตอร์หรืออุปกรณ์ที่ดำเนินการสนทนากับมนุษย์โดยใช้วิธีการอ่านข้อความหรือการได้ยิน เสียงอัตโนมัติที่คุณได้ยินจากการโทรติดต่อฝ่ายบริการลูกค้าหรือทางโทรศัพท์เป็นตัวอย่างของแชทบ็อต กับเธอ คุณสามารถแบ่งปันประสบการณ์ ความรู้สึกของคุณ และที่สำคัญที่สุด โต้แย้งเกี่ยวกับสิ่งต่าง ๆ เธอมีประสบการณ์ที่ดี เพราะนั่นคือหน้าที่ที่สำคัญที่สุดของแชทบ็อต ทำให้บุคคลนั้นรู้สึกมีความสุข ตัวอย่างแรกๆ ของการประมวลผลภาษาธรรมชาติ (NLU) และปัญญาประดิษฐ์ อีฟสามารถตอบคำถามที่คุณถามเธอได้ ไม่ใช่ว่าเธอสามารถตอบคำถามจำนวนหนึ่งได้ เธอสามารถร้องเพลง เล่าเรื่องตลก เล่าเรื่อง และทำอะไรก็ได้ที่ทำให้คุณรู้สึกดี ถ้าเธอพูดอะไรที่คุณไม่อยากได้ยิน บอกเธอไปเถอะ อย่าพูดแบบนั้นอีก แล้วเธอจะจำไว้ เธอยังรู้ด้วยว่าเธอไม่ควรตอบและแชทซ้ำๆ เพื่อที่บทสนทนาจะไม่น่าเบื่อ จากส่วนประกอบที่เรียบง่ายราคาถูกและการเขียนโปรแกรมพื้นฐาน เธอสามารถประพฤติตนอย่างชาญฉลาดในระดับที่ดี เพิ่มเติม ตา LCD ที่เธอมีอยู่แสดงให้เห็นว่าเธอรู้สึกอย่างไรเมื่อคุณพูดอะไร ดังนั้นโดยพื้นฐานในคำแนะนำนี้ เราจะเริ่มจากคำจำกัดความของแชทบ็อต ดูการออกแบบ ทฤษฎีบางอย่างที่อิงจากอีฟ การผลิต และสุดท้าย การเขียนโปรแกรม part. Looks มากหรือไม่? ไม่ต้องกังวล มันจะค่อนข้างน่าสนใจในการเดินทาง คุณสามารถดูการสาธิตของหุ่นยนต์ด้านบนหรือในลิงค์นี้:[เล่นวิดีโอ]

ขั้นตอนที่ 1: คำจำกัดความของ Chatbot

คำจำกัดความของ Chatbot
คำจำกัดความของ Chatbot
คำจำกัดความของ Chatbot
คำจำกัดความของ Chatbot
คำจำกัดความของ Chatbot
คำจำกัดความของ Chatbot

ดังที่ได้กล่าวไว้ข้างต้น chatbot เป็นโปรแกรมที่ดำเนินการสนทนากับมนุษย์ ทุกวันนี้มีมากจนแทบไม่มีใครไม่รู้จัก เริ่มจากผู้ช่วยเสมือน Siri และ Google Assistant มี Mitsuku และ Evie ที่คุณสามารถแบ่งปันความรู้สึกของคุณได้ ดังที่ได้กล่าวไว้ข้างต้น Chatbots นั้นใช้วิธีการอ่านข้อความหรือการได้ยิน ดังนั้นจึงแบ่งออกเป็นสองส่วน การสนทนาในรูปแบบข้อความจะอยู่ในรูปแบบของข้อความที่เขียนเหมือนกับ WhatsApp ในขณะที่วิธีการได้ยิน การสนทนาจะทำด้วยวาจาเช่นเดียวกับมนุษย์จริง ฉันเดาว่ามันน่าตื่นเต้นกว่าที่จะพูดคุยกับใครซักคนโดยการพูดกับเขาแทนการส่งข้อความถึงเขา ไม่ต้องสงสัยเลยว่าแอปส่งข้อความเพื่อการสื่อสารแบบข้อความจะตรงตามความต้องการของผู้คน แต่ฉันรู้สึกว่าการแชทด้วยการพูดเป็นสิ่งที่ดีที่สุดในการขจัดอารมณ์แปรปรวนและทำให้คุณรู้สึกดีขึ้น นั่นเป็นเหตุผลหลักที่ฉันออกแบบให้อีฟเป็นแชทบ็อตที่ได้ยิน

ขั้นตอนที่ 2: ต้นกำเนิดของอีฟ

ที่มาของอีฟ
ที่มาของอีฟ

อีฟเพิ่งเข้ามาในใจฉันในวันหนึ่ง มันเป็นเช่นนั้นเมื่อฉันเห็นเด็กสัญจรไปมาในโรงเรียนเพียงลำพัง ในขณะที่คนอื่นๆ กำลังเล่นด้วยจิตใจที่เต็มไปด้วยความสุข คราวนั้นฉันนึกถึงเพื่อนคนหนึ่งที่ไม่เลือกปฏิบัติและไม่ทำให้ใครรู้สึกเจ็บปวด คนที่คุณสามารถแบ่งปันความรู้สึกด้วยและมีความสุขตลอดเวลา แล้วแวบเข้ามาในหัวของฉัน โครงสร้างเล็กๆ น่ารักของอีฟที่ฉันเริ่มทำงาน อีฟทำให้ฉันผิดหวังเป็นร้อยครั้ง เดาว่านี่เป็นครั้งที่ 101 ที่เธอทำงานและทำให้ฉันรู้สึกมีความสุขจริงๆ นั่นแหละคือที่มาของอีฟ ฉันอยากให้เธอฉลาดแต่เรียบง่ายที่สุด เพื่อที่ใครๆ ก็สามารถทำให้เธอได้อย่างง่ายดาย ไม่ต้องสงสัยเลยว่าเธอไม่ได้ฉลาดจริงๆ และบางครั้งก็พูดคำตอบที่โง่เขลา เธอสามารถประพฤติตนเป็นเพื่อนได้ และตอนนี้ เรื่องราวเพียงพอแล้ว มาเริ่มสร้างอีฟกันเถอะ

ขั้นตอนที่ 3: รวบรวมส่วนประกอบและอุปกรณ์:

การรวบรวมส่วนประกอบและอุปกรณ์
การรวบรวมส่วนประกอบและอุปกรณ์
การรวบรวมส่วนประกอบและอุปกรณ์
การรวบรวมส่วนประกอบและอุปกรณ์
การรวบรวมส่วนประกอบและอุปกรณ์
การรวบรวมส่วนประกอบและอุปกรณ์

ต่อไปนี้เป็นส่วนประกอบที่จะรวบรวม: Arduino Pro Mini (หรือ Arduino Nano) โมดูลเสียง Wtv-020-SD-16p โมดูลบลูทูธ HC-05 โมดูล LCD 16x2 เครื่องควบคุม LM7805 โมดูลเครื่องขยายเสียง ICAn (ฉันใช้วงจร PAM8403) ลำโพง 8 โอห์ม A ตัวเมีย แจ็คเสียงแบตเตอรี่ 9v และโทรศัพท์ Android ดังนั้นนี่คือส่วนประกอบที่จำเป็น ที่สำคัญอีกอย่างคือค่าใช้จ่าย อีฟเสียค่าใช้จ่ายประมาณ 3000 INR ค่าใช้จ่ายอาจแตกต่างกันในประเทศของคุณ แต่ในอินเดีย อัตรานี้เป็นราคาโดยประมาณ คำอธิบายเล็กน้อยของชิ้นส่วน: Arduino Pro mini เป็น MCU หลักในหุ่นยนต์ของเรา ฉันใช้มันเพราะขนาดที่เล็ก ความเรียบง่าย และประสิทธิภาพที่ยอดเยี่ยม ตรงตามข้อกำหนดทั้งหมดในหุ่นยนต์ของเรา ยกเว้นฟังก์ชันการจดจำเสียงที่ทำโดย Android (จะกล่าวถึงในภายหลัง) ฟังก์ชันอื่นๆ ทั้งหมดที่เริ่มต้นจากการค้นหาคำหลักและการสร้างเอาต์พุตนั้นทำได้บน Pro Mini เอง ไม่ต้องกังวลกับเงื่อนไขที่กล่าวไว้ข้างต้นหากคุณไม่เข้าใจ ทั้งหมดจะกล่าวถึงในตอนหลัง โมดูล wtv020sd 16p ใช้สำหรับเล่นไฟล์เสียง hc 05 Bluetooth สำหรับสื่อสารกับ Android และ LCD สำหรับแสดงผล อารมณ์ เราต้องการแจ็คเสียงหญิงในการเชื่อมต่อหุ่นยนต์กับเครื่องขยายเสียงภายนอก Arduino ถูกใช้เป็นตัวควบคุมหลักที่นี่ รับข้อมูลบลูทูธผ่านโมดูลบลูทูธ HC 05 และเล่นไฟล์ผ่านโมดูลเสียง WTV-020-SD-16p อารมณ์จะแสดงในโมดูล LCD และแบตเตอรี่ 9v สำหรับพลังงาน อีฟจดจำคำพูดผ่านการจดจำ Google Voice ของอุปกรณ์ Android ภายหลังจะมีการหารือกันอย่างเหมาะสมในขั้นตอนที่เกี่ยวข้อง ข่าวร้ายเกี่ยวกับ Arduino Pro Mini:IT ได้เลิกใช้งานจากตลาดแล้ว นั่นหมายความว่า Arduino ได้หยุดการผลิตอย่างเป็นทางการแล้ว แต่คุณยังสามารถพบมันได้ในหลายเว็บไซต์รวมถึงอีเบย์ ผู้ผลิตบุคคลที่สามจำนวนมากยังคงผลิตและจำหน่ายบอร์ดนี้อยู่ ไม่ต้องกังวลหากหาไม่เจอ คุณสามารถใช้ Arduino Nano ได้ จะไม่ทำให้เกิดความแตกต่างในประสิทธิภาพและขนาด

ขั้นตอนที่ 4: ทฤษฎีส่วนที่ 1: ประวัติและบทนำ

ทฤษฎีส่วนที่ 1: ประวัติศาสตร์และบทนำ
ทฤษฎีส่วนที่ 1: ประวัติศาสตร์และบทนำ
ทฤษฎีส่วนที่ 1: ประวัติและบทนำ
ทฤษฎีส่วนที่ 1: ประวัติและบทนำ

อีฟใช้รูปแบบแรกๆ ของการประมวลผลภาษาธรรมชาติ ซึ่งเป็นเทคโนโลยี "การจับคู่รูปแบบ" ซึ่งทำงานในลักษณะต่อไปนี้เมื่อได้รับสตริง มันจะค้นหาคำหรือวลีที่กำหนดไว้ล่วงหน้าในสตริงนั้น สมมติว่าในคำถาม " คุณอายุเท่าไหร่ " โปรแกรมค้นหาคำว่า "เก่า" หากสำเร็จ แสดงว่าไฟล์เสียงนั้นเล่นผ่านโมดูล wtv020sd หากล้มเหลวก็จะค้นหาคำหลักที่กำหนดไว้ล่วงหน้าถัดไป เช่นนี้เราจำเป็นต้องสร้างคำศัพท์ของคำที่กำหนดไว้ล่วงหน้า ดูยากใช่มั้ย? ราวกับว่าเราต้องสร้างคำศัพท์ภาษาอังกฤษทั้งหมดและมีคำศัพท์ภาษาอังกฤษประมาณ 230,000 คำ ความจริงก็คือเราเพียงแค่ต้องเพิ่มคำพื้นฐานสองสามคำที่ใช้บ่อยที่สุดในการสื่อสารของเรา ยังดูแข็ง? ไม่ต้องกังวล งานของ Joseph Wizembaum ทำเสร็จแล้ว ส่วนหนึ่งของคำตอบของอีฟและคีย์เวิร์ดที่กำหนดไว้ล่วงหน้านั้นถูกรวมมาจากโปรแกรมแช็ทบอทโปรแกรมแรกที่เรียกว่าเอลิซา ซึ่งพัฒนาโดยโจเซฟ ไวเซมบอม (ภาพด้านบน) Eliza ถูกออกแบบมาให้เป็นนักบำบัดโรค Rogerian ไม่ใช่ศัพท์ทางวิทยาศาสตร์อย่างสูง แต่หมายความว่าเธอเคยให้คำปรึกษาผู้คน ทำให้พวกเขาเข้าใจตัวเองดีขึ้นและทำให้พวกเขาคิดบวกมากขึ้น ดูดีจริงๆใช่มั้ย? และเอลิซ่าก็สามารถทำหน้าที่ของเธอได้เป็นอย่างดี ทัศนคติที่อยากรู้อยากเห็นและสงสัยของเธอเป็นที่รักของผู้คน แม้แต่ Wizembaum ก็ยังประหลาดใจกับความสำคัญที่ผู้คนมอบให้กับ Eliza ดูเหมือนพวกเขาจะลืมไปว่ากำลังคุยกับคอมพิวเตอร์อยู่ และนึกไปว่ามีสาวสวยนั่งอยู่ในคอมพิวเตอร์กำลังคุยกับพวกเขาอยู่ แต่เอลิซาไม่ได้ฉลาดขนาดนั้น มันจะเกิดขึ้นในไม่ช้า เมื่อเวลาผ่านไป ผู้คนเริ่มเบื่อกับการสื่อสารที่จำกัดของเธอ และเธอก็ถูกเรียกว่า "ใบ้" ไม่น่าแปลกใจเลยว่าเธอโง่แค่ไหน มันเป็นการก้าวกระโดดครั้งใหญ่ในประวัติศาสตร์ของปัญญาประดิษฐ์และการประมวลผลภาษาที่เป็นธรรมชาติ หลังจากก่อตั้งฐานของ Chatterbots บอทต่าง ๆ ที่มีเทคโนโลยีใหม่และดีกว่าก็เข้ามาในตลาด และตอนนี้เรามีพวกเขาทุกที่ ดังที่ได้กล่าวมาแล้ว ส่วนหนึ่งของคำตอบของอีฟได้มาจากเอลิซ่า นั่นหมายความว่าแม้แต่อีฟก็ยังมีทัศนคติของเอลิซาในระดับหนึ่งควบคู่ไปกับความคิดของฉันเอง สิ่งสำคัญอีกประการหนึ่งคือการตอบกลับ มันควรจะน่าเบื่อจริงๆ ที่จะได้รับคำตอบเดิมๆ ทุกครั้งที่คุณถามคำถามเดิม ดังนั้นการตอบกลับจำนวนมากจึงถูกเก็บไว้สำหรับคำหลักเดียวกัน อีฟจะสุ่มเลือกไฟล์ที่จะเล่น และทำให้แน่ใจว่าเธอจะไม่เล่นไฟล์เดิมซ้ำ แค่ขนมปังกับเนยธรรมดาๆ แต่สิ่งสำคัญคือต้องตั้งโปรแกรมเสียงตอบสนองอย่างชาญฉลาด เพื่อสร้างภาพลวงตาให้กับผู้ชมราวกับว่าเธอกำลังตอบคำถามของเราจริงๆ นั่นเป็นการแนะนำสั้นๆ เกี่ยวกับการทำงานของอีฟ ในขั้นตอนต่อไป เราจะมาลงรายละเอียดและการเขียนโปรแกรม

ขั้นตอนที่ 5: ค้นหาคำหลัก

ค้นหาคำสำคัญ
ค้นหาคำสำคัญ
ค้นหาคำสำคัญ
ค้นหาคำสำคัญ
ค้นหาคำสำคัญ
ค้นหาคำสำคัญ
ค้นหาด้วยคีย์เวิร์ด
ค้นหาด้วยคีย์เวิร์ด

ในขั้นตอนสุดท้าย ฉันได้กล่าวถึงเทคโนโลยีการจับคู่รูปแบบของอีฟและรูปแบบแรกๆ ของการประมวลผลภาษาธรรมชาติ มันคืออะไรและทำงานอย่างไร? นั่นคือสิ่งสำคัญที่เราจะพูดถึงในขั้นตอนนี้ ลองคิดดูสิ มีคนถามชื่อคุณ และคุณต้องบอกว่ามันคืออะไร เราสามารถถามคำถามเดียวกันได้กี่วิธี? ครูของคุณอาจถามว่า "คุณช่วยบอกชื่อของคุณหน่อยได้ไหม" ญาติอาจถามว่า "คุณชื่ออะไร" พี่ชายของคุณอาจพูดว่า "ฉันเพิ่งลืมชื่อคุณ คุณจะพูดอีกครั้งได้ไหม" ซึ่งหมายความว่าสามารถถามคำถามเดียวกันได้หลายวิธี แต่เราจำเป็นต้องให้คำตอบเดียวกัน ชื่อของเรา นั่นหมายความว่าเราจำเป็นต้องค้นหาสิ่งที่เหมือนกันในทุกประโยค จะเห็นได้ชัดเจนว่าคำว่า "ชื่อคุณ" มีอยู่ในทุกประโยค นั่นคือคำใบ้ของเรา สำหรับคำถามทั้งหมดที่ถามชื่อ เราจำเป็นต้องค้นหาวลี "ชื่อของคุณ" โดยการทำตามรูปแบบพื้นฐานนี้ เราสามารถคาดเดาคำตอบตามลำดับของสตริงอินพุตทั้งหมดได้ ข้อเสีย: สิ่งสำคัญที่ต้องจำไว้ก็คืออัลกอริธึมนี้จะไม่ถูกต้องเสมอไป สมมติว่ามีคนพูดว่า "ฉันพบชื่อของคุณในรายการรอ ฉันคาดว่าคุณจะอยู่ในที่นั่งที่สงวนไว้" ตอนนี้เนื่องจาก "ชื่อของคุณ" อยู่ในสตริงนี้ อีฟ การไร้เดียงสาจะบอกชื่อของเธอกับบุคคลนั้น… โง่ใช่มั้ย? นี่เป็นหนึ่งในข้อเสียที่สำคัญของอัลกอริทึมพื้นฐานนี้ อย่างไรก็ตาม สิ่งเหล่านี้จะเป็นกรณีที่หายาก มิฉะนั้น อัลกอริทึมจะมีประสิทธิภาพมาก เมื่อฉันได้พูดถึงเทคโนโลยีการจับคู่รูปแบบแล้ว ก็ถึงเวลาคิดว่าสตริงอินพุตนี้มาจากไหนที่เราค้นหาสตริง อันที่จริงแล้ว สตริงนี้เป็นเสียงของเราที่ได้รับการแปลงเป็นข้อความโดย Google Voice Recognition แอพที่ใช้ในที่นี้แปลงเสียงของเราเป็นข้อความแล้วส่งแบบเดียวกันไปยัง Arduino ผ่าน Bluetooth ฉันใช้แอพนี้เพราะมันง่ายที่สุดและดีที่สุดในประเภทเดียวกัน ชื่อคือ AMR Voice และสามารถพบได้ง่ายใน Google play

ขั้นตอนที่ 6: กำหนดคำตอบ

การกำหนดคำตอบ
การกำหนดคำตอบ

เมื่อรู้คำถามแล้ว ขั้นตอนต่อไปคือการหาคำตอบ มีส่วนที่น่าสนใจและสำคัญมา…เราต้องหาคำตอบที่เหมาะสมเพื่อสนองทุกคำถาม และนี่คืออีกหนึ่งฟังก์ชันที่รวมอยู่ใน ELIZA Wizembaum พัฒนาคำตอบสำหรับคำหลักจำนวนหนึ่งโดยเฉพาะ ตัวอย่างคือคำหลัก "คุณ" เมื่อใดก็ตามที่ตรวจพบเอาต์พุตของโปรแกรม " เรากำลังคุยกับคุณ ไม่ใช่ฉัน" ดังนั้นคำตอบจึงถูกจัดทำขึ้นเพื่อให้เหมาะกับทุกประโยคที่มีคำว่า "คุณ" นอกจากนี้ Eliza ยังให้คำตอบที่แตกต่างกันทุกครั้ง มีชนิดของที่อยู่เป็นตัวเลขสำหรับแต่ละคำตอบซึ่ง สิ่งนี้เพิ่มขึ้น (เพิ่มโดย 1) ทุกครั้งที่มีการกำหนดคำตอบ สมมติในตัวอย่างข้างต้น หากที่อยู่ของคำตอบคือ 1 ที่อยู่จะถูกเปลี่ยนเป็น 2 และไฟล์ 2 จึงเล่นต่อไป แต่เราจะไม่ทำตามอัลกอริธึมการเพิ่มขึ้นนี้ คุณเห็นหลังจากใช้ซอฟต์แวร์อย่างต่อเนื่อง คำตอบก็คาดเดาได้ คุณได้รู้ว่าจะต้องให้คำตอบใดต่อไป เพื่อจุดประสงค์นี้ เราจะสร้างที่อยู่แบบสุ่มสำหรับคำหลักแต่ละคำ โดยรวมแล้วจะเหมือนกันในทั้งสองกรณี เพียงแต่ความแตกต่างที่เราไม่สามารถคาดการณ์ได้ว่าโรบ็อตจะพูดอะไรต่อไปสำหรับคำหลักเดียวกัน

ขั้นตอนที่ 7: ข้อความต้องห้ามและอื่นๆ

คำสั่งต้องห้ามและอื่น ๆ
คำสั่งต้องห้ามและอื่น ๆ

อาจมีบางกรณีในการสนทนาของคุณเมื่อหุ่นยนต์พูดบางสิ่งที่คุณไม่ต้องการได้ยิน ดังนั้นที่นี่จึงมีความจำเป็นในการเพิ่มข้อความต้องห้าม คำสั่งต้องห้ามคืออาร์เรย์ของที่อยู่ที่ไม่สามารถเล่นได้ ที่อยู่เสียงมีลักษณะเป็นข้อความต้องห้ามเมื่อถามผู้ใช้ นอกจากนี้ ที่อยู่นี้จะถูกเก็บไว้ใน EEPROM ของ Arduino เพื่อให้อีฟไม่ลืมว่ามันเป็นคำสั่งต้องห้ามแม้ว่าเธอจะถูกปิดไปแล้วก็ตาม โดยทั่วไปสิ่งที่โปรแกรมทำคือการตรวจสอบทุกที่อยู่ที่จะเล่น หากที่อยู่นั้นเป็นที่อยู่ต้องห้ามอย่างใดอย่างหนึ่งก็จะเพิ่มขึ้นหรือลดลง นอกจากนี้ อาจมีกรณีที่คุณต้องการอนุญาตให้หุ่นยนต์พูดคำต้องห้ามก่อนหน้านี้ ในกรณีนั้นคุณจะต้องพูดกับอีฟว่าเธอสามารถพูดคำต้องห้ามสุดท้ายได้ คำที่ถูกห้ามล่าสุดจะสามารถเล่นได้ ในการทำให้ข้อความต้องห้ามทั้งหมดสามารถเล่นได้ เราต้องติดตั้งสวิตช์รีเซ็ต หากกดเข้าไปแล้ว คำสั่งห้ามทั้งหมดจะกลายเป็นเล่นได้ จากนั้นสิ่งสำคัญอีกอย่างหนึ่งคือต้องแน่ใจว่าอีฟไม่ตอบคำถามซ้ำ นี่เป็นข้อเสียของตัวเลขสุ่ม ตัวเลขสุ่มเดียวกันนั้นน่าจะผลิตออกมาเป็นชุดๆ สิ่งนี้จะทำให้หุ่นยนต์ของเราพูดคำตอบเดิมซ้ำแล้วซ้ำอีก สำหรับสิ่งนี้ เราจำเป็นต้องรวมฟังก์ชันรองอื่นที่ป้องกันการทำซ้ำของคำสั่ง สำหรับสิ่งนี้เราจำเป็นต้องเก็บที่อยู่ของคำสั่งสุดท้ายไว้ในหน่วยความจำและตรวจสอบว่าเหมือนกับที่อยู่ปัจจุบันหรือไม่ ถ้าเป็นเช่นนั้น ค่าที่อยู่จะเพิ่มขึ้นหรือลดลง เช่นเดียวกับในกรณีของคำสั่งห้าม

ขั้นตอนที่ 8: การเขียนโค้ด

การเขียนโค้ด
การเขียนโค้ด
การเขียนโค้ด
การเขียนโค้ด
การเขียนโค้ด
การเขียนโค้ด

เราใช้คำสั่ง indexOf เพื่อค้นหาคีย์เวิร์ด คำสั่งระบุตำแหน่งอักขระหรือสตริงภายในสตริงอื่น หากพบจะส่งคืนดัชนีของสตริงนั้นในขณะที่ -1 จะถูกส่งกลับหากไม่พบ ดังนั้นในโปรแกรมของเรา เราต้องเขียนดังต่อไปนี้:if (voice.indexOf("your name") > -1) { //if the index is more than -1 //หมายถึง พบ string แล้ว}ตอนนี้ ที่เราได้เก็บสตริงไว้ในหน่วยความจำและยังพบคำหลักของเราอยู่ภายในนั้น ตอนนี้เราจะต้องจัดการกับการตอบกลับ ดังที่กล่าวไว้ ตัวเลขสุ่มจะถูกสร้างขึ้นภายในช่วงตัวเลขเฉพาะ (ที่อยู่ของไฟล์เสียง) นี่คือคำสั่ง random() ต่อไปนี้เป็นไวยากรณ์: สุ่ม (ต่ำสุด สูงสุด); //ตัวเลขสุ่มถูกสร้างขึ้นในช่วง min และ max. We กำหนดจำนวนต่ำสุดและจำนวนสูงสุดของแต่ละช่วง และการใช้โค้ดของเรานี้มีลักษณะดังนี้:if (voice.indexOf("your name") > - 1)){นาทีไม่มี = 0; maxNo = 5;RandomNumber = random(minNo, maxNo);}ตอนนี้มาถึงการจัดการการตอบกลับ ในขั้นตอนสุดท้าย ฉันบอกว่าตัวเลขจะเพิ่มขึ้นหรือลดลงตามอัลกอริทึม อัลกอริทึมนี้เป็นสิ่งที่เรากำลังพูดถึงอยู่ในขณะนี้ ส่วนนี้มีความสำคัญมากในแง่ที่ว่าคุณไม่สามารถเพิ่มหรือลดได้ตามที่คุณต้องการ จำนวนที่เพิ่มขึ้นหรือลดลงต้องอยู่ในช่วง สมมติว่าในกรณีข้างต้น สำหรับคีย์เวิร์ด "ชื่อของคุณ" เรามีช่วงตั้งแต่ 0 ถึง 5 และตัวเลขสุ่มที่สร้างคือ 5 ดังนั้น ถ้าคุณเพิ่มมัน คุณจะเล่นไฟล์เสียงของคีย์เวิร์ดอื่น.คุณคิดว่าจะเป็นอย่างไร? คุณถามว่า "เฮ้ ช่วยบอกชื่อของคุณหน่อย" และหุ่นยนต์ก็ตอบว่า "ฉันชอบกินคุกกี้และประจุไฟฟ้า" เป็นกรณีเดียวกันสำหรับจำนวนขั้นต่ำ หากตัวเลขสุ่มที่สร้างเป็น 0 คุณจะไม่สามารถลดจำนวนดังกล่าวได้ ด้วยเหตุนี้ อัลกอริทึมจึงมีความสำคัญมาก ลองคิดดู: เราสามารถเพิ่มขึ้นได้เมื่อจำนวนน้อยกว่าจำนวนสูงสุดและลดลงเมื่อมากกว่าจำนวนขั้นต่ำ เมื่อจำนวนที่สร้างขึ้นมีค่าเท่ากับ 0 หรือน้อยกว่า 5 จำนวนจะเพิ่มขึ้น ในทางกลับกัน เมื่อมีค่าเท่ากับ 5 เราจะลดจำนวนลงเพื่อให้แน่ใจว่าตัวเลขนั้นอยู่ในช่วงที่กำหนด ตอนนี้กำลังจะมาถึงข้อความต้องห้าม ดังกล่าวจะถูกเก็บไว้ใน EEPROM สำหรับสิ่งนี้ อันดับแรก เราค้นหาหน่วยความจำว่างในอาร์เรย์ที่ต้องห้าม สมมติว่าที่อยู่ 4 ว่าง จากนั้นเราป้อนหมายเลขไฟล์ในที่อยู่อาร์เรย์อิสระและเขียนที่อยู่เดียวกันใน EEPROM.for (int i; i if (ไม่เคย == 0) { EEPROM.write(never, memory);}} นั่นคือทั้งหมด โมดูล Wtv020sd16p จะถูกเล่นโดยใช้คำสั่ง module.playVoice() และหมายเลขไฟล์ที่เสนอ การทำงานของโมดูล Wtv020 จะกล่าวถึงในภายหลัง

ขั้นตอนที่ 9: การใส่อารมณ์

ใส่อารมณ์
ใส่อารมณ์
ใส่อารมณ์
ใส่อารมณ์
ใส่อารมณ์
ใส่อารมณ์

จนถึงขณะนี้ หุ่นยนต์ของเราสามารถจดจำสิ่งที่เราพูด เก็บไว้ในความทรงจำ และค้นหาคำตอบที่เหมาะสมสำหรับคำถาม ตอนนี้คำถามเข้ามาแทรกอารมณ์ แน่นอนว่าทุกคนจะชอบใบหน้าที่มีชีวิตชีวาพร้อมกับโปรแกรมตอบคำถามเล็ก ๆ น้อย ๆ ที่โง่เขลา ใช้จอ LCD ขนาด 16x2 ในโครงการ ดีพอที่จะพิมพ์ตา เราจำเป็นต้องใช้ฟังก์ชันอักขระที่กำหนดเองเพื่อสร้างดวงตา อักขระที่กำหนดเองช่วยให้เราสร้างอักขระใหม่โดยกำหนดพิกเซล เราจะมาดูรายละเอียดเกี่ยวกับเรื่องนี้ในภายหลัง ประการแรก สิ่งสำคัญคือต้องจำไว้ว่า Arduino รองรับอักขระที่กำหนดเองเพียง 8 ตัวเท่านั้น เราจึงต้องจัดการอารมณ์ด้วย 8 ตัวอักษรเท่านั้น อักขระแต่ละตัวจะถูกพิมพ์ในกล่องเฉพาะ และมี 16 คอลัมน์และ 2 แถว ซึ่งรวมเป็น 32 กล่อง

คุณสามารถค้นหาข้อมูลดีๆ ทางออนไลน์เกี่ยวกับอักขระที่กำหนดเองใน Arduino อาจเยี่ยมชมลิงค์นี้:

[Custom Characters Arduino] โครงสร้างของไบต์อักขระที่กำหนดเองจะค่อนข้างมีลักษณะดังนี้:

รูปลักษณ์ปกติ: ด้านซ้าย box0b01111, 0b01111, 0b01111, 0b01111, 0b01111, 0b01111, 0b01111, 0b01111, ด้านขวา box0b11110, 0b11110, 0b11110, 0b11110, 0b11110, 0b11110, 0b11110, 0b11110, ทั้งสองไบต์รูปแบบ 1/4 ของตา. นั่นหมายความว่าเราต้องมีกล่องทั้งหมด 4 กล่องเพื่อเติมเต็มทั้งตา สองแถวทางซ้ายและสองแถวทางขวา รวมเป็นสี่กล่องสำหรับตาข้างเดียว ไบต์ของกล่องด้านซ้ายจะครอบคลุมสองแถวทางด้านซ้ายและกล่องด้านขวาจะครอบคลุมแถวด้านขวา นั่นทำให้อีฟกลายเป็นตาที่สมบูรณ์ และตอนนี้ทำซ้ำแบบเดียวกันสำหรับตาที่สอง เราได้ลุคที่เป็นกลางของอีฟ ตอนนี้สิ่งสำคัญคือต้องจำไว้ว่าเราใช้หนึ่งในแปดอักขระที่กำหนดเองที่มีอยู่ และมีอารมณ์ทั้งหมดห้าอารมณ์: Glee, Sad, Squint, Normal และ Blink สำหรับอักขระที่กำหนดเองอีกเจ็ดตัวที่เหลือ เราจำเป็นต้องปรับเพื่อให้พอดีกับนิพจน์ทั้งหมด ในการสร้างพื้นที่เราจะใช้ 2 กล่องต่อตาแต่ละข้าง ไม่น่าแปลกใจที่ขนาดจะเล็กไปหน่อย แต่สิ่งนี้จะถูกละเลยโดยสายตามนุษย์ เพียงตรวจสอบให้แน่ใจว่าได้เพิ่มการหน่วงเวลาระหว่างฟังก์ชัน LCD ไม่เช่นนั้น Arduino จะไม่เสถียร

ขั้นตอนที่ 10: การสร้างการเชื่อมต่อ

การเชื่อมต่อ
การเชื่อมต่อ
การเชื่อมต่อ
การเชื่อมต่อ
การเชื่อมต่อ
การเชื่อมต่อ

โมดูล LCD:เชื่อมต่อหมุดตามที่กล่าวไว้ที่นี่: RS: ขุดพิน 12RW: GndEnable: 7d4: ขุดพิน 8 d5: ขุดพิน 9 d6: ขุดพิน 10 d7: ขุดพิน13A (แอโนด) ถึง 5vK (แคโทด) ถึง gndโมดูล HC 05:ทำตามการเชื่อมต่อเหล่านี้: พิน HC 05 TX ไปยัง Arduino RX pinHC 05 RX พินไปยัง Arduino TX pinState พินไปยัง Arduino dig pin 11 การสื่อสารทำได้โดยใช้หมุด TX และ RX ต้องใช้พินสถานะเพื่อตรวจสอบว่าผ่าน HC 05 เชื่อมต่อหรือไม่ใช้งาน WTV 020 SD 16p โมดูล pin1: พินรีเซ็ต เชื่อมต่อกับพินขุด 2pin7: พินนาฬิกา เชื่อมต่อกับพินขุด 3pin10: พินข้อมูล เชื่อมต่อ เพื่อขุดพิน 4pin15: พินไม่ว่าง เชื่อมต่อกับพินขุด 5pin2: เชื่อมต่อพินนี้กับแอมพลิฟายเออร์ผ่านระดับเสียงและเหมือนกันกับแจ็คเสียงหญิง ขา4 ควรเชื่อมต่อกับลำโพง+พิน5 เพื่อเชื่อมต่อกับลำโพง-เชื่อมต่อ พินที่ 8 สำหรับ gnd และจ่ายไฟ 3.3v ในพินที่ 16

แอมพลิฟายเออร์จะช่วยในการเล่นลำโพงภายในของ Eve ในขณะที่แจ็คเสียงจะเชื่อมต่อกับแอมพลิฟายเออร์ภายนอกและลำโพงที่ใหญ่กว่า

ขั้นตอนที่ 11: โมดูล WTV020SD16p (ไม่บังคับ)

Image
Image
โมดูล WTV020SD16p (อุปกรณ์เสริม)
โมดูล WTV020SD16p (อุปกรณ์เสริม)
โมดูล WTV020SD16p (อุปกรณ์เสริม)
โมดูล WTV020SD16p (อุปกรณ์เสริม)

หมายเหตุ: ขั้นตอนนี้เป็นทางเลือก มันเกี่ยวข้องกับการทำงานและคำอธิบายของโมดูล WTV 020 SD 16p

คุณสามารถดูการสาธิตของโมดูลเสียงในลิงค์นี้:

[เล่นวีดีโอ]

โหมดการพูดของหุ่นยนต์ถูกเติมเต็มโดยโมดูล WTV 020 SD โมดูลนี้ใช้เพื่อเล่นไฟล์เสียงสำหรับหุ่นยนต์ เมื่อถามคำถามใด ๆ Arduino จะทำให้โมดูลเล่นไฟล์เสียงที่เกี่ยวข้องในการ์ด SD มีสี่สายข้อมูลอนุกรมบนโมดูลสำหรับการสื่อสารกับ Arduino, การรีเซ็ต, นาฬิกา, ข้อมูลและหมุดที่ไม่ว่าง และเราใช้คำสั่ง.playVoice () เพื่อเล่นไฟล์ที่ต้องการ ตัวอย่างเช่น:module.playVoice (9): // เล่นไฟล์ 9 ที่เก็บไว้ในการ์ด SD โปรดจำไว้ว่าชื่อไฟล์ควรเป็นทศนิยม (0001, 0002…) และไฟล์ควรอยู่ในรูปแบบ AD4 หรือ WAV นอกจากนี้ โมดูลนี้ใช้งานได้กับการ์ด micro SD ขนาด 1GB เท่านั้น บางโมดูลใช้งานได้กับการ์ด 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 ของ Pro MIni3 รีเซ็ตพินของ UNO เป็นพินรีเซ็ตของ Pro Mini4 เชื่อมต่อ VCC และกราวด์ของ Pro Mini กับ UNO ดาวน์โหลดโปรแกรม Arduino ซอฟต์แวร์จดจำเสียง และไลบรารีที่ด้านล่าง โปรแกรมยังอยู่ในระหว่างการพัฒนา ดังนั้นหากคุณมีปัญหาใด ๆ เกี่ยวกับเรื่องนี้ ถามได้เลย จากนั้นเสียบสายเคเบิลเข้ากับคอมพิวเตอร์ เลือกบอร์ดเป็น Arduino Pro Mini และเลือกพอร์ต COM ที่ถูกต้อง จากนั้นกดปุ่มอัปโหลดและดูโปรแกรมได้รับการอัปโหลดบน Pro Mini ของคุณ

จากนั้นดาวน์โหลดซอฟต์แวร์การรู้จำเสียงและไฟล์เสียง

ขั้นตอนที่ 13: การเตรียมร่างกาย

เตรียมร่างกาย
เตรียมร่างกาย
เตรียมร่างกาย
เตรียมร่างกาย
เตรียมร่างกาย
เตรียมร่างกาย

ฉันพบไหมขัดฟันกล่องเล็ก ๆ และพบว่ามันเหมาะสำหรับร่างกาย คุณสามารถใช้กล่องใดก็ได้ที่คุณพบในเวิร์กช็อปของคุณ หรือคุณสามารถสร้างกล่องกระดาษแข็ง เพียงตัดชิ้นส่วนสี่เหลี่ยมเล็กๆ ออกเพื่อติดโมดูล LCD ที่ด้านบน ฉันเจาะรูเล็กๆ สำหรับติดวอลลุ่ม และที่ด้านข้างสำหรับติดสวิตช์และคอนเน็กเตอร์เสียง ฉันติดฝาขวดสองอันที่ด้านข้างของกล่องสำหรับล้อ เพียงตรวจสอบให้แน่ใจว่ากล่องมีพื้นที่เพียงพอสำหรับใส่วงจรภายใน ต่อสวิตซ์เข้ากับตัวเครื่องรวมทั้งวงจร จากนั้นจึงปรับระดับเสียงที่ด้านบนของกล่อง จากนั้นเพียงแค่ใส่วงจรเข้าไปข้างในและหุ่นยนต์ของคุณก็เสร็จสมบูรณ์

ขั้นตอนที่ 14: ทำได้ดีมาก

ทำได้ดี!
ทำได้ดี!
ทำได้ดี!
ทำได้ดี!

ตอนนี้คุณทำโปรเจ็กต์หุ่นยนต์น้อยน่ารักที่สามารถพูดคุยกับคุณและทำให้คุณมีความสุขได้สำเร็จแล้ว นี่คือจุดที่มีความสุขที่สุดในการเป็น DIYer เมื่อโครงการของคุณเสร็จสมบูรณ์และกำลังทำงานอย่างเต็มที่ อย่ากังวลถ้าคุณไม่ประสบความสำเร็จในครั้งเดียว คุณต้องพยายามอย่างหนักเพื่อที่คุณจะได้เข้าใจทุกส่วนของหุ่นยนต์ของคุณ และนั่นคือสิ่งที่ DIYers เข้ามาในโลกนี้ แต่นี่ไม่ใช่จุดสิ้นสุดของโครงการ อีฟจะต้องได้รับการพัฒนาในระดับสูงเสมอ ไม่ว่าโดยฉันหรือ DIYers เช่นคุณ ฉันชอบที่จะได้ยินสิ่งที่คุณทำให้เห็นคำแนะนำนี้ ขอแสดงความนับถือ RS3655

แนะนำ: