Daftar Isi:
- Langkah 1: Peralatan
- Langkah 2: Menyiapkan Raspberry Pi
- Langkah 3: Menyiapkan Kode Contoh
- Langkah 4: Buat Sertifikat SSL yang Ditandatangani Sendiri
- Langkah 5: Menghubungkan Perangkat Keras
- Langkah 6: Kode Sisi Server
- Langkah 7: Kode Situs Web
- Langkah 8: Akhirnya
Video: Disko-pi: 8 Langkah (dengan Gambar)
2024 Pengarang: John Day | [email protected]. Terakhir diubah: 2024-01-30 09:58
Instruksi ini menunjukkan cara menggunakan Raspberry Pi untuk mengontrol strip LED berwarna, berdasarkan musik yang diputar dari browser web.
Ini menunjukkan cara membuat situs web dasar menggunakan Node.js melalui HTTPS dan menggunakan socket.io melalui WSS (Secure Websocket).
Situs web ini memiliki satu halaman yang memiliki tata letak yang sangat mendasar. Halaman web mengisi daftar drop-down dengan file musik, yang terletak di folder publik/audio di server. Memilih opsi dalam daftar akan memutar file musik di halaman web menggunakan elemen audio HTML 5. Saat memutar file musik, halaman web menggunakan antarmuka AudioContext untuk menganalisis musik, yang kemudian dikirim ke server melalui koneksi soket web yang aman.
Server yang berjalan pada Raspberry Pi menggunakan Node RPI WS281x Native library (membungkus library WS281X Jeremy Garff) untuk mengubah warna LED pada strip LED WS2811, berdasarkan data yang dikirim melalui websocket.
Contoh kode dapat ditemukan di sini: disco-pi
Langkah 1: Peralatan
- Raspberry Pi - Saya menggunakan Raspberry Pi 2B yang saya miliki, tetapi Anda bisa mendapatkan Raspberry Pi 3 Starter Kit dengan harga sekitar CAD 100
- WS2811 LED Strip - Saya bermain dengan ALITOVE 16.4ft 150 Pixels WS2811. Ini dilengkapi dengan pengontrol dan catu daya sekitar CAD 45-50
- Konektor Barrel Jack - Saya membeli satu dari toko elektronik lokal saya, kira-kira seperti ini. Pastikan jika cocok dengan catu daya Anda
- Konektor / Kawat Jumper - Saya memiliki beberapa kabel konektor Female to Male dan beberapa kabel pengait 22 Gauge Solid tergeletak di sekitar
Langkah 2: Menyiapkan Raspberry Pi
Sistem operasi
Saya biasanya menggunakan Raspbian build terbaru. Unduh gambar dan tulis ke Kartu SD. Jika Anda menggunakan komputer Windows, Anda dapat menggunakan Win32 Disk Imager untuk menulis gambar ke Kartu SD.
Node.js
Instal Node.js versi terbaru. Pada saat penulisan saya menggunakan 8.9.1
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install nodejs
Instal git
sudo apt-get install git
Langkah 3: Menyiapkan Kode Contoh
Kloning kode contoh
1. Siapkan folder dasar untuk menginstal ke
cd /opt
sudo mkdir com.jonhaydock sudo chown pi:pi com.jonhaydockcd com.jonhaydock
2. Kloning contoh repositori git
git clone
atau
git clone [email protected]:haydockjp/disco-pi.git
3. Instal dependensi
cd disko-pi
instal npm
Ini mungkin memakan waktu 2-3 menit
Langkah 4: Buat Sertifikat SSL yang Ditandatangani Sendiri
1. Buat file kunci pribadi
cd /opt/com.jonhaydock/disco-pi/certs
openssl genrsa -out disco-pi-key.pem 2048
2. Buat CSR (Permintaan Penandatanganan Sertifikat)
openssl req -new -key disco-pi-key.pem -out disco-pi-csr.pem
Pada titik ini Anda akan diminta untuk beberapa informasi untuk permintaan sertifikat. Karena ini adalah sertifikat yang ditandatangani sendiri, terserah Anda seberapa akurat Anda mengisi detailnya. Berikut ini contohnya
Nama Negara (kode 2 huruf) [AU]:CA
Nama Negara Bagian atau Provinsi (nama lengkap) [Some-State]:Nama Lokalitas British Columbia (misalnya, kota) :Nama Organisasi Vancouver (misalnya, perusahaan) [Internet Widgits Pty Ltd]:Nama Unit Organisasi Disko Pi (misalnya, bagian) : Nama Umum (mis. server FQDN atau nama ANDA) :disco-pi Alamat Email :[email protected] Kata sandi tantangan : Nama perusahaan opsional :
Dalam contoh ini, cukup tekan kembali untuk mengosongkan kata sandi tantangan
3. Hasilkan sertifikat
openssl x509 -req -days 1095 -in disco-pi-csr.pem -signkey disco-pi-key.pem -out disco-pi-cert.pem
4. Untuk keamanan ekstra, kami juga akan membuat file Parameter Diffie Hellman
openssl dhparam -out dh_2048.pem 2048
Ini bisa memakan waktu 15-20 menit
Langkah 5: Menghubungkan Perangkat Keras
Memberi daya pada strip LED
Strip LED ditenagai oleh 12 volt. Raspberry Pi hanya mampu menghasilkan keluaran 3.3v atau 5v dan tidak mampu menghasilkan keluaran mendekati ampli yang dibutuhkan untuk menggerakkan begitu banyak LED.
Penting untuk tidak menghubungkan catu daya 12 volt ke Raspberry Pi.
Strip saya juga memiliki kabel daya tambahan yang terhubung ke strip di kedua ujungnya. Saya sarankan Anda merekam ini sehingga mereka tidak melakukan kontak dengan peralatan Anda yang lain.
Lakukan langkah selanjutnya dengan risiko Anda sendiri. Saya tidak bertanggung jawab atas apa pun yang mungkin salah.
Jalur LED
Strip LED saya memiliki tiga kabel:
MERAH - +12 Volt
HITAM - Tanah
HIJAU - Data
CATATAN: ada Din dan Dout - Data Masuk dan Data Keluar. Pastikan Anda bekerja dengan ujung strip LED yang bertuliskan Din.
Memastikan bahwa Barrel Jack tidak terhubung ke catu daya
1. Hubungkan kabel Merah dari strip LED ke sisi + Barrel Jack.
Saya menggunakan kawat pengait 22 gauge putih.
Tempatkan kabel ke dalam slot + di jack barel dan kencangkan di tempatnya.
Dorong ujung kabel yang lain ke soket pada LED. Pastikan Anda terhubung dengan kabel merah.
2. Hubungkan kabel Hitam dari strip LED ke - sisi Barrel Jack.
Saya menggunakan kabel pengait 22 gauge hitam.
Tempatkan kabel ke dalam slot - di jack barel. Pada titik ini juga tempatkan ujung jantan dari salah satu kabel konektor (kawat coklat di foto) ke dalam lubang yang sama dan kencangkan keduanya pada tempatnya.
Dorong ujung lain dari kabel hitam ke dalam soket pada LED.
Pastikan Anda terhubung dengan kabel hitam.
3. Hubungkan kabel hijau dari strip LED
Ambil salah satu kabel konektor femal ke male. Dalam foto saya ini adalah kabel hijau.
Tempatkan ujung jantan ke dalam soket LED dengan kabel hijau.
Ini kabel datanya.
Raspberry Pi
1. Ambil kabel konektor hijau dan sambungkan ke Raspberry Pi GPIO.
Anda perlu menghubungkannya ke PCM_CLK (Pin 12 / GPIO 18)
2. Ambil kabel konektor hitam dan sambungkan ke Raspberry Pi GPIO.
Anda harus menghubungkannya ke salah satu dasar. Saya sarankan Anda menggunakan pin 14, tetapi Anda juga bisa menggunakan pin 6, 9, 20, 25, 30, 34 atau 39.
CATATAN: agar ini berfungsi, sumber daya LED dan Raspberry Pi harus memiliki kesamaan. Perhatikan juga bahwa Anda tidak boleh menghubungkan 12 Volt + (kabel Merah) ke Raspberry Pi.
Daya LED
Anda seharusnya tidak dapat menghubungkan catu daya 12 volt Anda ke jack barel
Semua LED pada strip LED Anda sekarang harus menyala PUTIH
Langkah 6: Kode Sisi Server
Menjalankan kode sisi server
cd /opt/com.jonhaydock/disco-pi
sudo npm mulai
Ini akan memulai server web dan mulai mendengarkan permintaan HTTPS dan WSS.
Port default adalah 443, tetapi Anda dapat menggantinya dengan mengatur variabel lingkungan sebelum memulai kode. Sebagai contoh
ekspor DISCO_PI_PORT=1443
Strip LED saya memiliki 150 LED. Ini dikendalikan dalam kelompok bertiga. Ini berarti bahwa saya tidak dapat mengontrol setiap LED satu per satu, dan saya perlu mengirimkan informasi yang cukup untuk mengontrol 50.
Jika LED Anda memiliki lebih atau kurang, Anda dapat mengganti jumlah LED yang Anda kendalikan dengan meneruskan parameter ke start up. Misalnya, jika Anda hanya dapat mengontrol 10 LED
sudo npm mulai 10
Kode server utama dapat ditemukan di file app.js. File ini memulai server web HTTPS dan juga menambahkan socket.io untuk mendengarkan permintaan websocket pada port yang sama.
Untuk mengakses situs web, Anda harus membuka browser web di komputer utama Anda (saya hanya menguji ini di Chrome) dan menggunakan alamat IP Raspberry Pi, mis.
10.0.1.2/
Anda dapat mengetahui alamat IP Anda dari baris perintah Raspberry Pi.
ifconfig
Server web akan menyajikan konten apa pun di bawah folder publik. Default untuk menampilkan halaman index.html.
Ini memiliki satu titik akhir API - /api/audio. Titik akhir ini mencari file apa pun di bawah folder publik/audio dan mengembalikan daftar. Sebagai contoh
["GYAKO.mp3", "Havana (feat. Young Thug).mp3", "Queen_Bohemian_Rhapsody.mp3", "Set It All Free.mp3", "Inilah Tujuanmu (feat. Rihanna).mp3"]
Untuk menambahkan musik sebagai opsi, salin file ke folder ini. Saya pribadi menggunakan Filezilla melalui ssh. Folder tempat Anda ingin menambahkan file adalah /opt/com.jonhaydock/disco-pi/public/audio
Langkah 7: Kode Situs Web
Ketika Anda menekan situs web Anda akan melihat sesuatu seperti ini.
Jika Anda melihat peringatan keamanan, ini karena kami menggunakan sertifikat SSL yang ditandatangani sendiri. Anda dapat mengabaikannya atau menambahkannya sebagai pengecualian.
Saat memilih nama file, sumber untuk elemen audio HTML 5. akan diatur ke file itu. Setelah siap, musik akan mulai diputar. Setelah lagu selesai musik akan berhenti.
Jika Anda memilih opsi Tidak Ada, musik akan berhenti diputar.
Saat memutar file musik, halaman web menggunakan antarmuka AudioContext untuk menganalisis musik, yang kemudian dikirim ke server melalui koneksi soket web yang aman.
Pesannya adalah jenis socket.io di server yang telah diatur untuk mendengarkan "ws2811". Ini berisi array 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}
Server menggunakan pustaka Node RPI WS281x Native (membungkus pustaka WS281X Jeremy Garff) untuk mengubah warna LED pada strip LED WS2811, berdasarkan data yang dikirim melalui soket web.
Langkah 8: Akhirnya
Anda akan melihat LED pada strip berubah warna dengan musik, berdasarkan analisis Fast Fourier Transform yang dilakukan di halaman web.
Saya harap Anda menikmati ini. Beri tahu saya apa yang Anda lakukan dengannya!
CATATAN: Jika Anda memiliki masalah
Karena library ini dan audio Raspberry Pi onboard keduanya menggunakan PWM, keduanya tidak dapat digunakan bersama-sama.
Anda mungkin perlu memasukkan modul kernel audio Broadcom ke daftar hitam dengan membuat file /etc/modprobe.d/snd-blacklist.conf dengan
daftar hitam snd_bcm2835
Jika perangkat audio masih memuat setelah masuk daftar hitam, Anda mungkin juga perlu mengomentarinya di file /etc/modules. Pada sistem tanpa kepala, Anda mungkin juga perlu memaksakan audio melalui HDMI
Edit config.txt dan tambahkan:
HDMI_force_hotplug=1
hdmi_force_edid_audio=1
Reboot diperlukan agar perubahan ini berlaku
Direkomendasikan:
Helm Disko 3D yang Dapat Dicetak!: 11 Langkah (dengan Gambar)
Helm Disko 3D yang Dapat Dicetak!: Terinspirasi oleh helm klasik Daft Punk 'Thomas'. Nyalakan ruangan dan buat iri semua teman Anda dengan helm disko bertenaga Arduino yang menakjubkan ini! Anda akan memerlukan akses ke printer 3D dan besi solder untuk menyelesaikan proyek ini.Jika Anda ingin
Kotak Disko Led: 7 Langkah (dengan Gambar)
Kotak Disko Led: Cara Membuat Kotak Disko Led Anda Sendiri
Meja Disko Menyala: 27 Langkah (dengan Gambar)
Meja Disko Menyala: Setiap apartemen membutuhkan perabotan yang luar biasa, jadi mengapa tidak membuatnya sendiri? Meja kopi ini berisi strip LED yang menyala menjadi berbagai pola dan warna yang dapat disesuaikan. Lampu dikendalikan oleh Arduino dan tombol tersembunyi, dan semuanya
Disko Tak Terbatas: 6 Langkah (dengan Gambar)
Infinite Disco: Dalam proyek ini, saya membuat cermin infinity berdasarkan dodecahedron yang bereaksi terhadap suara
Tatakan Minuman Disko: 4 Langkah (dengan Gambar)
Disco Drinks Coaster: Meskipun kami tinggal di luar Cambridge di Inggris, istri saya secara tragis kecanduan semua hal Las Vegas. Sudah hampir enam bulan sejak kunjungan terakhir kami, dan dia merindukan lampu terang dan koktail. Beberapa hal membuat minuman lebih enak daripada beberapa