Indholdsfortegnelse:
Video: Spil den samme musik i flere rum: 3 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:28
Hej allesammen, Jeg ved ikke om dig, men jeg kan godt lide at have den samme musik på tværs af hele min lejlighed uden at dreje lyden for højt. Så efter lidt research om dette problem besluttede jeg at konstruere flere højttalere, der alle var forbundet via wifi til den samme musikserver for at afspille den samme musik samtidigt i flere rum og især på badeværelset.
Systemet er baseret på GStreamer -teknologien, som er grundlaget for nogle fantastiske software som VLC og på højttaler med wifi -funktion ved hjælp af en Raspberry Pi.
Trin 1: Byg en højttaler til badeværelset
Deleliste:
- en højttaler til badeværelset
- en 2W forstærker (arbejder på 12v)
- en Raspberry Pi Zero (arbejder på 5v)
- en Pimoroni Phat DAC
- et SD -kort
- en TÆND/SLUK -knap
- en 12v strømadapter + et kompatibelt stik
- en DC/DC step-down (12v-> 5v)
- en elboks
- nogle kabler
Konstruktionen er ret ligetil.
På den elektroniske side skal du følge dette ASCII -diagram.
- DC -stik ON/OFF -knapforstærker
- Tænd/sluk-knap DC/DC trin-ned Raspberry Pi
- Raspberry Pi Phat DAC forstærkerhøjttaler
På den mekaniske side skal du klippe alle de huller, der er nødvendige i elboksen, sætte alt indeni, og det er alt.
Ved hjælp af denne teknik kan du oprette alle slags højttalere, du ønsker.
Trin 2: Softwaresiden
Hele softwaresiden er baseret på open source multimedierammen, GStreamer. Jeg brugte kun Linux, men det findes på forskellige operativsystemer, så jeg forestiller mig, at alle kan tilpasses til andre operativsystemer.
Til start skal du installere Raspbian Lite på Pi, PHAT DAC og GStreamer 1.0 med de "gode" plugins. På den computer, der bruges som musikserver, har du brug for den samme GStreamer. Jeg vil ikke uddybe disse dele, fordi andre har gjort dette bedre end mig. Den sidste ting, der er nødvendig, er, at Pi og musikserveren skal forbindes til det samme netværk via kabel eller wifi.
For at teste, om GStreamer er korrekt installeret, kan du bruge disse kommandolinjer.
På højttaleren:
$ 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, nyttelast = (int) 96 '! rtpL16 tilbagebetal! lydkonvertering! autoaudiosink
På pc'en:
$ gst-launch-1.0 audiotestsrc! lydkonvertering! audio/x-raw, format = "(streng) S16BE", layout = "(streng) sammenflettet", kanaler = 1, rate = 44100! rtpL16pay! udpsink host = RASPBERRYPI_IP port = 5000
Når du har sat den gode IP -adresse i stedet for "RASPBERRYPI_IP", skal du høre en sinusformet lyd på højttaleren. Det er ikke noget, du gerne vil høre i lang tid, så lad ikke lydstyrken være for høj.
En eller anden forklaring: PC'en producerer den sinusformede lyd ved hjælp af "audiotestsrc", "audioconvert! Audio/x-raw, format =" (string) S16BE ", layout =" (string) interleaved ", channel = 1, rate = 44100" convert lyden i det gode format forstået af "rtpL16pay", der skaber lydpakkerne og til sidst "udpsink" sender pakkerne ved hjælp af UDP -protokollen. På højttaleren er den den samme, men omvendte, "udpsrc" genopretter lydfluxen, "rtpL16depay" de-pakker og "audioconvert! Autoaudiosink" konverterer lyden, så den matcher formatet på det automatiske lydkort og afspiller den naturligvis.
Så nu hvor de grundlæggende ting virker, er det tid til at gå videre. Målet er at opsnappe lyden af et program for at sende det gennem netværket.
- Vi opretter en falsk output
$ pactl load-module module-null-sink sink_name = multiHP
- Vi forbinder et input til det falske output (tavse den valgte applikation (input))
$ pacmd list-synks (output-liste)
$ pacmd list-sink-inputs (inputliste)
$ pacmd move-sink-input %input %output (erstat %input og %output med en af de tilsvarende lister)
- Vi sætter lydkortet maksimalt
$ pactl set-sink-volume 0 100%
- Vi tester på pc'en måden at gendanne det falske output (gendanne lyden)
$ gst-launch-1.0 pulsesrc device = multiHP.monitor! lydkonvertering! autoaudiosink
Du bør igen høre lyden af det program, du har valgt.
Store! Nu er det tid til at gå til de sidste kommandolinjer. Her er kommandolinjerne for 2 højttalere, hvor lyden også afspilles af pc'en.
På hver højttaler:
$ 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, nyttelast = (int) 96 '! rtpL16betaling! lydkonvertering! autoaudiosink
På pc'en:
$ gst-launch-1.0 pulsesrc device = multiHP.monitor! lydkonvertering! audio/x-raw, format = "(streng) S16BE", layout = "(streng) sammenflettet", kanaler = 2, rate = 44100! rtpL16pay! tee navn = t t. ! kø! udpsink host =%addrpi1 port = 5000 t. ! kø! udpsink host =%addrpi2 port = 5000 t. ! kø! lydkonvertering! autoaudiosink
Trin 3: Konklusion
Dette instruerbare er bare det første skridt til et komplet projekt. Det var kun for at forklare princippet. Nu kan du automatisere ved at lave noget script på Raspberry Pi -boot og på pc'en. Du kan tilpasse GStreamer -kommandoen afhængigt af dit behov. Jeg ændrede personligt min tidligere instruerbare (BRAND NEW OLD RADIO) for at bruge den som højttaler. Der er et uendeligt antal ting at gøre for at forbedre dette multi-room lydsystem. Især alle højttalerne er ikke synkroniseret, så du har en vis variation, når du skifter fra et værelse til et andet.
Jeg håber, at du vil prøve at forbedre dette instruerbare.
Tøv ikke med at stille spørgsmål, hvis du har brug for detaljer.
Godt tinker!
Anbefalede:
Spil Nintendo -spil på Idevice med en Wiimote gratis !: 6 trin
Spil Nintendo -spil på Idevice med en Wiimote gratis!: Har du nogensinde gået til appbutikken for at få et Super Nintendo -spil, men du kan ikke finde et at spille. Nå nu kan du spille disse nintendo -spil med snes -emulatoren fra cydia. Denne emulator giver dig mulighed for at spille Nintendo -spil på din enhed, selv med
Styring af et tv og tilsluttet Raspberry Pi med den samme fjernbetjening: 4 trin
Styring af et tv og tilsluttet Raspberry Pi med den samme fjernbetjening: For at styre en Raspberry Pi med infrarød fjernbetjening plejede vi at kunne bruge LIRC. Det plejede at fungere indtil Kernel 4.19.X, da det blev meget mere udfordrende at få LIRC til at fungere. I dette projekt har vi en Raspberry Pi 3 B+ tilsluttet et tv, og vi
Aruduino LED -spil Hurtigt klik på to -spiller -spil: 8 trin
Aruduino LED -spil Hurtigt klikende spil for to spillere: Dette projekt er inspireret af @HassonAlkeim. Hvis du er villig til at kigge dybt, er her et link, du kan tjekke https://www.instructables.com/id/Arduino-Two-Player-Fast-Button-Clicking-Game/. Dette spil er en forbedret version af Alkeims. Det er en
Tutorial: Sådan styrer Arduino flere samme adresseenheder ved hjælp af TCA9548A I2C Multiplexer: 3 trin
Tutorial: Hvordan Arduino styrer flere samme adresseenheder ved hjælp af TCA9548A I2C Multiplexer: Beskrivelse: TCA9548A I2C Multiplexer -modulet gør det muligt at forbinde enheder med den samme I2C -adresse (op til 8 samme adresse I2C) tilsluttet en mikrokontroller. Multiplexeren fungerer som en portvagt og sender kommandoerne til det valgte sæt
Arduino -styring af flere P.I.R -sensorer på samme bord: 3 trin
Arduino -styring af flere PIR -sensorer på samme bord: I dag vil jeg fortælle dig, hvordan du forbinder flere PIR -sensorer med en enkelt Arduino Bord > her har jeg også brugt 4 -kanals relæmodul til ekstra funktionalitet. (ELLER Du kan bruge så mange pin din arduin