สารบัญ:

บันทึกการเล่นด้วย Raspberry Pi: 7 ขั้นตอน (พร้อมรูปภาพ)
บันทึกการเล่นด้วย Raspberry Pi: 7 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: บันทึกการเล่นด้วย Raspberry Pi: 7 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: บันทึกการเล่นด้วย Raspberry Pi: 7 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: Set Up a 7 Colour E-Ink Display For Raspberry Pi | Inky Impression 5.7" HAT 2024, กรกฎาคม
Anonim
Image
Image
วัสดุที่จำเป็น
วัสดุที่จำเป็น

สวัสดีทุกคน, ในคำแนะนำนี้ ฉันอธิบายว่าฉันสร้างเครื่องบันทึกการเล่นโดยใช้ Raspberry Pi ได้อย่างไร อุปกรณ์นี้เป็นรุ่น Raspberry Pi รุ่น B+ โดยมีปุ่มกด 7 ปุ่มอยู่ด้านบน ลำโพงที่เชื่อมต่อกับพอร์ต USB ของ Pi และไมโครโฟนที่เชื่อมต่อกับพอร์ต USB อื่น แต่ละปุ่มเชื่อมโยงกับเสียง จึงสามารถเล่นเสียงต่างๆ ได้ 7 เสียง เสียงจะเล่นหลังจากกดปุ่มสั้นๆ หากต้องการบันทึกเสียงใหม่ เพียงกดปุ่มค้างไว้นานกว่า 1 วินาที แล้วบันทึกหลังจากเสียงบี๊บ แล้วปล่อยปุ่มเมื่อสิ้นสุดการบันทึก ไม่มีอะไรง่ายไปกว่านี้แล้ว!

ขั้นตอนที่ 1: วัสดุที่จำเป็น

วัสดุที่จำเป็น
วัสดุที่จำเป็น
วัสดุที่จำเป็น
วัสดุที่จำเป็น

สำหรับโครงการนี้ฉันต้องการ:

  • Raspberry Pi รุ่น B+ และการ์ด micro SD - 29.95 $ + 9.95 $
  • กล่องพลาสติก Raspberry Pi - 7.95 $
  • ลำโพง USB - 12.50 $
  • ไมโครโฟน USB - 5.95 $
  • แผ่น Perma-proto ขนาดครึ่ง - 4.50 $
  • 7 ปุ่มกดชั่วขณะ - 2.50 $

ฉันยังต้องการ:

  • สายไฟฟ้าบางส่วน
  • ส่วนหัวเพศหญิงมุมขวา
  • ไม้ สีดำ และกาวบางส่วนสำหรับกล่องกระดุม
  • หัวแร้งและหัวแร้ง

ขั้นตอนที่ 2: ปุ่ม

ปุ่ม
ปุ่ม
ปุ่ม
ปุ่ม
ปุ่ม
ปุ่ม

ปุ่มที่ใช้ค่อนข้างสูง (6 มม.) จึงสามารถทะลุผ่านความหนาของเคสได้

ฉันวางปุ่มทั้ง 7 ปุ่มไว้บนบอร์ด perma-proto ซึ่งเหมือนกับเขียงหั่นขนม ยกเว้นส่วนประกอบที่บัดกรีไว้ สิ่งนี้แข็งแกร่งกว่าเขียงหั่นขนมและราคาถูกกว่าการพิมพ์ pcb แต่ละปุ่มเชื่อมโยงกราวด์กับ GPIO บน Raspberry Pi ฉันไม่มีตัวต้านทานที่นี่เนื่องจาก Pi มีตัวต้านทานแบบดึงขึ้น/ลงภายในอยู่แล้ว ซึ่งจะตั้งค่าไว้ในโปรแกรม ในกรณีนี้ฉันได้ตั้งค่าให้ดึงขึ้น (ดูโปรแกรมด้านล่าง)

วางปุ่มทุกๆ 4 แถวหรือทุกๆ 0.4 นิ้ว

ขั้นตอนที่ 3: กรณีปุ่ม

กรณีปุ่ม
กรณีปุ่ม
กรณีปุ่ม
กรณีปุ่ม
กรณีปุ่ม
กรณีปุ่ม

ฉันทำเคสเรียบง่ายสำหรับกระดุมด้วยแผ่นไม้อัดและเดือยไม้สี่เหลี่ยม ขนาดเดือยต้องใหญ่พอที่จะใส่ฐานปุ่มและบอร์ดได้ แต่เล็กพอที่จะปล่อยให้ปุ่มอยู่ด้านบนสุดของเคสได้ ฉันใช้เดือย 1/4 นิ้ว x 1/4 นิ้ว

หลังจากตรวจสอบให้แน่ใจว่าบอร์ดเข้ากับเคสแล้ว เดือยจะติดกาวเข้ากับแผ่นฐาน จากนั้นเจาะรูบนแผ่นด้านบน (สามารถใช้กระดานทำเครื่องหมายทุกๆ 0.4 นิ้วได้อย่างแม่นยำ) ทาสีชิ้นส่วนไม้ทั้งหมด กระดานวางไว้ในกล่อง และแผ่นด้านบนติดกาวไว้ด้านบน

ขั้นตอนที่ 4: Raspberry Pi

ราสเบอร์รี่ Pi
ราสเบอร์รี่ Pi
ราสเบอร์รี่ Pi
ราสเบอร์รี่ Pi
ราสเบอร์รี่ Pi
ราสเบอร์รี่ Pi

ฉันไม่ต้องการบัดกรีสายไฟโดยตรงกับ Pi ในกรณีที่ฉันต้องการใช้ Pi เพื่ออย่างอื่นในอนาคต ดังนั้นฉันจึงบัดกรีสายไฟเข้ากับส่วนหัวของตัวเมียในมุมฉากและเสียบส่วนหัวของ Pi

GPIO ที่ใช้คือ 21, 26, 20, 19, 13, 6 และ 5 พินกราวด์ก็ใช้เช่นกัน

ไมโครโฟนและลำโพงเสียบเข้ากับพอร์ต usb 2 ใน 4 พอร์ต

Pi ใช้พลังงานจากเต้ารับ micro-usb

ขั้นตอนที่ 5: การเขียนโปรแกรม

ในการเขียนโปรแกรม Pi ฉันเชื่อมต่อกับอินเทอร์เน็ตโดยใช้สายอีเธอร์เน็ต และควบคุมจากคอมพิวเตอร์ระยะไกลโดยใช้โปรแกรมดู VNC อย่างไรก็ตาม คุณไม่สามารถใช้การตั้งค่านี้ในครั้งแรกที่คุณเชื่อมต่อกับ Pi เนื่องจากระบบปฏิบัติการยังไม่ได้ติดตั้งและ SSH ยังไม่สามารถใช้งานได้ ดังนั้น คุณจะต้องเชื่อมต่อหน้าจอ แป้นพิมพ์ และเมาส์ อย่างน้อยในครั้งแรก

การค้นหาคำสั่งเพื่อบันทึกและเล่นเสียงบนการ์ดเสียงที่ถูกต้องค่อนข้างยุ่งยาก นี่คือคำสั่งที่ใช้ได้ผลสำหรับฉัน:

  • aplay -D plughw:CARD=Device_1, DEV=0 0.wav

    เล่น 0.wav

  • arecord 0.wav -D sysdefault:CARD=1 -f cd -d 20

    บันทึกได้สูงสุด 20 วินาทีในไฟล์ 0.wav พร้อมคุณภาพซีดี

ไฟล์เสียงจะอยู่ในไดเร็กทอรีเริ่มต้น (/home/pi) ไฟล์เสียงสำหรับเสียงบี๊บก็จำเป็นเช่นกัน โดยวางไว้ในไดเร็กทอรีเริ่มต้นและเรียกว่า beep.wav

รหัสหลามเองมีดังต่อไปนี้:

รหัสหลามสำหรับเครื่องบันทึกการเล่น Raspberry Pi

นำเข้า RPi. GPIO เป็น GPIO
เวลานำเข้า
นำเข้าระบบปฏิบัติการ
#ตัวแปร:
butPressed = [True, True, True, True, True, True, True]#ถ้าปุ่ม i ถูกกด, butPressed เป็นเท็จ
พิน = [26, 19, 13, 6, 5, 21, 20]#GPIO พินของแต่ละปุ่ม
recordBool = False#True หากบันทึกอยู่ในระหว่างดำเนินการ
GPIO.setmode(GPIO. BCM)
สำหรับฉันอยู่ในช่วง (0, 7):
GPIO.setup(pin, GPIO. IN, pull_up_down=GPIO. PUD_UP)#sets internal resistors ของ Pi เป็นแบบดึงขึ้น
ในขณะที่จริง:
สำหรับฉันอยู่ในช่วง (0, 7):
butPressed = GPIO.input(pin)#ตรวจสอบว่ามีการกดปุ่มหรือไม่
if butPressed == False:#if a button is pressed
เวลาก่อนหน้า = time.time()
ในขณะที่ butPressed == False และ recordBool == False:
butPressed = GPIO.input(พิน)
ถ้า time.time() - PreviousTime > 1.0:# ถ้ากดปุ่มนานกว่าหนึ่งวินาที แล้ว recordBool จะเป็น True
recordBool = จริง
ถ้า recordBool == True:#if recordBool เป็น True จะเล่นเสียงบี๊บแล้วบันทึก
os.system("aplay -D plughw:CARD=Device_1, DEV=0 beep.wav")
os.system("arecord %d.wav -D sysdefault:CARD=1 -f cd -d 20 &" %i)#records สูงสุด 20 วินาทีในไฟล์ i.wav พร้อมคุณภาพซีดี
ในขณะที่ butPressed == เท็จ:
butPressed = GPIO.input(พิน)
os.system("pkill -9 arecord")#บันทึกจะหยุดลงเมื่อปล่อยปุ่มหรือหลังจาก 20 วินาที
recordBool = เท็จ
อื่น:#ถ้า recordBool เป็นเท็จ จะเล่นเสียง i.wav
os.system("aplay -D plughw:CARD=Device_1, DEV=0 %d.wav" %i)
เวลานอน(0.1)

ดูเครื่องบันทึก rawPlayback ที่โฮสต์ด้วย ❤ โดย GitHub

ขั้นตอนที่ 6: เรียกใช้สคริปต์ Python ในการเริ่มต้นแต่ละครั้ง

ในการรันสคริปต์ python เมื่อเริ่มต้น Pi แต่ละครั้ง บรรทัดต่อไปนี้จะถูกใส่ในไฟล์ชื่อ playback.desktop ในโฟลเดอร์ /home/pi/.config/autostart/

รัน play.py เมื่อเริ่มต้น Raspberry Pi

[รายการเดสก์ท็อป]
การเข้ารหัส=UTF-8
Type=Application
ชื่อ=เล่น
ความคิดเห็น=นี่คือแอปพลิเคชันการเล่น
Exec= python /home/pi/playback.py
StartupNotify=false
เทอร์มินัล=จริง
ซ่อน=เท็จ

ดู rawplayback.desktop โฮสต์ด้วย ❤ โดย GitHub

ขั้นตอนที่ 7: ปิดท้ายหมายเหตุ

โปรดบอกฉันว่าคุณคิดอย่างไรกับโครงการนี้ในส่วนความคิดเห็น แจ้งให้เราทราบถึงคำแนะนำของคุณ และโหวตให้ฉันในการประกวด Raspberry Pi หากคุณชอบ

รอคอยที่จะอ่านคุณ!

แนะนำ: