Mundarija:
- 1 -qadam: uskunalar
- 2 -qadam: Raspberry Pi -ni sozlash
- 3-qadam: Pi-blaster
- 4 -qadam: Misol kodini o'rnatish
- 5 -qadam: O'z -o'zidan imzolangan SSL sertifikatini yarating
- 6 -qadam: O'chirish simini ulash
- 7 -qadam: Server tomoni kodi
- 8 -qadam: veb -sayt kodi
- 9 -qadam: Nihoyat
Video: Rang: 9 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:28
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
- 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.
- 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.
- Barrel Jek ulagichi - Men mahalliy elektronika do'konidan shunday sotib oldim. Faqat quvvat manbaiga mos kelishiga ishonch hosil qiling
- Jumper ulagichlari / simlari - Menda bir nechta Ayol -Erkak konnektorli kabellar va 22 ta qattiq o'lchagichli simlar bor edi
- Lehimsiz lehimsiz prototipli PCB platasi - shunga o'xshash narsa
- 3 x 10 kΩ rezistorlar
- 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 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
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
- Diagrammada ko'rsatilgandek, tranzistorlardan birini non paneliga joylashtiring
- Drenaj va tranzistorning manba pimlariga 10 kΩ rezistorlardan birini joylashtiring. Bu birinchi va oxirgi pin
- Manba pinini (oxirgi pin) non panelidagi erga ulash uchun simni ishlating
- 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
- 16 -pinni birinchi tranzistorning darvoza piniga (birinchi pin) ulang - bu ko'k LEDli kanal bo'ladi
- 18 -pinni birinchi tranzistorning darvoza piniga (birinchi pin) ulang - bu qizil LEDli kanal bo'ladi
- 20 -pinni taxtaning yon tomonidagi Ground chiziqlaridan biriga ulang
- 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
- Oq simni bochkaning + uchiga ulang
- Qora simni barrel uyasining uchiga ulang
- Qora simni RPi Pin 20 ulanganidek, taxtadagi bir xil tuproqli chiziqqa ulang
- 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.
- 16 -pin bilan bog'langan birinchi tranzistor. Men drenaj pinidan (o'rta pin) ko'k chiziqni LED tasmasi ulagichidagi ko'k simga o'tkazdim.
-
18 -pin bilan bog'langan ikkinchi tranzistor. Men qizil simni uzatdim
Drenaj
pin (o'rta pin) LED tasmasi ulagichidagi qizil simga
-
Uchinchi tranzistor 22 -pinga ulangan. Men yashil simni uzatdim
Drenaj
pin (o'rta pin) LED tasmasi ulagichidagi yashil simga
- 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 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
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
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:
Vex uchun Modkit -da rang tartiblagichini qanday kodlash mumkin: 7 qadam
Vex uchun Modkit -da ranglarni ajratgichni qanday kodlash mumkin: Salom, bu o'quv qo'llanmada siz Modxit -da rangli sharlar ajratgichini Vex -ga qanday kodlashni o'rganasiz, umid qilamanki, siz buni yoqtirasiz va zavqlanasiz! Menga ovoz bering!
M5StickC ESP32 va NeoPixels LED tasmali tasodifiy rang: 7 qadam
M5StickC ESP32 va NeoPixels LED tasmasining tasodifiy rangi: Ushbu loyihada biz M5StickC ESP32 taxtasi yordamida NeoPixels LED halqasida tasodifiy rangni ko'rsatishni o'rganamiz
Magicbit -dan oddiy DIY rang sensori: 5 qadam
Magicbit -dan oddiy DIY rang sensori: Ushbu qo'llanmada biz Magicbit -dan Arduino yordamida oddiy rang sensori yasashni o'rganamiz
Oh !! Rang: 7 qadam
Oh !! Rang: Oh !! Rang - bu rangni taxmin qilish uchun oddiy o'yin. O'yin sizga eng asosiy uchta asosiy rangni beradi. Agar ikkita rangni birlashtirish kerak bo'lsa, ikkala tugmani bosish kifoya. Tugma bosilgandan so'ng, o'yin to'g'ri bo'ladi. Nihoyat, iltimos
Yorqin rang o'zgaruvchi gitara: 49 qadam (rasmlar bilan)
Yorqin rang o'zgaruvchan gitara: Rok-n-roll qirolligida o'zini ajratish juda muhim. Bu dunyoda millionlab odamlar gitara chalishni bilsalar, shunchaki yaxshi chalish uni kesmaydi. Rok xudosi sifatida ko'tarilish uchun sizga qo'shimcha narsa kerak. Buni ko'rib chiqing