สารบัญ:
วีดีโอ: อุปสรรคทางอารมณ์ที่หลีกเลี่ยงหุ่นยนต์: 11 ขั้นตอน
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-13 06:58
หุ่นยนต์อารมณ์ หุ่นยนต์นี้แสดงอารมณ์ด้วยนีโอพิกเซล (RGB LED) เช่น ความเศร้า ความสุข ความโกรธ และความกลัว นอกจากนี้ยังสามารถหลีกเลี่ยงอุปสรรคและทำการเคลื่อนไหวบางอย่างในระหว่างอารมณ์บางอย่าง สมองของหุ่นยนต์ตัวนี้คือเมกะ Arduino โปรดจำไว้ว่านี่เป็นหุ่นยนต์ตัวแรกที่ฉันสร้างโปรแกรมขึ้นมา และมันทำให้ฉันตกหลุมรักการเขียนโปรแกรม ตัวโค้ดเองก็เป็นมือใหม่อย่างมาก และน่าจะทำให้ง่ายขึ้นได้มากที่สุด
ขั้นตอนที่ 1: PARTS
-3.2 ฟุตของแถบนีโอพิกเซล
-HC-SR04 Ultrasonic Sensor (หรือเซ็นเซอร์อัลตราโซนิกอื่นๆ)
- สวิตช์เอียง
-3 3.7 โวลต์แบตเตอรี่ลิเธียมไอออน (18650)
-boost converter (อธิบายในขั้นตอนกำลัง)
- ตัวต้านทานภาพ (ค่าใดก็ได้)
- เซ็นเซอร์เสียงแบบแอนะล็อก
-2 มอเตอร์กระแสตรง 6v
-l293d (ตัวขับมอเตอร์)
-แผ่นพลาสติก
-กระดาษแข็ง
-ล้อเลื่อน
ขั้นตอนที่ 2: Neopixels
เนื่องจากฉันมีงบประมาณจำกัด วิธีที่ง่ายที่สุดและถูกที่สุดในการทำให้หุ่นยนต์ของฉันมีอารมณ์เหมือนมีชีวิตคือนีโอพิกเซล ทั้งหมดนี้มี 3 อินพุตและเอาต์พุต หมุดสามตัวบนอินพุตมีป้ายกำกับ 5v, DIN (ข้อมูลใน) และ GND (กราวด์); เอาต์พุตมีป้ายกำกับเหมือนกับอินพุต แต่แทนที่จะเป็นข้อมูลใน DO (data out) วิธีที่คุณเชื่อมต่อ led เหล่านี้คือเชื่อมต่อพวกมันแบบขนานกัน ดังนั้น 5v เชื่อมต่อกับ 5v บน led อื่น และ GND เชื่อมต่อกับ led GND อีกตัว DO ของ led ตัวแรกเชื่อมต่อกับ DIN ของ led ตัวที่สอง จากนั้น กระบวนการนี้ดำเนินต่อไปจนกว่าคุณจะถึงความยาวแถบนำที่คุณต้องการ นีโอพิกเซลทั้งแถบต้องการเอาต์พุตดิจิทัลเพียงพินเดียวจากอินพุต เนื่องจาก DO และ DIN เชื่อมต่อกันเป็นสายยาว ดังนั้นจึงใช้ข้อมูลร่วมกันทั้งหมด นี่เป็นสิ่งจำเป็นเพราะเราต้องเปิดและปิดไฟ LED เฉพาะในเวลาที่กำหนด คำแนะนำที่เป็นประโยชน์เกี่ยวกับเรื่องนี้คือ NEOPIXEL HELP
ขั้นตอนที่ 3: แผนผัง
วงจรนั้นง่ายมาก เนื่องจากหุ่นยนต์ส่วนใหญ่เพิ่งตั้งโปรแกรมไว้ มอเตอร์ทำงานใกล้กับ 7v ด้วยไดรเวอร์มอเตอร์ l293d เพื่อควบคุมมอเตอร์ให้เดินหน้าถอยหลัง การเชื่อมต่ออื่น ๆ คือเซ็นเซอร์ของ Arduino และนั่นแหล่ะ!
ขั้นตอนที่ 4: รหัส
สิ่งแรกที่ฉันทำคือดาวน์โหลดไลบรารี่ที่จำเป็นเพื่อทำให้การเข้ารหัสง่ายขึ้นเล็กน้อย ไลบรารีที่ฉันใช้คือ "FastLED.h" และ "NewPing.h" ไฟ LED ที่รวดเร็วสำหรับไฟ LED และตัว ping ใหม่สำหรับเซ็นเซอร์อัลตราโซนิก สิ่งต่อไปที่ฉันทำคือกำหนดคำจำกัดความทั้งหมดสำหรับพินที่ฉันใช้ หลังจากนั้นการตั้งค่าเป็นโมฆะ นี่คือที่ที่ฉันตั้งค่าโหมดพินและนีโอสตริป "FastLED.addLeds(leds, NUM_LEDS);" ฉันกำหนด NUM_LEDS เป็น 56 เนื่องจากฉันใช้ไฟ LED 56 ดวง การกำหนดค่าของไฟ LED จะถูกอธิบายในขั้นตอนหน้า จากนั้นฉันก็สร้างฟังก์ชันมากมายสำหรับหุ่นยนต์ของฉันในการเคลื่อนไปข้างหน้าและข้างหลัง และยังมีอารมณ์บางอย่าง หลังจากนั้นฉันก็มาถึง void loop นี่คือที่ที่ฉันเรียกฟังก์ชันทั้งหมดของฉันตามลำดับที่ฉันต้องการ ตัวอย่างเช่น ถ้าฉันต้องการให้หุ่นยนต์ของฉันยิ้มฉันก็จะยิ้ม (); ถ้าฉันต้องการเปิดบาง led ฉันจะใส่ leds[45] = CRGB::Green;, สิ่งนี้จะทำให้ LED 45 เป็นสีเขียว เมื่อฉันใส่สีเป็นสีดำก็หมายความว่าปิด พึงระลึกไว้เสมอว่านี่เป็นหนึ่งในโปรแกรมแรก ๆ ของฉัน ดังนั้นจึงเห็นได้ชัดว่ามันไม่สมบูรณ์แบบ แต่ก็ยังใช้งานได้
รหัส
ขั้นตอนที่ 5: ใบหน้า
สำหรับใบหน้าฉันใช้ไฟ LED 56 ดวงซึ่งเกือบเต็มแถบนีโอพิกเซล 3.2 ฟุต ฉันตัดแถบเป็น 7 แถบจาก 8 ไฟ LED ฉันใช้ 3 แถบแรกสำหรับดวงตาและ 4 อันสุดท้ายสำหรับปาก ฉันเชื่อมต่อแถบต่างๆ ในรูปแบบงู คุณจะเข้าใจได้ดีขึ้นด้วยแผนภาพ หวังว่า เมื่อฉันทำใบหน้าเสร็จแล้ว ฉันก็วางแผ่นพลาสติกบาง (หนาประมาณ 2 มม.) ทับแถบไฟ LED
ขั้นตอนที่ 6: ฟังก์ชั่นแห่งความสุข
ฟังก์ชันนี้เป็นฟังก์ชันที่ง่ายที่สุด เนื่องจากไม่ได้ใช้เซ็นเซอร์ใดๆ แทน ทันทีที่คุณเปิดเครื่องบอท บอทจะยิ้มให้คุณทันที แต่มันไม่เพียงแค่ยิ้มเท่านั้น เวลายิ้มก็จะอยู่ในโหมดหลบสิ่งกีดขวางด้วย โหมดการหลีกเลี่ยงสิ่งกีดขวางจะแสดงในรหัสของฉันในขณะที่ฟังก์ชันโรมมิ่ง โหมดการหลีกเลี่ยงสิ่งกีดขวางหรือการเดินเตร่ทำงานโดยใช้เซ็นเซอร์อัลตราโซนิกสองตัวที่ด้านหุ่นยนต์ เมื่อเซ็นเซอร์เข้าใกล้วัตถุใดก็ตาม 30 ซม. มันจะสำรองข้อมูลและไปทางขวาหรือซ้าย ขึ้นอยู่กับเซ็นเซอร์ที่อยู่ใกล้กับวัตถุที่สุด
ขั้นตอนที่ 7: ฟังก์ชั่นเศร้า
เพื่อให้หุ่นยนต์เศร้า ฉันต้องคิดถึงลักษณะบุคลิกภาพของหุ่นยนต์ตัวนี้ ดังนั้นฉันจึงตัดสินใจทำให้เขาเศร้าเมื่อเขาอยู่ในสภาพแวดล้อมที่มืดมิด ในการทำเช่นนี้ ฉันใช้ตัวต้านทานภาพถ่ายเพื่อตรวจจับแสง ยิ่งสภาพแวดล้อมมืดเท่าใด ความต้านทานก็จะยิ่งสูงขึ้น และสภาพแวดล้อมที่เบาลง ความต้านทานก็จะยิ่งต่ำลงเท่านั้น วงจรทำงานเป็นตัวแบ่งแรงดันซึ่งเป็นวงจรที่มีตัวต้านทานสองตัวต่อแบบอนุกรมกับ +5v และ GND ที่จุดกึ่งกลางของจุดต่อตัวต้านทานจะเป็นแรงดันที่สามารถกำหนดได้โดยสมการนี้: แรงดันไฟขาเข้า*(R2/R1+R2). เมื่อ Arduino Analog Pin อ่านค่านี้จะแปลงแรงดันไฟฟ้าเป็นช่วงตั้งแต่ 0 ถึง 1023
ขั้นตอนที่ 8: ฟังก์ชั่นโกรธ
เพื่อทำให้หุ่นยนต์โกรธ ฉันตัดสินใจพลิกหรือเคาะมัน ใช้งานได้โดยใช้สวิตช์เอียง และสวิตช์เอียงนั้นเป็นสวิตช์ปกติ แต่แทนที่จะมีปุ่มหรือตัวโยก คุณมีลูกบอลปรอท ซึ่งหากเอียงในมุมหนึ่งจะเชื่อมต่อหน้าสัมผัสทั้งสองและเปิดขึ้น ดังนั้นค่าจากนี้คือ 0 หรือ 1, 0 สำหรับปิด และ 1 สำหรับเปิด เมื่อหุ่นยนต์โกรธ มันจะเพิกเฉยต่อโหมดการหลีกเลี่ยงสิ่งกีดขวางและชนสิ่งใดก็ตามที่ขวางหน้าเนื่องจากความโกรธของมัน
ขั้นตอนที่ 9: ฟังก์ชั่นกลัว
สำหรับฟังก์ชั่นสุดท้ายของหุ่นยนต์คือฟังก์ชั่นกลัว ซึ่งใช้เซ็นเซอร์เสียงซึ่งวางอยู่ด้านบนสุดของหุ่นยนต์ เมื่อใดก็ตามที่หุ่นยนต์ได้ยินเสียงโหลด มันจะตกใจและตัวสั่นขณะถอยหลัง เซ็นเซอร์เสียงทำงานโดยใช้ไมโครโฟนคอนเดนเซอร์ซึ่งเป็นไมโครโฟน เมื่อสัมผัสได้ถึงเสียงหรือการสั่นสะเทือน จะสร้างแรงดันไฟฟ้าเล็กน้อย โดยปกติประมาณ 100mv จากนั้นขยายแรงดันไฟฟ้าและอ่านผ่านพินอะนาล็อกของ Arduino แรงดันไฟฟ้าก็จะสูงขึ้น หรือดังขึ้น ค่าอนาล็อกก็จะสูงขึ้น และในทางกลับกัน
ขั้นตอนที่ 10: พลัง
ตอนนี้คุณสร้างทุกอย่างที่จำเป็นในการจ่ายไฟแล้ว ตอนแรกฉันพยายามเพิ่มพลังงานด้วยแบตเตอรี่ AA 8 ก้อน แต่มันเทอะทะเกินไปและไม่สามารถใช้งานได้จริง จากนั้นฉันก็ใช้แบตเตอรี่ลิเธียมไอออน 3 ก้อนซึ่งแต่ละก้อนเก็บได้ประมาณ 3.5 โวลต์ ฉันเชื่อมต่อแบตเตอรี่หนึ่งก้อนกับตัวแปลงบูสต์ซึ่งเป็นตัวเพิ่มแรงดันไฟฟ้า ซึ่งเพิ่ม 3.5 โวลต์ของฉันเป็น 5 โวลต์เพื่อให้พลังงานแก่ Arduino จากนั้นฉันก็ใช้แบตเตอรี่สองก้อนและเชื่อมต่อโดยตรง สำหรับมอเตอร์และไฟ LED นี่ไม่ใช่ความคิดที่ดีเนื่องจากแรงดันไฟฟ้าไม่ได้ถูกควบคุม แต่ฉันไม่มีตัวควบคุมแรงดันไฟฟ้าอยู่รอบ ๆ ถ้าคุณลองสร้างสิ่งนี้ฉันขอแนะนำให้ใช้ตัวควบคุมแรงดันไฟฟ้ามากกว่าที่สามารถทำได้ 5v ที่ประมาณ 2-3 แอมป์ ตัวอย่างนี้คือ LM78S05 หรือคุณสามารถใช้ LM7805 เพื่อจ่ายไฟให้กับ Arduino และรับตัวแปลงสเต็ปดาวน์หรือตัวแปลงบั๊กแทนเพื่อลดแรงดันไฟฟ้าและจ่ายไฟให้กับ LED และมอเตอร์
ขั้นตอนที่ 11: ขอให้สนุก !!
ฉันหวังว่าคุณจะสร้างหุ่นยนต์ตัวนี้และมีช่วงเวลาที่สนุก ฉันหวังว่าคุณจะสร้างหุ่นยนต์ตัวนี้และสร้างอารมณ์ของคุณเองเพื่อให้มันมีชีวิต!!!