İçindekiler:
Video: Aynı Müziği Birden Fazla Odada Çalın: 3 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:20
Herkese selam, Sizi bilmem ama ben sesi çok yükseltmeden tüm dairemde aynı müziğin olmasını seviyorum. Bu problem hakkında biraz araştırma yaptıktan sonra, aynı müziği birkaç odada ve özellikle banyoda aynı anda çalmak için hepsi wifi ile aynı müzik sunucusuna bağlı birkaç hoparlör kurmaya karar verdim.
Sistem, VLC gibi bazı harika yazılımların ve Raspberry Pi kullanan wifi özellikli hoparlörün temeli olan GStreamer teknolojisine dayanmaktadır.
Adım 1: Banyo için Hoparlör Oluşturma
Parça listesi:
- banyo geçirmez hoparlör
- 2W amplifikatör (12v üzerinde çalışıyor)
- bir Raspberry Pi Zero (5v üzerinde çalışıyor)
- bir Pimoroni Phat DAC
- bir SD kart
- bir AÇMA/KAPAMA düğmesi
- 12v güç adaptörü + uyumlu bir fiş
- a DC/DC düşürme (12v->5v)
- bir elektrik kutusu
- bazı kablolar
İnşaat oldukça basittir.
Elektronik tarafta, bu ASCII diyagramını takip edin.
- DC fişi AÇMA/KAPAMA düğmesi amplifikatörü
- AÇMA/KAPAMA düğmesi DC/DC kademeli Raspberry Pi
- Raspberry Pi Phat DAC amplifikatör hoparlörü
Mekanik tarafta, elektrik kutusunda gereken tüm delikleri kesin, her şeyi içine koyun ve hepsi bu.
Bu tekniği kullanarak, istediğiniz her türlü hoparlörü oluşturabilirsiniz.
2. Adım: Yazılım Tarafı
Tüm yazılım tarafı, açık kaynaklı multimedya çerçevesi GStreamer'a dayanmaktadır. Sadece Linux kullandım ama farklı işletim sistemlerinde var, bu yüzden hepsinin başka işletim sistemlerine uyarlanabileceğini hayal ediyorum.
Başlangıç için Raspbian Lite'ı Pi'ye, PHAT DAC'ye ve GStreamer 1.0'a "iyi" eklentilerle kurmanız gerekiyor. Müzik sunucusu olarak kullanılan bilgisayarda aynı GStreamer'a ihtiyacınız var. Bu kısımları detaylandırmayacağım çünkü diğerleri bunu benden daha iyi yaptı. İhtiyaç duyulan son şey, Pi'nin ve müzik sunucusunun kablo veya wifi ile aynı ağa bağlı olması gerektiğidir.
GStreamer'ın doğru şekilde kurulup kurulmadığını test etmek için bu komut satırlarını kullanabilirsiniz.
Hoparlörde:
$gst-launch-1.0 udpsrc bağlantı noktası=5000 caps='application/x-rtp, media=(string)audio, clock-rate=(int)44100, encoding-name=(string)L16, encoding-params=(dize)1, kanallar=(int)1, yük=(int)96' ! rtpL16depay ! ses dönüştürme ! otoaudiosink
PC'de:
$gst-launch-1.0 audiotestsrc ! ses dönüştürme ! audio/x-raw, format="(string)S16BE", layout="(string)interleaved", kanallar=1, oran=44100 ! rtpL16pay ! udpsink ana bilgisayar=RASPBERRYPI_IP bağlantı noktası=5000
"RASPBERRYPI_IP" yerine iyi IP adresini girdikten sonra hoparlörde sinüzoidal bir ses duymalısınız. Bu uzun süre duymak isteyeceğiniz bir şey değil, bu yüzden sesi çok yüksek tutmayın.
Bazı açıklamalar: Bilgisayar sinüsoidal sesi "audiotestsrc", "audioconvert ! audio/x-raw, format="(string)S16BE", layout="(string)interleaved", channel=1, rate=44100" convert kullanarak üretir. "rtpL16pay" tarafından anlaşılan ve ses paketlerini oluşturan ve son olarak "udpsink" tarafından anlaşılan iyi formattaki ses, paketleri UDP protokolünü kullanarak gönderir. Hoparlörde aynı ama ters çevrilmiş durumda, "udpsrc" ses akışını kurtarıyor, "rtpL16depay" paketleri dağıtıyor ve "audioconvert ! autoaudiosink" sesi otomatik ses kartının formatına uyacak şekilde dönüştürüyor ve tabii ki çalıyor.
Şimdi temel şeyler çalıştığına göre, daha ileri gitme zamanı. Amaç, ağ üzerinden göndermek için bir uygulamanın sesini kesmektir.
- Sahte çıktı oluşturuyoruz
$pactl load-module module-null-sink sink_name=multiHP
- Sahte çıkışa bir giriş bağlarız (seçilen uygulamayı (giriş) sessize alırız)
$pacmd liste havuzları (çıkış listesi)
$pacmd list-sink-inputs (giriş listesi)
$pacmd move-sink-input %input %output (%input ve %output'u ilgili listelerden biriyle değiştirin)
- Ses kartını maksimuma koyduk
$pactl set-sink-volume 0 100%
- Sahte çıktıyı kurtarmanın yolunu PC'de test ediyoruz (sesi kurtarıyoruz)
$gst-launch-1.0 pulsesrc device=multiHP.monitor ! ses dönüştürme ! otoaudiosink
Seçtiğiniz uygulamanın sesini tekrar duymalısınız.
Harika! Şimdi son komut satırlarına gitme zamanı. PC tarafından da çalınan sese sahip 2 hoparlör durumunda komut satırları.
Her Hoparlörde:
$gst-launch-1.0 udpsrc bağlantı noktası=5000 caps='application/x-rtp, media=(string)audio, clock-rate=(int)44100, encoding-name=(string)L16, encoding-params=(dize)2, yük=(int)96' ! rtpL16depay ! ses dönüştürme ! otoaudiosink
PC'de:
$gst-launch-1.0 pulsesrc device=multiHP.monitor ! ses dönüştürme ! audio/x-raw, format="(string)S16BE", layout="(string)interleaved", kanallar=2, oran=44100 ! rtpL16pay ! tee adı=t t. ! sıra ! udpsink ana bilgisayar=%addrpi1 bağlantı noktası=5000 t. ! sıra ! udpsink ana bilgisayar=%addrpi2 bağlantı noktası=5000 t. ! sıra ! ses dönüştürme ! otoaudiosink
3. Adım: Sonuç
Bu talimat, eksiksiz bir projenin sadece ilk adımıdır. Sadece prensibi açıklamak içindi. Artık Raspberry Pi önyüklemesinde ve PC'de bazı komut dosyaları oluşturarak otomatikleştirebilirsiniz. GStreamer komutunu ihtiyacınıza göre uyarlayabilirsiniz. Hoparlör olarak kullanmak için önceki talimatımı (YEPYENİ ESKİ RADYO) kişisel olarak değiştirdim. Bu çok odalı ses sistemini geliştirmek için yapılacak sonsuz sayıda şey var. Özellikle, tüm hoparlörler senkronize değildir, bu nedenle bir odadan diğerine geçtiğinizde bazı varyasyonlarınız olur.
Umarım bu talimatı geliştirmeye çalışırsınız.
Ayrıntılara ihtiyacınız olursa soru sormaktan çekinmeyin.
İyi tamirci!
Önerilen:
Arduino Birden Fazla Servo Motor Nasıl Bağlanır - PCA9685 Eğitimi: 6 Adım
Arduino Çoklu Servo Motorlar Nasıl Bağlanır - PCA9685 Eğitimi: Bu dersimizde PCA9685 modülünü ve arduino kullanarak birkaç servo motorun nasıl bağlanacağını öğreneceğiz. Birkaç motor bağlamanız gerektiğinde PCA9685 modülü çok iyidir, bununla ilgili daha fazla bilgiyi buradan okuyabilirsiniz https ://www.adafruit.com/product/815Videoyu İzle
Öğretici: Arduino, TCA9548A I2C Çoklayıcı Kullanarak Birden Çok Aynı Adres Aygıtını Nasıl Kontrol Eder: 3 Adım
Öğretici: Arduino, TCA9548A I2C Çoklayıcı Kullanarak Birden Çok Aynı Adres Aygıtını Nasıl Kontrol Eder: Açıklama: TCA9548A I2C Çoklayıcı Modülü, aynı I2C adresine (8'e kadar aynı adres I2C'ye kadar) tek bir mikro denetleyiciye bağlı aygıtları bağlamayı sağlar. Çoklayıcı, komutları seçilen kümeye gönderen bir kapı bekçisi görevi görür
Birden Fazla LED'i Python ve Raspberry Pi'nizin GPIO Pinleriyle Kontrol Etme: 4 Adım (Resimlerle)
Python ve Raspberry Pi'nizin GPIO Pinleriyle Birden Fazla LED'i Kontrol Etme: Bu Talimat, 4 LED'e güç sağlamak için RaspberryPi'nizdeki birden fazla GPIO pinini nasıl kontrol edeceğinizi gösterir. Ayrıca, size Python'daki parametreleri ve koşullu ifadeleri tanıtacaktır. Raspberry Pi'nizin GPIO Pinlerini Bağlamak İçin Kullanan Önceki Talimatımız
4'ten Fazla Motor Kullanma - Birden Fazla Motor Kalkanını İstifleme: 3 Adım
4'ten Fazla Motor Kullanma - Birden Fazla Motor Kalkanını İstifleme: Eğitilebilir Vibrotactile Duyusal Yer Değiştirme ve Artırma Cihazı (https://www.instructables.com/id/Vibrotactile-Sens…) titreşimli uyaranlara giriş. Bu titreşimli uyaranlar p
BİRDEN FAZLA SENSÖRÜ BİR ARDUINO UNO SERİ PORTUNA BAĞLAMA: 4 Adım
BİRDEN FAZLA SENSÖRÜ BİR ARDUINO UNO SERİ PORTUNA BAĞLAMA: Bu eğitimde, birden fazla Atlas sensörünün bağlanabilmesi için tek bir Arduino UNO UART (Rx/Tx) seri portunu genişleteceğiz. Genişletme, 8:1 Seri Bağlantı Noktası Genişletici kartı kullanılarak yapılır. Arduino'nun bağlantı noktası, aşağıdakilerden sonra genişleticiye bağlanır