İçindekiler:
- Adım 1: Ekipman
- 2. Adım: Ahududu Pi'yi Ayarlama
- Adım 3: Örnek Kodu Ayarlama
- 4. Adım: Kendinden İmzalı SSL Sertifikası Oluşturun
- Adım 5: Donanımı Bağlama
- Adım 6: Sunucu Tarafı Kodu
- 7. Adım: Web Sitesi Kodu
- Adım 8: Sonunda
Video: Disco-pi: 8 Adım (Resimli)
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:21
Bu talimat, bir web tarayıcısından çalınan müziğe dayalı olarak renkli bir LED şeridi kontrol etmek için bir Raspberry Pi'nin nasıl kullanılacağını gösterir.
HTTPS üzerinden Node.js kullanarak temel bir web sitesinin nasıl oluşturulacağını ve WSS (Güvenli Websoketi) üzerinden socket.io'nun nasıl kullanılacağını gösterir.
Web sitesi, çok basit bir düzene sahip tek bir sayfaya sahiptir. Web sayfası, sunucudaki genel/ses klasöründe bulunan müzik dosyalarını içeren bir açılır liste oluşturur. Listede bir seçeneğin seçilmesi, HTML 5 ses öğesini kullanarak web sayfasındaki müzik dosyasını oynatır. Müzik dosyasını çalarken, web sayfası müziği analiz etmek için AudioContext arayüzünü kullanır ve bu daha sonra güvenli bir websocket bağlantısı üzerinden sunucuya gönderilir.
Bir Raspberry Pi üzerinde çalışan sunucu, web yuvası aracılığıyla gönderilen verilere dayalı olarak bir WS2811 LED şeridindeki LED'lerin renklerini değiştirmek için Node RPI WS281x Native kitaplığını (Jeremy Garff'ın WS281X kitaplığını saran) kullanır.
Örnek kod burada bulunabilir: disco-pi
Adım 1: Ekipman
- Raspberry Pi - Ortada duran bir Raspberry Pi 2B kullandım, ancak yaklaşık 100 CAD karşılığında bir Raspberry Pi 3 Başlangıç Kiti alabilirsiniz.
- WS2811 LED Strip - ALITOVE 16.4ft 150 Piksel WS2811 ile oynuyordum. Bu, yaklaşık 45-50 CAD için bir kontrolör ve bir güç kaynağı ile birlikte gelir
- Barrel Jack Connector - Yerel elektronik mağazamdan bir tane aldım, bunun gibi bir şey. Sadece güç kaynağınıza uyup uymadığından emin olun
- Jumper Konnektörler / Tel - Bazı Dişi-Erkek konektör kablolarım ve etrafta yatan bazı 22 Gauge Solid bağlantı telim vardı
2. Adım: Ahududu Pi'yi Ayarlama
İşletim sistemi
Normalde en son Raspbian yapısını kullanırım. Resmi indirin ve SD Karta yazın. Windows bilgisayar kullanıyorsanız, görüntüyü SD Karta yazmak için Win32 Disk Imager'ı kullanabilirsiniz.
Node.js
Node.js'nin en son sürümünü yükleyin. Yazarken 8.9.1 kullanıyorum
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get kurulum düğümü
git'i yükle
sudo apt-get kurulum git
Adım 3: Örnek Kodu Ayarlama
Örnek kodu klonlayın
1. Yüklemek için bir temel klasör oluşturun
cd /opt
sudo mkdir com.jonhaydock sudo chown pi:pi com.jonhaydockcd com.jonhaydock
2. Örnek git deposunu klonlayın
git klon
veya
git klon [email protected]:haydockjp/disco-pi.git
3. Bağımlılıkları yükleyin
cd disko-pi
npm kurulumu
Bu 2-3 dakika sürebilir
4. Adım: Kendinden İmzalı SSL Sertifikası Oluşturun
1. Özel bir anahtar dosyası oluşturun
cd /opt/com.jonhaydock/disco-pi/certs
openssl genrsa -out disko-pi-key.pem 2048
2. Bir CSR (Sertifika İmzalama Talebi) oluşturun
openssl req -new -key disko-pi-key.pem -out disko-pi-csr.pem
Bu noktada sizden sertifika talebi için bazı bilgiler istenecektir. Bu kendinden imzalı bir sertifika olduğundan, ayrıntıları ne kadar doğru dolduracağınız size kalmış. İşte bir örnek
Ülke Adı (2 harfli kod) [AU]:CA
Eyalet veya İl Adı (tam ad) [Bazı Eyalet]:British Columbia Yerellik Adı (örn. şehir) :Vancouver Kuruluş Adı (örn. şirket) [Internet Widgits Pty Ltd]:Disco Pi Kuruluş Birimi Adı (örn. bölüm) : Ortak Ad (örn. sunucu FQDN'si veya SİZİN adınız) :disco-pi E-posta Adresi :[email protected] Bir sorgulama parolası : İsteğe bağlı bir şirket adı :
Bu örnekte, meydan okuma şifresini boş bırakmak için sadece geri tuşuna basın
3. Sertifikayı oluşturun
openssl x509 -req -days 1095 -disco-pi-csr.pem'de -signkey disko-pi-key.pem -out disco-pi-cert.pem
4. Ekstra güvenlik için ayrıca bir Diffie Hellman Parameters dosyası oluşturacağız.
openssl dhparam -out dh_2048.pem 2048
Bu 15-20 dakika sürebilir
Adım 5: Donanımı Bağlama
LED şeridine güç verme
LED şerit 12 volt ile çalışır. Raspberry Pi, yalnızca 3.3v veya 5v çıkış verme kapasitesine sahiptir ve bu kadar çok LED'i çalıştırmak için gereken amfilerin yakınında herhangi bir yerde çıkış verme yeteneğine sahip değildir.
12 voltluk güç kaynağını Raspberry Pi'ye bağlamamak önemlidir.
Şeridim ayrıca her iki ucunda şeride bağlı ek güç kablolarına sahipti. Bunları bantlamanızı öneririm, böylece diğer ekipmanlarınızla temas etmesinler.
Sonraki adımları kendi sorumluluğunuzda gerçekleştirin. Yanlış gidebilecek hiçbir şey için sorumluluk kabul etmiyorum.
LED şerit
LED şeridimde üç kablo var:
KIRMIZI - +12 Volt
SİYAH - Zemin
YEŞİL - Veri
NOT: Din ve Dout vardır - Veri Girişi ve Veri Çıkışı. Din yazan LED şeridin ucuyla çalıştığınızdan emin olun.
Namlu Jakının güç kaynağına bağlı olmadığından emin olmak
1. LED şeridinden gelen Kırmızı kabloyu Barrel Jack'in + tarafına bağlayın.
Beyaz bir 22 gauge kanca teli kullandım.
Kabloyu namlu jakındaki + yuvasına yerleştirin ve yerine vidalayın.
Kablonun diğer ucunu LED üzerindeki sokete itin. Kırmızı kabloyla bağlandığınızdan emin olun.
2. LED şeridinden gelen Siyah kabloyu Barrel Jack'in - tarafına bağlayın.
Siyah bir 22 gauge kanca teli kullandım.
Kabloyu namlu jakındaki - yuvaya yerleştirin. Bu noktada konektör kablolarından birinin (fotoğraftaki kahverengi tel) erkek ucunu da aynı deliğe yerleştirin ve her ikisini de yerine vidalayın.
Siyah kablonun diğer ucunu LED üzerindeki yuvaya itin.
Siyah kabloyla bağlandığınızdan emin olun.
3. Yeşil kabloyu LED şeridinden bağlayın
Dişi-erkek konnektör kablolarından birini alın. Fotoğraflarımda bu yeşil tel.
Erkek ucunu yeşil kablo ile LED soketine yerleştirin.
Bu veri kablosu.
Ahududu Pi
1. Yeşil bağlantı kablosunu alın ve Raspberry Pi GPIO'ya bağlayın.
PCM_CLK'ya bağlamanız gerekir (Pin 12 / GPIO 18)
2. Siyah bağlantı kablosunu alın ve Raspberry Pi GPIO'ya bağlayın.
Topraklardan birine bağlamanız gerekir. Pin 14'ü kullanmanızı öneririm, ancak pin 6, 9, 20, 25, 30, 34 veya 39'u da kullanabilirsiniz.
NOT: Bunun çalışması için LED güç kaynağı ve Raspberry Pi'nin ortak bir zemine sahip olması gerekir. Ayrıca 12 Volt + (Kırmızı kablo) Raspberry Pi'ye bağlamamanız gerektiğini de unutmayın.
LED Gücü
12 voltluk güç kaynağınızı namlu jakına bağlayamamalısınız.
LED şeridinizdeki tüm LED'ler şimdi BEYAZ renkte yanmalıdır
Adım 6: Sunucu Tarafı Kodu
Sunucu tarafı kodunu çalıştırma
cd /opt/com.jonhaydock/disco-pi
sudo npm başlangıcı
Bu, web sunucusunu başlatacak ve HTTPS ve WSS isteklerini dinlemeye başlayacaktır.
Varsayılan bağlantı noktası 443'tür, ancak kodu başlatmadan önce bir ortam değişkeni ayarlayarak bunu geçersiz kılabilirsiniz. Örneğin
dışa aktar DISCO_PI_PORT=1443
LED şeridimde 150 LED var. Bunlar üçlü gruplar halinde kontrol edilir. Bu, her LED'i ayrı ayrı kontrol edemediğim ve 50'yi kontrol etmek için yeterli bilgiyi göndermem gerektiği anlamına geliyor.
LED'inizde az veya çok varsa, bir parametreyi devreye alarak kontrol ettiğiniz LED sayısını geçersiz kılabilirsiniz. Örneğin, yalnızca 10 LED'i kontrol edebiliyorsanız
sudo npm başlangıç 10
Ana sunucu kodu app.js dosyasında bulunabilir. Bu dosya HTTPS web sunucusunu başlatır ve aynı bağlantı noktasındaki websocket isteklerini dinlemek için socket.io'ya ekler.
Web sitesine erişmek için ana bilgisayarınızda bir web tarayıcısı açmalı (bunu yalnızca Chrome'da test ettim) ve Raspberry Pi'nin IP adresini kullanmalısınız, örn.
10.0.1.2/
Raspberry Pi komut satırından IP adresinizi öğrenebilirsiniz.
ifconfig
Web sunucusu, ortak klasör altındaki herhangi bir içeriği sunacaktır. index.html sayfasını görüntülemek için varsayılandır.
Bir API bitiş noktası vardır - /api/audio. Bu bitiş noktası, public/audio klasörü altındaki dosyaları arar ve listeyi döndürür. Örneğin
["GYAKO.mp3", "Havana (feat. Young Thug).mp3", "Queen_Bohemian_Rhapsody.mp3", "Set It All Free.mp3", "Bu Ne İçin Geldi (feat. Rihanna).mp3"]
Bir seçenek olarak müzik eklemek için dosyaları bu klasöre kopyalayın. Ben şahsen ssh üzerinden Filezilla kullanıyorum. Dosya eklemek istediğiniz klasör /opt/com.jonhaydock/disco-pi/public/audio
7. Adım: Web Sitesi Kodu
Web sitesine girdiğinizde böyle bir şey görmelisiniz.
Bir güvenlik uyarısı görürseniz bunun nedeni, kendinden imzalı bir SSL sertifikası kullanmamızdır. Bunu yok sayabilir veya istisna olarak ekleyebilirsiniz.
Bir dosya adı seçildiğinde, HTML 5 ses öğesinin kaynağı. bu dosyaya ayarlanacaktır. Hazır olduğunda, müzik çalmaya başlayacaktır. Şarkı bittiğinde müzik duracaktır.
Hiçbiri seçeneğini seçerseniz, müzik çalmayı durduracaktır.
Müzik dosyasını çalarken, web sayfası müziği analiz etmek için AudioContext arayüzünü kullanır ve bu daha sonra güvenli bir websocket bağlantısı üzerinden sunucuya gönderilir.
Mesaj, sunucudaki socket.io'nun "ws2811"i dinlemek üzere ayarlandığı türdendir. 0 ile 255 arasında 50 elemanlık bir dizi içerir.
"ws2811", {"0":251, "1":252, "2":241, "3":217, "4":193, "5":164, "6":148, "7":139, "8":110, "9":96, "10":81, "11":67, "12":72, "13":66, "14":60, "15":60, "16":63, "17":54, "18":37, "19":30, "20":31, "21":26, "22":13, "23":3, " 24":10, "25":7, "26":6, "27":0, "28":0, "29":0, "30":1, "31":8, "32":12, "33":3, "34":2, "35":2, "36":0, "37":0, "38":0, "39":0, "40":0, "41":0, "42":0, "43":0, "44":0, "45":0, "46":0, "47":0, "48":0, " 49":0}
Sunucu, web soketi aracılığıyla gönderilen verilere dayalı olarak bir WS2811 LED şeridindeki LED'lerin renklerini değiştirmek için Node RPI WS281x Native kitaplığını (Jeremy Garff'ın WS281X kitaplığını sarar) kullanır.
Adım 8: Sonunda
Web sayfasında yapılan Fast Fourier Transform analizine göre şerit üzerindeki LED'lerin müzikle birlikte renk değiştirdiğini görmelisiniz.
Umarım bundan zevk alırsınız. Bununla ne yapacağını bana bildir!
NOT: Herhangi bir sorununuz varsa
Bu kitaplık ve yerleşik Raspberry Pi audio ikisi de PWM kullandığından birlikte kullanılamazlar.
İle /etc/modprobe.d/snd-blacklist.conf dosyası oluşturarak Broadcom ses çekirdeği modülünü kara listeye almanız gerekebilir.
kara liste snd_bcm2835
Ses cihazı kara listeye alındıktan sonra hala yükleniyorsa, /etc/modules dosyasında da yorum yapmanız gerekebilir. Başsız sistemlerde sesi hdmi üzerinden zorlamanız gerekebilir.
config.txt dosyasını düzenleyin ve şunu ekleyin:
hdmi_force_hotplug=1
hdmi_force_edid_audio=1
Bu değişikliğin geçerli olması için yeniden başlatma gerekiyor
Önerilen:
DIY 37 Ledli Arduino Rulet Oyunu: 3 Adım (Resimli)
DIY 37 Led Arduino Rulet Oyunu: Rulet, adını Fransızca küçük tekerlek anlamına gelen kelimeden alan bir kumarhane oyunudur
BOSEBerry Pi İnternet Radyosu: 4 Adım (Resimli)
BOSEBerry Pi İnternet Radyosu: Radyo dinlemeyi çok seviyorum! Evimde bir DAB radyo kullanıyordum, ancak alımın biraz düzensiz olduğunu ve sesin kesilmeye devam ettiğini fark ettim, bu yüzden kendi internet radyomu kurmaya karar verdim. Evimin çevresinde güçlü bir wifi sinyali var ve dijital kardeşim
Portable Disco V2 -Ses Kontrollü LED'ler: 11 Adım (Resimli)
Portable Disco V2 -Ses Kontrollü LED'ler: İlk taşınabilir diskoyu yaptığımdan beri elektronik yolculuğumda çok yol kat ettim. Orijinal yapıda, prototip panosunda bir devreyi hackledim ve temiz, küçük bir cep diskosu yapmayı başardım. Bu sefer kendi PCB'mi tasarladım ve
Adım Adım Arduino Uno ile Akustik Kaldırma (8 adım): 8 Adım
Arduino Uno ile Akustik Kaldırma Adım Adım (8 adım): ultrasonik ses dönüştürücüler L298N erkek dc pinli Dc dişi adaptör güç kaynağı Arduino UNOBreadboardBu nasıl çalışır: İlk olarak, Arduino Uno'ya kod yüklersiniz (dijital ile donatılmış bir mikrodenetleyicidir) ve kodu dönüştürmek için analog bağlantı noktaları (C++)
Mikro Yerçekimi Bitki Yetiştiricisi "Disco Ball": 13 Adım
Microgravity Plant Grower "Disco Ball": Merhaba okuyucular, bu proje Growing Beyond Earth Maker Yarışması'na profesyonel bir başvurudur. Bu proje, mikro yerçekiminde plan büyütmek için kullanılabilecek potansiyel bir ekici tasarımı için bir konsept kanıtıdır. Listelediğim yarışma kuralları