สารบัญ:

เล่น Bluetooth บน Sonos โดยใช้ Raspberry Pi: 25 ขั้นตอน
เล่น Bluetooth บน Sonos โดยใช้ Raspberry Pi: 25 ขั้นตอน

วีดีโอ: เล่น Bluetooth บน Sonos โดยใช้ Raspberry Pi: 25 ขั้นตอน

วีดีโอ: เล่น Bluetooth บน Sonos โดยใช้ Raspberry Pi: 25 ขั้นตอน
วีดีโอ: ทดลองสลับ Micro SD Card /Memory card ข้าม Version Raspberry Pi และ Test Boot Pi OS over Hardware Pi5 2024, กรกฎาคม
Anonim
Image
Image
เล่น Bluetooth บน Sonos โดยใช้ Raspberry Pi
เล่น Bluetooth บน Sonos โดยใช้ Raspberry Pi

ก่อนหน้านี้ฉันเขียนคำแนะนำที่อธิบายวิธีเพิ่ม aux หรือแอนะล็อก line-in ให้กับ Sonos โดยใช้ Raspberry Pi ผู้อ่านถามว่าจะสามารถสตรีมเสียงบลูทูธจากโทรศัพท์ของเขาไปยัง Sonos ได้หรือไม่ ทำได้ง่ายโดยใช้ดองเกิลบลูทูธที่เสียบเข้ากับสายสัญญาณเข้าของ Sonos Play:5 หรือ Sonos CONNECT ที่มีราคาแพงกว่า อย่างไรก็ตาม คุณจะสูญเสียความเที่ยงตรงในการแปลงบลูทูธ (ดิจิทัล) เป็นแอนะล็อก แล้วกลับไปเป็นดิจิทัล และหากคุณเป็นเจ้าของลำโพง Sonos ที่ราคาไม่แพงเพียงตัวเดียว นี่ไม่ใช่ตัวเลือก คำแนะนำนี้อธิบายวิธีตั้งค่า Raspberry Pi เพื่อสตรีมเสียงบลูทู ธ ไปยังลำโพง Sonos

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

ขั้นตอนที่ 1:

สิ่งที่คุณต้องการ:

Raspberry PI 3 Model B (มี Model B+ ที่ใหม่กว่าและเร็วกว่าให้ใช้ แต่ฉันติดอยู่กับ Model B ปกติเพราะฉันได้อ่านปัญหาบางอย่างเกี่ยวกับการล็อค B+ และวิทยุ wifi และ Bluetooth ของ B+ ก็มีโลหะป้องกันอยู่รอบตัวพวกเขา เป็นไปตามข้อกำหนด FCC เมื่อติดตั้งในอุปกรณ์อื่น แต่ฉันต้องการช่วงบลูทูธสูงสุดและกลัวว่าการป้องกันจะขัดขวาง)

คอมพิวเตอร์เดสก์ท็อปหรือแล็ปท็อปที่มีตัวอ่านการ์ด microSD

จอภาพหรือทีวีที่มีอินพุต HDMI (สำหรับการตั้งค่าเริ่มต้นเท่านั้น)

แป้นพิมพ์และเมาส์ USB หรือบลูทูธ (สำหรับการตั้งค่าเริ่มต้นเท่านั้น)

เคส Raspberry Pi พลาสติก (ฉันใช้เคสพลาสติกสำหรับโปรเจ็กต์นี้เพื่อเพิ่มช่วงบลูทูธให้สูงสุด)

การ์ดหน่วยความจำแฟลช microSDHC Class 4 ของคิงส์ตัน 8 GB

พาวเวอร์ซัพพลาย 5V

ขั้นตอนที่ 2:

ภาพ
ภาพ
ภาพ
ภาพ

ไปที่ https://www.raspberrypi.org/downloads/raspbian/ บนคอมพิวเตอร์ปกติของคุณและดาวน์โหลด "RASPBIAN STRETCH WITH DESKTOP"

ไปที่ https://etcher.io/ และดาวน์โหลด Etcher และติดตั้ง

หมายเหตุ: ในคำสั่งก่อนหน้าของฉัน ฉันอธิบายวิธีดาวน์โหลด NOOBS เพื่อติดตั้ง Raspbian; อย่างไรก็ตาม วิธีนี้เร็วกว่าเล็กน้อย ทั้งสองวิธีก็ดี

ขั้นตอนที่ 3:

ภาพ
ภาพ
ภาพ
ภาพ

เรียกใช้ Etcher แล้วคลิกเลือกรูปภาพและเรียกดูไฟล์ zip คลิกเลือกไดรฟ์และเรียกดูการ์ด microSD จากนั้นคลิก Flash!

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

ภาพ
ภาพ
ภาพ
ภาพ
ภาพ
ภาพ
ภาพ
ภาพ

หมายเหตุ: ขั้นตอนถัดไปบางส่วนเหล่านี้คล้ายกับคำสั่งก่อนหน้าของฉัน ดังนั้นให้ข้ามไปข้างหน้าหากคุณมีรหัสผ่านรูท, IP แบบคงที่ และ VNC ที่ตั้งค่าไว้แล้ว

ใส่การ์ด microSD ลงในช่องเสียบการ์ด SD ที่ด้านล่างของ Raspberry Pi เชื่อมต่อสาย HDMI จาก Raspberry Pi กับจอภาพหรือทีวีของคุณ เชื่อมต่อแป้นพิมพ์ USB เมาส์ และสุดท้ายคือสายไฟ Micro USB หลังจากบูทเดสก์ท็อป Raspbian จะปรากฏขึ้น มันจะนำคุณไปสู่การตั้งค่าต่าง ๆ แต่ฉันจะไม่แนะนำให้ตรวจสอบการอัปเดต คลิกข้าม ฉันได้รับข้อผิดพลาด "blueman.bluez.errors. DBusFailedError: Protocol not available" เมื่อพยายามจับคู่บลูทูธหลังจากติดตั้งการอัปเดตทั้งหมดแล้ว ดังนั้นฉันจึงต้องเริ่มต้นใหม่ทั้งหมดอีกครั้ง

เคล็ดลับ: หากคุณไม่ต้องการเวลาทหาร คลิกขวาบนนาฬิกาและเลือกการตั้งค่านาฬิกาดิจิตอล และเปลี่ยนรูปแบบนาฬิกาจาก %R เป็น %r

ขั้นตอนที่ 5:

ภาพ
ภาพ
ภาพ
ภาพ
ภาพ
ภาพ

ต่อไปเราจะเปิดใช้งานเซิร์ฟเวอร์ VNC ในตัว สิ่งนี้ทำให้สิ่งต่าง ๆ ง่ายขึ้นมาก เนื่องจากคุณสามารถคัดลอกและวางคำสั่งผ่าน VNC แทนที่จะพิมพ์ เลือก เมนู GUI > การตั้งค่า > การกำหนดค่า Raspberry Pi > อินเทอร์เฟซ คลิก เปิดใช้งาน ถัดจาก VNC แล้วคลิก ตกลง หลังจากนั้นไม่กี่วินาที ไอคอน VNC จะปรากฏขึ้นบนแถบงาน คลิกแล้วคลิกไอคอนเมนูที่ด้านบนขวา (กล่องที่มีเส้นแนวนอน 3 เส้น) จากนั้นเลือกตัวเลือก ในตัวเลือกความปลอดภัย ตั้งค่าการเข้ารหัสเป็น "ต้องการปิด" และการตรวจสอบสิทธิ์เป็น "รหัสผ่าน VNC" จากนั้นคลิกนำไปใช้ กล่องรหัสผ่านจะปรากฏขึ้น ป้อน "ราสเบอร์รี่" (โดยไม่ใส่เครื่องหมายคำพูด) สำหรับรหัสผ่านในแต่ละช่อง แล้วคลิกตกลง

ขั้นตอนที่ 6:

ภาพ
ภาพ
ภาพ
ภาพ
ภาพ
ภาพ

ก่อนที่เราจะไปไกลกว่านี้เราต้องกำหนดที่อยู่ IP แบบคงที่ หากที่อยู่ IP ของ Pi ได้รับการสุ่มกำหนดโดยเซิร์ฟเวอร์ DHCP ของเราเตอร์ ที่อยู่ IP อาจเปลี่ยนแปลงได้ในภายหลัง และคุณจะไม่สามารถเชื่อมต่อผ่าน VNC (หรือ Sonos สำหรับเรื่องนั้น) คลิกขวาที่ไอคอนการเชื่อมต่อเครือข่ายบนแถบงาน (ไอคอนลูกศรขึ้นและลงเล็กน้อย) แล้วเลือก "การตั้งค่าเครือข่ายไร้สายและแบบมีสาย" คลิกซ้ายที่ช่องขวาบนและเลือก "eth0" เพื่อกำหนดค่าการเชื่อมต่ออีเธอร์เน็ตหรือ "wlan0" สำหรับระบบไร้สาย ฉันจะแนะนำให้กำหนด IP แบบคงที่ให้กับอย่างใดอย่างหนึ่งเท่านั้น ฉันมีปัญหาเมื่อตั้งค่า Pi ครั้งแรกโดยกำหนดที่อยู่ IP แบบคงที่เดียวกันให้กับทั้งสองการเชื่อมต่อและเครือข่ายไร้สายของ Pi ถูกล็อค และไม่สามารถกลับมาทำงานได้อย่างถูกต้อง ดังนั้นฉันจึงต้องเริ่มการติดตั้งระบบปฏิบัติการใหม่ทั้งหมด อย่างไรก็ตาม ให้ป้อนที่อยู่ IP ที่คุณต้องการในช่องที่อยู่ IP และป้อนที่อยู่ IP ของเราเตอร์ของคุณในช่องเราเตอร์และเซิร์ฟเวอร์ DNS คลิกสมัครและปิด

หมายเหตุ: อาจง่ายกว่าในการกำหนดที่อยู่ IP แบบคงที่โดยใช้คุณสมบัติการจอง DHCP IP ของเราเตอร์ของคุณ หากมี คุณอาจต้องการที่อยู่ MAC ของ Pi หรืออาจปรากฏขึ้นในรายการอุปกรณ์ที่เชื่อมต่อบนหน้าผู้ดูแลระบบของเราเตอร์ของคุณ หากคุณต้องการที่อยู่ MAC ให้พิมพ์คำสั่ง "ifconfig eth0" ในหน้าต่างเทอร์มินัลสำหรับอีเธอร์เน็ตหรือ "ifconfig wlan0" สำหรับ WiFi ที่น่าสนใจคือที่อยู่ MAC ของ WiFi จะแสดงขึ้นในบรรทัดที่ขึ้นต้นด้วย "ether"

ขั้นตอนที่ 7:

ภาพ
ภาพ
ภาพ
ภาพ
ภาพ
ภาพ

ต่อไปเราต้องตั้งค่าความละเอียดหน้าจอเริ่มต้น นี่อาจดูงี่เง่าเพราะว่าเราเชื่อมต่อกับจอภาพแล้ว แต่ต่อมาเมื่อคุณเชื่อมต่อผ่าน VNC โดยไม่ต้องต่อจอภาพ (อย่างที่พวกเขาพูด) มันจะเปลี่ยนกลับเป็นความละเอียดเริ่มต้น 640x480 ของ Pi ซึ่งเป็นหน้าจอขนาดเล็กมากเป็น ทำงานกับ! เลือก เมนู GUI > ค่ากำหนด > การกำหนดค่า Raspberry Pi > ตั้งค่าความละเอียด ตั้งค่าเป็น 1280x720 หรือสูงกว่า แล้วคลิกตกลงและใช่เพื่อรีบูต

ขั้นตอนที่ 8:

ภาพ
ภาพ
ภาพ
ภาพ
ภาพ
ภาพ

คุณอาจต้องการเปลี่ยนชื่อ Pi ของคุณโดยเฉพาะถ้าคุณมีมากกว่าหนึ่งในเครือข่ายของคุณ ฉันเปลี่ยนชื่อของฉันเป็น "BluetoothPi" เพื่อให้ระบุตัวตนได้ง่าย มันจะขอให้คุณรีบูตหลังจากเปลี่ยนชื่อ

ขั้นตอนที่ 9:

ภาพ
ภาพ
ภาพ
ภาพ
ภาพ
ภาพ
ภาพ
ภาพ

ณ จุดนี้คุณอาจต้องการเริ่มใช้ VNC เพื่อควบคุม Pi เปิดแผงควบคุม VNC บนเดสก์ท็อป Raspbian อีกครั้ง และค้นหาที่อยู่ IP ภายใต้ "การเชื่อมต่อ" ติดตั้งและเรียกใช้โปรแกรมแสดง VNC บนคอมพิวเตอร์ปกติของคุณ และใช้ที่อยู่ IP นั้นเพื่อเชื่อมต่อและป้อน "ราสเบอร์รี่" (โดยไม่ใส่เครื่องหมายคำพูด) เป็นรหัสผ่าน ฉันใช้ TightVNC สำหรับ Windows หลังจากที่คุณเชื่อมต่อแล้ว คุณสามารถบันทึกการเชื่อมต่อ VNC ของ Pi เป็นทางลัดบนเดสก์ท็อปของคุณเพื่อเชื่อมต่ออย่างรวดเร็วในอนาคตโดยข้ามหน้าจอการเข้าสู่ระบบ คุณจะได้รับคำเตือนเกี่ยวกับการบันทึกรหัสผ่านภายในทางลัด ในการคัดลอกและวางลงในหน้าต่างเทอร์มินัลของ Pi ให้เลือกหรือไฮไลต์ข้อความหรือคำสั่งบนคอมพิวเตอร์ปกติของคุณ กด Ctrl-C (กดแป้น Ctrl และ C บนแป้นพิมพ์พร้อมกัน) หรือคลิกขวาและเลือก "คัดลอก " จากนั้นเปิดใช้งานหน้าต่างแสดง VNC ของ Pi และคลิกขวาภายในหน้าต่างเทอร์มินัลบนเคอร์เซอร์ และเลือกวาง

ขั้นตอนที่ 10:

ภาพ
ภาพ
ภาพ
ภาพ

ต่อไปเราจะติดตั้งสองโปรแกรม Darkice และ Icecast2 Darkice คือสิ่งที่จะเข้ารหัสแหล่งเสียงบลูทู ธ ของเราลงในสตรีม mp3 และ Icecast2 คือสิ่งที่จะให้บริการแก่ Sonos เป็นสตรีม Shoutcast คัดลอกและวางแต่ละบรรทัดเหล่านี้ในหน้าต่างเทอร์มินัลทีละครั้งตามด้วยปุ่ม Enter ในแต่ละครั้ง:

wget

mv darkice_1.0.1-999~mp3+1_armhf.deb?raw=true darkice_1.0.1-999~mp3+1_armhf.deb

sudo apt-get ติดตั้ง libmp3lame0 libtwolame0

sudo dpkg -i darkice_1.0.1-999~mp3+1_armhf.deb

ขั้นตอนที่ 11:

ภาพ
ภาพ
ภาพ
ภาพ
ภาพ
ภาพ
ภาพ
ภาพ

ตอนนี้เพื่อติดตั้ง Icecast2 พิมพ์ "sudo apt-get install icecast2" ตามด้วย Enter หลังจากติดตั้งแล้ว หน้าต่างจะปรากฏขึ้นเพื่อถามว่าคุณต้องการกำหนดค่า Icecast2 หรือไม่ กดปุ่มลูกศรซ้ายและกด Enter เพื่อเลือกใช่ ในหน้าจอที่สองให้กดปุ่มลูกศรลงและกด Enter เพื่อเลือกตกลงเพื่อใช้ชื่อโฮสต์เริ่มต้น "localhost" ในสามหน้าจอถัดไป ให้กดลูกศรลงและป้อนคีย์เพื่อตกลงที่จะใช้ "hackme" เป็นแหล่งที่มาเริ่มต้น รหัสผ่านรีเลย์และการดูแลระบบ แม้ว่าเราจะยอมรับการตั้งค่าเริ่มต้นทั้งหมด แต่ขั้นตอนเหล่านี้จะต้องเสร็จสิ้นเพื่อเปิดใช้งานเซิร์ฟเวอร์ Icecast2

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

ขั้นตอนที่ 12:

ภาพ
ภาพ
ภาพ
ภาพ
ภาพ
ภาพ

ต่อไปเราต้องเรียกใช้ตัวจัดการไฟล์ GUI ในฐานะผู้ใช้รูท ในการดำเนินการนี้ ให้เลือก เมนู GUI > เรียกใช้ พิมพ์ "sudo pcmanfm" แล้วกด Enter ที่จะเปิดตัวจัดการไฟล์ (เทียบเท่ากับ file explorer สำหรับผู้ใช้ Windows ของเรา) ไปยังโฮมไดเร็กทอรี (/home/pi) และคุณจะเห็นไฟล์การติดตั้ง darkice ที่เหลือที่เราดาวน์โหลดมาก่อนหน้านี้ คลิกขวาในพื้นที่ว่างและเลือก Create New จากนั้นเลือก Empty File ตั้งชื่อเป็น "darkice.cfg" แล้วคลิกตกลง จากนั้นคลิกขวาที่ไฟล์ที่สร้างขึ้นใหม่และเลือกเปิดด้วย Leafpad (เทียบเท่ากับ Windows notepad) คัดลอกบรรทัดด้านล่างและวางลงใน Leafpad จากนั้นคลิกไฟล์และบันทึก คุณจะสังเกตเห็นว่าบรรทัด "คุณภาพ" มีเครื่องหมาย # อยู่ข้างหน้า ใช้เฉพาะเมื่อคุณตั้งค่า "bitrateMode = vbr" (บิตเรตตัวแปร) คุณไม่สามารถตั้งค่าคุณภาพได้เมื่อใช้ cbr (บิตเรตคงที่) ไม่เช่นนั้นสตรีมจะสะดุดและข้ามไป ในทางกลับกัน หากคุณตัดสินใจที่จะใช้ vbr คุณต้องใส่ความคิดเห็นในบรรทัด "bitrate = 160" และยกเลิกการใส่เครื่องหมายบรรทัด "quality"

หมายเหตุ: บิตเรต mp3 คุณภาพสูงสุดที่คุณมีได้คือ 320 kbps; อย่างไรก็ตาม ทั้งวิทยุ WiFi และ Bluetooth บน Raspberry Pi นั้นอยู่บนชิปตัวเดียวกัน ดังนั้นหากคุณใช้แบนด์วิดท์ของทั้งสองอย่างสูงสุด เสียง Bluetooth อาจสะดุดหรือหยุดนิ่ง เราจะเปลี่ยนการตั้งค่าในภายหลังซึ่งจะแก้ไขปัญหานี้ แต่จะจำกัดแบนด์วิดท์ WiFi บ้าง ดังนั้นฉันจึงลดบิตเรตเสียงสำหรับโปรเจ็กต์นี้เป็น 160 kbps เนื่องจากฉันวางแผนที่จะเก็บไว้บน WiFi เท่านั้น หากคุณใช้อีเธอร์เน็ต ไม่มีปัญหา และคุณสามารถตั้งค่าบิตเรตเป็น 320 kbps ได้อย่างปลอดภัย

[ทั่วไป] ระยะเวลา = 0 # ระยะเวลาใน s, 0 ตลอดไป bufferSecs = 1 # บัฟเฟอร์ ในไม่กี่วินาที เชื่อมต่อใหม่ = ใช่ # เชื่อมต่อใหม่หากตัดการเชื่อมต่อ

[ป้อนข้อมูล]

อุปกรณ์ = โทรศัพท์ # ชื่ออุปกรณ์บลูทูธ sampleRate = 44100 # อัตราตัวอย่าง 11025, 22050 หรือ 44100 bitsPerSample = 16 # ช่องบิต = 2 # 2 = สเตอริโอ

[icecast2-0]

bitrateMode = cbr # อัตราบิตคงที่ (ค่าคงที่ 'cbr', ค่าเฉลี่ย 'abr') #quality = 1.0 # 1.0 คือคุณภาพที่ดีที่สุด (ใช้กับ vbr เท่านั้น) รูปแบบ = mp3 # เลือก 'vorbis' สำหรับ OGG Vorbis bitrate = 160 # bitrate server = localhost # or IP port = 8000 # port for IceCast2 access password = hackme # source password for the IceCast2 server mountPoint = rapi.mp3 # mount point on the IceCast2 server.mp3 หรือชื่อ.ogg = BluetoothPi

ขั้นตอนที่ 13:

ภาพ
ภาพ
ภาพ
ภาพ
ภาพ
ภาพ
ภาพ
ภาพ

ต่อไป เราต้องทำตามขั้นตอนเดิมเพื่อสร้างไฟล์เปล่าชื่อ "darkice.sh" ไฟล์.sh เทียบเท่ากับ.bat หรือไฟล์แบตช์สำหรับ DOS หรือ Windows เปิดโดยใช้ Leafpad คัดลอกและวางบรรทัดด้านล่างแล้วบันทึก หากคุณทำตามคำแนะนำก่อนหน้าของฉัน คุณจะสังเกตเห็นบรรทัดที่เริ่มต้น Darkice ดูแตกต่างออกไปเล็กน้อย ฉันต้องฝังโค้ดในลูปเพราะเมื่อใดก็ตามที่ Darkice สูญเสียสัญญาณเสียงบลูทูธ มันจะหยุดทำงานและจะไม่รีสตาร์ทโดยอัตโนมัติแม้ว่าจะรีสตาร์ทเสียงแล้วก็ตาม ฉันค้นคว้าปัญหานี้อย่างมาก และในขณะที่มีวิธีที่ซับซ้อนในการเรียกใช้สคริปต์โดยอัตโนมัติทุกครั้งที่มีการเชื่อมต่ออุปกรณ์บลูทูธ แต่บางครั้ง Darkice จะหยุดเมื่อใดก็ตามที่สัญญาณเสียงหายไปแม้ว่าอุปกรณ์บลูทูธจะยังเชื่อมต่ออยู่ (เช่น หากคุณปิด YouTube บนโทรศัพท์ของคุณ) นี่เป็นวิธีที่ง่ายและน่าเชื่อถือที่สุดในการทำให้ Darkice ทำงานทุกครั้งที่มีเสียงบลูทูธ หาก Darkice กำลังทำงานอยู่ คำสั่งจะถูกละเว้น

#!/bin/bashwhile:; ทำ sudo /usr/bin/darkice -c /home/pi/darkice.cfg; นอน 5; เสร็จแล้ว

ขั้นตอนที่ 14:

ภาพ
ภาพ

ต่อไปเราต้องเรียกใช้คำสั่งเพื่อทำให้ไฟล์ darkice.sh ทำงานได้ เปิดหน้าต่างเทอร์มินัลแล้วพิมพ์ "sudo chmod 777 /home/pi/darkice.sh" แล้วกด Enter ตอนนี้ได้เวลาเริ่มบริการเซิร์ฟเวอร์ Icecast2 แล้ว พิมพ์ "sudo service icecast2 start" แล้วกด Enter

sudo chmod 777 /home/pi/darkice.sh

บริการ sudo icecast2 เริ่ม

ขั้นตอนที่ 15:

ภาพ
ภาพ
ภาพ
ภาพ
ภาพ
ภาพ
ภาพ
ภาพ

ต่อไป เราต้องบอกให้ Darkice เริ่มทำงานโดยอัตโนมัติทุกครั้งที่มีการบูท Pi (เซิร์ฟเวอร์ Icecast2 ทำงานเป็นบริการและเริ่มทำงานโดยอัตโนมัติหลังจากบูท) ก่อนอื่นเราต้องเลือกตัวแก้ไขข้อความที่จะใช้ ในหน้าต่างเทอร์มินัลให้พิมพ์ "select-editor" แล้วกด Enter พิมพ์ "2" เพื่อเลือก nano editor แล้วกด Enter จากนั้นพิมพ์ "crontab -e" แล้วป้อน จากนั้นกดปุ่มลูกศรลงค้างไว้เพื่อเลื่อนไปจนสุดทางด้านล่างของไฟล์ข้อความที่ปรากฏขึ้นและเพิ่มบรรทัดนี้ "@reboot sleep 10 && sudo /home/pi/darkice.sh" จากนั้นกด Ctrl-X เพื่อออกและจะมีข้อความ "บันทึกบัฟเฟอร์ที่แก้ไขหรือไม่" กดปุ่ม Y สำหรับใช่แล้ว Enter เพื่อยืนยันชื่อไฟล์ที่สร้างขึ้นโดยอัตโนมัติ

เลือกบรรณาธิการ

crontab -e

@reboot sleep 10 && sudo /home/pi/darkice.sh

ขั้นตอนที่ 16:

ภาพ
ภาพ
ภาพ
ภาพ
ภาพ
ภาพ

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

sudo bluetoothctl

ขั้นตอนที่ 17:

ภาพ
ภาพ
ภาพ
ภาพ
ภาพ
ภาพ

เพื่อให้ Darkice สามารถใช้อุปกรณ์บลูทูธเป็นอินพุตเสียง PCM ได้ เราต้องสร้างไฟล์ในโฟลเดอร์ "etc" ชื่อ "asound.conf" (etc/asound.conf) คลิกลูกศรขึ้นบนตัวจัดการไฟล์สองสามครั้งเพื่อไปที่ไดเร็กทอรี root จากนั้นดับเบิลคลิกที่โฟลเดอร์ "etc" เพื่อเปิด เลื่อนลงและคลิกขวาในพื้นที่ว่าง และสร้างไฟล์เปล่าชื่อ "asound.conf" แล้วคัดลอกและวางบรรทัดด้านล่างด้วยที่อยู่ MAC ของอุปกรณ์แทนที่ไฟล์ของฉันและบันทึก

pcm.phone { ประเภทปลั๊กเสียบ slave.pcm { พิมพ์อุปกรณ์ bluealsa "50:F0:D3:7A:94:C4" โปรไฟล์ "a2dp" } }

ขั้นตอนที่ 18:

ภาพ
ภาพ
ภาพ
ภาพ
ภาพ
ภาพ

ทั้งวิทยุ WiFi และ Bluetooth บน Raspberry Pi อยู่ในชิปตัวเดียวกัน ดังนั้นหากคุณใช้แบนด์วิดท์ของทั้งสองอย่างสูงสุด เสียง Bluetooth อาจสะดุดหรือหยุดนิ่ง บางคนเรียกมันว่าจุดบกพร่อง และบางคนบอกว่ามันเป็นเพียงข้อจำกัดของฮาร์ดแวร์ เรากำลังจะเปลี่ยนการตั้งค่าที่จะแก้ไขปัญหานี้ เครดิตสำหรับการโพสต์การแก้ไขนี้ไปที่ "pelwell" ที่ https://github.com/raspberrypi/linux/issues/1402 เรียกใช้ sudo pcmanfm อีกครั้งเพื่อเปิดตัวจัดการไฟล์และเรียกดู /lib/firmware/brcm ดับเบิลคลิกที่ไฟล์ข้อความ "brcmfmac43430-sdio.txt" เพื่อเปิดและเพิ่มบรรทัดเหล่านี้ที่ด้านล่างและบันทึก

# พารามิเตอร์การอยู่ร่วมกันของ Bluetooth ทดลองจาก Cypressbtc_mode=1 btc_params8=0x4e20 btc_params1=0x7530

ขั้นตอนที่ 19:

ภาพ
ภาพ
ภาพ
ภาพ
ภาพ
ภาพ

คลิกไอคอนเมนู GUI และเลือก Shutdown and Reboot หากคุณทำตามขั้นตอนเหล่านี้อย่างแม่นยำ เซิร์ฟเวอร์เสียงบลูทูธของคุณจะเริ่มทำงานโดยอัตโนมัติทุกๆ 30 วินาทีถึงหนึ่งนาทีหลังจากคลิกรีบูต ก่อนที่คุณจะสามารถเพิ่มลงใน Sonos ได้ คุณต้องเชื่อมต่อบลูทูธของโทรศัพท์กับ Pi (เพียงแค่แตะที่อุปกรณ์นั้นในการตั้งค่าบลูทูธของโทรศัพท์เนื่องจากจับคู่แล้ว) และเริ่มเล่นเสียงบางอย่างและเพิ่มระดับเสียง จำไว้ว่าคุณจะไม่ได้ยินเสียงใดๆ ที่มาจากลำโพงของโทรศัพท์เพราะคิดว่ามันเชื่อมต่อกับลำโพงบลูทูธภายนอก วิธีหนึ่งที่มองเห็นได้ว่า Icecast ได้รับเสียงบลูทูธจาก Darkice หรือไม่คือเปิด https://192.168.86.107:8000 ในเว็บเบราว์เซอร์โดยใช้ IP ของ Pi แทนของฉัน Icecast ทำงานอยู่เสมอ ดังนั้นคุณจะเห็นหน้าสถานะเสมอ แต่ถ้า Darkice ได้รับเสียงบลูทูธด้วย คุณจะเห็นจุดต่อเชื่อมและตัวบอกสตรีมด้วย ยกเลิกการเชื่อมต่อบลูทู ธ ของคุณและรีเฟรชหน้าและจะว่างเปล่าอีกครั้ง

ขั้นตอนที่ 20:

ภาพ
ภาพ
ภาพ
ภาพ

คุณต้องใช้แอปตัวควบคุมเดสก์ท็อป Sonos เพื่อเพิ่มสตรีมแบบกำหนดเองไปยัง Sonos คลิกที่ จัดการ > เพิ่มสถานีวิทยุ และป้อน URL สำหรับสตรีม ซึ่งในกรณีของฉันคือ "https://192.168.86.107:8000/rapi.mp3" ป้อนชื่อสถานีด้วยแล้วคลิกตกลง

ขั้นตอนที่ 21:

ภาพ
ภาพ

ในการเล่นสถานีวิทยุแบบกำหนดเองที่เราเพิ่งเพิ่มเข้าไป ให้เลือก "Radio by Tunein" จากนั้นเลือก "My Radio Stations" คลิกสองครั้งซ้ายเพื่อเล่นหรือคลิกขวาเพื่อแก้ไขหรือเพิ่มสถานีในรายการโปรด Sonos ของคุณ

ขั้นตอนที่ 22:

ภาพ
ภาพ
ภาพ
ภาพ

หลังจากเพิ่มสถานีวิทยุที่กำหนดเองแล้ว แอปจะพร้อมใช้งานในแอป Sonos ของคุณทันที เปิดแอป แตะ "My Sonos" ที่ด้านล่าง เลื่อนลงไปที่ "สถานี" แล้วแตะ "ดูทั้งหมด" เลื่อนลงมาจนกว่าคุณจะเห็นสถานีที่สร้างขึ้นใหม่ แตะที่มันและเริ่มเล่นในห้องที่คุณเลือก โปรดจำไว้ว่า̶หากคุณถอดบลูทู ธ จาก PI แล้ว Icecast กระแสจะ̶d̶i̶s̶c̶o̶n̶n̶e̶c̶t̶.̶หากคุณเปลี่ยนเสียงปพลิเคชันมันอาจ̶d̶i̶s̶c̶o̶n̶n̶e̶c̶t̶.̶ที่จะกลับมาฟังบน Sonos คุณจะต้องรีสตาร์ทเล่นเพลงในโทรศัพท์ของคุณอีกครั้งและผลักดันให้เล่นบน ̶t̶h̶e̶ ̶S̶o̶n̶o̶s̶ ̶a̶p̶p̶ ̶a̶g̶a̶i̶n̶.̶ <---สิ่งนี้ได้รับการแก้ไขแล้ว ดูการปรับปรุงด้านล่าง ขอให้โชคดีและขอบคุณที่อ่าน!

ขั้นตอนที่ 23: อัปเดต: รักษาการเชื่อมต่อสตรีมแบบคงที่เมื่อตัดการเชื่อมต่อ BLUETOOTH

ดังนั้นการสตรีมด้วยบลูทูธจึงทำงานได้อย่างสมบูรณ์แบบด้วยการตั้งค่านี้ ยกเว้น Sonos จะยกเลิกการเชื่อมต่อจากเซิร์ฟเวอร์ Icecast เมื่อใดก็ตามที่ Darkice สูญเสียเสียงบลูทูธ เช่น เมื่อคุณเปลี่ยนแอปเสียงหรือเพียงแค่ตัดการเชื่อมต่อบลูทูธ ซึ่งเป็นเรื่องที่เจ็บปวดเพราะคุณจะต้องรับการสตรีมเสียงบลูทูธอีกครั้งก่อน คุณสามารถกดปุ่มเล่นในแอป Sonosสิ่งนี้กลายเป็นปัญหาใหญ่เมื่อฉันพยายามสตรีมเสียงไปยัง Sonos จากแอป WatchESPN ในโทรศัพท์ของฉัน ซึ่งเป็นโหมดเต็มหน้าจอเท่านั้น ฉันจึงไม่สามารถกดปุ่มเล่นในแอป Sonos หลังจากเริ่มเสียงบลูทูธแล้ว แต่เมื่อฉันปิดแอป WatchESPN สตรีม Sonos จะไม่เริ่มเว้นแต่คุณจะเปิดเสียงบลูทูธก่อน! ฮึ ฉันได้ดึงผมออกมาเพื่อพยายามแก้ไขปัญหานี้อย่างสง่างาม ฉันลองใช้ตัวเข้ารหัส mp3 อื่นที่เรียกว่า liquidsoap ซึ่งมีตัวเลือกในการส่งเสียงเงียบเมื่อขาดการเชื่อมต่อ แต่ฉันไม่สามารถใช้งานกับ bluealsa ได้ ฉันพยายามผสมสตรีม bluealsa กับสตรีม alsa การ์ดเสียงดัมมี่สำรองโดยใช้ dsnoop และ asym เพื่อพยายามหลอกให้ Icecast คิดว่ายังมีสัญญาณเสียงอยู่ แต่ alsa ไม่อนุญาตให้คุณจัดการเสียงบลูทูธมากนัก จากนั้นฉันก็เริ่มตรวจสอบโดยใช้จุดเชื่อมต่อทางเลือกโดยใช้ไฟล์ mp3 แบบเงียบใน Icecast แต่ Sonos จะเห็นการเปลี่ยนชื่อจุดต่อเชื่อมและยกเลิกการเชื่อมต่อ ฉันใช้ไฟล์ test.mp3 และกำหนดให้เป็นชื่อจุดเชื่อมต่อหลักโดยไม่ได้ตั้งใจหนึ่งครั้งแทนที่จะเป็นไฟล์สำรอง และสังเกตเห็นว่า Sonos เปลี่ยนไปเล่นไฟล์นั้นเมื่อถูกตัดการเชื่อมต่อจากสตรีม "rapi.mp3" ของบลูทูธ ยูเรก้า! มันจะไม่สลับกลับไปยังสตรีมบลูทูธโดยอัตโนมัติเมื่อพร้อมใช้งานอีกครั้ง ซึ่งทำให้ฉันคิดว่าทำไมไม่ใช้ชื่อจุดต่อเชื่อมเดียวกันล่ะ ดังนั้นสิ่งที่คุณต้องทำคือสร้างไฟล์ mp3 แบบเงียบและตั้งชื่อเดียวกับสตรีม Darkice mp3, "rapi.mp3" และฮาร์ดโค้ดให้เป็นจุดต่อเชื่อมหลักในไฟล์กำหนดค่า Icecast2 สิ่งที่เกิดขึ้นคือเมื่อใดก็ตามที่ Sonos สูญเสียการเชื่อมต่อกับสตรีม Darkice/bluetooth rapi.mp3 มันก็แค่เริ่มวนซ้ำไฟล์ rapi.mp3 เงียบอื่น ๆ จนกว่าสตรีมบลูทูธจะกลับมาออนไลน์ วิธีนี้ทำให้คุณไม่จำเป็นต้องเปิดเสียงบลูทูธก่อนจะเล่นใน Sonos นี่คือวิธีการทำ …

ขั้นตอนที่ 24:

ภาพ
ภาพ
ภาพ
ภาพ
ภาพ
ภาพ

ก่อนอื่นเราต้องติดตั้ง ffmpeg เพื่อสร้างไฟล์ mp3 แบบเงียบ คุณสามารถบันทึกไฟล์.wav แบบเงียบจากการ์ดเสียงภายนอกและแปลงเป็น mp3 โดยใช้ lame ได้ แต่เนื่องจากฉันไม่มีอินพุตการ์ดเสียงภายนอกสำหรับโปรเจ็กต์นี้ การใช้ ffmpeg จึงเป็นทางออกที่ง่ายที่สุด เปิดหน้าต่างเทอร์มินัลแล้วพิมพ์ "sudo apt-get install ffmpeg" แล้วกด Enter:

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

หลังจากติดตั้งแล้ว ให้คัดลอกและวางบรรทัดยาวๆ นี้เพื่อเข้ารหัสไฟล์ mp3 แบบไม่มีเสียงซึ่งมีระยะเวลาเพียงหนึ่งวินาที:

sudo ffmpeg -f lavfi -i anullsrc=channel_layout=stereo:sample_rate=44100 -b:a 160k -t 1 /usr/share/icecast2/web/rapi.mp3

เปิดตัวจัดการไฟล์ในฐานะรูทโดยใช้ "sudo pcmanfm" และเรียกดู "/etc/icecast2" คลิกขวาที่ "icecast.xml" และเปิดโดยใช้ Leafpad และวางบรรทัดเหล่านี้ใต้บรรทัด "" ด้านบน:

/rapi.mp3

บันทึกและรีบูต และตอนนี้คุณควรจะสามารถเริ่มสถานีบลูทูธ Sonos ที่กำหนดเองได้แล้ว ก่อนที่คุณจะเชื่อมต่อโทรศัพท์กับบลูทูธ!

ขั้นตอนที่ 25: ภาคผนวก

ภาคผนวก
ภาคผนวก
ภาคผนวก
ภาคผนวก
ภาคผนวก
ภาคผนวก
ภาคผนวก
ภาคผนวก

ฉันต้องการให้ Raspberry Pi และแหล่งจ่ายไฟ 110V AC ถึง 5V DC มีอยู่ในตัวเองในกรณีเดียว ดังนั้นฉันจึงสามารถเคลื่อนย้ายมันไปรอบๆ บ้านได้อย่างง่ายดาย แต่รู้สึกประหลาดใจที่พบว่ากรณีดังกล่าวไม่มีอยู่จริง ฉันอาจพิมพ์แบบ 3 มิติได้ในภายหลัง แต่ในระหว่างนี้ ฉันเปลี่ยนไปใช้เคส Raspberry Pi แบบอื่น และพบที่ชาร์จแบบเสียบผนัง USB แบบบางและสายสั้น ที่ชาร์จมีการเคลือบด้วยยางซึ่งฉันไม่สามารถติดเทป VHB ที่ชัดเจนได้ แต่กลับกลายเป็นว่ามันเป็นสติกเกอร์ที่ถอดออกได้ง่าย อย่างไรก็ตาม นั่นทำให้เกิดช่องเล็ก ๆ ที่ทำให้เทป VHB บางเกินไป ดังนั้นฉันจึงใช้เวลโคร

แนะนำ: