ในช่วงนี้เราจะใช้ราสเบอร์รี่ Pi และฟังก์ชั่ pygame เพื่อให้คณะกรรมการเสียง พูดง่ายๆก็คือเราจะเชื่อมต่อปุ่มไม่กี่ปุ่มกับพิน Raspberry Pi GPIO และเมื่อกดปุ่มเหล่านี้Raspberry Pi จะเล่นไฟล์เสียงที่เก็บไว้ในหน่วยความจำ ไฟล์เสียงเหล่านี้สามารถเล่นทีละไฟล์หรือเล่นพร้อมกันก็ได้ กล่าวอีกนัยหนึ่งคุณสามารถกดปุ่มเดียวหรือหลายปุ่มในเวลาเดียวกัน Raspberry Pi จะเล่นไฟล์เสียงหนึ่งไฟล์หรือหลายไฟล์ในเวลาเดียวกัน ตรวจสอบวิดีโอสาธิตที่ท้ายบทความนี้ ตรวจสอบซีรี่ส์การสอน Raspberry Pi ของเราพร้อมกับโครงการ IoT ที่ดี
เรามี พิน GPIO 26 พินใน Raspberry Piซึ่งสามารถตั้งโปรแกรมได้ซึ่งบางส่วนใช้เพื่อทำหน้าที่พิเศษบางอย่างแล้วเราเหลือ 17 GPIO แต่ละพิน GPIO สามารถส่งหรือวาดได้สูงสุด 15mA และผลรวมของกระแสจาก GPIO ทั้งหมดต้องไม่เกิน 50mA ดังนั้นเราจึงสามารถวาดค่าเฉลี่ยสูงสุด 3mA จากพิน GPIO เหล่านี้ เราจะใช้ตัวต้านทานเพื่อ จำกัด การไหลของกระแส เรียนรู้เพิ่มเติมเกี่ยวกับ GPIO Pins และปุ่มเชื่อมต่อกับ Raspberry Pi ที่นี่
ส่วนประกอบที่ต้องการ:
ที่นี่เราจะใช้ ราสเบอร์รี่ Pi 2 รุ่น B กับ Raspbian Jessie OS ข้อกำหนดฮาร์ดแวร์และซอฟต์แวร์พื้นฐานทั้งหมดได้กล่าวไว้ก่อนหน้านี้คุณสามารถค้นหาได้ในบทนำ Raspberry Pi และ Raspberry PI LED กะพริบเพื่อเริ่มต้นใช้งานนอกเหนือจากที่เราต้องการ:
- Raspberry Pi พร้อมระบบปฏิบัติการที่ติดตั้งไว้ล่วงหน้า
- แหล่งจ่ายไฟ
- ลำโพง
- ตัวต้านทาน1KΩ (6 ชิ้น)
- ปุ่มกด (6 ชิ้น)
- ตัวเก็บประจุ 1000uF
คำอธิบายการทำงาน:
ที่นี่เราจะเล่นเสียงโดยใช้ปุ่มกับราสเบอร์รี่ Pi เราใช้ปุ่มกด 6 ปุ่มเพื่อเล่นไฟล์เสียง 6 ไฟล์ เราสามารถเพิ่มปุ่มและไฟล์เสียงเพื่อขยายบอร์ดนี้เพื่อสร้างรูปแบบที่สวยงามยิ่งขึ้นโดยการกดปุ่มเหล่านี้ ก่อนที่จะอธิบายเพิ่มเติมให้ทำตามขั้นตอนด้านล่างนี้
1. ก่อนอื่นให้ดาวน์โหลดไฟล์เสียง 6 ไฟล์จากลิงค์ด้านล่างหรือคุณสามารถใช้ไฟล์เสียงของคุณได้ แต่คุณต้องเปลี่ยนชื่อไฟล์ใน Code
ดาวน์โหลดไฟล์เสียงจากที่นี่
2. สร้างโฟลเดอร์ใหม่บนหน้าจอเดสก์ท็อป Raspberry Pi และตั้งชื่อว่า“ PI SOUND BOARD”
3. แตกไฟล์เสียงที่ดาวน์โหลดมาไว้ในโฟลเดอร์ที่เราสร้างไว้บนเดสก์ท็อปในขั้นตอนก่อนหน้า
4. เปิดหน้าต่างเทอร์มินัลใน Raspberry Pi แล้วป้อนคำสั่งด้านล่าง:
sudo amixer cset numid = 3 1
คำสั่งนี้บอกให้ PI ให้เอาต์พุตเสียงผ่านแจ็คเสียง 3.5 มม. บนบอร์ด
หากคุณต้องการเอาต์พุตเสียงจากพอร์ต HDMI คุณสามารถใช้คำสั่งด้านล่าง:
$ sudo amixer cset numid = 3 2
5. เชื่อมต่อลำโพงเข้ากับแจ็คเอาต์พุตเสียง 3.5 มม. บนบอร์ด Raspberry Pi
6. สร้างไฟล์ PYTHON (นามสกุล *.py) และบันทึกไว้ในโฟลเดอร์เดียวกัน ตรวจสอบบทช่วยสอนนี้เพื่อสร้างและเรียกใช้โปรแกรม Python ใน Raspberry Pi
7. เครื่องผสม Pygameจะถูกติดตั้งโดยค่าเริ่มต้นในระบบปฏิบัติการ หากโปรแกรมหลังจากดำเนินการแล้วไม่เรียกใช้ PYMIXER ให้อัปเดต OS ของ Raspberry Pi โดยป้อนคำสั่งด้านล่างในหน้าต่างเทอร์มินัล ตรวจสอบให้แน่ใจว่า Pi เชื่อมต่อกับอินเทอร์เน็ต
อัปเดต sudo apt-get
รอสักครู่เพื่อให้ OS อัปเดต
ตอนนี้เชื่อมต่อทุกองค์ประกอบตามแผนภาพวงจรที่ระบุด้านล่างคัดลอกโปรแกรม PYHTON ลงในไฟล์ PYHTON ที่สร้างขึ้นบนเดสก์ท็อปและในที่สุดก็กด run เพื่อเล่นไฟล์เสียงผ่านปุ่ม โปรแกรมหลามจะได้รับในตอนท้ายด้วยการสาธิตวิดีโอ
แผนภูมิวงจรรวม:
คำอธิบายการเขียนโปรแกรม:
ที่นี่เราได้สร้างโปรแกรม Pythonเพื่อเล่นไฟล์เสียงตามการกดปุ่ม ที่นี่เราต้องเข้าใจคำสั่งเล็กน้อยซึ่งเราใช้ในโปรแกรม
นำเข้า RPi.GPIO เป็น IO
เรากำลังจะนำเข้าไฟล์ GPIO จากไลบรารีคำสั่งด้านบนช่วยให้เราสามารถตั้งโปรแกรมพิน GPIO ของ PI ได้ นอกจากนี้เรายังเปลี่ยนชื่อ "GPIO" เป็น "IO" ดังนั้นในโปรแกรมเมื่อใดก็ตามที่เราต้องการอ้างถึงพิน GPIO เราจะใช้คำว่า 'IO'
IO.setwarnings (เท็จ)
บางครั้งเมื่อพิน GPIO ที่เราพยายามจะใช้อาจทำหน้าที่อื่น ๆ จากนั้นคุณจะได้รับคำเตือนเมื่อใดก็ตามที่คุณดำเนินการโปรแกรม คำสั่งนี้บอกให้ Raspberry Pi ละเว้นคำเตือนและดำเนินการกับโปรแกรม
IO.setmode (IO.BCM)
ที่นี่เราจะอ้างถึงพิน i / o ของ PI ตามชื่อฟังก์ชัน ดังนั้นเราจึงเขียนโปรแกรมหมายเลขพิน GPIO ด้วย BCM ซึ่งช่วยให้เราสามารถเรียก PIN ด้วยหมายเลขพิน GPIO ได้ เหมือนกับเราสามารถเรียก PIN39 เป็น GPIO19 ในโปรแกรมได้
นำเข้า pygame.mixer
เรากำลังเรียกpygame mixerเพื่อเล่นไฟล์เสียง
audio1 = pygame.mixer.Sound ("buzzer.wav")
เรากำลังเรียกหาไฟล์เสียง 'buzzer.wav' ที่เก็บไว้ในโฟลเดอร์เดสก์ท็อป หากคุณต้องการเล่นไฟล์อื่น ๆ เพียงแค่เปลี่ยนชื่อไฟล์เสียงในฟังก์ชันที่ให้ไว้ด้านบน คุณสามารถตั้งชื่อไฟล์ที่มีอยู่ในโฟลเดอร์เดสก์ท็อป
channel1 = pygame.mixer.Channel (1)
ที่นี่เรากำลังตั้งค่าช่องสำหรับแต่ละปุ่มเพื่อให้เราสามารถเล่นไฟล์เสียงทั้งหมดพร้อมกันได้
ถ้า (IO.input (21) == 0): channel1.play (audio1)
ในกรณีที่เงื่อนไขใน คำสั่ง if เป็นจริงคำสั่งด้านล่างจะดำเนินการครั้งเดียว ดังนั้นหาก GPIO ขา 21 ไปต่ำหรือสายดินแล้วมันจะเล่นไฟล์เสียงที่ได้รับมอบหมายให้ AUDIO1 ตัวแปร ตามแผนภาพวงจรเราจะเห็นว่า GPIO พิน 21 อยู่ในระดับต่ำเมื่อเรากดปุ่มแรก ดังนั้นเราจึงสามารถเล่นไฟล์เสียงใดก็ได้โดยกดปุ่มที่เกี่ยวข้อง
ในขณะที่ 1: ใช้เป็นลูปตลอดไปด้วยคำสั่งนี้คำสั่งภายในลูปนี้จะดำเนินการอย่างต่อเนื่อง
คุณสามารถทำการเปลี่ยนแปลงโปรแกรมหลามที่จะทำให้ความพึงพอใจมากที่สุดคณะกรรมการเสียงกับราสเบอร์รี่ Pi คุณยังสามารถเพิ่มปุ่มต่างๆเพื่อทำให้สิ่งต่างๆน่าสนใจยิ่งขึ้นและเล่นไฟล์เสียงได้มากขึ้น