Isi kandungan:

Disco-pi: 8 Langkah (dengan Gambar)
Disco-pi: 8 Langkah (dengan Gambar)

Video: Disco-pi: 8 Langkah (dengan Gambar)

Video: Disco-pi: 8 Langkah (dengan Gambar)
Video: Whllyano - Juliana (Official Video) 2024, Julai
Anonim
Disco-pi
Disco-pi

Instruksional ini menunjukkan cara menggunakan Raspberry Pi untuk mengendalikan jalur LED berwarna, berdasarkan muzik yang dimainkan dari penyemak imbas web.

Ini menunjukkan cara membuat laman web asas menggunakan Node.js melalui HTTPS dan menggunakan socket.io melalui WSS (Secure Websocket).

Laman web mempunyai satu halaman yang mempunyai susun atur yang sangat asas. Halaman web mengisi senarai drop-down dengan fail muzik, yang terletak di folder awam / audio di pelayan. Memilih pilihan dalam senarai memainkan fail muzik di laman web menggunakan elemen audio HTML 5. Semasa memainkan fail muzik, halaman web menggunakan antara muka AudioContext untuk menganalisis muzik, yang kemudian dikirim ke pelayan melalui sambungan soket web yang selamat.

Pelayan yang berjalan pada Raspberry Pi menggunakan perpustakaan Node RPI WS281x Native (membungkus perpustakaan WS281X Jeremy Garff) untuk menukar warna LED pada jalur LED WS2811, berdasarkan data yang dihantar melalui soket web.

Contoh kod boleh didapati di sini: disco-pi

Langkah 1: Peralatan

  1. Raspberry Pi - Saya menggunakan Raspberry Pi 2B yang saya gunakan, tetapi anda boleh mendapatkan Kit Permulaan Raspberry Pi 3 dengan harga sekitar CAD 100
  2. WS2811 LED Strip - Saya bermain dengan ALITOVE 16.4ft 150 Pixels WS2811. Ini dilengkapi dengan pengawal dan bekalan kuasa sekitar CAD 45-50
  3. Barrel Jack Connector - Saya membelinya dari kedai elektronik tempatan, seperti ini. Pastikan jika sesuai dengan bekalan kuasa anda
  4. Penyambung / Kawat Jumper - Saya mempunyai beberapa kabel penyambung Perempuan ke Lelaki dan beberapa wayar penyambung 22 Gauge Solid yang terletak di sekitar

Langkah 2: Menyiapkan Raspberry Pi

Sistem operasi

Saya biasanya menggunakan binaan Raspbian terkini. Muat turun gambar dan tuliskan ke Kad SD. Sekiranya anda menggunakan komputer Windows, anda boleh menggunakan Win32 Disk Imager untuk menulis gambar ke Kad SD.

Node.js

Pasang versi terbaru Node.js. Pada masa penulisan saya menggunakan 8.9.1

curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -

sudo apt-get pasang nodejs

Pasang git

sudo apt-get install git

Langkah 3: Menyiapkan Contoh Kod

Klon kod contoh

1. Sediakan folder asas untuk dipasang

cd / pilih

sudo mkdir com.jonhaydock sudo chown pi: pi com.jonhaydockcd com.jonhaydock

2. Klon repositori git contoh

klon git https://github.com/haydockjp/disco-pi.git"

atau

git klon [email protected]: haydockjp / disco-pi.git

3. Pasang tanggungan

cd disko-pi

pasang npm

Ini mungkin mengambil masa 2-3 minit

Langkah 4: Buat Sijil SSL yang Ditandatangani Sendiri

1. Buat fail kunci peribadi

cd /opt/com.jonhaydock/disco-pi/certs

openssl genrsa -out disco-pi-key.pem 2048

2. Buat CSR (Permintaan Penandatanganan Sijil)

openssl req -new -key disco-pi-key.pem -out disco-pi-csr.pem

Pada ketika ini anda akan diminta untuk mendapatkan beberapa maklumat untuk permintaan sijil. Oleh kerana ini adalah sijil yang ditandatangani sendiri, terserah kepada anda seberapa tepat anda mengisi butirannya. Inilah contohnya

Nama Negara (kod 2 huruf) [AU]: CA

Nama Negeri atau Wilayah (nama penuh) [Beberapa Negeri]: Nama Lokasi British Columbia (contohnya, bandar) : Nama Organisasi Vancouver (contohnya, syarikat) [Internet Widgits Pty Ltd]: Nama Unit Organisasi Disco Pi (contoh, bahagian) : Nama Umum (mis. FQDN pelayan atau nama ANDA) : disco-pi Alamat E-mel : [email protected] Kata laluan cabaran : Nama syarikat pilihan :

Dalam contoh ini, tekan kembali untuk mengosongkan kata laluan cabaran

3. Hasilkan perakuan

openssl x509 -req -days 1095 -in disco-pi-csr.pem -signkey disco-pi-key.pem -out disco-pi-cert.pem

4. Untuk keselamatan tambahan kami juga akan membuat fail Diffie Hellman Parameters

openssl dhparam -out dh_2048.pem 2048

Ini boleh mengambil masa 15-20 minit

Langkah 5: Menyambungkan Perkakasan

Menyambungkan Perkakasan
Menyambungkan Perkakasan
Menyambungkan Perkakasan
Menyambungkan Perkakasan
Menyambungkan Perkakasan
Menyambungkan Perkakasan
Menyambungkan Perkakasan
Menyambungkan Perkakasan

Menghidupkan jalur LED

Jalur LED dikuasakan oleh 12 volt. Raspberry Pi hanya mampu mengeluarkan 3.3v atau 5v dan tidak mampu mengeluarkan di mana sahaja berdekatan dengan amp yang diperlukan untuk menggerakkan begitu banyak LED.

Penting untuk tidak menyambungkan bekalan kuasa 12 volt ke Raspberry Pi.

Jalur saya juga mempunyai wayar kuasa tambahan yang disambungkan ke jalur di kedua-dua hujungnya. Saya mencadangkan agar anda merekamnya agar tidak bersentuhan dengan peralatan anda yang lain.

Lakukan langkah seterusnya dengan risiko anda sendiri. Saya tidak bertanggungjawab untuk apa-apa yang mungkin salah.

Jalur LED

Jalur LED saya mempunyai tiga wayar:

MERAH - +12 Volt

HITAM - Tanah

HIJAU - Data

CATATAN: ada Din dan Dout - Data In dan Data Out. Pastikan anda bekerja dengan hujung jalur LED yang bertuliskan Din.

Memastikan bahawa Barrel Jack tidak disambungkan ke bekalan kuasa

1. Sambungkan wayar Merah dari jalur LED ke sisi + Barrel Jack.

Saya menggunakan wayar cangkuk 22 gauge putih.

Letakkan wayar ke slot + di soket tong dan skru di tempatnya.

Tolak hujung wayar yang lain ke soket pada LED. Pastikan anda berhubung dengan wayar merah.

2. Sambungkan wayar Hitam dari jalur LED ke sisi Barrel Jack.

Saya menggunakan wayar penyambung 22 tolok hitam.

Letakkan wayar ke dalam - slot di soket tong. Pada titik ini juga letakkan hujung lelaki salah satu kabel penyambung (wayar coklat di foto) ke dalam lubang yang sama dan pasangkan keduanya di tempatnya.

Tolak hujung wayar hitam yang lain ke soket pada LED.

Pastikan anda berhubung dengan wayar hitam.

3. Sambungkan wayar hijau dari jalur LED

Ambil salah satu kabel penyambung femal ke lelaki. Dalam foto saya ini adalah wayar hijau.

Letakkan hujung lelaki ke soket LED dengan wayar hijau.

Ini adalah kabel data.

Pai raspberi

1. Ambil kabel penyambung hijau dan sambungkannya ke Raspberry Pi GPIO.

Anda perlu menyambungkannya ke PCM_CLK (Pin 12 / GPIO 18)

2. Ambil kabel penyambung hitam dan sambungkan ke Raspberry Pi GPIO.

Anda perlu menghubungkannya ke salah satu alasan. Saya cadangkan anda menggunakan pin 14, tetapi anda juga boleh menggunakan pin 6, 9, 20, 25, 30, 34 atau 39.

CATATAN: agar sumber ini berfungsi, sumber kuasa LED dan Raspberry Pi mesti mempunyai persamaan. Perhatikan juga bahawa anda tidak boleh menyambungkan 12 Volt + (wayar Merah) ke Raspberry Pi.

Kuasa LED

Anda tidak seharusnya dapat menyambungkan bekalan kuasa 12 volt ke soket tong

Semua LED pada jalur LED anda kini harus menyala PUTIH

Langkah 6: Kod Sampingan Pelayan

Menjalankan kod sisi pelayan

cd /opt/com.jonhaydock/disco-pi

sudo npm bermula

Ini akan memulakan pelayan web dan mula mendengar permintaan HTTPS dan WSS.

Port lalai adalah 443, tetapi anda boleh mengatasinya dengan menetapkan pemboleh ubah persekitaran sebelum memulakan kod. Sebagai contoh

eksport DISCO_PI_PORT = 1443

Jalur LED saya mempunyai 150 LED. Ini dikawal dalam kumpulan bertiga. Ini bermaksud bahawa saya tidak dapat mengawal setiap LED secara individu, dan saya perlu menghantar cukup maklumat untuk mengawal 50.

Sekiranya LED anda mempunyai lebih kurang anda boleh mengatasi jumlah LED yang anda kendalikan dengan meneruskan parameter ke permulaan. Contohnya, jika anda hanya dapat mengawal 10 LED

sudo npm bermula 10

Kod pelayan utama boleh didapati di fail app.js. Fail ini memulakan pelayan web HTTPS dan juga menambah pada socket.io untuk mendengar permintaan soket web pada port yang sama.

Untuk mengakses laman web, anda harus membuka penyemak imbas web di komputer utama anda (saya hanya mengujinya di Chrome) dan menggunakan alamat IP Raspberry Pi, mis.

10.0.1.2/

Anda boleh mengetahui alamat IP anda dari baris arahan Raspberry Pi.

ifconfig

Pelayan laman web akan menyajikan semua kandungan di bawah folder awam. Secara lalai untuk memaparkan halaman index.html.

Ia mempunyai satu titik akhir API - / api / audio. Titik akhir ini mencari sebarang fail di bawah folder awam / audio dan mengembalikan senarai. Sebagai contoh

["GYAKO.mp3", "Havana (feat. Young Thug).mp3", "Queen_Bohemian_Rhapsody.mp3", "Set It All Free.mp3", "Inilah Yang Anda Nikmati (feat. Rihanna).mp3"]

Untuk menambahkan muzik sebagai pilihan, salin fail ke folder ini. Saya secara peribadi menggunakan Filezilla over ssh. Folder yang ingin anda tambahkan fail adalah /opt/com.jonhaydock/disco-pi/public/audio

Langkah 7: Kod Laman Web

Kod Laman Web
Kod Laman Web

Apabila anda melayari laman web, anda akan melihat sesuatu seperti ini.

Sekiranya anda melihat amaran keselamatan, ini kerana kami menggunakan sijil SSL yang ditandatangani sendiri. Anda boleh mengabaikannya atau menambahkannya sebagai pengecualian.

Semasa memilih nama fail, sumber untuk elemen audio HTML 5. akan ditetapkan ke fail itu. Setelah siap, muzik akan mula dimainkan. Setelah lagu selesai, muzik akan berhenti.

Sekiranya anda memilih pilihan Tiada, muzik akan berhenti dimainkan.

Semasa memainkan fail muzik, halaman web menggunakan antara muka AudioContext untuk menganalisis muzik, yang kemudian dikirim ke pelayan melalui sambungan soket web yang selamat.

Mesejnya adalah jenis yang telah disediakan oleh socket.io pada pelayan untuk mendengarkan "ws2811". Ini mengandungi susunan 50 elemen, yang antara 0 dan 255.

"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}

Pelayan menggunakan perpustakaan Node RPI WS281x Native (membungkus perpustakaan WS281X Jeremy Garff) untuk menukar warna LED pada jalur LED WS2811, berdasarkan data yang dihantar melalui soket web.

Langkah 8: Akhirnya

Image
Image

Anda harus melihat LED pada jalur berubah warna dengan muzik, berdasarkan analisis Fast Fourier Transform yang dilakukan di laman web.

Saya harap anda menikmati ini. Beritahu saya apa yang anda lakukan dengannya!

CATATAN: Sekiranya anda mempunyai masalah

Oleh kerana perpustakaan ini dan audio Raspberry Pi onboard menggunakan PWM, mereka tidak dapat digunakan bersama.

Anda mungkin perlu menyenarai hitam modul kernel audio Broadcom dengan membuat fail /etc/modprobe.d/snd-blacklist.conf dengan

senarai hitam snd_bcm2835

Sekiranya peranti audio masih dimuat setelah senarai hitam, anda mungkin juga perlu mengomentarinya dalam fail / etc / modules. Pada sistem tanpa kepala, anda mungkin juga perlu memaksa audio melalui HDMI

Edit config.txt dan tambahkan:

hdmi_force_hotplug = 1

hdmi_force_edid_audio = 1

But semula perlu dilakukan agar perubahan ini berlaku

Disyorkan: