สารบัญ:
- ขั้นตอนที่ 1: วัสดุที่ใช้
- ขั้นตอนที่ 2: ภาพรวมพื้นฐานของโครงการ
- ขั้นตอนที่ 3: เตรียมการ์ด SD และเชื่อมต่อโมดูลการ์ด SD
- ขั้นตอนที่ 4: เชื่อมต่อเอาต์พุตเสียงและไมโครโฟน
- ขั้นตอนที่ 5: วางสายปุ่ม
- ขั้นตอนที่ 6: อัปโหลดรหัส
วีดีโอ: Arduino กลายเป็น Talking Tom: 6 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:02
หนึ่งในความทรงจำที่เก่าแก่ที่สุดของฉันในการใช้สมาร์ทโฟนคือการเล่นเกม 'Talking Tom' เกมนี้ค่อนข้างง่าย มีแมวตัวหนึ่งชื่อทอมซึ่งสามารถพูดได้ ในเกม ทอมจะฟังอินพุตใดๆ ผ่านไมโครโฟนของโทรศัพท์แล้วทำซ้ำตามที่ได้ยิน ดังนั้น ไม่ว่าพูดอะไรกับทอม มันก็จะพูดซ้ำในสิ่งเดียวกันด้วยน้ำเสียงที่แหลมคมของตัวเอง
แม้ว่าจะฟังดูง่าย แต่ขั้นตอนทั้งหมดนี้ต้องใช้ขั้นตอนที่ซับซ้อนมากมาย เช่น การสุ่มตัวอย่างอินพุตไมโครโฟนแบบแอนะล็อกในรูปแบบดิจิทัล การจัดการเสียงเพื่อให้ทอมมีเสียงที่เป็นเอกลักษณ์ จากนั้นจึงสร้างสัญญาณจากค่าดิจิทัลทั้งหมดเพื่อเล่นกลับผ่านลำโพง. ขั้นตอนที่ซับซ้อนเหล่านี้ทั้งหมด แต่สมาร์ทโฟนจัดการได้ราวกับเป็นเสน่ห์แม้กระทั่งเมื่อ 9 ถึง 10 ปีก่อน!
สิ่งที่น่าสนใจคือการดูว่าสามารถทำได้เช่นเดียวกันกับบอร์ด Arduino ที่ใช้ไมโครคอนโทรลเลอร์ราคาถูกหรือไม่ ดังนั้นในคำแนะนำนี้ ฉันจะแสดงวิธีสร้าง Talking Tom แบบง่ายๆ เช่น โครงการจาก Arduino และอุปกรณ์อิเล็กทรอนิกส์ราคาถูกอื่นๆ
คำแนะนำนี้เขียนขึ้นโดยความร่วมมือกับ Hatchnhack Makerspace ในเดลี
หมายเหตุ: คำแนะนำนี้เป็นเวอร์ชันแรกของโครงการที่ทำคุณลักษณะ 'พูดคุย' ของ Talking Tom ให้สมบูรณ์ โดยที่ Arduino จะสามารถทำซ้ำสิ่งที่คุณพูดได้ ส่วนการเปลี่ยนเสียงจะกล่าวถึงในเวอร์ชันต่อๆ ไป แม้ว่าเนื่องจากความละเอียดที่น้อยกว่าของ Arduino ในตัว ADC เสียงที่บันทึกไว้แล้วจึงฟังดูแตกต่างออกไปเล็กน้อย:P (สามารถสังเกตได้อย่างชัดเจนในวิดีโอโครงการ)
เริ่มกันเลย!
ขั้นตอนที่ 1: วัสดุที่ใช้
ฮาร์ดแวร์:
- Arduino UNO
- โมดูลไมโครโฟน MAX4466 พร้อมอัตราขยายที่ปรับได้
- โมดูลเครื่องอ่านการ์ด SD ที่ใช้ SPI
- การ์ด SD
- เครื่องขยายเสียง เช่น ลำโพง PC, โมดูลเครื่องขยายเสียง PAM8403 เป็นต้น
- ลำโพงสำหรับเชื่อมต่อกับเครื่องขยายเสียง
- แจ็คเสียงหญิง
- ตัวต้านทาน 1 x 1k โอห์ม
- ตัวต้านทาน 2 x 10k ohm
- ตัวเก็บประจุ 1 x 10uF
- 2 x ปุ่มกด
- สายจัมเปอร์
ซอฟต์แวร์:
- Arduino IDE
- ความกล้า (ไม่จำเป็น)
- TMRpcm และไลบรารี SD สำหรับ Arduino
ขั้นตอนที่ 2: ภาพรวมพื้นฐานของโครงการ
โครงการส่วนใหญ่มีคุณสมบัติ 2 ประการ:
- สามารถเล่นเสียงที่เลือกแบบสุ่มจากชุดไฟล์เสียงที่ติดตั้งไว้ล่วงหน้าในการ์ด SD สำหรับเอฟเฟกต์เสียง ฯลฯ
- มันสามารถบันทึกเสียงอินพุตจากไมโครโฟนแล้วเล่นกลับทันทีที่การบันทึกหยุดลง สิ่งนี้ทำให้ Arduino สามารถทำซ้ำสิ่งที่ได้ยินผ่านไมโครโฟน
ส่วนต่อประสานผู้ใช้ของโปรเจ็กต์ส่วนใหญ่ประกอบด้วยปุ่มกด 2 ปุ่ม ซึ่งแต่ละปุ่มจะสอดคล้องกับคุณลักษณะข้างต้นอย่างใดอย่างหนึ่ง
งานหนักหลักของการบันทึกและเล่นไฟล์เสียงจากการ์ด SD ได้รับการจัดการโดยไลบรารี TMRpcm
การบันทึกเสียงใช้โมดูลไมโครโฟน MAX4466, ADC ภายในของ Arduino และไลบรารี TMRpcm เพื่อสุ่มตัวอย่างเสียงแล้วจัดเก็บไว้ชั่วคราวในการ์ด SD เป็นไฟล์ '.wav' สำหรับการเล่น ไฟล์เสียง '.wav' ใช้ PCM (Pulse Code Modulation) เพื่อจัดเก็บข้อมูลเสียงในรูปแบบดิจิตอลเพื่อให้สามารถเล่นซ้ำได้ง่าย โดยทั่วไป ควรใช้ ADC ภายนอกสำหรับโครงการที่ใช้เสียงเนื่องจากความละเอียดของ ADC ของ Arduino นั้นไม่สูงนัก แต่ใช้ได้กับโครงการนี้
การเล่นไฟล์เสียง (ติดตั้งไว้ล่วงหน้าและบันทึกไว้) ทำได้โดยใช้ไลบรารี TMRpcm ซึ่งส่งสัญญาณเสียงเป็นสัญญาณ PWM จากพินที่เปิดใช้งาน PWM ของ Arduino สัญญาณนี้จะถูกป้อนเข้าในตัวกรอง RC เพื่อรับสัญญาณอะนาล็อกซึ่งจะถูกป้อนเข้าสู่เครื่องขยายเสียงเพื่อเล่นเสียงผ่านลำโพง สำหรับส่วนนี้คุณสามารถใช้ DAC ภายนอกได้เนื่องจาก Arduino ไม่มีอยู่ภายใน การใช้ DAC อาจเป็นทางเลือกที่ดีกว่า เนื่องจากจะปรับปรุงคุณภาพเสียงได้อย่างมาก
การสื่อสารระหว่างโมดูลการ์ด SD และ Arduino ทำได้ผ่าน SPI (อินเทอร์เฟซต่อพ่วงแบบอนุกรม) รหัสนี้ใช้ประโยชน์จากไลบรารี SD & SPI เพื่อเข้าถึงเนื้อหาของการ์ด SD ได้อย่างง่ายดาย
ขั้นตอนที่ 3: เตรียมการ์ด SD และเชื่อมต่อโมดูลการ์ด SD
- ก่อนอื่น คุณต้องฟอร์แมตเป็นการ์ด SD ด้วยระบบไฟล์ FAT16 หรือ FAT32 (คุณสามารถใช้สมาร์ทโฟนเพื่อฟอร์แมตการ์ด SD)
- ตอนนี้ให้ติดตั้งไฟล์เสียง.wav บางไฟล์ในการ์ด SD ล่วงหน้า คุณสามารถสร้างไฟล์.wav ด้วยความกล้า (ดูคำแนะนำด้านล่าง) อย่าลืมตั้งชื่อไฟล์เป็น audio_1.wav, audio_2.wav, audio_3.wav และอื่นๆ
โมดูลการ์ด SD ใช้ SPI เพื่อสื่อสารข้อมูลกับ Arduino ดังนั้นจึงเชื่อมต่อกับพินที่เปิดใช้งาน SPI เท่านั้น การเชื่อมต่อเหล่านี้มีดังนี้:
- Vcc - 5v
- GND - GND
- MOSI (Master Out Slave In) - พิน 11
- MISO (Master In Slave Out) - พิน 12
- CLK (นาฬิกา) - พิน 13
- SS/CS (Slave Select/Chip Select) - พิน 10
กำลังสร้างไฟล์ '.wav' ด้วยซอฟต์แวร์ Audacity:
- เปิดไฟล์เสียงที่คุณต้องการแปลงเป็น.wav ด้วยความกล้า
- คลิกที่ชื่อไฟล์แล้วเลือก 'Split Stereo to Mono' ตัวเลือกนี้จะแบ่งเสียงสเตอริโอออกเป็นสองช่องสัญญาณโมโน คุณสามารถปิดช่องใดช่องหนึ่งได้แล้ว
- เปลี่ยนค่า 'Project Rate' ที่ด้านล่างเป็น 16000 Hz ค่านี้สอดคล้องกับความถี่การสุ่มตัวอย่างสูงสุดของ ADC ภายในของ Arduino
- ตอนนี้ไปที่ File->Export/Export เป็น WAV
- เลือกตำแหน่งและชื่อไฟล์ที่เหมาะสม จากเมนูการเข้ารหัส ให้เลือก 'Unsigned 8-bit PCM' เนื่องจากเราใช้รูปแบบ PCM เพื่อจัดเก็บเสียงในรูปแบบดิจิทัล
ขั้นตอนที่ 4: เชื่อมต่อเอาต์พุตเสียงและไมโครโฟน
การเชื่อมต่อไมโครโฟน:
- Vcc - 3.3v
- GND - GND
- ออก - A0 พิน
บันทึก:
- ลองเชื่อมต่อไมโครโฟนโดยตรงกับ Arduino แทนการใช้เขียงหั่นขนมเนื่องจากอาจทำให้เกิดเสียงรบกวนที่ไม่จำเป็นในสัญญาณอินพุต
- ตรวจสอบให้แน่ใจว่าได้ประสานส่วนหัวของโมดูลไมโครโฟนอย่างหมดจด เนื่องจากข้อต่อที่บัดกรีไม่ดีก็สร้างเสียงรบกวนเช่นกัน
- โมดูลไมโครโฟนนี้มีอัตราขยายที่ปรับได้ซึ่งสามารถควบคุมได้โดยใช้หม้อที่ด้านหลังของบอร์ด ฉันขอแนะนำให้คุณรักษาระดับเกนให้ต่ำ เพราะมันจะไม่ขยายเสียงมากนัก ในขณะที่คุณสามารถพูดโดยวางไว้ใกล้ปากของคุณ ส่งผลให้เอาต์พุตสะอาดขึ้น
การเชื่อมต่อเอาต์พุตเสียง:
- วางตัวเก็บประจุ 10 uF และตัวต้านทาน 1k ohm ในอนุกรมบนเขียงหั่นขนมโดยให้ขั้วบวกของตัวเก็บประจุเชื่อมต่อกับตัวต้านทาน สิ่งเหล่านี้รวมกันเป็นตัวกรอง RC ซึ่งแปลงเอาต์พุต PWM เป็นสัญญาณแอนะล็อกที่สามารถป้อนเข้าสู่แอมพลิฟายเออร์
- เชื่อมต่อพิน 9 ของ Arduino กับปลายอีกด้านหนึ่งของตัวต้านทาน
- ขั้วลบของตัวเก็บประจุเชื่อมต่อกับช่องสัญญาณซ้ายและขวาของแจ็คเสียงหญิง
- GND ของแจ็ค Audio เชื่อมต่อกับ GND
- แจ็คเสียงเชื่อมต่อกับเครื่องขยายเสียงด้วยสาย Aux ในกรณีของฉัน ฉันใช้ระบบลำโพงของพีซี
บันทึก:
การใช้ PWM เป็นเอาต์พุตเสียงอาจไม่ใช่ตัวเลือกที่ดีที่สุด เนื่องจาก DAC ภายนอกจะให้ความละเอียดและคุณภาพที่ดีกว่ามาก นอกจากนี้ ตัวเก็บประจุและตัวต้านทานในตัวกรอง RC อาจก่อให้เกิดเสียงรบกวนที่ไม่ต้องการ แต่ผลลัพธ์ก็ยังค่อนข้างดีสำหรับโครงการนี้
ขั้นตอนที่ 5: วางสายปุ่ม
โครงการใช้ปุ่มกดเป็นส่วนต่อประสานกับผู้ใช้ ทั้งสองทำหน้าที่ต่างกันและใช้ต่างกัน แต่มีสายไฟเหมือนกัน การเชื่อมต่อของพวกเขามีดังนี้:
- วางปุ่มบนเขียงหั่นขนม
- ต่อขั้วหนึ่งของปุ่มใดปุ่มหนึ่งเข้ากับขา 2 ของ Arduino ด้วยตัวต้านทานแบบดึงลง 10k ohm ขั้วอื่นของปุ่มเชื่อมต่อกับ 5v ดังนั้นเมื่อกดปุ่มพิน 2 จะสูง และเราสามารถตรวจพบได้ในโค้ด
- ปุ่มอื่นเชื่อมต่อแบบเดียวกันกับพิน 3 ของ Arduino แทนที่จะเป็น 2
ปุ่มที่เชื่อมต่อกับพิน 2 จะเล่นไฟล์เสียงแบบสุ่มจากชุดไฟล์เสียงที่ติดตั้งไว้ล่วงหน้าในการ์ด SD เมื่อกดหนึ่งครั้ง
ปุ่มที่เชื่อมต่อกับพิน 3 ใช้สำหรับการบันทึก คุณต้องกดปุ่มนี้ค้างไว้เพื่อบันทึก Arduino เริ่มบันทึกทันทีที่กดปุ่มนี้และหยุดการบันทึกเมื่อปล่อยปุ่มนี้ หลังจากหยุดการบันทึก การบันทึกจะเล่นซ้ำทันที
ขั้นตอนที่ 6: อัปโหลดรหัส
ก่อนอัปโหลดโค้ด ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้งไลบรารีที่จำเป็นทั้งหมด เช่น TMRpcm, SD เป็นต้น
คุณยังสามารถเปิด Serial Monitor หลังจากอัปโหลดโค้ดเพื่อรับข้อเสนอแนะว่า Arduino ทำอะไรอยู่
ขณะนี้รหัสไม่ได้จัดการเสียงที่บันทึกไว้เพื่อให้เสียงแตกต่างกัน แต่ฉันวางแผนที่จะรวมคุณลักษณะนี้ในเวอร์ชันถัดไปซึ่งคุณอาจตั้งค่าความถี่เอาต์พุตของสัญญาณเสียงโดยใช้ Pot และรับเสียงประเภทต่างๆ.
และคุณทำเสร็จแล้ว!!
แนะนำ:
Shake Detecting Talking Hat กับ Circuit Playground Express: 12 ขั้นตอน (พร้อมรูปภาพ)
Shake Detecting Talking Hat ด้วย Circuit Playground Express: บทช่วยสอนที่ง่ายและรวดเร็วนี้จะสอนวิธีทำหมวกพูดได้! มันจะตอบสนองด้วยคำตอบที่ได้รับการประมวลผลอย่างระมัดระวังเมื่อคุณ 'ถาม' คำถาม และอาจช่วยให้คุณตัดสินใจได้ว่าคุณมีความกังวลหรือปัญหาใดๆ หรือไม่ ในชั้นเรียน Wearable Tech ของฉัน ฉัน
Ted the Talking Toaster: 6 ขั้นตอน (พร้อมรูปภาพ)
Ted the Talking Toaster: การสนทนากับเครื่องปิ้งขนมปังมักเป็นด้านเดียวเสมอ จนถึงตอนนี้ พบกับ Ted the talking Toaster!Below an Overview of the content: Project video Toaster Electronics Chat/Voice bot Remo.tv World domination
วิธีการสร้าง Talking PIR Motion Security System: 3 ขั้นตอน
วิธีสร้างระบบความปลอดภัย PIR Motion ที่พูดได้: ในวิดีโอนี้ เราจะสร้างระบบรักษาความปลอดภัยที่ตรวจจับการเคลื่อนไหวและพูด ในโครงการนี้ เซ็นเซอร์ PIR จะตรวจจับการเคลื่อนไหวและโมดูล DFPlayer Mini MP3 จะเล่นเสียงที่กำหนดไว้ก่อนหน้านี้
Talking Baymax Display สำหรับสำนักงานกุมารแพทย์: 10 ขั้นตอน (พร้อมรูปภาพ)
Talking Baymax Display สำหรับสำนักงานกุมารแพทย์: “สวัสดี ฉันคือเบย์แม็กซ์ เพื่อนร่วมทางด้านสุขภาพส่วนบุคคลของคุณ” - Baymax ที่สำนักงานกุมารแพทย์ในพื้นที่ของฉัน พวกเขาได้นำกลยุทธ์ที่น่าสนใจมาใช้เพื่อพยายามทำให้สภาพแวดล้อมทางการแพทย์ตึงเครียดน้อยลงและสนุกสนานมากขึ้นสำหรับเด็ก ๆ พวกเขาได้เติมเต็ม e
Pi Zero Talking Radio: 7 ขั้นตอน (พร้อมรูปภาพ)
Pi Zero Talking Radio: นี่คือวิทยุตั้งโต๊ะ DeWald ในช่วงปลายทศวรรษที่ 1940 ที่ฉันสร้างชีวิตใหม่โดยใช้ Raspberry Pi Zero แบบกะพริบตา! แถบ LED และลำโพง PC หนึ่งคู่ โดยจะอ่านการแจ้งเตือนจากบริการต่างๆ ที่เชื่อมต่ออินเทอร์เน็ตโดยใช้ข้อความเป็นคำพูดของ Pyvona (TTS)