Mündəricat:

Rəng-pi: 9 addım
Rəng-pi: 9 addım

Video: Rəng-pi: 9 addım

Video: Rəng-pi: 9 addım
Video: 10 самых АТМОСФЕРНЫХ мест Дагестана. БОЛЬШОЙ ВЫПУСК #Дагестан #ПутешествиеПоДагестану 2024, Oktyabr
Anonim
Rəng-pi
Rəng-pi

Bu təlimat, bir Web saytı vasitəsi ilə SpeechRecognition və SpeechSynthesis üçün Web Speech API İnterfeyslərindən istifadə edərək bir RGB LED şeridini səslə idarə etmək üçün bir Raspberry Pi istifadə etməyi göstərir.

Bu nümunə necə ediləcəyini göstərir

  • HTTPS üzərindən Node.js istifadə edərək əsas bir veb sayt yaradın
  • SpeechRecognition və SpeechSynthesis üçün Web Speech API İnterfeyslərindən istifadə edin.
  • Raspberry Pi üzərində RGB LED şeridini idarə etmək üçün Cylon.js çərçivəsindən istifadə edin
  • LED -in rəngini idarə etmək üçün veb səhifədən Cylon.js ilə WSS (Secure Web sockets) üzərindən əlaqə saxlayın.

Qeyd

  • Nitq sintezatorunu eşitmək üçün dinamiklərə və ya qulaqlıqlara ehtiyacınız olacaq
  • Səs tanınmasının işləməsi üçün mikrofonunuza giriş verməlisiniz
  • Bu mikrofonunuza daxil olduğu üçün saytın HTTPS altında işləməsi lazımdır
  • Cylon-api-socketio kitabxanası hazırda https-i dəstəkləmir. Birləşdirilməyi gözləyən bir çəkmə tələbim var, ancaq o vaxta qədər /node_modules/cylon-api-socketio/lib/api.js faylını bu depodakı faylla əvəz etməlisiniz.
  • Bunu etmək üçün pi-blaster lazımdır.

Addım 1: Avadanlıq

  1. Raspberry Pi - Ətrafımda qoyduğum bir Raspberry Pi 2B istifadə etdim, ancaq CAD 100 ətrafında Raspberry Pi 3 Başlanğıc dəsti əldə edə bilərsiniz.
  2. RGB LED Şerit İşıq - Mən Minger LED Strip Light 32.8ft/10M 600leds RGB SMD 5050 ilə oynayırdım. Bu, nəzarətçi və təxminən CAD 40 üçün enerji təchizatı ilə gəlir.
  3. Barrel Jack Connector - Yerli elektronika mağazamdan belə bir şey aldım. Yalnız enerji təchizatına uyğun olub olmadığını yoxlayın
  4. Jumper Konnektorları / Tel - Məndə bəzi Dişi -Kişi konnektoru kabelləri və ətrafda uzanan 22 Ölçü Qatı Bağlayıcı tel var idi
  5. Breadboard Lehimsiz Prototip PCB Kartı - buna bənzər bir şey
  6. 3 x 10kΩ rezistorlar
  7. LEDləri idarə etmək üçün 3 x N -kanallı MOSFET - yerli elektron mağazamdan bir az IRL3303 almışam. Qapı eşik gərginliyinin maksimum olması vacibdir. 3.3V, buna görə RPi pinləri ilə idarə oluna bilər; adətən 'L' (Məntiq Səviyyə) ilə işarə olunur.

Addım 2: Raspberry Pi qurmaq

Əməliyyat sistemi

Adətən ən son Raspbian quruluşundan istifadə edirəm. Şəkli yükləyin və SD karta yazın. Windows kompüterindən istifadə edirsinizsə, şəkli SD Karta yazmaq üçün Win32 Disk Imager istifadə edə bilərsiniz.

Node.js

Node.js -in son versiyasını quraşdırın. Yazı zamanı 8.9.1 istifadə edirəm

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

sudo apt-get nodejs quraşdırın

Git quraşdırın

sudo apt-get install git

Addım 3: Pi-blaster

Pi-blaster
Pi-blaster

pi-blaster, Raspberry Pi tələb etdiyiniz GPIO pinlərində PWM imkan verir. İstifadə olunan texnika son dərəcə səmərəlidir: CPU istifadə etmir və çox sabit impulslar verir.

Bu Pulse Width Modulation, Raspberry Pi -yə Qırmızı, Yaşıl və Mavi kanalların hər birinin LED şeridi üçün nə qədər parlaq olduğunu idarə etməyə imkan verir.

Əvvəlcə anbarı klonlaşdırın

cd /opt /

sudo git clone https://github.com/sarfata/pi-blaster.git sudo chown -R pi: pi pi-blaster

Sonra qurun və quraşdırın

cd/opt/pi-blaster./autogen.sh &&./configure && make && sudo install qurun

Nəhayət, hansı pinlərdən istifadə etmək istədiyinizi konfiqurasiya edin

Kök hesabı altında və ya sudo istifadə edərək, faylı yaradın və redaktə edin

/etc/default/pi-blaster

Aşağıdakı sətirləri əlavə edin

DAEMON_OPTS =-gpio 23, 24, 25

Bu gpio pinləri, LED şeridinizə bağladığınız pinlərə uyğun olmalıdır.

Qeyd: GPIO və pin nömrəsi arasında fərq var. Bu nümunə aşağıdakılardan istifadə edir

LED - Mavi, GPIO -23, Pin - 16

LED - Qırmızı, GPIO -24, Pin - 18 LED - Yaşıl, GPIO -25, Pin - 22

Əlavə düzəlişlər

Pi-blaster-ə başlayın

sudo xidməti pi-blaster start

Pi-blaster-i yenidən başladın

sudo xidməti pi-blaster yenidən başladın

Pi-blaster-i dayandırın

sudo xidməti pi-blaster dayanacağı

Yükləmə zamanı pi-blaster-i avtomatik işə salın

sudo systemctl pi-blaster imkan verir

Xəbərdarlıqlar və digər xəbərdarlıqlar

Pi-blaster tərəfindən istifadə olunan pinlər çıxış olaraq konfiqurasiya ediləcək. Bir girişə bir şey bağlamayın, yoxsa onu məhv edə bilərsiniz! Bu daemon dəqiq vaxtları əldə etmək üçün moruq pi -nin PWM aparat generatorundan istifadə edir. Bu, səs kartınızın çıxışına mane ola bilər.

Addım 4: Nümunə Kodunun Qurulması

Nümunə kodunu klonlayın

1. Qurmaq üçün bir əsas qovluq qurun

cd /opt

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

2. Misal git deposunu klonlaşdırın

git klonu

və ya

git clone [email protected]: haydockjp/color-pi.git

3. Asılılıqları quraşdırın

cd rəng-pi

npm quraşdırın

Bu 2-3 dəqiqə çəkə bilər

4. Bu layihənin HTTPS və WSS üzərindən ünsiyyət qurması lazımdır. Hazırda cylon-api-socketio SSL əlaqələrini dəstəkləmir. Bu dəstəyi əlavə etmək üçün açıq bir istək var, ancaq birləşənə qədər bu depoda bir yamaq faylı var. Npm quraşdırıldıqdan sonra aşağıdakı əmri işlədin

git checkout node_modules/cylon-api-socketio/lib/api.js

Addım 5: Öz imzalı SSL Sertifikatı yaradın

1. Şəxsi açar faylı yaradın

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

openssl genrsa -çıx rəng-pi-key.pem 2048

2. CSR (Sertifikat İmza İstəyi) yaradın

openssl req -yeni -key color-pi-key.pem -out color-pi-csr.pem

Bu nöqtədə sertifikat sorğusu üçün bəzi məlumatlar istənəcək. Bu öz -özünə imzalanmış bir sertifikat olduğu üçün detalları nə qədər düzgün doldurmağınız sizə bağlıdır. Burada bir nümunə var

Ölkə Adı (2 hərf kodu) [AU]: CA

Əyalət və ya Vilayət Adı (tam adı) [Bəzi Ştatlar]: British Columbia Yer Adı (məsələn, şəhər) : Vancouver Təşkilatının Adı (məsələn, şirkət) [Internet Widgits Pty Ltd]: Color Pi Təşkilat Birliyinin Adı (məsələn, bölmə)) : Ümumi ad (məsələn, server FQDN və ya SİZİN adınız) : color-pi E-poçt ünvanı : [email protected]

Çağırış şifrəsi :

İsteğe bağlı bir şirkət adı :

Bu nümunədə, çağırış parolunu boş buraxmaq üçün geri qayıtmaq kifayətdir

3. Sertifikatı yaradın

openssl x509 -req -günlər 1095 -rəng-pi-csr.pem -səhifə rəngi-pi-key.pem -çıx rəng-pi-cert.pem

4. Əlavə təhlükəsizlik üçün bir Diffie Hellman Parameters faylı da yaradacağıq

openssl dhparam -dh_2048.pem 2048

Bu 15-20 dəqiqə çəkə bilər

Addım 6: Dövrəni Kablolama

Dövrəni Bağlamaq
Dövrəni Bağlamaq
Dövrəni Bağlamaq
Dövrəni Bağlamaq
Dövrəni Bağlamaq
Dövrəni Bağlamaq
Dövrəni Bağlamaq
Dövrəni Bağlamaq

LED şeridini gücləndirmək

LED şeridi 12 volt gücündədir. Raspberry Pi yalnız 3.3v və ya 5v çıxış gücünə malikdir və bu qədər LED idarə etmək üçün lazım olan amper yaxınlığında heç bir yerdə çıxış edə bilməz.

12 voltluq enerji mənbəyini Raspberry Pi -yə bağlamamaq vacibdir. N-kanal MOSFET tranzistorları, RPi pinlərindəki 3.3v və LED enerji təchizatının 12v-ni ayırmaq üçün istifadə olunur.

MOSFET -in üç qapısı olan Gate, Drain və Source var. İstifadə etdiyiniz tranzistorun məlumat vərəqi üçün hansı google -un olduğunu bilmirsinizsə, məsələn. IRL3303

Raspberry Pi Pinini Qapıya, LED telini Drenaja və Mənbə ilə ümumi bir yerə bağlayacağıq. Pin yüksək olduqda, Drenaj və Mənbə arasındakı gərginlik Qapını işə salacaq və qapını Mənbəyə bağlayacaq.

Qapı və Mənbə boyunca 10kΩ Rezistorlar qoyacağıq ki, RPi pin yüksək olduğunda, içindən keçən cərəyanı azaldaraq pimi qoruya bilərik.

Növbəti addımları öz riskiniz altında edin. Səhv ola biləcək heç bir şeyə görə məsuliyyət daşımıram

Dəhşətli bir görüntü və yuxarıdakı faktiki dövrənin fotoşəkili var.

RPi və LED şeridi üçün enerji kəsildikdə bunu etməyi məsləhət görürəm

Hər bir rəng kanalı üçün bir tranzistor sxemini qurun

  1. Transistorlardan birini diaqramda göstərildiyi kimi çörək taxtasına daxil edin
  2. Drenajın və tranzistorun Mənbə pinlərinin üzərindəki 10 kΩ rezistorlardan birini daxil edin. Bu ilk və son pindir
  3. Mənbə pinini (son pin) çörək lövhəsindəki yerə bağlamaq üçün bir tel istifadə edin
  4. 1-3 dəsti iki dəfə təkrarlayın ki, üç dəstə sahib olasınız - hər rəng üçün bir (Qırmızı, Yaşıl və Mavi)

RPi pinlərini lövhəyə qoşun

  1. Pin 16 -nı ilk tranzistorun Gate Pininə (ilk pin) qoşun - Bu Mavi LED kanalı olacaq
  2. Pin 18 -i ilk tranzistorun Qapı Pininə (ilk pin) qoşun - Bu Qırmızı LED kanalı olacaq
  3. Pin 20 -ni çörək taxtasının yan tərəfindəki Ground xətlərindən birinə bağlayın
  4. Pin 22 -ni ilk tranzistorun Gate Pininə (ilk pin) qoşun - Bu Yaşıl LED kanalı olacaq

LEDlərə uyğun tel rənglərindən istifadə etdim: Mavi, Qırmızı və Yaşıl. Yer üçün qara rəng istifadə etdim

Barrel Jackini bağlayın

  1. Barel yuvasının + ucuna ağ tel bağlayın
  2. Barel yuvasının ucuna qara tel bağlayın
  3. Qara teli RPi Pin 20 -nin bağlandığı kimi çörək taxtasındakı eyni torpaq xəttinə bağlayın
  4. Ağ teli çörək lövhəsindəki + xəttinə bağlayın

LED şeridinin bağlanması

Mənim LED şeridim kifayət qədər yaxşı ölçülü bir bağlayıcı ilə birlikdə gəldi, müvəqqəti olaraq çörək taxtasına qoşula bilərdi. Bağlayıcıyı çörək taxtasına itələdim və dövrə sınamaq üçün bağladım.

  1. Pin 16 -ya qoşulan ilk tranzistor, Drenaj pinindən (orta pin) mavi zolaqdan LED şerit konnektorundakı mavi telə keçdim.
  2. Pin 18 -ə qoşulan ikinci tranzistor. Məndən qırmızı tel çəkdim

    Drenaj edin

    pin (orta pin) LED şerit konnektorundakı qırmızı telə

  3. Pin 22 -yə qoşulan üçüncü tranzistor. Məndən yaşıl bir tel çəkdim

    Drenaj edin

    pin (orta pin) LED şerit konnektorundakı yaşıl telə

  4. Nəhayət, çörək lövhəsindəki + xəttindən barel yuvasına, LED şerit konnektorundakı ağ telə ağ tel çəkdim.

Güc

Dövrəni yoxladıqdan sonra, Raspberry Pi -ni işə salmalı və barel krikosuna 12v -luq bir enerji təchizatı bağlamalısınız.

Addım 7: Server tərəfi kodu

Server tərəfi kodu
Server tərəfi kodu

Server tərəfi kodunu işə salın

cd /opt/com.jonhaydock/colour-pi

sudo npm başlayın

Bu veb serveri işə salacaq və HTTPS və WSS sorğularını dinləməyə başlayacaq.

QEYD: Əvvəlcə pi-blaster işlədiyini unutmayın

Ətraf Mühit Dəyişənləri

Varsayılan veb portu 443 -dir, ancaq kodu başlamazdan əvvəl bir mühit dəyişənini təyin edərək bunu ləğv edə bilərsiniz. Misal üçün

ixrac COLOUR_PI_PORT = 2443

Varsayılan veb yuva portu 1443 -dir, ancaq kodu başlamazdan əvvəl bir mühit dəyişənini təyin edərək bunu ləğv edə bilərsiniz. Misal üçün

ixrac COLOUR_PI_WSS_PORT = 3443

Qeyd: Veb yuvası əsas veb saytı deyil, cylinderon.js tərəfindən idarə olunduğundan, bunların fərqli limanlarda olması lazımdır

Mavi (pin 16), Yaşıl (pin 18) və Qırmızı (pin 22) üçün istifadə olunan sancaqlar da ləğv edilə bilər. Misal üçün

ixrac COLOUR_PI_PIN_BLUE = 36

ixrac COLOUR_PI_PIN_RED = 38 ixrac COLOUR_PI_PIN_GREEN = 40

Qeyd: Bunlar istifadə etdiyiniz fiziki sancaqlar ilə uyğun olmalıdır. Bunları dəyişdirsəniz,/etc/default/pi-blaster faylında müəyyən edilmiş GPIO-ları da yeniləməlisiniz. Misal üçün

DAEMON_OPTS =-gpio 16, 20, 21

Əsas server kodunu app.js faylında tapa bilərsiniz. Bu fayl HTTPS veb serverini işə salır və eyni zamanda Cylon.js çərçivəsi vasitəsi ilə ayrı bir portda veb soket istəklərini dinləmək üçün socket.io istifadə edir.

Veb sayta daxil olmaq üçün əsas kompüterinizdə bir veb brauzeri açmalısınız (bunu yalnız Chrome -da sınamışam) və Raspberry Pi -nin IP ünvanını istifadə etməlisiniz.

10.0.1.2/

IP ünvanınızı Raspberry Pi əmr satırından öyrənə bilərsiniz.

ifconfig

Veb server, ümumi qovluqdakı hər hansı bir məzmuna xidmət edəcək. Varsayılan olaraq index.html səhifəsini göstərir.

Cylon.js, Socket.io -ya qoşula biləcəyiniz bir son nöqtə yaradır.

10.0.1.2:1443/api/robots/colour-pi

Qırmızı, Yaşıl və Mavi dəyərlərini təyin etmək üçün yuvadan set_colour mesajı göndərə bilərsiniz

device.emit ('set_colour', r, g, b)

Hansı set_colour əmrini çağırır, app.js -də setColour funksiyasını çağırır. Bu funksiya, R, G və B dəyərlərinin hər biri üçün 0 ilə 255 arasında parlaqlıq səviyyələrini təyin edir. 0 -un söndüyü və 255 -in tam yandırıldığı yerdə.

məs.

Qırmızı r = 255, g = 0, b = 0

Yaşıl r = 0, g = 255, b = 0 Mavi r = 0, g = 0, b = 255 Ağ r = 255, g = 255, b = 255 Qara / Off r = 0, g = 0, b = 0

Addım 8: Veb sayt kodu

Veb sayt kodu
Veb sayt kodu

Ümumi

Veb sayt əvvəlcədən təyin edilmiş siyahıdan rəngləri seçmək üçün səs tanıma funksiyasından istifadə edir. Siyahıya rəng əlavə etmək üçün serverdəki faylı redaktə edin: public/data/colours.json

məs.

"qırmızı": "#FF0000", Bir rəng tapıldıqda və ya açılan siyahıdan seçildikdə Çıxış qutusu o rəngə təyin ediləcək və socket.io vasitəsilə LEDləri eyni rəngə qoyacaq bir mesaj Raspnerry Pi -yə göndəriləcək.

DİQQƏT: LED -lərinizin nə qədər yaxşı olduğuna görə oxşar rəng görə bilərsiniz və ya görməyəcəksiniz. Bəzilərinin kopyalanması digərlərindən daha asandır

Veb saytı ilk dəfə yüklədiyiniz zaman, özünü imzalayan SSL sertifikatı istifadə edərkən bunu brauzerdə təsdiqləməlisiniz. Sertifikatla bağlı bir təhlükəsizlik siqnalı görməlisiniz.

Səs Tanıma

Bu qutuda mikrofon simvolu var. Yaşıl olduqda ikona tıklasanız, rəngləri dinləməyə başlayacaq. Dinləyərkən qırmızıya çevriləcək. Qısa bir müddət dinləyəcək və sonra dayanacaq. Qırmızı olduqda mikrofon simgesini tıklamaq da onu dinləməyi dayandıracaq.

Bu saytın mikrofonunuza daxil olması lazım olduğu üçün istənildikdə ona icazə verməlisiniz

DİQQƏT: Bu hissə üçün mikrofon lazımdır. Veb kameramda olanı istifadə edirəm.

Aralıq Transkript

Bu qutu, dediyiniz sözlərin, necə deyərlər, təxminlərini izləyir.

Son Transkript

Bu qutu dediklərinizin son ehtimalını izləyir.

Məlum rənglər

Bu səhifənin bildiyi bütün rənglərin siyahısı. Bu colours.json faylından yaradılmışdır. Bu rənglərdən birini seçsəniz, səhifə rəngi danışacaq və çıxış rəngini təyin edəcək.

QEYD: Çıxışı eşitmək üçün dinamiklərə və ya qulaqlıqlara ehtiyacınız var

Rənglər tapıldı

Bu veb səhifə hazırda yalnız rəngə uyğunluğu dəstəkləyir. Mikrofonda danışdığınız söz və ya sözlər bilinən bir rəngin adına uyğun gəlsə və ya Bilinən Rənglər siyahısından bir rəng seçsəniz, bura bir qeyd olaraq əlavə olunacaq.

Çıxış

Son tapılan rəng burada göstəriləcək. Color Hex dəyəri (məsələn, #7cb9e8) və RGB dəyəri (məsələn, 124, 185, 232) mətn olaraq göstəriləcək və ortadakı qutunun arxa planı həqiqi rəngə qoyulacaq.

Bu rəng də Raspberry Pi -yə göndərilir və LED şeridinin rənginin dəyişdiyini görməlisiniz.

Qeyd: LED rəng dəyişikliyini görmürsənsə, pi-blaster və/və ya node.js tətbiqini yenidən başladın.

sudo xidməti pi-blaster yenidən başladın

sudo npm başlayın

Məlum səslər

Bu qutu, dəstəklənən speechSynthesis -dən "Məlum Səslərin" siyahısını göstərir. Bu səslərdən birini seçsəniz səsi və eşidəcəyiniz dili dəyişəcək və səsin adını danışacaq.

SpeechRecognition dilini də siyahıda seçilənlərlə eyni edəcək.

Addım 9: Nəhayət

Image
Image

Görməli olduğunuz şeyin bir nümunəsidir.

Zəhmət olmasa hər hansı bir probleminiz varsa mənə bildirin və lazım olduqda yeniləyə bilərəm.

Tövsiyə: