Isi kandungan:
- Langkah 1: Peralatan
- Langkah 2: Menyiapkan Raspberry Pi
- Langkah 3: Pi-blaster
- Langkah 4: Menetapkan Contoh Kod
- Langkah 5: Buat Sijil SSL yang Ditandatangani Sendiri
- Langkah 6: Pendawaian Litar
- Langkah 7: Kod Sampingan Pelayan
- Langkah 8: Kod Laman Web
- Langkah 9: Akhirnya
Video: Warna-pi: 9 Langkah
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:12
Instruksional ini menunjukkan cara menggunakan Raspberry Pi untuk mengawal suara jalur LED RGB, melalui laman web, menggunakan Antaramuka API Ucapan Web untuk Ucapan Pengenalan dan Sintesis Ucapan.
Contoh ini menunjukkan cara untuk
- Buat laman web asas menggunakan Node.js melalui
- Gunakan Antaramuka API Speech Web untuk SpeechRecognition dan SpeechSynthesis.
- Gunakan rangka Cylon.js untuk mengawal jalur LED RGB pada Raspberry Pi
- Berkomunikasi melalui WSS (soket Web Selamat) dari laman web ke Cylon.js untuk mengawal warna untuk LED
Catatan
- Anda memerlukan pembesar suara atau fon kepala untuk mendengar synthesizer ucapan
- Anda perlu memberi akses ke mikrofon anda agar pengecaman suara berfungsi
- Kerana mengakses mikrofon anda, laman web ini perlu dijalankan di bawah
- Perpustakaan cylon-api-socketio tidak menyokong https pada masa ini. Saya mempunyai permintaan tarik yang menunggu untuk digabungkan, tetapi sehingga anda perlu mengganti /node_modules/cylon-api-socketio/lib/api.js dengan fail di repositori ini
- pi-blaster diperlukan untuk membuat kerja ini.
Langkah 1: Peralatan
- Raspberry Pi - Saya menggunakan Raspberry Pi 2B yang saya gunakan, tetapi anda boleh mendapatkan Kit Permulaan Raspberry Pi 3 dengan harga sekitar CAD 100
- RGB LED Strip Light - Saya bermain dengan Minger LED Strip Light 32.8ft / 10M 600leds RGB SMD 5050. Ini dilengkapi dengan alat kawalan dan bekalan kuasa dengan harga kira-kira CAD 40
- Barrel Jack Connector - Saya membelinya dari kedai elektronik tempatan, seperti ini. Pastikan jika sesuai dengan bekalan kuasa anda
- Penyambung / Kawat Jumper - Saya mempunyai beberapa kabel penyambung Perempuan ke Lelaki dan beberapa wayar penyambung 22 Gauge Solid yang terletak di sekitar
- Breadboard Solderless Prototype PCB Board - sesuatu seperti ini
- Perintang 3 x 10kΩ
- 3 x N-channel MOSFET untuk mengawal LED - Saya membeli beberapa IRL3303 dari kedai elektronik tempatan saya. Penting bahawa voltan ambang pintu adalah maksimum. 3.3V sehingga dapat didorong oleh pin RPi; biasanya dilambangkan dengan 'L' (Logic-Level) dalam nama.
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: Pi-blaster
pi-blaster membolehkan PWM pada pin GPIO yang anda minta dari Raspberry Pi. Teknik yang digunakan sangat efisien: tidak menggunakan CPU dan memberikan denyutan yang sangat stabil.
Modulasi Lebar Nadi ini membolehkan Raspberry Pi mengawal seberapa terang setiap saluran Merah, Hijau dan Biru untuk jalur LED.
Pertama, klon repositori
cd / pilih /
sudo git clone https://github.com/sarfata/pi-blaster.git sudo chown -R pi: pi pi-blaster
Kemudian, bina dan pasang
cd / opt / pi-blaster./autogen.sh &&./configure && make && sudo buat pemasangan
Akhirnya, konfigurasikan pin mana yang ingin anda gunakan
Di bawah akaun root, atau menggunakan sudo, buat dan edit fail
/ etc / default / pi-blaster
Tambahkan baris berikut
DAEMON_OPTS = - gpio 23, 24, 25
Pin gpio ini perlu sepadan dengan pin yang anda sambungkan ke jalur LED anda.
CATATAN: Terdapat perbezaan antara GPIO dan nombor pin. Contoh ini menggunakan perkara berikut
LED - Biru, GPIO-23, Pin - 16
LED - Merah, GPIO-24, Pin - 18 LED - Hijau, GPIO-25, Pin - 22
Tweak tambahan
Mulakan pi-blaster
sudo service pi-blaster bermula
Mulakan semula pi-blaster
perkhidmatan sudo restart pi-blaster
Hentikan pi-blaster
perkhidmatan sudo pi-blaster stop
Mulakan pi-blaster secara automatik pada waktu boot
sudo systemctl mengaktifkan pi-blaster
Amaran dan peringatan lain
Pin yang digunakan oleh pi-blaster akan dikonfigurasi sebagai output. Jangan pasang sesuatu pada input atau anda mungkin menghancurkannya! Daemon ini menggunakan penjana PWM perkakasan dari raspberry pi untuk mendapatkan masa yang tepat. Ini mungkin mengganggu output kad suara anda.
Langkah 4: Menetapkan 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
git klon
atau
git klon [email protected]: haydockjp / color-pi.git
3. Pasang tanggungan
cd warna-pi
pasang npm
Ini mungkin mengambil masa 2-3 minit
4. Projek ini perlu berkomunikasi melalui HTTPS dan WSS. Pada masa ini cylon-api-socketio tidak menyokong sambungan SSL. Terdapat permintaan tarik terbuka untuk menambahkan sokongan ini, tetapi sehingga digabungkan, ada fail tambalan di repositori ini. Jalankan arahan berikut selepas pemasangan npm
git checkout node_modules / cylon-api-socketio / lib / api.js
Langkah 5: Buat Sijil SSL yang Ditandatangani Sendiri
1. Buat fail kunci peribadi
cd /opt/com.jonhaydock/colour-pi/certs
openssl genrsa -out color-pi-key.pem 2048
2. Buat CSR (Permintaan Penandatanganan Sijil)
openssl req -new -key color-pi-key.pem -out color-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 Warna Pi (contoh, bahagian) : Nama Biasa (mis. Server FQDN atau nama ANDA) : color-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 color-pi-csr.pem -signkey color-pi-key.pem -out color-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 6: Pendawaian Litar
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. Transistor M-NF saluran N digunakan untuk memisahkan 3.3v pada pin RPi dan 12v dari bekalan kuasa LED.
MOSFET mempunyai tiga pin Gate, Drain dan Source. Sekiranya anda tidak pasti tentang google mana lembaran data transistor yang anda gunakan, mis. IRL3303
Kami akan menghubungkan Pin Raspberry ke Gerbang, wayar LED ke Saliran dan landasan bersama ke Sumber. Apabila Pin naik tinggi, voltan antara Saliran dan Sumber akan mengaktifkan Pintu dan akan menghubungkan pintu ke Sumber.
Kami juga akan meletakkan Resistor 10kΩ di seberang Gerbang dan Sumber, sehingga ketika kita pin RPi tinggi, kita dapat melindungi pin dengan mengurangi arus yang melaluinya.
Lakukan langkah seterusnya dengan risiko anda sendiri. Saya tidak bertanggungjawab untuk apa-apa yang mungkin salah
Terdapat gambar fritzing dan foto litar sebenar di atas.
Saya akan mengesyorkan melakukan ini semasa kuasa mati untuk RPi dan jalur LED
Sediakan litar transistor, satu per saluran warna
- Masukkan salah satu transistor ke papan roti seperti yang ditunjukkan dalam rajah
- Masukkan salah satu Perintang 10kΩ melintasi longkang dan pin Sumber transistor. Ini adalah pin pertama dan terakhir
- Gunakan beberapa wayar untuk menyambungkan pin Sumber (pin terakhir) ke tanah di papan roti
- Ulangi langkah 1 - 3 dua kali lagi, sehingga anda mempunyai tiga set - satu per warna (Merah, Hijau dan Biru)
Sambungkan pin RPi ke papan
- Sambungkan Pin 16 ke Pin Pintu (pin pertama) transistor pertama - Ini akan menjadi saluran LED Biru
- Sambungkan Pin 18 ke Pin Pintu (pin pertama) transistor pertama - Ini akan menjadi saluran LED Merah
- Sambungkan Pin 20 ke salah satu garisan Ground di sisi papan roti
- Sambungkan Pin 22 ke Pin Pintu (pin pertama) transistor pertama - Ini akan menjadi saluran LED Hijau
Saya telah menggunakan warna wayar yang sepadan dengan LED: Biru, Merah dan Hijau. Saya telah menggunakan warna hitam untuk tanah
Sambungkan Barrel Jack
- Sambungkan wayar putih ke hujung + soket tong
- Sambungkan wayar hitam ke hujung bicu tong
- Sambungkan wayar hitam ke garis tanah yang sama di papan roti seperti yang disambungkan oleh RPi Pin 20
- Sambungkan wayar putih ke garisan + di papan roti
Menyambungkan jalur LED
Jalur LED saya dilengkapi dengan penyambung dengan ukuran yang cukup baik sehingga boleh dipasang sementara ke papan roti. Saya menolak penyambung di papan roti dan menyambungkannya ke ujian litar.
- Transistor pertama disambungkan ke Pin 16. Saya memasang wayar biru dari pin Drain (pin tengah) ke wayar biru pada penyambung jalur LED
-
Transistor kedua disambungkan ke Pin 18. Saya memasang wayar merah dari
Longkang
pin (pin tengah) ke wayar merah pada penyambung jalur LED
-
Transistor ketiga disambungkan ke Pin 22. Saya menjalankan wayar hijau dari
Longkang
pin (pin tengah) ke wayar hijau pada penyambung jalur LED
- Akhirnya, saya memasang wayar putih dari garisan + di papan roti yang disambungkan ke soket tong, ke wayar putih pada penyambung jalur LED.
Kuasa
Setelah memeriksa litar, anda seharusnya menghidupkan Raspberry Pi dan memasang bekalan 12v ke soket tong.
Langkah 7: Kod Sampingan Pelayan
Menjalankan kod sisi pelayan
cd /opt/com.jonhaydock/colour-pi
sudo npm bermula
Ini akan memulakan pelayan web dan mula mendengar permintaan HTTPS dan WSS.
CATATAN: Ingatlah untuk menjalankan pi-blaster terlebih dahulu
Pemboleh ubah Persekitaran
Port laman web lalai adalah 443, tetapi anda boleh mengatasinya dengan menetapkan pemboleh ubah persekitaran sebelum memulakan kod. Sebagai contoh
eksport COLOUR_PI_PORT = 2443
Port soket web lalai adalah 1443, tetapi anda boleh mengatasinya dengan menetapkan pemboleh ubah persekitaran sebelum memulakan kod. Sebagai contoh
eksport COLOUR_PI_WSS_PORT = 3443
Catatan: Oleh kerana soket web dikendalikan oleh cylon.js dan bukan laman web utama, ini mesti berada di port yang berbeza
Pin yang digunakan untuk Biru (pin 16), Hijau (pin 18) dan Merah (pin 22) juga boleh diganti. Sebagai contoh
eksport COLOUR_PI_PIN_BLUE = 36
eksport COLOUR_PI_PIN_RED = 38 eksport COLOUR_PI_PIN_GREEN = 40
Catatan: Ini mesti sepadan dengan pin fizikal yang anda gunakan. Sekiranya anda mengubahnya, anda juga perlu mengemas kini GPIO yang ditentukan dalam fail / etc / default / pi-blaster. Sebagai contoh
DAEMON_OPTS = - gpio 16, 20, 21
Kod pelayan utama boleh didapati di fail app.js. Fail ini memulakan pelayan web HTTPS dan juga, melalui kerangka kerja Cylon.js, menggunakan socket.io untuk mendengar permintaan soket web pada port yang terpisah.
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 web akan menyajikan kandungan apa pun di bawah folder awam. Secara lalai untuk memaparkan halaman index.html.
Cylon.js mencipta titik akhir yang anda boleh sambungkan Socket.io.
10.0.1.291443/api/robots/colour-pi
Anda boleh menghantar mesej set_colour melalui soket untuk menetapkan nilai Merah, Hijau dan Biru
device.emit ('set_colour', r, g, b)
Yang memanggil perintah set_colour, yang memanggil fungsi setColour di app.js. Fungsi ini menetapkan tahap kecerahan, untuk setiap nilai R, G dan B, antara 0 dan 255. Di mana 0 mati dan 255 dihidupkan sepenuhnya.
cth.
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: Kod Laman Web
Am
Laman web menggunakan pengecaman suara untuk memilih warna dari senarai yang telah ditentukan. Untuk menambahkan warna ke dalam senarai, edit fail di pelayan: public / data / colours.json
cth.
"merah": "# FF0000", Apabila warna dijumpai, atau dipilih dari drop-down, kotak Output akan ditetapkan ke warna itu dan satu pesan akan dikirim melalui socket.io ke Raspnerry Pi, yang akan mengatur LED ke warna yang sama.
CATATAN: bergantung pada seberapa baik LED anda, anda mungkin atau mungkin tidak melihat warna yang serupa. Sebilangannya lebih senang digandakan daripada yang lain
Semasa memuatkan laman web pertama kali, kerana anda menggunakan sijil SSL yang ditandatangani sendiri, anda perlu mengakuinya dalam penyemak imbas. Anda harus melihat amaran keselamatan mengenai sijil.
Pengecaman Suara
Kotak ini mempunyai ikon mikrofon. Sekiranya anda mengklik ikon ketika berwarna hijau, ikon akan mula mendengar warna. Semasa mendengar, ia akan menjadi merah. Ia akan mendengar sebentar dan kemudian berhenti. Mengklik ikon mikrofon apabila berwarna merah juga akan menghentikannya daripada mendengar.
Oleh kerana laman web ini perlu mengakses mikrofon anda, anda perlu memberikan izin apabila diminta
CATATAN: Anda memerlukan mikrofon untuk bahagian ini. Saya menggunakan yang ada di kamera web saya.
Transkrip Interim
Kotak ini mengesan tekaan perkataan yang anda katakan, seperti yang anda katakan.
Transkrip Akhir
Kotak ini mengesan tekaan terakhir adalah apa yang anda katakan.
Warna yang Dikenali
Ini adalah senarai semua warna yang diketahui oleh halaman. Ia dibuat dari fail colours.json. Sekiranya anda memilih salah satu warna ini, halaman akan menyebutkan warna dan menetapkan warna output.
CATATAN: Anda memerlukan pembesar suara atau fon kepala untuk mendengar ucapannya
Warna yang dijumpai
Laman web ini pada masa ini hanya menyokong pencocokan warna. Sekiranya perkataan atau kata-kata yang anda ucapkan ke mikrofon sesuai dengan nama warna yang dikenali, atau anda memilih warna dari senarai Warna yang Diketahui, ia akan ditambahkan di sini sebagai log.
Pengeluaran
Warna yang dijumpai terakhir akan dipaparkan di sini. Nilai Warna Heks (mis. # 7cb9e8) dan nilai RGB (mis. 124, 185, 232) akan dipaparkan sebagai teks dan latar belakang kotak di tengah akan ditetapkan ke warna sebenarnya.
Warna ini juga dihantar ke Raspberry Pi dan anda akan melihat warna jalur LED berubah.
CATATAN: jika anda tidak melihat perubahan warna LED, cuba mulakan semula pi-blaster dan / atau aplikasi node.js
perkhidmatan sudo restart pi-blaster
sudo npm bermula
Suara yang Dikenali
Kotak ini memaparkan senarai "Suara yang Dikenal" dari speechSynthesis yang disokong. Memilih salah satu suara ini akan mengubah suara dan bahasa yang akan anda dengar, dan ia akan menyebut nama suara itu.
Ia juga akan mengubah bahasa SpeechRecognition menjadi sama dengan yang dipilih dalam senarai.
Langkah 9: Akhirnya
Berikut adalah contoh perkara yang mesti anda lihat.
Beritahu saya jika anda mempunyai masalah dan saya boleh mengemas kini mengikut keperluan.
Disyorkan:
Kerusi Panas: Bangunkan Kusyen Panas yang Berubah Warna: 7 Langkah (dengan Gambar)
Kerusi Panas: Bangunkan Kusyen Pemanasan yang Berubah Warna: Ingin menjaga kesihatan diri pada musim sejuk? Hot Seat adalah projek yang menggunakan dua kemungkinan e-tekstil yang paling menarik - perubahan warna dan panas! Kami akan membina kusyen tempat duduk yang menghangatkan, dan apabila sudah siap, ia akan menunjukkan
Cara Mengekod Penyortir Warna di Modkit untuk Vex: 7 Langkah
Cara Mengekod Penyortir Warna di Modkit untuk Vex: Hai semua, Dalam tutorial ini anda akan belajar bagaimana membuat kod penyortir bola warna di Modkit untuk Vex Semoga anda berjaya dan nikmatilah! Tolong pilih saya
Awan Warna yang Dikendalikan Aplikasi: 7 Langkah (dengan Gambar)
Awan Warna yang Dikendalikan Aplikasi: Hai, dalam instruksional ini saya menunjukkan kepada anda cara membina lampu bilik dari grid laluan kerikil. Seluruh perkara dapat dikendalikan melalui WLAN dengan aplikasi. Tetapi pada akhirnya anda dapat membuatnya dengan
Cara yang Sangat Sederhana / mudah / tidak rumit untuk Membuat Orang / Manusia / Haiwan / Robot Kelihatan Seperti Mereka Mempunyai Penglihatan Panas / Warna Panas (Warna Pilihan Anda) Menggunakan GIMP: 4 Langkah
Cara yang Sangat Sederhana / mudah / tidak rumit untuk Membuat Orang / Manusia / Haiwan / Robot Kelihatan Seperti Mereka Mempunyai Penglihatan Panas / Warna Panas (Warna Pilihan Anda) Menggunakan GIMP: Baca … tajuk
Warna USB Menukar Warna: 5 Langkah
Cahaya USB Mengubah Warna: Berikut adalah cahaya yang terbuat dari botol plastik, tali pancing, kabel USB lama dan LED RGB perubahan warna yang perlahan. Benang nilon (tali pancing) tidak mempunyai kesan yang sama dengan gentian optik sebenar. Terdapat lebih banyak penurunan isyarat cahaya sepanjang