สารบัญ:
- เสบียง
- ขั้นตอนที่ 1: กรณีและเค้าโครงของส่วนประกอบ
- ขั้นตอนที่ 2: สวิตช์ตรวจจับเสียงสเตอริโอ
- ขั้นตอนที่ 3: กล่องซุปเปอร์ตัวเก็บประจุ
- ขั้นตอนที่ 4: การประกอบและการใช้พอร์ต USB
- ขั้นตอนที่ 5: ซอฟต์แวร์และระบบปฏิบัติการ
วีดีโอ: PAB: กล่องเครื่องเสียงส่วนบุคคล: 5 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:04
แนวคิดสำหรับโครงการนี้เกิดจากความจำเป็นในการขูดส่วนประกอบขนาดใหญ่สามส่วนของระบบไฮไฟ ซึ่งขณะนี้ได้สิ้นสุดอายุขัยแล้ว นอกจากนี้ ฉันต้องการพื้นที่มากขึ้นในชั้นวางสำหรับสิ่งของอื่นๆ ดังนั้นฉันจึงใช้โอกาสนี้เริ่มเรียนที่ Personal Audio Box เพื่อแทนที่ฟังก์ชันทั้งหมดของ "ยักษ์" โบราณทั้งสามตัว
Raspberry Pi3B+ ดูเหมือนจะเป็นตัวเลือกที่ดีที่สุดด้วยเหตุผลเหล่านี้:
- ฟอร์มแฟกเตอร์ขนาดเล็กและใช้พลังงานต่ำ
- เอาต์พุตเสียง PCM ที่มีคุณภาพที่ยอมรับได้
- ความพร้อมใช้งานของ mopidy ซึ่งเป็นเซิร์ฟเวอร์เพลงที่ขยายได้ซึ่งใช้โปรโตคอล mpd
- แหล่งรวมสูง: เพลงท้องถิ่น, CDROM, สตรีมวิทยุ, Spotify, Tunein ฯลฯ
เมื่อรวมเข้ากับส่วนประกอบอื่นๆ ไม่กี่อย่าง ฉันสามารถสร้างระบบที่สมบูรณ์และไร้สมอง สามารถเล่นเพลงจากซีดี ไฟล์ในเครื่อง วิทยุออนไลน์ เพลย์ลิสต์ Spotify และพอดแคสต์ และด้วยการใช้ส่วนหน้า ตอนนี้ฉันสามารถจัดการการทำงานทั้งหมดจากอุปกรณ์ใดๆ ที่เชื่อมต่อกับ LAN (สมาร์ทโฟน คอมพิวเตอร์ แท็บเล็ต)
เสบียง
- ราสเบอร์รี่ PI3B+
- กล่องดีวีดีเก่า
- เครื่องอ่านซีดีรอม
- แหล่งจ่ายไฟ 5v-5A
- ตัวเก็บประจุยิ่งยวด
- ส่วนประกอบต่างๆ (ทรานซิสเตอร์, LED, รีเลย์, Op-Amp): ดูรายละเอียดโครงการ
ขั้นตอนที่ 1: กรณีและเค้าโครงของส่วนประกอบ
ปัญหาแรกที่ฉันพบคือการเลือกและค้นหากรณีที่เหมาะสม ไม่พบอะไรเลยที่บ้าน ฉันพบเครื่องเล่นดีวีดีราคาถูกใน Amazon ในราคาไม่กี่ดอลลาร์ แต่สิ่งที่คล้ายกันจะดีพอ ขนาดตัวเรือน 27 ซม. x 20 ซม. x 3.5 ซม.
ฉันลบเนื้อหาทั้งหมดออกโดยสมบูรณ์ โดยเหลือไว้เพียงบอร์ดขนาดเล็กสำหรับจัดการไฟ LED ด้านหน้า ปุ่มเปิดปิด และอินพุต USB จากนั้นฉันวางแผนเค้าโครงภายในสำหรับส่วนประกอบใหม่ (ดูรูป)
ขั้นตอนที่ 2: สวิตช์ตรวจจับเสียงสเตอริโอ
ทำไมต้องเปลี่ยนเสียงอัตโนมัติ? ความต้องการเกิดขึ้นจากการที่ฉันมักจะฟังทีวีผ่านเครื่องขยายเสียงไฮไฟ แต่ฉันไม่ต้องการเลือกสวิตช์แหล่งสัญญาณบนเครื่องขยายเสียงทุกครั้ง ด้วยวงจรนี้ อินพุตของเครื่องขยายเสียงจะเหมือนกันเสมอ และแหล่งสัญญาณจะถูกเลือกโดยอัตโนมัติโดยสวิตช์ Audio Stereo Sensing
แผนผังเป็นแบบตรงไปตรงมา เมื่อไม่ได้เล่น PAB แหล่งกำเนิดเสียงไปยังไฮไฟจะมาจากทีวี หาก PAB เล่น รีเลย์จะเลือกเสียงจาก Raspberry
ขั้นตอนที่ 3: กล่องซุปเปอร์ตัวเก็บประจุ
ดังที่ทราบกันดีอยู่แล้วว่าการหยุดจ่ายไฟของ Raspberry อย่างกะทันหันทำให้ Raspberry ปิดเครื่องทันทีโดยไม่ต้องดำเนินการตามขั้นตอนการปิดเครื่อง เสี่ยงต่อการประนีประนอมระบบปฏิบัติการและฟังก์ชันการทำงานทั้งหมด supercapacitor แตกต่างจากตัวเก็บประจุแบบเดิมในสองลักษณะสำคัญ: แผ่นของมันมีพื้นที่ขนาดใหญ่กว่าจริง ๆ และระยะห่างระหว่างพวกมันน้อยกว่ามาก เนื่องจากฉนวนแบบสอดทำงานแตกต่างจากไดอิเล็กตริกทั่วไป ด้วยเทคนิคเหล่านี้ ตัวเก็บประจุที่มีความจุสูงมาก (ตามลำดับหลายสิบ Farads) สามารถสร้างได้ในขณะที่ยังคงรักษาขนาดเล็กไว้ แนวคิดคือการสร้าง "บัฟเฟอร์" 5v ผ่าน supercapacitors และเพื่อเปิดใช้งานการปิดระบบเมื่อตรวจพบว่าไม่มีแรงดันไฟฟ้า ด้วยวิธีนี้ คุณไม่จำเป็นต้องเข้าไปยุ่งเกี่ยวกับการเริ่มต้นการปิดระบบด้วยตนเองอีกต่อไป แต่เพียงแค่ถอดปลั๊ก (หรือเปิดใช้งานสวิตช์) เพื่อให้แน่ใจว่าการปิดระบบนั้นปลอดภัย
อ้างอิงจากแผนผัง แหล่งจ่ายไฟถูกนำไปใช้กับขั้วต่อด้านซ้าย และไดโอด Schottky จะป้องกันการส่งคืนกระแสไฟฟ้าไปยังแหล่งจ่ายไฟ ตัวต้านทานกำลัง 1.2Ω 5W สองตัวแบบขนานจะจำกัดกระแสประจุของตัวเก็บประจุยิ่งยวด เพื่อป้องกันแหล่งจ่ายไฟ หากไม่มีตัวต้านทานเหล่านี้ กระแสไฟสูงสุดที่ตัวเก็บประจุยิ่งยวดที่ปล่อยออกมาทั้งสองต้องการนั้นเกือบจะสามารถสร้างความเสียหายให้กับแหล่งจ่ายไฟได้อย่างแน่นอน พาวเวอร์ไดโอดจะต้องเป็นประเภท Schottky เพื่อที่จะแทรกแรงดันตกคร่อมขั้นต่ำในอนุกรมด้วยแถบ 5V
ตัวเก็บประจุยิ่งยวดสองตัวเชื่อมต่อเป็นอนุกรมเพื่อให้แน่ใจว่าแรงดันไฟสูงสุดที่ 5.4 โวลต์ที่ปลายของมัน (ตัวเก็บประจุยิ่งยวดแต่ละตัวคือ 10F, 2.7V) และตัวต้านทานสองตัวขนานกับความจุจะปรับสมดุลกระแสการชาร์จและรับประกันการคายประจุช้าเมื่อเปิด Raspberry ปิด. ตัวต้านทาน1KΩสองตัวขนานกับอินพุตแบ่ง 5V ของแหล่งจ่ายไฟออกเป็นครึ่งหนึ่งเพื่อรับสัญญาณที่จำเป็นในการตรวจจับไฟฟ้าขัดข้อง (เชื่อมต่อกับ Raspberry GPIO 7) ซึ่งแตกต่างจากเซลล์ลิเธียมสมัยใหม่ ตัวเก็บประจุยิ่งยวดรับประกันจำนวนรอบการชาร์จและการคายประจุที่แทบไม่สิ้นสุด โดยไม่สูญเสียคุณสมบัติใดๆ
วงจรจึงสามารถให้ Raspberry ขับเคลื่อนและทำงานได้ตามเวลาที่จำเป็นในการปิดระบบตามปกติ การเริ่มต้นกระบวนการปิดระบบจะตรวจพบโดยโปรแกรมที่ทำงานบน Raspberry ซึ่งจะตรวจสอบสถานะของ GPIO 7 ที่ระดับพลังงานเชื่อมต่ออยู่ เมื่อไฟถูกตัดการเชื่อมต่อ GPIO pin 7 จะส่งผ่านที่ระดับต่ำและทริกเกอร์การปิดระบบ นี่คือรหัส:
#!/usr/bin/env python
นำเข้า RPi. GPIO เป็น GPIO นำเข้ากระบวนการย่อย GPIO.setmode(GPIO. BCM) # ใช้หมายเลข GPIO GPIO.setwarnings (เท็จ) INT = 7 # ขา 26 จอภาพ พาวเวอร์ซัพพลาย # ใช้ pull_up ที่อ่อนแอเพื่อสร้าง GPIO.setup สูง (INT, GPIO. IN, pull_up_down=GPIO. PUD_UP) def main(): ในขณะที่ True: # ตั้งค่าการขัดจังหวะบนขอบที่ตกลงมาและรอให้มันเกิดขึ้น GPIO.wait_for_edge(INT, GPIO. FALLING) # ตรวจสอบระดับพินอีกครั้งหาก GPIO.input(INT) == 0: # ยังคงต่ำ ปิด Pi subprocess.call (['poweroff'], shell=True, / stdout=subprocess. PIPE, stderr=subprocess. PIPE) ถ้า _name_ == '_main_': หลัก()
ต้องบันทึกโปรแกรมใน /usr/local/bin/.py และกำหนดค่าให้ทำงานเมื่อ Raspberry เริ่มทำงาน จากการทดสอบที่ดำเนินการ ความจุของ supercapacitors สองตัวได้รับการพิสูจน์แล้วว่าเพียงพอเพื่อให้แน่ใจว่าเวลาปิดเครื่องสำหรับ Raspberry หากจำเป็นต้องใช้เวลามากกว่านี้ ก็เพียงพอที่จะแนะนำซุปเปอร์คาปาซิเตอร์อีกสองตัวควบคู่ไปกับคาปาซิเตอร์ที่มีอยู่ หรือแทนที่ด้วยความจุที่มากกว่าสองตัว
ขั้นตอนที่ 4: การประกอบและการใช้พอร์ต USB
Block Schematic แสดงวิธีเชื่อมต่ออุปกรณ์ต่างๆ สำหรับ PAB บนบัสหลัก 3 ตัว (+5v, USB และออดิโอสเตอริโอ)
โปรดทราบว่าแหล่งจ่ายไฟของเครื่องอ่านซีดีเชื่อมต่อโดยตรงกับแหล่งจ่ายไฟหลักผ่านสาย "Y" ในขณะที่อินพุตเสียงไปที่ Raspberry พอร์ต USB Raspberry สี่พอร์ตถูกใช้สำหรับ:
- เครื่องอ่านซีดี;
- ไดรฟ์ปากกา 250GB เพื่อจัดเก็บไฟล์เพลงในเครื่อง (mp3, m4a, wma, flac ฯลฯ);
- การ์ด micro SD ขนาด 16GB (พร้อมอะแดปเตอร์ USB) เพื่อจัดเก็บข้อมูลสำรองทั้งหมดของ Raspi SD หลัก (ดูด้านล่าง)
- การเชื่อมต่อกับพอร์ต USB ภายนอกของเคส
พอร์ต USB ภายนอกสามารถใช้เพื่อเล่นเพลงภายนอกหรือเพื่อจ่ายไฟให้กับอุปกรณ์ภายนอก ในกรณีของฉัน ฉันกำลังเปิดเครื่องส่งบลูทูธภายนอกเนื่องจากฉันทิ้งตัวภายในของ Raspi เนื่องจากช่วงต่ำและไม่เสถียร ด้วยบลูทูธภายนอก ฉันกำลังขับลำโพงสเตอริโอ 2 ตัวที่บ้าน
การ์ด micro SD ขนาด 16GB (พร้อมอะแดปเตอร์ USB) กำลังเก็บข้อมูลสำรอง Raspberry เต็มรูปแบบ ฉันใช้ rpi-clone ซึ่งเปิดเผยว่าเป็นโครงการที่ดีมากที่ช่วยให้มีการสำรองข้อมูลที่ทำงานได้เต็มรูปแบบของ Raspberry โดยไม่ต้องถอด SD ภายในออก ฉันสลับ SD นี้กับ SD ภายในหลายครั้งโดยไม่มีปัญหา ดังนั้นฉันจึงตั้งค่า cronjob สำหรับผู้ใช้รูท:
#สำรองข้อมูลใน sda - ทุกคืนวันพุธ
15 2 * * 3 /usr/sbin/rpi-clone sda -u | mail -s "การสำรองข้อมูล PAB บน SD - เสร็จสิ้น"
ฉันใช้ปุ่มเปิดปิดเดิมบนเคสอีกครั้งเพื่อปิดเครื่องและรีสตาร์ท Raspberry โดยทำตามคำแนะนำนี้:
ขั้นตอนที่ 5: ซอฟต์แวร์และระบบปฏิบัติการ
ระบบปฏิบัติการหลักของ PAB คือ Raspbian ขั้นต่ำ (Debian Buster) ธรรมดาที่มีการเพิ่มเติมเฉพาะหลายประการ:
- rpi-clone สำหรับการสำรองข้อมูลหลัก
- ssmtp ซึ่งเป็น MTA อย่างง่ายในการรับเมลออกจากระบบ
- udevil เพื่ออนุญาตการเมาต์อัตโนมัติของไดรฟ์ USB
- abcde เพื่อคว้าคอลเลคชันซีดีของฉันและบีบอัดเป็นรูปแบบเสียงใด ๆ
- mopidy ซึ่งเป็น Music Player Daemon เต็มรูปแบบพร้อมปลั๊กอินมากมาย
ฉันได้เขียนแอปพลิเคชันเซิร์ฟเวอร์ PAB Scheduler แบบเต็มโดยใช้ python3 และ tornado ซึ่งรหัสอยู่นอกขอบเขตของบทความนี้ แต่ฉันสามารถให้คำแนะนำตามคำขอได้ ด้วยเครื่องมือจัดกำหนดการ คุณสามารถตั้งค่าเพลย์ลิสต์สำหรับช่วงเวลาใดก็ได้ของวัน โดยแยกวันธรรมดาออกจากวันหยุดสุดสัปดาห์
ซอฟต์แวร์หลักที่รัน PAB นั้นมีปัญหา สำหรับการติดตั้งและกำหนดค่า mopidy (ค่อนข้างกว้างขวาง) โปรดดูเอกสารประกอบที่นี่:
นี่คือปลั๊กอินที่ติดตั้ง:
- Mopidy-Alsamixer
- Mopidy-Internetarchive
- Mopidy-Local-Sqlite
- Mopidy-Podcast
- Mopidy-Scrobbler
- Mopidy-Soundcloud
- Mopidy-Spotify
- Mopidy-Spotify-Tunigo
- Mopidy-Cd
- โมปิดี้-ไอริส
- Mopidy-Local-Images
- Mopidy-TuneIn
เพื่อให้ได้การควบคุมเต็มรูปแบบของ PAB ฉันได้เลือกส่วนขยายส่วนหน้าของ Iris (ดูรูป) นี่เป็นเว็บแอปพลิเคชันที่ทรงพลังมากพร้อมคุณสมบัติดังต่อไปนี้:
- การควบคุมอินเทอร์เฟซบนเว็บแบบเต็มสำหรับ Mopidy
- ปรับปรุงการรองรับห้องสมุดท้องถิ่น (สนับสนุนโดย Mopidy-Local-Sqlite)
- เรียกดูและจัดการเพลย์ลิสต์และแทร็ก
- ค้นพบเพลงใหม่ ยอดนิยม และเกี่ยวข้อง (สนับสนุนโดย Spotify)
- เป็นเจ้าภาพโดยอิสระ
-
บูรณาการกับ:
- Spotify
- LastFM
- อัจฉริยะ
- Snapcast
- ไอซ์คาสท์
ด้วยวิธีนี้ ฉันมีอิสระในการควบคุมเพลงจากแทบทุกที่ (คอมพิวเตอร์ แท็บเล็ต สมาร์ทโฟน)
แนะนำ:
การออกแบบเกมในการสะบัดใน 5 ขั้นตอน: 5 ขั้นตอน
การออกแบบเกมในการสะบัดใน 5 ขั้นตอน: การตวัดเป็นวิธีง่ายๆ ในการสร้างเกม โดยเฉพาะอย่างยิ่งเกมปริศนา นิยายภาพ หรือเกมผจญภัย
การตรวจจับใบหน้าบน Raspberry Pi 4B ใน 3 ขั้นตอน: 3 ขั้นตอน
การตรวจจับใบหน้าบน Raspberry Pi 4B ใน 3 ขั้นตอน: ในคำแนะนำนี้ เราจะทำการตรวจจับใบหน้าบน Raspberry Pi 4 ด้วย Shunya O/S โดยใช้ Shunyaface Library Shunyaface เป็นห้องสมุดจดจำใบหน้า/ตรวจจับใบหน้า โปรเจ็กต์นี้มีจุดมุ่งหมายเพื่อให้เกิดความเร็วในการตรวจจับและจดจำได้เร็วที่สุดด้วย
วิธีการติดตั้งปลั๊กอินใน WordPress ใน 3 ขั้นตอน: 3 ขั้นตอน
วิธีการติดตั้งปลั๊กอินใน WordPress ใน 3 ขั้นตอน: ในบทช่วยสอนนี้ ฉันจะแสดงขั้นตอนสำคัญในการติดตั้งปลั๊กอิน WordPress ให้กับเว็บไซต์ของคุณ โดยทั่วไป คุณสามารถติดตั้งปลั๊กอินได้สองวิธี วิธีแรกคือผ่าน ftp หรือผ่าน cpanel แต่ฉันจะไม่แสดงมันเพราะมันสอดคล้องกับ
การลอยแบบอะคูสติกด้วย Arduino Uno ทีละขั้นตอน (8 ขั้นตอน): 8 ขั้นตอน
การลอยแบบอะคูสติกด้วย Arduino Uno ทีละขั้นตอน (8 ขั้นตอน): ตัวแปลงสัญญาณเสียงล้ำเสียง L298N Dc ตัวเมียอะแดปเตอร์จ่ายไฟพร้อมขา DC ตัวผู้ Arduino UNOBreadboardวิธีการทำงาน: ก่อนอื่น คุณอัปโหลดรหัสไปยัง Arduino Uno (เป็นไมโครคอนโทรลเลอร์ที่ติดตั้งดิจิตอล และพอร์ตแอนะล็อกเพื่อแปลงรหัส (C++)
เครื่อง Rube Goldberg 11 ขั้นตอน: 8 ขั้นตอน
เครื่อง 11 Step Rube Goldberg: โครงการนี้เป็นเครื่อง 11 Step Rube Goldberg ซึ่งออกแบบมาเพื่อสร้างงานง่ายๆ ในรูปแบบที่ซับซ้อน งานของโครงการนี้คือการจับสบู่ก้อนหนึ่ง