Daftar Isi:
- Langkah 1: Peralatan
- Langkah 2: Menyiapkan Raspberry Pi
- Langkah 3: Pi-blaster
- Langkah 4: Menyiapkan Kode Contoh
- Langkah 5: Buat Sertifikat SSL yang Ditandatangani Sendiri
- Langkah 6: Menghubungkan Sirkuit
- Langkah 7: Kode Sisi Server
- Langkah 8: Kode Situs Web
- Langkah 9: Akhirnya
Video: Warna-pi: 9 Langkah
2024 Pengarang: John Day | [email protected]. Terakhir diubah: 2024-01-30 09:58
Instruksi ini menunjukkan cara menggunakan Raspberry Pi untuk mengontrol suara strip LED RGB, melalui situs web, menggunakan Antarmuka Web Speech API untuk SpeechRecognition dan SpeechSynthesis.
Contoh ini menunjukkan bagaimana caranya
- Buat situs web dasar menggunakan Node.js melalui
- Gunakan Antarmuka Web Speech API untuk SpeechRecognition dan SpeechSynthesis.
- Gunakan kerangka kerja Cylon.js untuk mengontrol strip LED RGB pada Raspberry Pi
- Berkomunikasi melalui WSS (Secure Web sockets) dari halaman web ke Cylon.js untuk mengontrol warna LED
Catatan
- Anda akan memerlukan speaker atau headphone untuk mendengar synthesizer ucapan
- Anda harus memberikan akses ke mikrofon Anda agar pengenalan suara berfungsi
- Karena ini mengakses mikrofon Anda, situs harus dijalankan di bawah
- Pustaka cylon-api-socketio tidak mendukung https saat ini. Saya memiliki permintaan tarik yang menunggu untuk digabungkan, tetapi sampai saat itu Anda perlu mengganti /node_modules/cylon-api-socketio/lib/api.js dengan file di repositori ini
- pi-blaster diperlukan untuk membuat ini bekerja.
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
- RGB LED Strip Light - Saya sedang bermain dengan Minger LED Strip Light 32.8ft/10M 600leds RGB SMD 5050. Ini dilengkapi dengan pengontrol dan catu daya sekitar CAD 40
- 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
- Papan PCB Prototipe Solderless Breadboard - sesuatu seperti ini
- 3 x 10kΩ Resistor
- 3 x N-channel MOSFET untuk mengontrol LED - Saya membeli beberapa IRL3303 dari toko elektronik lokal saya. Sangat penting bahwa tegangan ambang gerbang adalah maks. 3.3V sehingga dapat digerakkan oleh pin RPi; biasanya dilambangkan dengan 'L' (Logic-Level) pada namanya.
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: Pi-blaster
pi-blaster mengaktifkan PWM pada pin GPIO yang Anda minta dari Raspberry Pi. Teknik yang digunakan sangat efisien: tidak menggunakan CPU dan memberikan pulsa yang sangat stabil.
Modulasi Lebar Pulsa ini memungkinkan Raspberry Pi untuk mengontrol seberapa terang masing-masing saluran Merah, Hijau dan Biru untuk strip LED.
Pertama, klon repositori
cd /opt/
sudo git clone https://github.com/sarfata/pi-blaster.git Sudo chown -R pi:pi pi-blaster
Kemudian, bangun dan instal
cd /opt/pi-blaster./autogen.sh &&./configure && make && Sudo make install
Terakhir, konfigurasikan pin mana yang ingin Anda gunakan
Di bawah akun root, atau menggunakan sudo, buat dan edit file
/etc/default/pi-blaster
Tambahkan baris berikut
DAEMON_OPTS=--gpio 23, 24, 25
Pin gpio ini harus cocok dengan pin yang Anda sambungkan ke strip LED Anda.
CATATAN: Ada perbedaan antara GPIO dan nomor pin. Contoh ini menggunakan yang berikut:
LED - Biru, GPIO-23, Pin - 16
LED - Merah, GPIO-24, Pin - 18 LED - Hijau, GPIO-25, Pin - 22
Tweak ekstra
Mulai pi-blaster
sudo layanan pi-blaster mulai
Mulai ulang pi-blaster
sudo service pi-blaster restart
Hentikan pi-blaster
sudo service pi-blaster stop
Mulai pi-blaster secara otomatis saat boot
sudo systemctl aktifkan pi-blaster
Peringatan dan peringatan lainnya
Pin yang digunakan oleh pi-blaster akan dikonfigurasi sebagai output. Jangan mencolokkan sesuatu pada input atau Anda dapat merusaknya! Daemon ini menggunakan generator PWM perangkat keras dari raspberry pi untuk mendapatkan pengaturan waktu yang tepat. Ini mungkin mengganggu output kartu suara Anda.
Langkah 4: 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/colour-pi.git
3. Instal dependensi
cd warna-pi
instal npm
Ini mungkin memakan waktu 2-3 menit
4. Proyek ini perlu berkomunikasi melalui HTTPS dan WSS. Saat ini cylon-api-socketio tidak mendukung koneksi SSL. Ada permintaan tarik terbuka untuk menambahkan dukungan ini, tetapi sampai digabung, ada file tambalan di repositori ini. Jalankan perintah berikut setelah npm install
git checkout node_modules/cylon-api-socketio/lib/api.js
Langkah 5: Buat Sertifikat SSL yang Ditandatangani Sendiri
1. Buat file kunci pribadi
cd /opt/com.jonhaydock/colour-pi/certs
openssl genrsa -out color-pi-key.pem 2048
2. Buat CSR (Permintaan Penandatanganan Sertifikat)
openssl req -new -key color-pi-key.pem -out color-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]:British Columbia Locality Name (misalnya, kota) :Nama Organisasi Vancouver (misalnya, perusahaan) [Internet Widgits Pty Ltd]:Nama Unit Organisasi Color Pi (misalnya, bagian) : Nama Umum (misalnya server FQDN atau nama ANDA) :alamat email warna-pi :[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 color-pi-csr.pem -signkey color-pi-key.pem -out color-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 6: Menghubungkan Sirkuit
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. Transistor MOSFET N-channel digunakan untuk memisahkan 3.3v pada pin RPi dan 12v dari catu daya LED.
MOSFET memiliki tiga pin Gate, Drain dan Source. Jika Anda tidak yakin yang mana google untuk lembar data transistor yang Anda gunakan, mis. IRL3303
Kami akan menghubungkan Pin Raspberry Pi ke Gerbang, kabel LED ke Drain dan landasan bersama ke Sumber. Ketika Pin menjadi tinggi, tegangan antara Drain dan Sumber akan mengaktifkan Gerbang dan akan menghubungkan gerbang ke Sumber.
Kami juga akan menempatkan Resistor 10kΩ di Gerbang dan Sumber, sehingga ketika kami pin RPi tinggi, kami dapat melindungi pin dengan mengurangi arus yang melewatinya.
Lakukan langkah selanjutnya dengan risiko Anda sendiri. Saya tidak bertanggung jawab atas apa pun yang mungkin salah
Ada gambar fritzing dan foto sirkuit yang sebenarnya di atas.
Saya akan merekomendasikan melakukan ini saat daya dimatikan untuk RPi dan strip LED
Siapkan sirkuit transistor, satu per saluran warna
- Masukkan salah satu transistor ke papan tempat memotong roti seperti yang ditunjukkan pada diagram
- Masukkan salah satu Resistor 10kΩ melintasi Drain dan pin Sumber transistor. Ini pin pertama dan terakhir
- Gunakan beberapa kabel untuk menghubungkan pin Sumber (pin terakhir) ke ground pada papan tempat memotong roti
- Ulangi langkah 1 - 3 dua kali lagi, sehingga Anda memiliki tiga set - satu per warna (Merah, Hijau dan Biru)
Hubungkan pin RPi ke papan
- Hubungkan Pin 16 ke Pin Gerbang (pin pertama) dari transistor pertama - Ini akan menjadi saluran LED Biru
- Hubungkan Pin 18 ke Pin Gerbang (pin pertama) transistor pertama - Ini akan menjadi saluran LED Merah
- Hubungkan Pin 20 ke salah satu garis Ground di sisi papan tempat memotong roti
- Hubungkan Pin 22 ke Pin Gerbang (pin pertama) dari transistor pertama - Ini akan menjadi saluran LED Hijau
Saya telah menggunakan warna kabel yang serasi dengan LED: Biru, Merah dan Hijau. Saya telah menggunakan hitam untuk tanah
Hubungkan Jack Barel
- Hubungkan kabel putih ke ujung + jack barel
- Hubungkan kabel hitam ke - ujung jack barel
- Hubungkan kabel hitam ke garis tanah yang sama pada papan tempat memotong roti sebagai RPi Pin 20 terhubung ke
- Hubungkan kabel putih ke garis + di papan tempat memotong roti
Menghubungkan strip LED
Strip LED saya dilengkapi dengan konektor yang berukuran cukup baik sehingga dapat dicolokkan sementara ke papan tempat memotong roti. Saya mendorong konektor di papan tempat memotong roti dan menghubungkannya ke pengujian sirkuit.
- Transistor pertama terhubung ke Pin 16. Saya menjalankan kabel biru dari pin Drain (pin tengah) ke kabel biru pada konektor strip LED
-
Transistor kedua terhubung ke Pin 18. Saya menjalankan kabel merah dari
Mengeringkan
pin (pin tengah) ke kabel merah pada konektor strip LED
-
Transistor ketiga terhubung ke Pin 22. Saya menjalankan kabel hijau dari
Mengeringkan
pin (pin tengah) ke kabel hijau pada konektor strip LED
- Akhirnya, saya menjalankan kabel putih dari garis + pada papan tempat memotong roti yang terhubung ke jack barel, ke kabel putih pada konektor strip LED.
Kekuasaan
Setelah memeriksa sirkuit, Anda harus menyalakan Raspberry Pi dan mencolokkan catu daya 12v ke jack barel.
Langkah 7: Kode Sisi Server
Menjalankan kode sisi server
cd /opt/com.jonhaydock/colour-pi
sudo npm mulai
Ini akan memulai server web dan mulai mendengarkan permintaan HTTPS dan WSS.
CATATAN: Ingatlah untuk menjalankan pi-blaster terlebih dahulu
Variabel Lingkungan
Port situs web default adalah 443, tetapi Anda dapat menggantinya dengan mengatur variabel lingkungan sebelum memulai kode. Sebagai contoh
ekspor COLOUR_PI_PORT=2443
Port soket web default adalah 1443, tetapi Anda dapat menggantinya dengan mengatur variabel lingkungan sebelum memulai kode. Sebagai contoh
ekspor COLOUR_PI_WSS_PORT=3443
Catatan: Karena soket web ditangani oleh cylon.js dan bukan situs web utama, soket ini harus berada di port yang berbeda
Pin yang digunakan untuk Biru (pin 16), Hijau (pin 18) dan Merah (pin 22) juga dapat diganti. Sebagai contoh
ekspor COLOUR_PI_PIN_BLUE=36
ekspor COLOUR_PI_PIN_RED=38 ekspor COLOUR_PI_PIN_GREEN=40
Catatan: Ini harus cocok dengan pin fisik yang Anda gunakan. Jika Anda mengubahnya, Anda juga perlu memperbarui GPIO yang ditentukan dalam file /etc/default/pi-blaster. Sebagai contoh
DAEMON_OPTS=--gpio 16, 20, 21
Kode server utama dapat ditemukan di file app.js. File ini memulai server web HTTPS dan juga, melalui kerangka kerja Cylon.js, menggunakan socket.io untuk mendengarkan permintaan soket web pada port terpisah.
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.
Cylon.js membuat titik akhir yang dapat Anda hubungkan ke Socket.io.
10.0.1.2:1443/api/robots/colour-pi
Anda dapat mengirim pesan set_colour melalui soket untuk mengatur nilai Merah, Hijau dan Biru
device.emit('set_color', r, g, b)
Yang memanggil perintah set_colour, yang memanggil fungsi setColor di app.js. Fungsi ini mengatur tingkat kecerahan, untuk masing-masing nilai R, G dan B, antara 0 dan 255. Di mana 0 mati dan 255 menyala penuh.
misalnya
Merah r=255, g=0, b=0
Hijau r=0, g=255, b=0 Biru r=0, g=0, b=255 Putih r=255, g=255, b=255 Hitam / Mati r=0, g=0, b=0
Langkah 8: Kode Situs Web
Umum
Situs web menggunakan pengenalan suara untuk memilih warna dari daftar yang telah ditentukan. Untuk menambahkan warna ke daftar, edit file di server: public/data/colours.json
misalnya
"merah":"#FF0000", Ketika warna ditemukan, atau dipilih dari drop down, kotak Output akan diatur ke warna itu dan pesan akan dikirim melalui socket.io ke Raspnerry Pi, yang akan mengatur LED ke warna yang sama.
CATATAN: tergantung pada seberapa bagus LED Anda, Anda mungkin atau mungkin tidak melihat warna yang sama. Beberapa lebih mudah diduplikasi daripada yang lain
Saat pertama kali memuat situs web, karena Anda menggunakan sertifikat SSL yang ditandatangani sendiri, Anda harus mengakuinya di browser. Anda akan melihat peringatan keamanan tentang sertifikat.
Pengenalan suara
Kotak ini memiliki ikon mikrofon. Jika Anda mengklik ikon saat berwarna hijau, itu akan mulai mendengarkan warna. Saat mendengarkan, itu akan berubah menjadi merah. Ini akan mendengarkan untuk waktu yang singkat dan kemudian berhenti. Mengklik ikon mikrofon saat berwarna merah juga akan menghentikannya dari mendengarkan.
Karena situs ini perlu mengakses mikrofon Anda, Anda harus memberinya izin saat diminta
CATATAN: Anda memerlukan mikrofon untuk bagian ini. Saya menggunakan yang ada di kamera web saya.
Transkrip Sementara
Kotak ini melacak tebakan kata-kata yang Anda ucapkan, saat Anda mengucapkannya.
Transkrip Akhir
Kotak ini melacak tebakan terakhir adalah apa yang Anda katakan.
Warna yang Diketahui
Ini adalah daftar semua warna yang diketahui halaman. Itu dibuat dari file colors.json. Jika Anda memilih salah satu dari warna ini, halaman akan berbicara tentang warna dan mengatur warna output.
CATATAN: Anda memerlukan speaker atau headphone untuk mendengarkan pidato
Warna yang Ditemukan
Halaman web ini saat ini hanya mendukung pencocokan warna. Jika kata atau kata-kata yang Anda ucapkan ke mikrofon cocok dengan nama warna yang diketahui, atau Anda memilih warna dari daftar Warna yang Dikenal, itu akan ditambahkan di sini sebagai log.
Keluaran
Warna yang terakhir ditemukan akan ditampilkan di sini. Nilai Color Hex (misalnya #7cb9e8) dan nilai RGB (misalnya 124, 185, 232) akan ditampilkan sebagai teks dan latar belakang kotak di tengah akan diatur ke warna sebenarnya.
Warna ini juga dikirim ke Raspberry Pi dan Anda akan melihat warna strip LED berubah.
CATATAN: jika Anda tidak melihat perubahan warna LED, coba mulai ulang pi-blaster dan/atau aplikasi node.js
sudo service pi-blaster restart
sudo npm mulai
Suara yang Dikenal
Kotak ini menampilkan daftar "Suara yang Diketahui" dari speechSynthesis yang didukung. Memilih salah satu dari suara ini akan mengubah suara dan bahasa yang akan Anda dengar, dan akan mengucapkan nama suara tersebut.
Ini juga akan mengubah bahasa SpeechRecognition menjadi sama dengan yang dipilih dalam daftar.
Langkah 9: Akhirnya
Berikut adalah contoh dari apa yang harus Anda lihat.
Tolong beri tahu saya jika Anda memiliki masalah dan saya dapat memperbarui sesuai kebutuhan.
Direkomendasikan:
Kursi Panas: Buat Bantalan Pemanas yang Berubah Warna: 7 Langkah (dengan Gambar)
Kursi Panas: Buat Bantalan Pemanas yang Berubah Warna: Ingin membuat diri Anda tetap hangat di hari-hari musim dingin? Kursi Panas adalah proyek yang menggunakan dua kemungkinan e-tekstil yang paling menarik - perubahan warna dan panas! Kami akan membuat bantalan kursi yang menghangat, dan saat siap digunakan, ia akan mengungkapkan
Cara Membuat Kode Penyortir Warna di Modkit untuk Vex: 7 Langkah
Cara Membuat Kode Penyortir Warna di Modkit untuk Vex: Hai semuanya,Dalam tutorial ini Anda akan belajar cara membuat kode penyortir bola warna di Modkit untuk VexSemoga Anda berhasil dan menikmati! Tolong pilih saya
Cara Menggunakan Photocell untuk Mengubah Warna LED RGB: 3 Langkah
Cara Menggunakan Fotosel untuk Mengubah Warna LED RGB: Untuk proyek Arduino saya bagian 01 ide awal saya adalah menggunakan sensor suhu untuk menghidupkan dan mematikan LED, tetapi sayangnya sensor suhu saya belum datang yang membuat saya harus memilih dari sensor yang tersedia di starter kit Elegoo, dan bertanya-tanya apakah
Mengubah Warna LED: 13 Langkah
LED Pengubah Warna: Saya ditugaskan untuk membuat prototipe menggunakan semacam sensor untuk menghasilkan output. Saya memutuskan untuk menggunakan fotosel, yang mengukur jumlah cahaya di suatu lingkungan, dan LED RGB sebagai outputnya. Saya tahu saya ingin menggabungkan kemampuan LED
Mengubah Warna Mudah Berbasis Kemiringan Lampu Kubus Rubik Nirkabel: 10 Langkah (dengan Gambar)
Lampu Rubik's Cube Nirkabel Berbasis Kemiringan Mudah Berubah: Hari ini kita akan membuat lampu Rubik's Cube-esque yang mengagumkan ini yang berubah warna berdasarkan sisi mana yang menghadap ke atas. Kubus berjalan pada baterai LiPo kecil, diisi oleh kabel micro-usb standar, dan, dalam pengujian saya, memiliki masa pakai baterai beberapa hari. Ini