Daftar Isi:

Warna-pi: 9 Langkah
Warna-pi: 9 Langkah

Video: Warna-pi: 9 Langkah

Video: Warna-pi: 9 Langkah
Video: Problem Catur 9 langkah putih menang, Ayo Pikirkan !!! 2024, November
Anonim
warna-pi
warna-pi

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

  1. Raspberry Pi - Saya menggunakan Raspberry Pi 2B yang saya miliki, tetapi Anda bisa mendapatkan Raspberry Pi 3 Starter Kit dengan harga sekitar CAD 100
  2. 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
  3. Konektor Barrel Jack - Saya membeli satu dari toko elektronik lokal saya, kira-kira seperti ini. Pastikan jika cocok dengan catu daya Anda
  4. Konektor / Kawat Jumper - Saya memiliki beberapa kabel konektor Female to Male dan beberapa kabel pengait 22 Gauge Solid tergeletak di sekitar
  5. Papan PCB Prototipe Solderless Breadboard - sesuatu seperti ini
  6. 3 x 10kΩ Resistor
  7. 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
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

Menghubungkan Sirkuit
Menghubungkan Sirkuit
Menghubungkan Sirkuit
Menghubungkan Sirkuit
Menghubungkan Sirkuit
Menghubungkan Sirkuit
Menghubungkan Sirkuit
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

  1. Masukkan salah satu transistor ke papan tempat memotong roti seperti yang ditunjukkan pada diagram
  2. Masukkan salah satu Resistor 10kΩ melintasi Drain dan pin Sumber transistor. Ini pin pertama dan terakhir
  3. Gunakan beberapa kabel untuk menghubungkan pin Sumber (pin terakhir) ke ground pada papan tempat memotong roti
  4. Ulangi langkah 1 - 3 dua kali lagi, sehingga Anda memiliki tiga set - satu per warna (Merah, Hijau dan Biru)

Hubungkan pin RPi ke papan

  1. Hubungkan Pin 16 ke Pin Gerbang (pin pertama) dari transistor pertama - Ini akan menjadi saluran LED Biru
  2. Hubungkan Pin 18 ke Pin Gerbang (pin pertama) transistor pertama - Ini akan menjadi saluran LED Merah
  3. Hubungkan Pin 20 ke salah satu garis Ground di sisi papan tempat memotong roti
  4. 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

  1. Hubungkan kabel putih ke ujung + jack barel
  2. Hubungkan kabel hitam ke - ujung jack barel
  3. Hubungkan kabel hitam ke garis tanah yang sama pada papan tempat memotong roti sebagai RPi Pin 20 terhubung ke
  4. 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.

  1. Transistor pertama terhubung ke Pin 16. Saya menjalankan kabel biru dari pin Drain (pin tengah) ke kabel biru pada konektor strip LED
  2. Transistor kedua terhubung ke Pin 18. Saya menjalankan kabel merah dari

    Mengeringkan

    pin (pin tengah) ke kabel merah pada konektor strip LED

  3. Transistor ketiga terhubung ke Pin 22. Saya menjalankan kabel hijau dari

    Mengeringkan

    pin (pin tengah) ke kabel hijau pada konektor strip LED

  4. 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

Kode Sisi Server
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

Kode Situs Web
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

Image
Image

Berikut adalah contoh dari apa yang harus Anda lihat.

Tolong beri tahu saya jika Anda memiliki masalah dan saya dapat memperbarui sesuai kebutuhan.

Direkomendasikan: