สารบัญ:

Ultrasonic Pi Piano พร้อมการควบคุมด้วยท่าทางสัมผัส!: 10 ขั้นตอน (พร้อมรูปภาพ)
Ultrasonic Pi Piano พร้อมการควบคุมด้วยท่าทางสัมผัส!: 10 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: Ultrasonic Pi Piano พร้อมการควบคุมด้วยท่าทางสัมผัส!: 10 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: Ultrasonic Pi Piano พร้อมการควบคุมด้วยท่าทางสัมผัส!: 10 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: สอนการตั้งค่าโทรศัพท์ TECNO SPARK#ปรับDPI#ฝากติดตามด้วยนะครับ 2024, พฤศจิกายน
Anonim
Image
Image
Ultrasonic Pi Piano พร้อมการควบคุมด้วยท่าทาง!
Ultrasonic Pi Piano พร้อมการควบคุมด้วยท่าทาง!

โปรเจ็กต์นี้ใช้เซ็นเซอร์อัลตราโซนิก HC-SR04 ราคาไม่แพงเป็นอินพุตและสร้างโน้ต MIDI ที่สามารถเล่นผ่านซินธิไซเซอร์บน Raspberry Pi เพื่อให้ได้เสียงคุณภาพสูง

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

วิดีโอด้านบนแสดงผลิตภัณฑ์สำเร็จรูปในกล่องหุ้มด้วยเลเซอร์แบบเรียบง่าย มีวิดีโอเชิงลึกเพิ่มเติมในคำแนะนำนี้ซึ่งอธิบายวิธีการทำงานของโครงการ

ฉันสร้างโปรเจ็กต์นี้ร่วมกับ The Gizmo Dojo (พื้นที่ผู้ผลิตในพื้นที่ของฉันในบรูมฟิลด์ รัฐโคโลราโด) เพื่อสร้างนิทรรศการเชิงโต้ตอบที่เราสามารถนำไปที่งาน STEM/STEAM ในท้องถิ่นและงาน Maker Faires

โปรดตรวจสอบเอกสารและบทช่วยสอนล่าสุดที่ https://theotherandygrove.com/octasonic/ ซึ่งขณะนี้มีข้อมูลเกี่ยวกับเวอร์ชัน Python ของโครงการนี้ (คำแนะนำนี้เขียนขึ้นสำหรับเวอร์ชัน Rust)

ขั้นตอนที่ 1: ส่วนผสม

สำหรับคำแนะนำนี้ คุณจะต้องมีส่วนผสมดังต่อไปนี้:

  • Raspberry Pi (2 หรือ 3) พร้อมการ์ด SD
  • 8 HC-SR04 เซ็นเซอร์อัลตราโซนิก
  • คณะกรรมการฝ่าวงล้อม Octasonic
  • ตัวแปลงระดับลอจิกแบบสองทิศทาง
  • สายจัมเปอร์หญิง-หญิง 32 x 12" สำหรับเชื่อมต่อเซ็นเซอร์อัลตราโซนิก
  • สายจัมเปอร์หญิง-หญิง 13 x 6" สำหรับเชื่อมต่อ Raspberry Pi, Octasonic และ Logic Level Converter
  • แหล่งจ่ายไฟที่เหมาะสมสำหรับ Raspberry Pi
  • ลำโพง PC หรือใกล้เคียง

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

เซ็นเซอร์อัลตราโซนิก HC-SR04 มีการเชื่อมต่อ 4 แบบ ได้แก่ 5V, GND, Trigger และ Echo โดยทั่วไปแล้ว Trigger และ Echo จะเชื่อมต่อกับพินแยกกันบนไมโครคอนโทรลเลอร์หรือ Raspberry Pi แต่นั่นหมายความว่าคุณจะต้องใช้ 16 พินเพื่อเชื่อมต่อเซ็นเซอร์ 8 ตัว ซึ่งวิธีนี้ใช้ไม่ได้ผล นี่คือที่มาของบอร์ดฝ่าวงล้อม Octasonic บอร์ดนี้เชื่อมต่อกับเซ็นเซอร์ทั้งหมดและมีไมโครคอนโทรลเลอร์เฉพาะที่ตรวจสอบเซ็นเซอร์แล้วสื่อสารกับ Raspberry Pi ผ่าน SPI

HC-SR04 ต้องการ 5V และ Raspberry Pi เพียง 3.3V ดังนั้นเราจึงต้องการตัวแปลงระดับลอจิกที่จะเชื่อมต่อ Raspberry Pi กับบอร์ดฝ่าวงล้อม Octasonic

ขั้นตอนที่ 2: เชื่อมต่อ Ultrasonic Sensors กับ Octasonic Board

เชื่อมต่อ Ultrasonic Sensors กับ Octasonic Board
เชื่อมต่อ Ultrasonic Sensors กับ Octasonic Board
เชื่อมต่อ Ultrasonic Sensors กับ Octasonic Board
เชื่อมต่อ Ultrasonic Sensors กับ Octasonic Board

ใช้สายจัมเปอร์หญิง-หญิง 4 เส้นเพื่อเชื่อมต่อเซ็นเซอร์อัลตราโซนิกแต่ละตัวเข้ากับบอร์ด ระวังในการเชื่อมต่อให้ถูกวิธี บอร์ดได้รับการออกแบบเพื่อให้พินอยู่ในลำดับเดียวกับพินบนเซ็นเซอร์อัลตราโซนิก จากซ้ายไปขวาบนบอร์ด พินคือ GND, Trigger, Echo, 5V

ขั้นตอนที่ 3: เชื่อมต่อ Logic Level Converter กับ Octasonic Board

เชื่อมต่อ Logic Level Converter กับ Octasonic Board
เชื่อมต่อ Logic Level Converter กับ Octasonic Board

Raspberry Pi และ Octasonic Board สื่อสารผ่าน SPI SPI ใช้ 4 สาย:

  • มาสเตอร์อิน สเลฟเอาท์ (มิโซะ)
  • มาสเตอร์เอาท์, สเลฟอิน (MOSI)
  • นาฬิกาอนุกรม (SCK)
  • เลือกทาส (SS)

นอกจากนี้ เราจำเป็นต้องเชื่อมต่อพลังงาน (5V และ GND)

ตัวแปลงระดับลอจิกมีสองด้าน - แรงดันต่ำ (LV) และแรงดันสูง (HV) Raspberry จะเชื่อมต่อกับด้าน LV เนื่องจากเป็น 3.3V Octasonic จะเชื่อมต่อกับด้าน HV เนื่องจากเป็น 5V

ขั้นตอนนี้ใช้สำหรับเชื่อมต่อ Octasonic กับด้าน HV ของตัวแปลงระดับลอจิก

ดูรูปภาพที่แนบมากับขั้นตอนนี้ซึ่งแสดงให้เห็นว่าหมุดใดควรเชื่อมต่อกับตัวแปลงระดับลอจิก

การเชื่อมต่อจากตัวแปลง Octasonic เป็น Logic Level ควรเป็นดังนี้:

  • 5V เป็น HV
  • SCK เป็น HV4
  • MISO เป็น HV3
  • MOSI เป็น HV2
  • SS เป็น HV1
  • GND เป็น GND

ขั้นตอนที่ 4: เชื่อมต่อ Logic Level Converter กับ Raspberry Pi

เชื่อมต่อ Logic Level Converter กับ Raspberry Pi
เชื่อมต่อ Logic Level Converter กับ Raspberry Pi

Raspberry Pi และ Octasonic Board สื่อสารผ่าน SPI SPI ใช้ 4 สาย:

  • มาสเตอร์อิน สเลฟเอาท์ (มิโซะ)
  • มาสเตอร์เอาท์, สเลฟอิน (MOSI)
  • นาฬิกาอนุกรม (SCK)
  • เลือกทาส (SS)

นอกจากนี้ เราจำเป็นต้องเชื่อมต่อพลังงาน (3.3V และ GND) ตัวแปลงระดับลอจิกมีสองด้าน - แรงดันต่ำ (LV) และแรงดันสูง (HV) Raspberry จะเชื่อมต่อกับด้าน LV เนื่องจากเป็น 3.3V Octasonic จะเชื่อมต่อกับด้าน HV เนื่องจากเป็น 5V

ขั้นตอนนี้ใช้สำหรับเชื่อมต่อ Raspberry Pi กับด้าน LV ของตัวแปลงระดับลอจิก

การเชื่อมต่อจาก Raspbery Pi ไปยังตัวแปลงระดับลอจิกควรเป็นดังนี้:

  • 3.3V เป็น LV
  • GPIO11 (SPI_SCLK) เป็น LV4
  • GPIO09 (SPI_MISO) เป็น LV3
  • GPIO10 (SPI_MOSI) เป็น LV2
  • GPIO08 (SPI_CE0_N) SS เป็น LV1
  • GND เป็น GND

ใช้ไดอะแกรมที่แนบมากับขั้นตอนนี้เพื่อค้นหาพินที่ถูกต้องบน Raspberry Pi!

ขั้นตอนที่ 5: เชื่อมต่อ Raspberry Pi 5V กับ Octasonic 5V

เชื่อมต่อ Raspberry Pi 5V กับ Octasonic 5V
เชื่อมต่อ Raspberry Pi 5V กับ Octasonic 5V
เชื่อมต่อ Raspberry Pi 5V กับ Octasonic 5V
เชื่อมต่อ Raspberry Pi 5V กับ Octasonic 5V

มีสายสุดท้ายที่จะเพิ่ม เราจำเป็นต้องเพิ่มพลังให้กับบอร์ด Octasonic ด้วย 5V ดังนั้นเราจึงทำโดยเชื่อมต่อพิน Raspberry Pi 5V ตัวใดตัวหนึ่งเข้ากับพิน 5V บนส่วนหัว Octasonic AVR นี่คือพินซ้ายล่างในบล็อกส่วนหัว AVR (นี่คือบล็อก 2 x 3 ที่ด้านบนขวาของบอร์ด) ดูภาพที่แนบมาซึ่งแสดงว่าบล็อก AVR อยู่ที่ไหน

ดูแผนภาพที่แนบมาอื่น ๆ เพื่อค้นหาพิน 5V บน Raspberry Pi

ขั้นตอนที่ 6: ติดตั้งซอฟต์แวร์

ติดตั้ง Raspian

เริ่มต้นด้วยการติดตั้ง Raspbian Jessie ใหม่ทั้งหมด จากนั้นอัปเดตเป็นเวอร์ชันล่าสุด:

sudo apt-get update

sudo apt-get อัพเกรด

เปิดใช้งาน SPI

คุณต้องเปิดใช้งาน SPI บน Raspberry Pi เพื่อให้โครงการนี้ทำงานได้! ใช้ยูทิลิตี้ Raspberry Pi Configuration เพื่อทำสิ่งนี้

สิ่งสำคัญคือต้องรีบูต Pi หลังจากเปิดใช้งาน SPI เพื่อให้มีผล

ติดตั้ง FluidSynth

Fluidsynth เป็นซอฟต์แวร์สังเคราะห์ MIDI ฟรีที่น่าทึ่ง คุณสามารถติดตั้งได้จากบรรทัดคำสั่งด้วยคำสั่งนี้:

sudo apt-get ติดตั้ง fluidsynth

ติดตั้ง Rust Programming Language

Ultrasonic Pi Piano ถูกนำมาใช้ในภาษาการเขียนโปรแกรม Rust จาก Mozilla (เหมือนกับ C ++ แต่ไม่มีบิตที่ไม่ดี) เป็นสิ่งที่เด็กๆ เจ๋งๆ ใช้กันทุกวันนี้

ทำตามคำแนะนำที่ https://rustup.rs/ เพื่อติดตั้ง Rust เพื่อประหยัดเวลาของคุณ คำแนะนำคือการรันคำสั่งเดียวนี้ คุณสามารถยอมรับคำตอบเริ่มต้นสำหรับคำถามใดๆ ระหว่างการติดตั้ง

หมายเหตุ: เนื่องจากการโพสต์คำแนะนำนี้ มีปัญหาบางอย่างในการติดตั้ง Rust บน Raspberry Pi เวลาไม่ดี:-/ แต่ฉันได้แก้ไขคำสั่งด้านล่างเพื่อแก้ไขปัญหา หวังว่าพวกเขาจะแก้ไขปัญหานี้ในไม่ช้า ฉันกำลังสร้างภาพที่ผู้คนสามารถดาวน์โหลดและเบิร์นลงในการ์ด SD ได้ หากคุณต้องการที่โปรดติดต่อฉัน

ส่งออก RUSTUP_USE_HYPER=1curl https://sh.rustup.rs -sSf | NS

ดาวน์โหลดซอร์สโค้ด Ultrasonic Pi Piano

ซอร์สโค้ดสำหรับซอร์สโค้ด Ultrasonic Pi Piano ถูกโฮสต์บน GitHub มีสองตัวเลือกในการรับรหัส หากคุณคุ้นเคยกับ git และ github คุณสามารถโคลน repo ได้:

โคลน git [email protected]:TheGizmoDojo/UltrasonicPiPiano.git

หรือคุณสามารถดาวน์โหลดไฟล์ซิปของรหัสล่าสุด

รวบรวมซอร์สโค้ด

cd UltrasonicPiPiano

การสร้างสินค้า -- ปล่อย

ทดสอบรหัส

ก่อนที่เราจะเริ่มทำเพลงในขั้นตอนต่อไป ให้ตรวจสอบให้แน่ใจว่าซอฟต์แวร์ทำงานและเราสามารถอ่านข้อมูลที่ถูกต้องจากเซ็นเซอร์ได้

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

ขนส่งสินค้า -- ปล่อย

หากคุณสงสัย แฟล็ก "--release" จะบอกให้ Rust คอมไพล์โค้ดอย่างมีประสิทธิภาพมากที่สุด ตรงข้ามกับการตั้งค่าเริ่มต้น "--debug"

ขั้นตอนที่ 7: สร้างเพลง

ตรวจสอบให้แน่ใจว่าคุณยังอยู่ในไดเร็กทอรีที่คุณดาวน์โหลดซอร์สโค้ดและเรียกใช้คำสั่งต่อไปนี้

สคริปต์ "run.sh" นี้ทำให้แน่ใจว่าโค้ดได้รับการคอมไพล์แล้ว จากนั้นรันโค้ด โดยไพพ์เอาต์พุตไปยัง fluidsynth

./run.sh

ตรวจสอบให้แน่ใจว่าคุณมีลำโพงขยายเสียงที่เชื่อมต่อกับแจ็คเสียง 3.5 มม. บน Raspberry Pi และคุณควรได้ยินเสียงเพลงขณะขยับมือเหนือเซ็นเซอร์

หากคุณไม่ได้ยินเสียงเพลงและติดจอภาพ HDMI แสดงว่าเอาต์พุตเสียงอาจอยู่ที่นั่นแทน ในการแก้ไขปัญหานี้ เพียงเรียกใช้คำสั่งนี้แล้วเริ่ม Pi Piano ใหม่:

sudo amixer cset numid=3 1

การเปลี่ยนระดับเสียง

ระดับเสียง (หรือ "เกน") ถูกระบุด้วยพารามิเตอร์ "-g" เป็นของเหลวสังเคราะห์ คุณสามารถแก้ไขสคริปต์ run.sh และเปลี่ยนค่านี้ได้ โปรดทราบว่าการเปลี่ยนแปลงเล็กน้อยในพารามิเตอร์นี้ส่งผลให้เกิดการเปลี่ยนแปลงปริมาณมาก ดังนั้นให้ลองเพิ่มจำนวนเล็กน้อย (เช่น 0.1 หรือ 0.2)

ขั้นตอนที่ 8: การควบคุมท่าทางสัมผัส

ดูวิดีโอที่แนบมากับขั้นตอนนี้เพื่อสาธิตโครงการทั้งหมด รวมทั้งวิธีการทำงานของการควบคุมด้วยท่าทางสัมผัส

แนวคิดนี้ง่ายมาก ซอฟต์แวร์จะติดตามว่าเซ็นเซอร์ตัวใดที่ครอบคลุม (ภายใน 10 ซม.) และเซ็นเซอร์ใดที่ไม่ครอบคลุม ซึ่งแปลเป็นเลขฐานสอง 8 ตัว (1 หรือ 0) สะดวกมาก เนื่องจากลำดับเลขฐานสอง 8 ตัวจะสร้าง "ไบต์" ซึ่งสามารถแทนตัวเลขระหว่าง 0 ถึง 255 หากคุณไม่ทราบเกี่ยวกับเลขฐานสองอยู่แล้ว เราขอแนะนำให้คุณค้นหาบทช่วยสอน ตัวเลขไบนารีเป็นทักษะพื้นฐานในการเรียนรู้หากคุณต้องการเรียนรู้เพิ่มเติมเกี่ยวกับการเขียนโปรแกรม

ซอฟต์แวร์จะจับคู่สถานะปัจจุบันของเซ็นเซอร์เป็นไบต์เดียวแทนท่าทางสัมผัสปัจจุบัน หากตัวเลขนั้นเท่าเดิมเป็นเวลาหลายรอบ ซอฟต์แวร์ก็จะทำงานตามท่าทางนั้น

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

ขั้นตอนที่ 9: การสร้างสิ่งที่แนบมา

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

ขั้นตอนที่ 10: การแก้ไขปัญหาและขั้นตอนถัดไป

การแก้ไขปัญหา

หากโปรเจ็กต์ไม่ทำงาน ก็มักจะเกิดจากข้อผิดพลาดในการเดินสาย ใช้เวลาของคุณเพื่อตรวจสอบการเชื่อมต่อทั้งหมดอีกครั้ง

ปัญหาทั่วไปอีกประการหนึ่งคือไม่สามารถเปิดใช้งาน SPI และรีบูต pi ได้

โปรดไปที่ https://theotherandygrove.com/octasonic/ สำหรับเอกสารฉบับเต็ม รวมถึงคำแนะนำในการแก้ปัญหา พร้อมบทความเฉพาะของ Rust และ Python และข้อมูลเกี่ยวกับวิธีการขอรับการสนับสนุน

ขั้นตอนถัดไป

เมื่อคุณทำโปรเจ็กต์ได้แล้ว ฉันแนะนำให้ทดลองโค้ดและลองใช้เครื่องดนตรีชนิดต่างๆ รหัสเครื่องมือ MIDI อยู่ระหว่าง 1 ถึง 127 และบันทึกไว้ที่นี่

คุณต้องการเครื่องดนตรีชิ้นเดียวที่มีเซ็นเซอร์แต่ละตัวเล่นอ็อกเทฟต่างกันหรือไม่? บางทีคุณอาจต้องการให้เซ็นเซอร์แต่ละตัวเป็นเครื่องมือแยกต่างหากแทน? ความเป็นไปได้แทบจะไร้ขีดจำกัด!

ฉันหวังว่าคุณจะสนุกกับคำแนะนำนี้ โปรดชอบมันถ้าคุณทำและอย่าลืมสมัครรับข้อมูลที่นี่และช่อง YouTube ของฉันเพื่อดูโครงการในอนาคต

แนะนำ: