Mündəricat:
- Addım 1: Avadanlıq
- Addım 2: Raspberry Pi qurmaq
- Addım 3: Pi-blaster
- Addım 4: Nümunə Kodunun Qurulması
- Addım 5: Öz imzalı SSL Sertifikatı yaradın
- Addım 6: Dövrəni Kablolama
- Addım 7: Server tərəfi kodu
- Addım 8: Veb sayt kodu
- Addım 9: Nəhayət
Video: Rəng-pi: 9 addım
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:48
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
- 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.
- 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.
- 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
- 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
- Breadboard Lehimsiz Prototip PCB Kartı - buna bənzər bir şey
- 3 x 10kΩ rezistorlar
- 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, 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
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
- Transistorlardan birini diaqramda göstərildiyi kimi çörək taxtasına daxil edin
- Drenajın və tranzistorun Mənbə pinlərinin üzərindəki 10 kΩ rezistorlardan birini daxil edin. Bu ilk və son pindir
- Mənbə pinini (son pin) çörək lövhəsindəki yerə bağlamaq üçün bir tel istifadə edin
- 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
- Pin 16 -nı ilk tranzistorun Gate Pininə (ilk pin) qoşun - Bu Mavi LED kanalı olacaq
- Pin 18 -i ilk tranzistorun Qapı Pininə (ilk pin) qoşun - Bu Qırmızı LED kanalı olacaq
- Pin 20 -ni çörək taxtasının yan tərəfindəki Ground xətlərindən birinə bağlayın
- 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
- Barel yuvasının + ucuna ağ tel bağlayın
- Barel yuvasının ucuna qara tel bağlayın
- Qara teli RPi Pin 20 -nin bağlandığı kimi çörək taxtasındakı eyni torpaq xəttinə bağlayın
- 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.
- Pin 16 -ya qoşulan ilk tranzistor, Drenaj pinindən (orta pin) mavi zolaqdan LED şerit konnektorundakı mavi telə keçdim.
-
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ə
-
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ə
- 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 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
Ü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
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ə:
Vex üçün Modkit -də bir rəng sıralayıcıyı necə kodlaşdırmaq olar: 7 addım
Vex üçün Modkit -də Rəng Ayırıcısını Kodlaşdırma: Hamıya salam, bu dərslikdə Modex -də rəng topu ayırıcısını VexHode üçün necə kodlaşdıracağınızı öyrənəcəksiniz və zövq alırsınız! Pls mənə səs verin
Tətbiq tərəfindən idarə olunan rəng buludu: 7 addım (şəkillərlə)
Tətbiq Nəzarətli Rəng Buludu: Salam, bu təlimatda sizə çınqıl yol şəbəkəsindən bir otaq işıqlandırmasının necə qurulacağını göstərirəm. Hər şey bir tətbiq ilə WLAN vasitəsi ilə idarə oluna bilər. Ancaq sonda ağılla edə bilərsiniz
Rəng dəyişən LED: 13 addım
Rəng Dəyişən LED: Çıxış yaratmaq üçün bir növ sensordan istifadə edərək prototip yaratmaq vəzifəsi mənə verildi. Bir mühitdəki işıq miqdarını ölçən bir fotosel və çıxış olaraq bir RGB LED istifadə etməyə qərar verdim. LED -in qabiliyyətini birləşdirmək istədiyimi bilirdim
Asan əyilməyə əsaslanan rəng simsiz Rubik kub lampasını dəyişdirir: 10 addım (şəkillərlə birlikdə)
Asan əyilməyə əsaslanan rəng simsiz Rubik kub lampasını dəyişdirir: Bu gün, hansı tərəfin yuxarı olduğuna görə rəngini dəyişən bu möhtəşəm Rubik Cube-esque lampasını quracağıq. Küp, standart bir mikro usb kabeli ilə doldurulmuş kiçik bir LiPo batareyası ilə işləyir və sınağımda batareyanın ömrü bir neçə gündür. Bu
Arduino RGB Rəng Seçici - Real Həyat Obyektlərindən Rəng Seçin: 7 Addım (Şəkillərlə)
Arduino RGB Rəng Seçici - Real Həyat Nəsillərindən Rəng Seçin: Kompüterinizdə və ya cib telefonunuzda real həyatda gördüyünüz rəngləri yenidən yaratmağa imkan verən bu Arduino əsaslı RGB rəng seçici ilə fiziki obyektlərdən rəngləri asanlıqla seçin. Ucuz bir TCS347 istifadə edərək obyektin rəngini skan etmək üçün sadəcə bir düyməni basmaq kifayətdir