Mundarija:

Rang: 9 qadam
Rang: 9 qadam

Video: Rang: 9 qadam

Video: Rang: 9 qadam
Video: 'Chaar Kadam' FULL VIDEO Song | PK | Sushant Singh Rajput | Anushka Sharma | T-series 2024, Noyabr
Anonim
Rang-pi
Rang-pi

Bu ko'rsatma Raspberry Pi -ni RGB LED tasmasini ovozli boshqarish uchun veb -sayt orqali SpeechRecognition va SpeechSynthesis uchun Web Speech API interfeyslaridan foydalanishni ko'rsatadi.

Bu misol qanday qilishni ko'rsatib beradi

  • HTTPS orqali Node.js yordamida asosiy veb -sayt yarating
  • SpeechRecognition va SpeechSynthesis uchun Web Speech API interfeyslaridan foydalaning.
  • Raspberry Pi -dagi RGB LED tasmasini boshqarish uchun Cylon.js ramkasidan foydalaning
  • LED rangini boshqarish uchun veb -sahifadan Cylon.js -ga WSS (Secure Web sockets) orqali ulaning.

Eslatma

  • Nutq sintezatorini eshitish uchun sizga karnay yoki minigarnituralar kerak bo'ladi
  • Ovozni aniqlash funksiyasi ishlashi uchun siz mikrofonga kirishingiz kerak
  • Chunki bu sizning mikrofoningizga kirishi uchun sayt HTTPS ostida ishlashi kerak
  • Cylon-api-socketio kutubxonasi hozirda https-ni qo'llab-quvvatlamaydi. Menda birlashishni kutayotgan tortishish so'rovi bor, lekin shu paytgacha /node_modules/cylon-api-socketio/lib/api.js faylini ushbu ombordagi fayl bilan almashtirish kerak.
  • Bu ishni bajarish uchun pi-blaster kerak.

1 -qadam: uskunalar

  1. Raspberry Pi - Men o'zim qo'ygan Raspberry Pi 2B -dan foydalandim, lekin siz SAPR 100 uchun Raspberry Pi 3 boshlang'ich to'plamini olishingiz mumkin.
  2. RGB LED chiziqli yorug'lik - Men 32,8ft/10M 600 lentali Ringer SMD 5050 Minger LED chiziqli chiroq bilan o'ynardim. Bu nazoratchi va taxminan 40 SAPR quvvat manbai bilan ta'minlangan.
  3. Barrel Jek ulagichi - Men mahalliy elektronika do'konidan shunday sotib oldim. Faqat quvvat manbaiga mos kelishiga ishonch hosil qiling
  4. Jumper ulagichlari / simlari - Menda bir nechta Ayol -Erkak konnektorli kabellar va 22 ta qattiq o'lchagichli simlar bor edi
  5. Lehimsiz lehimsiz prototipli PCB platasi - shunga o'xshash narsa
  6. 3 x 10 kΩ rezistorlar
  7. LEDlarni boshqarish uchun 3 x N -kanalli MOSFET - men mahalliy elektron do'konimdan bir nechta IRL3303 sotib oldim. Eshiklarning chegara kuchlanishining maksimal bo'lishi muhim. 3.3V, shuning uchun uni RPi pinlari bilan boshqarish mumkin; odatda "L" (mantiq darajasi) bilan belgilanadi.

2 -qadam: Raspberry Pi -ni sozlash

Operatsion tizim

Men odatda eng yangi Raspbian tuzilmasidan foydalanaman. Rasmni yuklab oling va SD -kartaga yozing. Agar siz Windows kompyuteridan foydalansangiz, tasvirni SD -kartaga yozish uchun Win32 Disk Imager -dan foydalanishingiz mumkin.

Node.js

Node.js -ning so'nggi versiyasini o'rnating. Yozish paytida men 8.9.1 dan foydalanmoqdaman

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

sudo apt-get nodejs ni o'rnating

Git -ni o'rnating

sudo apt-get install git

3-qadam: Pi-blaster

Pi-blaster
Pi-blaster

pi-blaster siz Raspberry Pi-ni so'ragan GPIO pinlarida PWM-ni yoqadi. Amaldagi texnika juda samarali: CPU ishlatmaydi va juda barqaror impulslar beradi.

Puls kengligi modulyatsiyasi Raspberry Pi -ga qizil, yashil va ko'k kanallarning har biri LED tasmasi uchun qanchalik yorqinligini boshqarishga imkon beradi.

Birinchidan, omborni klonlang

cd /opt /

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

Keyin, qurish va o'rnatish

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

Nihoyat, qaysi pinlardan foydalanmoqchi ekanligingizni sozlang

Ildiz hisobi ostida yoki sudo yordamida faylni yarating va tahrirlang

/etc/default/pi-blaster

Quyidagi qatorlarni qo'shing

DAEMON_OPTS =-gpio 23, 24, 25

Ushbu gpio pinlari siz LED tasmasi bilan ulangan pinlarga mos kelishi kerak.

QAYD: GPIO va pin raqami o'rtasida farq bor. Bu misolda quyidagilar ishlatiladi

LED - ko'k, GPIO -23, pin - 16

LED - qizil, GPIO -24, pin - 18 LED - yashil, GPIO -25, pin - 22

Qo'shimcha tuzatishlar

Pi-blaster-ni ishga tushiring

sudo xizmati pi-blaster boshlanishi

Pi-blaster-ni qayta ishga tushiring

sudo xizmati pi-blasterni qayta ishga tushirish

Pi-blasterni to'xtating

sudo xizmati pi-blaster stop

Yuklash vaqtida pi-blaster-ni avtomatik ishga tushiring

sudo systemctl pi-blaster-ni yoqadi

Ogohlantirishlar va boshqa ogohlantirishlar

Pi-blaster tomonidan ishlatiladigan pinlar chiqish sifatida sozlanadi. Kirishga biror narsani ulamang, aks holda siz uni yo'q qilishingiz mumkin! Bu ovoz kartasi chiqishiga xalaqit berishi mumkin.

4 -qadam: Misol kodini o'rnatish

Misol kodini klonlang

1. O'rnatish uchun asosiy papkani o'rnating

cd /opt

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

2. Git omborini misolini klonlang

git klon

yoki

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

3. Qarama -qarshiliklarni o'rnating

cd rang-pi

npm o'rnatish

Bu 2-3 daqiqa davom etishi mumkin

4. Bu loyiha HTTPS va WSS orqali muloqot qilishi kerak. Hozirgi vaqtda cylon-api-socketio SSL ulanishlarini qo'llab-quvvatlamaydi. Ushbu yordamni qo'shish uchun ochiq tortishish so'rovi bor, lekin u birlashtirilmaguncha, bu omborda tuzatish fayli mavjud. Npm ni o'rnatgandan so'ng quyidagi buyruqni bajaring

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

5 -qadam: O'z -o'zidan imzolangan SSL sertifikatini yarating

1. Maxsus kalit faylini yarating

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

openssl genrsa -out rang-pi-key.pem 2048

2. CSR yaratish (sertifikatga imzo chekish so'rovi)

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

Bu vaqtda sizdan sertifikat so'rovi uchun ba'zi ma'lumotlar so'raladi. Bu o'z -o'zidan imzolangan sertifikat bo'lib, tafsilotlarni qanchalik to'g'ri to'ldirish sizga bog'liq. Mana bir misol

Mamlakat nomi (2 harfli kod) [AU]: CA

Shtat yoki viloyat nomi (to'liq nomi) [Ba'zi shtatlar]: Britaniya Kolumbiyasining mahalliy nomi (masalan, shahar) : Vankuver tashkilotining nomi (masalan, kompaniya) [Internet Widgits Pty Ltd]: Color Pi tashkilotining nomi (masalan, bo'lim) : Umumiy ism (masalan, server FQDN yoki SIZNING ismingiz) : color-pi elektron pochta manzili : [email protected]

Qiyinchilik parol :

Ixtiyoriy kompaniya nomi :

Bu misolda, parolni bo'sh qoldirish uchun Qaytish -ni bosing

3. Sertifikatni yarating

openssl x509 -req -days 1095-color-pi-csr.pem -signkey color-pi-key.pem -out color-pi-cert.pem

4. Qo'shimcha xavfsizlik uchun biz Diffie Hellman Parameters faylini ham yaratamiz

openssl dhparam -dh_2048.pem 2048

Bu 15-20 daqiqa davom etishi mumkin

6 -qadam: O'chirish simini ulash

O'chirish
O'chirish
O'chirish
O'chirish
O'chirish
O'chirish
O'chirish
O'chirish

LED tasmasini quvvatlantirish

LED tasmasi 12 voltdan quvvatlanadi. Raspberry Pi faqat 3,3v yoki 5v kuchlanishiga ega va juda ko'p LEDlarni haydash uchun zarur bo'lgan amper yaqinida chiqara olmaydi.

12 voltli quvvat manbasini Raspberry Pi -ga ulamaslik muhim. N-kanalli MOSFET tranzistorlari RPi pimlarida 3.3v va LED quvvat manbai 12v ajratish uchun ishlatiladi.

MOSFET -da uchta eshik, eshik, drenaj va manba mavjud. Agar siz foydalanayotgan tranzistor ma'lumotlari uchun qaysi google -ga ishonchingiz komil bo'lmasa, masalan. IRL3303

Biz Raspberry Pi pinini eshikka, LED simini drenajga va umumiy manbani Manba bilan bog'laymiz. Pin baland bo'lganda, drenaj va manba orasidagi kuchlanish darvozani ishga tushiradi va eshikni manba bilan bog'laydi.

Biz, shuningdek, darvoza va manba bo'ylab 10 kΩ rezistor qo'yamiz, toki biz RPi pimi yuqori bo'lganida, biz u orqali o'tayotgan tokni pasaytirish orqali pinni himoya qila olamiz.

Keyingi qadamlarni o'zingizning xavfingiz ostida bajaring. Men noto'g'ri bo'lishi mumkin bo'lgan narsa uchun javobgarlikni o'z zimmamga olmayman

Achchiq tasvir va yuqoridagi haqiqiy sxemaning fotosurati bor.

Men buni RPi va LED tasmasi uchun quvvat o'chirilgan paytda qilishni tavsiya qilaman

Har bir rangli kanal uchun bitta tranzistorli sxemalarni o'rnating

  1. Diagrammada ko'rsatilgandek, tranzistorlardan birini non paneliga joylashtiring
  2. Drenaj va tranzistorning manba pimlariga 10 kΩ rezistorlardan birini joylashtiring. Bu birinchi va oxirgi pin
  3. Manba pinini (oxirgi pin) non panelidagi erga ulash uchun simni ishlating
  4. Har bir rang uchun bitta (qizil, yashil va ko'k) uchta to'plamga ega bo'lish uchun 1-3 bosqichlarni yana ikki marta takrorlang.

RPi pinlarini taxtaga ulang

  1. 16 -pinni birinchi tranzistorning darvoza piniga (birinchi pin) ulang - bu ko'k LEDli kanal bo'ladi
  2. 18 -pinni birinchi tranzistorning darvoza piniga (birinchi pin) ulang - bu qizil LEDli kanal bo'ladi
  3. 20 -pinni taxtaning yon tomonidagi Ground chiziqlaridan biriga ulang
  4. 22 -pinni birinchi tranzistorning darvoza piniga (birinchi pin) ulang - bu Yashil LEDli kanal bo'ladi

Men LEDlarga mos keladigan rang ranglarini qo'lladim: ko'k, qizil va yashil. Men er uchun qora rangdan foydalanganman

Barrel Jekni ulang

  1. Oq simni bochkaning + uchiga ulang
  2. Qora simni barrel uyasining uchiga ulang
  3. Qora simni RPi Pin 20 ulanganidek, taxtadagi bir xil tuproqli chiziqqa ulang
  4. Oq simni non panelidagi + chizig'iga ulang

LED chizig'ini ulash

Mening LED tasmaim ulagich bilan birga kelgan, u vaqtincha non paneliga ulanishi mumkin edi. Men ulagichni non taxtasiga tiqib qo'ydim va simni sinovdan o'tkazdim.

  1. 16 -pin bilan bog'langan birinchi tranzistor. Men drenaj pinidan (o'rta pin) ko'k chiziqni LED tasmasi ulagichidagi ko'k simga o'tkazdim.
  2. 18 -pin bilan bog'langan ikkinchi tranzistor. Men qizil simni uzatdim

    Drenaj

    pin (o'rta pin) LED tasmasi ulagichidagi qizil simga

  3. Uchinchi tranzistor 22 -pinga ulangan. Men yashil simni uzatdim

    Drenaj

    pin (o'rta pin) LED tasmasi ulagichidagi yashil simga

  4. Oxir -oqibat, men oq razryadga ulangan non panelidagi + chizig'idan, LED tasmasi ulagichidagi oq simga o'tdim.

Quvvat

Zanjirni tekshirgandan so'ng, siz Raspberry Pi -ni yoqishingiz va barrel uyasiga 12V quvvat manbaini ulashingiz kerak.

7 -qadam: Server tomoni kodi

Server tomoni kodi
Server tomoni kodi

Server tomoni kodini ishga tushirish

cd /opt/com.jonhaydock/colour-pi

sudo npm boshlang

Bu veb -serverni ishga tushiradi va HTTPS va WSS so'rovlarini tinglashni boshlaydi.

QAYD: Avval pi-blaster ishga tushishini unutmang

Atrof -muhit o'zgaruvchilari

Standart veb -sayt porti - 443, lekin siz kodni ishga tushirishdan oldin muhit o'zgaruvchisini o'rnatib, uni bekor qilishingiz mumkin. Masalan

eksport qilish COLOUR_PI_PORT = 2443

Odatiy veb -rozetka porti 1443, lekin siz kodni ishga tushirishdan oldin muhit o'zgaruvchisini o'rnatish orqali buni bekor qilishingiz mumkin. Masalan

eksport qilish COLOUR_PI_WSS_PORT = 3443

Eslatma: Veb -soketni asosiy veb -sayt emas, balkilonon.js boshqaradi, shuning uchun ular turli portlarda bo'lishi kerak.

Moviy (16 -pin), Yashil (18 -pin) va Qizil (22 -pin) uchun ishlatiladigan pinlar ham bekor qilinishi mumkin. Masalan

eksport qilish COLOUR_PI_PIN_BLUE = 36

eksport COLOUR_PI_PIN_RED = 38 eksport COLOUR_PI_PIN_GREEN = 40

Eslatma: Ular siz ishlatgan jismoniy pinlarga mos kelishi kerak. Agar siz ularni o'zgartirsangiz,/etc/default/pi-blaster faylida belgilangan GPIO-larni yangilashingiz kerak bo'ladi. Masalan

DAEMON_OPTS =-gpio 16, 20, 21

Asosiy server kodini app.js faylida topish mumkin. Bu fayl HTTPS veb -serverini ishga tushiradi, shuningdek Cylon.js tizimi orqali alohida portda veb -rozetka so'rovlarini tinglash uchun socket.io -dan foydalanadi.

Veb -saytga kirish uchun siz asosiy kompyuteringizda veb -brauzerni ochishingiz kerak (men buni faqat Chrome -da sinab ko'rdim) va Raspberry Pi -ning IP -manzilidan foydalaning, masalan.

10.0.1.2/

Siz IP -manzilingizni Raspberry Pi buyruq satridan bilib olishingiz mumkin.

ifconfig

Veb -server har qanday kontentni umumiy papkaga joylashtiradi. U index.html sahifasini ko'rsatishi kerak.

Cylon.js siz Socket.io -ni ulashingiz mumkin bo'lgan so'nggi nuqtani yaratadi.

10.0.1.2:1443/api/robots/colour-pi

"Qizil", "Yashil" va "Ko'k" qiymatlarini o'rnatish uchun rozetka orqali set_colour xabarini yuborishingiz mumkin

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

Bu set_colour buyrug'ini chaqiradi, bu esa app.js.dagi setColour funktsiyasini chaqiradi. Bu funksiya har bir R, G va B qiymatlari uchun yorqinlik darajasini 0 dan 255 gacha o'rnatadi. Bu erda 0 o'chirilgan va 255 to'liq yoqilgan.

masalan

Qizil r = 255, g = 0, b = 0

Yashil r = 0, g = 255, b = 0 Moviy r = 0, g = 0, b = 255 Oq r = 255, g = 255, b = 255 Qora / O'chirish r = 0, g = 0, b = 0

8 -qadam: veb -sayt kodi

Veb -sayt kodi
Veb -sayt kodi

Umumiy

Veb -sayt oldindan tanlangan ro'yxatdagi ranglarni tanlash uchun ovozni aniqlashdan foydalanadi. Ro'yxatga rang qo'shish uchun serverdagi faylni tahrir qiling: public/data/colours.json

masalan

"qizil": "#FF0000",

Agar rang topilsa yoki ochiladigan menyudan tanlansa, Chiqish qutisi shu rangga o'rnatiladi va xabar socket.io orqali Raspnerry Pi ga yuboriladi, u LEDlarni bir xil rangga o'rnatadi.

QAYD: LEDlarning qanchalik yaxshi ekanligiga qarab, siz shunga o'xshash rangni ko'rishingiz yoki ko'rmasligingiz mumkin. Ba'zilarini takrorlash boshqalarga qaraganda osonroq

Veb-saytni birinchi marta yuklaganingizda, o'z-o'zidan imzolangan SSL sertifikatidan foydalanayotganingizda, buni brauzerda tasdiqlashingiz kerak bo'ladi. Siz sertifikat haqida xavfsizlik ogohlantirishini ko'rishingiz kerak.

Ovozni aniqlash

Bu qutida mikrofon belgisi bor. Agar siz yashil rangdagi belgini bosgan bo'lsangiz, u ranglarni tinglay boshlaydi. U eshitayotganda qizil rangga aylanadi. U qisqa vaqt tinglaydi va keyin to'xtaydi. Qizil rangda mikrofon belgisini bosish ham uni tinglashni to'xtatadi.

Bu sayt sizning mikrofoningizga kirishi kerak bo'lganligi sababli, siz so'ralganda unga ruxsat berishingiz kerak bo'ladi

DIQQAT: Bu qism uchun sizga mikrofon kerak. Men veb -kameramda ishlataman.

Vaqtinchalik transkript

Bu quti siz aytayotgan so'zlarning taxminlarini kuzatadi, siz aytgandek.

Yakuniy transkript

Bu quti siz aytgan so'zlarni taxmin qiladi.

Ma'lum ranglar

Bu sahifa biladigan barcha ranglarning ro'yxati. Bu colours.json faylidan yaratilgan. Agar siz bu ranglardan birini tanlasangiz, sahifa rangni aytadi va chiqish rangini o'rnatadi.

QAYD: Nutqni eshitish uchun sizga karnay yoki naushnik kerak

Ranglar topildi

Bu veb -sahifa hozircha faqat rangni moslashtirishni qo'llab -quvvatlaydi. Agar siz mikrofonda gapirgan so'z yoki so'zlar ma'lum rangning nomiga to'g'ri kelsa yoki siz ma'lum rang ro'yxatidan rang tanlasangiz, u bu erda jurnal sifatida qo'shiladi.

Chiqish

Bu erda oxirgi topilgan rang ko'rsatiladi. Color Hex qiymati (masalan, #7cb9e8) va RGB qiymati (masalan, 124, 185, 232) matn sifatida ko'rsatiladi va o'rtadagi qutining fonida haqiqiy rang o'rnatiladi.

Bu rang Raspberry Pi -ga ham yuboriladi va siz LED tasmasini o'zgarishini ko'rishingiz kerak.

QAYD: agar siz LED rangining o'zgarishini ko'rmasangiz, pi-blaster va/yoki node.js ilovasini qayta ishga tushiring.

sudo xizmati pi-blasterni qayta ishga tushirish

sudo npm boshlang

Ma'lum ovozlar

Bu oynada qo'llab -quvvatlanadigan nutq sintezidan "ma'lum ovozlar" ro'yxati ko'rsatiladi. Bu ovozlardan birini tanlasangiz, ovoz va siz eshitadigan til o'zgaradi va u ovoz nomini aytadi.

Bundan tashqari, SpeechRecognition tilini ro'yxatda tanlangan tilga o'zgartiradi.

9 -qadam: Nihoyat

Image
Image

Bu erda siz ko'rishingiz kerak bo'lgan narsalarga misol.

Iltimos, agar sizda biron bir muammo bo'lsa, menga xabar bering va men kerak bo'lganda yangilashim mumkin.

Tavsiya: