Innehållsförteckning:
Video: Spela samma musik i flera rum: 3 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:45
Hej allihopa, Jag vet inte om dig men jag gillar att ha samma musik i hela min lägenhet utan att vrida ljudet för högt. Så efter lite forskning om detta problem bestämde jag mig för att konstruera flera högtalare som alla är anslutna via wifi till samma musikserver för att spela samma musik samtidigt i flera rum och i synnerhet i badrummet.
Systemet är baserat på GStreamer -tekniken som är basen för en fantastisk programvara som VLC och högtalare med wifi -funktion med en Raspberry Pi.
Steg 1: Bygg en högtalare för badrummet
Del lista:
- en badrumssäker högtalare
- en 2W förstärkare (arbetar på 12v)
- en Raspberry Pi Zero (arbetar på 5v)
- en Pimoroni Phat DAC
- ett SD -kort
- en PÅ/AV -knapp
- en 12v nätadapter + en kompatibel kontakt
- en DC/DC step-down (12v-> 5v)
- en elbox
- några kablar
Konstruktionen är ganska enkel.
På den elektroniska sidan följer du detta ASCII -diagram.
- DC -kontakt PÅ/AV -knappförstärkare
- PÅ/AV-knapp DC/DC steg-ner Raspberry Pi
- Raspberry Pi Phat DAC förstärkare högtalare
På den mekaniska sidan, skär alla hål som behövs i elboxen, lägg allt inuti och det är allt.
Med denna teknik kan du skapa alla slags högtalare du vill ha.
Steg 2: Programvarusidan
Hela mjukvarusidan är baserad på multimedia -ramverket med öppen källkod, GStreamer. Jag använde bara Linux men det finns på olika operativsystem, så jag föreställer mig att alla kan anpassas för andra operativsystem.
Till att börja med måste du installera Raspbian Lite på Pi, PHAT DAC och GStreamer 1.0 med de "bra" pluginsna. På datorn som används som musikserver behöver du samma GStreamer. Jag kommer inte att beskriva dessa delar eftersom andra har gjort det bättre än jag. Det sista som behövs är att Pi och musikservern måste anslutas till samma nätverk via kabel eller wifi.
För att testa om GStreamer är korrekt installerad kan du använda dessa kommandorader.
På högtalaren:
$ gst-launch-1.0 udpsrc port = 5000 caps = 'application/x-rtp, media = (string) audio, clock-rate = (int) 44100, encoding-name = (string) L16, encoding-params = (string) 1, kanaler = (int) 1, nyttolast = (int) 96 '! rtpL16depay! ljudomvandlare! autoaudiosink
På datorn:
$ gst-launch-1.0 audiotestsrc! ljudomvandlare! audio/x-raw, format = "(string) S16BE", layout = "(string) interleaved", kanaler = 1, rate = 44100! rtpL16betala! udpsink -värd = RASPBERRYPI_IP -port = 5000
När du har lagt den bra IP -adressen istället för "RASPBERRYPI_IP", bör du höra ett sinusformat ljud på högtalaren. Det är inget du kommer att vilja höra på länge, så lägg inte volymen för högt.
Någon förklaring: PC: n producerar det sinusformade ljudet med "audiotestsrc", "audioconvert! Audio/x-raw, format =" (string) S16BE ", layout =" (string) interleaved ", channel = 1, rate = 44100" convert ljudet i det bra format som förstås av "rtpL16pay" som skapar ljudpaketen och slutligen "udpsink" skickar paketen med UDP -protokollet. På högtalaren är det samma men inverterade, "udpsrc" återställer ljudflödet, "rtpL16depay" de-paket och "audioconvert! Autoaudiosink" konverterar ljudet för att matcha formatet på det automatiska ljudkortet och spelar naturligtvis det.
Så nu när de grundläggande grejerna fungerar är det dags att gå längre. Målet är att fånga upp ljudet av en applikation för att skicka den via nätverket.
- Vi skapar en falsk produktion
$ pactl load-module module-null-sink sink_name = multiHP
- Vi ansluter en ingång till den falska utmatningen (tysta den valda applikationen (ingången))
$ pacmd list-sink (utgångslista)
$ pacmd list-sink-ingångar (ingångslista)
$ pacmd move-sink-input %input %output (ersätt %input och %output med en av motsvarande listor)
- Vi sätter ljudkortet på max
$ pactl set-sink-volume 0 100%
- Vi testar på datorn sättet att återställa den falska utmatningen (återställ ljudet)
$ gst-launch-1.0 pulsesrc device = multiHP.monitor! ljudomvandlare! autoaudiosink
Du bör höra ljudet från det program du har valt igen.
Bra! Nu är det dags att gå till de sista kommandoraderna. Här är kommandoraderna för 2 högtalare där ljudet också spelas av datorn.
På varje högtalare:
$ gst-launch-1.0 udpsrc port = 5000 caps = 'application/x-rtp, media = (string) audio, clock-rate = (int) 44100, encoding-name = (string) L16, encoding-params = (string) 2, nyttolast = (int) 96 '! rtpL16depay! ljudomvandlare! autoaudiosink
På datorn:
$ gst-launch-1.0 pulsesrc device = multiHP.monitor! ljudomvandlare! audio/x-raw, format = "(string) S16BE", layout = "(string) interleaved", channel = 2, rate = 44100! rtpL16betala! tee namn = t t. ! kö! udpsink -värd =%addrpi1 -port = 5000 t. ! kö! udpsink -värd =%addrpi2 -port = 5000 t. ! kö! ljudomvandlare! autoaudiosink
Steg 3: Slutsats
Detta instruerbara är bara det första steget till ett komplett projekt. Det var bara för att förklara principen. Nu kan du automatisera genom att göra lite manus på Raspberry Pi -boot och på datorn. Du kan anpassa GStreamer -kommandot beroende på ditt behov. Jag har personligen ändrat min tidigare instruerbara (HELT NYA GAMLA RADIO) för att kunna använda den som högtalare. Det finns oändligt många saker att göra för att förbättra detta ljudsystem med flera rum. I synnerhet är alla högtalare inte synkroniserade, så du har lite variation när du byter från ett rum till ett annat.
Jag hoppas att du kommer att försöka förbättra detta instruerbara.
Tveka inte att ställa frågor om du behöver detaljer.
Bra pyssel!
Rekommenderad:
Handledning: Hur Arduino styr flera samma adressenheter med hjälp av TCA9548A I2C -multiplexer: 3 steg
Handledning: Hur Arduino styr flera samma adressenheter med hjälp av TCA9548A I2C -multiplexer: Beskrivning: TCA9548A I2C -multiplexermodulen gör det möjligt att ansluta enheter med samma I2C -adress (upp till 8 samma adress I2C) ansluten till en mikrokontroller. Multiplexorn fungerar som en grindvakt och skickar kommandona till den valda uppsättningen
Arduino -styrande flera P.I.R -sensorer på samma bord: 3 steg
Arduino -styrning av flera PIR -sensorer på samma bord: Idag kommer jag att berätta hur du ansluter flera PIR -sensorer med en enda Arduino Bord > här har jag också använt 4 -kanals relämodul för lite extra funktionalitet. (ELLER Du kan använda så många nålar till din arduin
Album med NFC -taggar för att automatiskt spela Spotify -musik på Chromecast: 5 steg
Album med NFC -taggar för att automatiskt spela Spotify -musik på Chromecast: Det här projektet började med idén att göra ett albumcollage av mina mest spelade artister på Spotify. Efter lite spel med Spotify API i Python tyckte jag att det skulle vara trevligt att länka dessa albumomslag till deras Spotify URI och börja spela
Talking Arduino - Spela en MP3 med Arduino utan någon modul - Spela upp MP3 -fil från Arduino med PCM: 6 steg
Talking Arduino | Spela en MP3 med Arduino utan någon modul | Spela MP3 -fil från Arduino Använda PCM: I denna instruktioner lär vi oss hur man spelar en mp3 -fil med arduino utan att använda någon ljudmodul, här kommer vi att använda PCM -bibliotek för Arduino som spelar 16 bitars PCM med 8 kHz -frekvens så låt oss göra detta
Spela musik med Arduino !: 5 steg (med bilder)
Spela musik med Arduino !: I den här instruktören kommer jag att visa dig hur jag spelar musik med en Arduino UNO och en SD -kortmodul. Vi kommer att använda SPI -kommunikationen. Låt oss komma igång