สารบัญ:
- ขั้นตอนที่ 1: ส่วนผสม
- ขั้นตอนที่ 2: เชื่อมต่อ Ultrasonic Sensors กับ Octasonic Board
- ขั้นตอนที่ 3: เชื่อมต่อ Logic Level Converter กับ Octasonic Board
- ขั้นตอนที่ 4: เชื่อมต่อ Logic Level Converter กับ Raspberry Pi
- ขั้นตอนที่ 5: เชื่อมต่อ Raspberry Pi 5V กับ Octasonic 5V
- ขั้นตอนที่ 6: ติดตั้งซอฟต์แวร์
- ขั้นตอนที่ 7: สร้างเพลง
- ขั้นตอนที่ 8: การควบคุมท่าทางสัมผัส
- ขั้นตอนที่ 9: การสร้างสิ่งที่แนบมา
- ขั้นตอนที่ 10: การแก้ไขปัญหาและขั้นตอนถัดไป
วีดีโอ: Ultrasonic Pi Piano พร้อมการควบคุมด้วยท่าทางสัมผัส!: 10 ขั้นตอน (พร้อมรูปภาพ)
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:07
โปรเจ็กต์นี้ใช้เซ็นเซอร์อัลตราโซนิก 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
ใช้สายจัมเปอร์หญิง-หญิง 4 เส้นเพื่อเชื่อมต่อเซ็นเซอร์อัลตราโซนิกแต่ละตัวเข้ากับบอร์ด ระวังในการเชื่อมต่อให้ถูกวิธี บอร์ดได้รับการออกแบบเพื่อให้พินอยู่ในลำดับเดียวกับพินบนเซ็นเซอร์อัลตราโซนิก จากซ้ายไปขวาบนบอร์ด พินคือ GND, Trigger, Echo, 5V
ขั้นตอนที่ 3: เชื่อมต่อ 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
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
มีสายสุดท้ายที่จะเพิ่ม เราจำเป็นต้องเพิ่มพลังให้กับบอร์ด 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 ของฉันเพื่อดูโครงการในอนาคต
แนะนำ:
UltraSonic Liquid Level Controller: 6 ขั้นตอน (พร้อมรูปภาพ)
UltraSonic Liquid Level Controller: บทนำ อย่างที่คุณอาจทราบ อิหร่านมีสภาพอากาศแห้งและขาดแคลนน้ำในประเทศของฉัน บางครั้งโดยเฉพาะในฤดูร้อนจะเห็นได้ว่ารัฐบาลมีการตัดน้ำ อพาร์ตเมนต์ส่วนใหญ่มีถังเก็บน้ำ มี 1
เครื่อง ULTRASONIC LEVITATION โดยใช้ ARDUINO: 8 ขั้นตอน (พร้อมรูปภาพ)
ULTRASONIC LEVITATION Machine การใช้ ARDUINO: เป็นเรื่องที่น่าสนใจมากที่ได้เห็นบางสิ่งที่ลอยอยู่ในอากาศหรือในที่ว่าง เช่น ยานอวกาศของมนุษย์ต่างดาว นั่นคือสิ่งที่โครงการต่อต้านแรงโน้มถ่วงเป็นเรื่องเกี่ยวกับ วัตถุ (โดยทั่วไปคือกระดาษแผ่นเล็กๆ หรือเทอร์โมคอล) ถูกวางไว้ระหว่างทรานส
Ultrasonic Sensor Regulable Mount: 9 ขั้นตอน (พร้อมรูปภาพ)
อัลตราโซนิกเซนเซอร์แบบปรับได้: สวัสดี! ฉันคืออเลฮานโดร ฉันอยู่เกรด 8 และเป็นนักเรียนที่สถาบันเทคโนโลยี IITA สำหรับการแข่งขันนี้ ฉันได้สร้างอุปกรณ์จับยึดที่ควบคุมได้สำหรับเซ็นเซอร์อัลตราโซนิกสำหรับวิทยาการหุ่นยนต์ที่สามารถติดตั้งกับหุ่นยนต์โดยตรงหรือกับเซอร์โว และฉัน
Ultrasonic Sound Gun (Parametric Speaker): 3 ขั้นตอน (พร้อมรูปภาพ)
Ultrasonic Sound Gun (Parametric Speaker): สำหรับโครงการนี้ ฉันสร้างปืนที่ยิงลำแสงอัลตราโซนิกที่แคบออกไป เสียงสามารถได้ยินได้เฉพาะคนที่อยู่ในลำแสงแคบๆ หรือผ่านแหล่งกำเนิดเสียงใกล้เคียงเมื่อเสียงถูก demodulated ฉันได้รับแรงบันดาลใจให้สร้างโครงการนี้หลังจากวัด
Arduino Alarm พร้อม Ultrasonic Sensor: 5 ขั้นตอน (พร้อมรูปภาพ)
Arduino Alarm พร้อม Ultrasonic Sensor: คำแนะนำนี้เป็นเรื่องเกี่ยวกับวิธีสร้างอุปกรณ์เตือนภัยที่ง่ายและราคาถูกด้วยตัวเอง สิ่งที่คุณต้องมีคือความรู้พื้นฐานด้านอิเล็กทรอนิกส์และการเขียนโปรแกรม Arduino หากคุณมีคำถามหรือปัญหาใด ๆ คุณสามารถติดต่อฉันได้ที่อีเมลของฉัน: iwx [email protected]ที่นี่