Мазмуну:
- 1 -кадам: жабдуулар
- 2 -кадам: Raspberry Pi орнотуу
- 3-кадам: Pi-blaster
- 4 -кадам: Мисал кодун орнотуу
- 5 -кадам: Өз алдынча кол коюлган SSL сертификатын түзүү
- 6 -кадам: Районду өткөрүү
- 7 -кадам: Server Side Code
- 8 -кадам: Вебсайттын коду
- 9 -кадам: Акыры
Video: Түсү: 9 кадам
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:42
Бул көрсөтмө Raspberry Pi тилкесин RGB LED тилкесин үн менен башкаруу үчүн веб -сайт аркылуу SpeechRecognition жана SpeechSynthesis үчүн Web Speech API интерфейстерин кантип колдонууну көрсөтөт.
Бул мисал кантип көрсөтөт
- HTTPS аркылуу Node.js аркылуу негизги вебсайтты түзүңүз
- SpeechRecognition жана SpeechSynthesis үчүн Web Speech API интерфейстерин колдонуңуз.
- Raspberry Piдеги RGB LED тилкесин башкаруу үчүн Cylon.js алкагын колдонуңуз
- LED түсүн көзөмөлдөө үчүн веб -баракчадан Cylon.jsке WSS (Secure Web sockets) аркылуу байланышыңыз.
Эскертүү
- Кеп синтезаторун угуу үчүн динамиктер же гарнитуралар керек болот
- Үн таануу иштеши үчүн микрофонуңузга кирүүгө уруксат берүүңүз керек болот
- Бул сиздин микрофонуңузга кирүү үчүн сайт HTTPS астында иштеши керек
- Cylon-api-socketio китепканасы учурда https колдобойт. Менде бириктирүүнү күткөн тартуу өтүнүчү бар, бирок ага чейин /node_modules/cylon-api-socketio/lib/api.js файлын бул репозиторийдеги файлга алмаштырышыңыз керек
- Бул ишти жасоо үчүн пи-бластер керек.
1 -кадам: жабдуулар
- Raspberry Pi - Мен Raspberry Pi 2B колдонгон элем, бирок сиз CAD 100 тегерегинде Raspberry Pi 3 башталгыч комплектин ала аласыз.
- RGB LED Strip Light - Мен Minger LED Strip Light 32.8ft/10M 600leds RGB SMD 5050 менен ойночумун. Бул контроллер жана CAD 40ка жакын электр энергиясы менен келет.
- Barrel Jack Connector - Мен муну жергиликтүү электроника дүкөнүнөн сатып алдым. Жөн гана сиздин электр булагыңызга туура келерин текшериңиз
- Jumper Connectors / Wire - Менде кээ бир Аялдан Эркекке туташтыргыч кабелдер жана кээ бир 22 Габариди Катуу кармоочу зым бар болчу
- Breadboard Solderless Prototype PCB Board - ушул сыяктуу нерсе
- 3 x 10kΩ резисторлор
- Жарык диоддорун көзөмөлдөө үчүн 3 x N -канал MOSFET - мен жергиликтүү электрондук дүкөндөн IRL3303 сатып алдым. Дарбазанын босого чыңалуусу максималдуу болушу маанилүү. 3.3V ал RPi казыктары менен кууп болот; адатта 'L' (логика-деңгээл) менен белгиленет.
2 -кадам: Raspberry Pi орнотуу
Иштетүү системасы
Мен адатта эң акыркы Raspbian түзүлүшүн колдоном. Сүрөттү түшүрүп, SD картка жазыңыз. Эгерде сиз Windows компьютерин колдонуп жатсаңыз, сүрөттү SD картага жазуу үчүн Win32 Disk Imager колдоно аласыз.
Node.js
Node.js акыркы версиясын орнотуу. Жазуу учурунда мен 8.9.1 колдонуп жатам
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get nodejs орнотуу
Gitти орнотуу
sudo apt-get install орнотуу
3-кадам: Pi-blaster
pi-blaster сиз Raspberry Pi сураган GPIO казыктарында PWMди иштетет. Колдонулган техника өтө эффективдүү: CPU колдонбойт жана абдан туруктуу импульстарды берет.
Бул Pulse Width модуляциясы Raspberry Piге кызыл, жашыл жана көк каналдардын канчалык жаркыраганын LED тилкеси үчүн башкарууга мүмкүндүк берет.
Биринчиден, репозиторийди клондоштуруу
cd /opt /
sudo git clone https://github.com/sarfata/pi-blaster.git sudo chown -R pi: pi pi-blaster
Андан кийин, куруу жана орнотуу
cd/opt/pi-blaster./autogen.sh &&./configure && make && sudo install install
Акырында, кайсы казыктарды колдонууну каалаарыңызды конфигурациялаңыз
Негизги каттоо эсебинде же sudo колдонуп, файлды түзүңүз жана түзөтүңүз
/etc/default/pi-blaster
Төмөнкү саптарды кошуңуз
DAEMON_OPTS =-gpio 23, 24, 25
Бул gpio казыктары сиздин LED тилкесиңизге туташтырылган казыктарга дал келиши керек.
ЭСКЕРТҮҮ: GPIO менен пин номеринин ортосунда айырма бар. Бул мисал төмөнкүлөрдү колдонот
LED - Көк, GPIO -23, Pin - 16
LED - Кызыл, GPIO -24, Pin - 18 LED - Жашыл, GPIO -25, Pin - 22
Кошумча өзгөртүүлөр
Pi-blaster иштетүү
Sudo кызматы pi-blaster баштоо
Pi-blasterди өчүрүп-күйгүзүңүз
sudo кызматы пи-бластерди өчүрүп күйгүзүү
Пи-бластерди токтотуңуз
Sudo кызматы пи-бластер токтоо
Жүктөө учурунда pi-blaster автоматтык түрдө башталат
sudo systemctl пи-бластерди иштетет
Эскертүүлөр жана башка эскертүүлөр
Pi-blaster тарабынан колдонулган казыктар чыгуулар катары конфигурацияланат. Киргизүүгө бир нерсени туташтырбаңыз, же аны жок кылышыңыз мүмкүн! Бул демон так убакытты алуу үчүн малина пинин аппараттык PWM генераторун колдонот. Бул үн картаңыздын чыгуусуна тоскоол болушу мүмкүн.
4 -кадам: Мисал кодун орнотуу
Мисал кодун клондоштуруу
1. Орнотуу үчүн базалык папканы орнотуңуз
cd /opt
sudo mkdir com.jonhaydock sudo chown pi: pi com.jonhaydockcd com.jonhaydock
2. Мисал git репозиторийин клондоштуруу
git clone
же
git clone [email protected]: haydockjp/color-pi.git
3. Көз карандылыкты орнотуңуз
cd color-pi
npm орнотуу
Бул 2-3 мүнөткө созулушу мүмкүн
4. Бул долбоор HTTPS жана WSS аркылуу баарлашуусу керек. Учурда cylon-api-socketio SSL байланыштарын колдобойт. Бул колдоону кошуу үчүн ачык сурам бар, бирок ал бириктирилгенге чейин бул репозиторийде жамаачы файл бар. Npm орнотуудан кийин төмөнкү буйрукту иштетиңиз
git checkout node_modules/cylon-api-socketio/lib/api.js
5 -кадам: Өз алдынча кол коюлган SSL сертификатын түзүү
1. Жеке ачкыч файлын түзүңүз
cd /opt/com.jonhaydock/colour-pi/certs
openssl genrsa -түс-pi-key.pem 2048
2. CSR түзүү (Тастыктамага кол коюу талабы)
openssl req -yew -key color-pi-key.pem -out color-pi-csr.pem
Бул жерде сизден сертификат сурамы боюнча кээ бир маалымат талап кылынат. Бул өз алдынча кол коюлган күбөлүк болгондуктан, чоо -жайын канчалык туура толтуруу өзүңүздөн көз каранды. Бул жерде бир мисал
Өлкөнүн аталышы (2 тамгалык код) [AU]: CA
Штаттын же провинциянын аталышы (толук аты-жөнү) [Кээ бир штат]: Британ Колумбиясынын жергиликтүү аталышы (мисалы, шаар) : Ванкувер уюмунун аталышы (мисалы, компания) [Internet Widgits Pty Ltd]: Color Pi уюмунун аталышы (мисалы, бөлүм) : Жалпы ат (мис. Сервер FQDN же СИЗДИН атыңыз) : color-pi Email Address : [email protected]
Чакырык сырсөзү :
Кошумча компаниянын аты :
Бул мисалда, чакырыктын сырсөзүн бош калтыруу үчүн кайтууну басыңыз
3. Сертификатты түзүү
openssl x509 -req -days 1095 -color-pi-csr.pem -signkey color-pi-key.pem -out color-pi-cert.pem
4. Кошумча коопсуздук үчүн биз дагы Diffie Hellman Parameters файлын түзөбүз
openssl dhparam -ch_2048.pem 2048
Бул 15-20 мүнөткө созулушу мүмкүн
6 -кадам: Районду өткөрүү
LED тилкесин иштетүү
LED тилкеси 12 вольттон иштейт. Raspberry Pi 3.3v же 5v чыгарууга жөндөмдүү жана ушунчалык көп светодиоддорду айдоо үчүн керектүү ампердин жанында эч жерде чыгара албайт.
12 вольттук электр энергиясын Raspberry Pi менен туташтырбоо маанилүү. N-канал MOSFET транзисторлору 3.3v RPi казыктарын жана LED энергия булагынын 12в бөлүү үчүн колдонулат.
MOSFETтин үч казыгы бар Gate, Drain жана Source. Эгер сиз колдонуп жаткан транзистордун маалымат баракчасы үчүн кайсы Google экенин билбесеңиз, мис. IRL3303
Биз Raspberry Pi Pinди дарбазага, LED зымын дренажга жана булакка жалпы жерди туташтырганы жатабыз. Пин жогору болгондо, дренаж менен булактын ортосундагы чыңалуу дарбазаны иштетет жана дарбазаны булакка туташтырат.
Биз ошондой эле дарбаза менен булакка 10 кОмдук резисторлорду коёбуз, ошондо биз RPi пини жогору болгондо, биз аркылуу өтүп жаткан токту азайтуу менен пинди коргой алабыз.
Кийинки кадамдарды өзүңүздүн тобокелге салуу менен аткарыңыз. Мен туура эмес болуп калышы мүмкүн болгон эч нерсе үчүн жоопкерчиликти албайм
Жогорудагы чынжырдын сүрөттөрү жана сүрөттөрү бар.
Мен муну RPi жана LED тилкеси үчүн өчүрүлгөн учурда кылууну сунуштаар элем
Транзистордук микросхемаларды орнотуңуз, түстүү каналга бирден
- Диаграммада көрсөтүлгөндөй транзисторлордун бирин нан тактасына салыңыз
- 10kΩ резисторлордун бирин дренажга жана транзистордун булак казыктарына салыңыз. Бул биринчи жана акыркы пин
- Булак пинин (акыркы пин) нан тактасындагы жерге туташтыруу үчүн кээ бир зымдарды колдонуңуз
- 1 - 3 кадамдарды дагы эки жолу кайталаңыз, ошондо сизде үч топтом бар - бир түстө (Кызыл, Жашыл жана Көк)
RPi казыктарын тактага туташтырыңыз
- Пин 16ны биринчи транзистордун дарбазасына (биринчи пин) туташтырыңыз - Бул Blue LED каналы болот
- 18 -пинти биринчи транзистордун дарбаза пинине (биринчи пин) туташтырыңыз - Бул Кызыл LED каналы болот
- Пин 20ны нан тактасынын капталындагы Жер сызыктарынын бирине туташтырыңыз
- Pin 22ди биринчи транзистордун дарбазасы пинине (биринчи пин) туташтырыңыз - Бул Жашыл LED каналы болот
Мен светодиоддун түстөрүн LED диоддоруна колдондум: Көк, Кызыл жана Жашыл. Мен жерге кара түстү колдондум
Barrel Jack туташтырыңыз
- Баррель уячасынын + аягына ак зымды туташтырыңыз
- Баррель уячасынын аягына кара зымды туташтырыңыз
- Кара зымды RPi Pin 20 туташкандай эле нан тактасындагы бир эле жерге туташтырыңыз
- Ак зымды нан тактасындагы + сызыкка туташтырыңыз
LED тилкесин туташтыруу
Менин LED тилкесим жетиштүү өлчөмдөгү туташтыргычы менен келген, аны убактылуу нан тактасына туташтырууга болот. Мен туташтыргычты панелдин ичине түртүп, аны зым менен текшерип көрдүм.
- Биринчи транзистор Pin 16га туташты. Мен дренаждык пинден (орто пин) көк жипти LED тилкесинин туташтыргычындагы көк зымга чуркадым.
-
18 -пинге туташкан экинчи транзистор. Мен кызыл зымды чуркадым
Drain
pin (орто пин) LED тилкесинин туташтыргычындагы кызыл зымга
-
Үчүнчү транзистор Pin 22ге туташты. Мен жашыл зымды чуркадым
Drain
пин тилкеси (орто пин) LED тилкесинин коннекторундагы жашыл зымга
- Акыр -аягы, мен баррелдин уячасына туташкан нан тактасындагы + линиясынан, LED тилкесинин туташтыргычындагы ак зымга чуркадым.
Күч
Районду текшергенден кийин, Raspberry Pi'ни күйгүзүп, баррелдин уячасына 12в камсыздоону туташтыруу керек.
7 -кадам: Server Side Code
Сервердин кодун иштетүү
cd /opt/com.jonhaydock/colour-pi
Sudo npm башталат
Бул веб -серверди иштетип, HTTPS жана WSS сурамдарын уга баштайт.
ЭСКЕРТҮҮ: Адегенде пи-бластерди иштетүүнү унутпаңыз
Айлана чөйрөнүн өзгөрмөлөрү
Демейки веб -порт 443, бирок кодду баштоодон мурун аны чөйрөнүн өзгөрмөсүн коюу менен жокко чыгарсаңыз болот. Мисалы
COLOUR_PI_PORT = 2443 экспорттоо
Демейки веб -розетка порту 1443, бирок сиз кодду баштоодон мурун чөйрөнүн өзгөрмөсүн коюу менен муну жокко чыгара аласыз. Мисалы
COLOUR_PI_WSS_PORT = 3443 экспорттоо
Эскертүү: Веб -розетка негизги веб -сайт эмес, cylinderon.js менен иштелгендиктен, алар ар кандай порттордо болушу керек
Көк (пин 16), Жашыл (пин 18) жана Кызыл (пин 22) үчүн колдонулган казыктар да жокко чыгарылышы мүмкүн. Мисалы
экспорттоо COLOUR_PI_PIN_BLUE = 36
экспорттоо COLOUR_PI_PIN_RED = 38 экспорттоо COLOUR_PI_PIN_GREEN = 40
Эскертүү: Булар сиз колдонгон физикалык төөнөгүчтөргө дал келиши керек. Эгер сиз муну өзгөртсөңүз,/etc/default/pi-blaster файлында аныкталган GPIO'лорду жаңыртууңуз керек болот. Мисалы
DAEMON_OPTS =-gpio 16, 20, 21
Негизги сервер кодун app.js файлынан тапса болот. Бул файл HTTPS веб -серверин баштайт жана Cylon.js алкагы аркылуу өзүнчө порт боюнча веб -розетка сурамдарын угуу үчүн socket.io колдонот.
Вебсайтка кирүү үчүн, сиз негизги компьютериңизде веб браузерди ачышыңыз керек (мен муну Chromeдо гана сынап көрдүм) жана Raspberry Piнин IP дарегин колдонуңуз, мис.
10.0.1.2/
Сиз IP дарегиңизди Raspberry Pi буйрук сабынан биле аласыз.
ifconfig
Веб -сервер жалпы папкадагы бардык мазмунду тейлейт. Бул index.html барагын көрсөтүү үчүн демейки.
Cylon.js сиз Socket.io туташтыра турган акыркы чекитти түзөт.
10.0.1.2:1443/api/robots/colour-pi
Кызыл, Жашыл жана Көк маанилерди коюу үчүн розетка аркылуу set_colour билдирүүсүн жөнөтсөңүз болот
device.emit ('set_colour', r, g, b)
Кайсы set_colour буйругун чакырат, ал app.js.деги setColour функциясын чакырат. Бул функция R, G жана B баалуулуктарынын ар бири үчүн жарыктык деңгээлин 0дөн 255ке чейин орнотот. 0 өчүк жана 255 толугу менен күйүк.
мис.
Кызыл r = 255, g = 0, b = 0
Жашыл r = 0, g = 255, b = 0 Blue r = 0, g = 0, b = 255 White r = 255, g = 255, b = 255 Black / Off r = 0, g = 0, b = 0
8 -кадам: Вебсайттын коду
General
Вебсайт алдын ала аныкталган тизмеден түстөрдү тандоо үчүн үн таанууну колдонот. Тизмеге түс кошуу үчүн сервердеги файлды түзөтүңүз: public/data/colours.json
мис.
"кызыл": "#FF0000", Түс табылганда же ачылуучу тизмеден тандалганда, Чыгаруу кутучасы ошол түскө коюлат жана socket.io аркылуу Raspnerry Piге билдирүү жөнөтүлөт, ал ошол эле түскө диоддорду коет.
ЭСКЕРТҮҮ: Сиздин LEDларыңыздын канчалык жакшы экенине жараша сиз окшош түстү көрө аласыз же көрбөйсүз. Кээ бирлерин кайталоо башкаларга караганда оңой
Веб-сайтты биринчи жолу жүктөгөндө, сиз өзүңүзгө кол койгон SSL сертификатын колдонуп жатканыңызда, муну браузерде ырасташыңыз керек болот. Сиз сертификат жөнүндө коопсуздук эскертүүсүн көрүшүңүз керек.
Үн таануу
Бул кутуда микрофондун сүрөтчөсү бар. Жашыл болуп турганда сөлөкөттү чыкылдатыңыз, ал түстөрдү уга баштайт. Угуп жатканда, ал кызыл болуп калат. Ал бир аз убакытка чейин угуп, анан токтойт. Микрофондун сөлөкөтү кызыл болуп чыкканда аны угуу токтотулат.
Бул сайт сиздин микрофонуңузга кириши керек болгондуктан, сиз суралганда ага уруксат берүүңүз керек болот
ЭСКЕРТҮҮ: Бул бөлүк үчүн микрофон керек. Мен веб камерамдагы колдонгом.
Interim Transcript
Бул кутуча сиз айтып жаткан сөздөрдүн божомолдорун көзөмөлдөп жатат.
Final Transcript
Бул кутуча сиз айткан нерсени болжолдойт.
Белгилүү түстөр
Бул барак жөнүндө билген бардык түстөрдүн тизмеси. Бул colours.json файлынан түзүлгөн. Эгерде сиз бул түстөрдүн бирин тандасаңыз, барак түсүн сүйлөйт жана чыгаруу түсүн коёт.
ЭСКЕРТҮҮ: Кепти угуу үчүн динамиктер же гарнитуралар керек
Түстөр табылды
Бул веб -баракча учурда түскө дал келүүнү гана колдойт. Эгерде сиз микрофонго айткан сөз же сөздөр белгилүү түстүн атына дал келсе, же сиз белгилүү түстөр тизмесинен түс тандасаңыз, ал бул жерге журнал катары кошулат.
Output
Акыркы табылган түс бул жерде көрсөтүлөт. Color Hex мааниси (мис. #7cb9e8) жана RGB мааниси (мис. 124, 185, 232) текст катары көрсөтүлөт жана ортодогу кутунун фону чыныгы түскө коюлат.
Бул түс Raspberry Piге да жөнөтүлөт жана сиз LED тилкесинин өзгөрүшүнүн түсүн көрүшүңүз керек.
ЭСКЕРТҮҮ: эгерде сиз LED түсүнүн өзгөрүшүн көрбөсөңүз, pi-blaster жана/же node.js колдонмосун өчүрүп көрүңүз
Sudo кызматы pi-blaster кайра
Sudo npm башталат
Белгилүү үндөр
Бул кутучада колдоого алынган сүйлөө синтезинен "Белгилүү үндөрдүн" тизмеси көрсөтүлөт. Бул үндөрдүн бирин тандасаңыз, үн жана сиз уга турган тил өзгөрөт жана ал үндүн атын сүйлөйт.
Ал ошондой эле SpeechRecognition тилин тизмеде тандалган тилге окшош кылып өзгөртөт.
9 -кадам: Акыры
Бул жерде сиз көрүшүңүз керек болгон нерсенин мисалы.
Сураныч, эгерде сизде кандайдыр бир көйгөй болсо, мага кабарлаңыз жана мен керектүү учурда жаңырта алам.
Сунушталууда:
О !! Түсү: 7 кадам
О !! Түсү: Оо !! Түс - бул түстү божомолдоо үчүн жөнөкөй оюн. Оюн сизге эң негизги үч негизги түстү берет. Эгер эки түстү айкалыштыруу керек болсо, жөн гана эки баскычты басыңыз. Кнопка басылгандан кийин, оюн туура болот Сот туура болот. Акыры, өтүнүч
Bluetooth аркылуу DIY Control RGB LED түсү: 5 кадам
Bluetooth аркылуу DIY Control RGB LED түсү: Акылдуу лампалар акыркы убакта популярдуулукка ээ болуп, туруктуу түрдө акылдуу үй инструменттеринин негизги бөлүгүнө айланып баратат. Акылдуу лампалар колдонуучунун акылдуу телефонундагы атайын тиркеме аркылуу жарыгын башкарууга мүмкүнчүлүк берет; лампочка күйгүзүлүшү мүмкүн
Macintosh Classic II Түсү Hackintosh: 7 кадам (Сүрөттөр менен)
Macintosh Classic II Түсү Hackintosh: Mac Classic II (1992 -жылы курулган M4150), Classic II Hackintosh.Iнин окуясы 1992 -жылдагы классикалык Mac Classic IIге ээ болгон жана ал чоң өзгөртүүнү жасайт деп ойлогон. Туура өлчөмдөгү ЖК панелин издөө үчүн көп убакыт өткөндөн кийин
Түсү өзгөрүлүүчү түнкү жарык: 5 кадам
Түсү өзгөрүлүүчү түнкү жарык: Эй балдар! Мен көптөн бери иштеп келе жаткан долбоорум менен бөлүшкүм келет. Бул долбоор https: //www.instructables.com/id/Interactive-Touch тарабынан шыктандырылган … Башында, долбоор А чекити менен упайдын ортосундагы убакыт айырмасын өлчөө менен иштейт
Түсү жана тунуктугу үчүн Image Testing: 8 кадам
Түс жана Түшүнүк үчүн Сүрөттү Тестирлөө: Мен муну мен үчүн инструктивдүү кылдым; Менин көрсөтмөлөрүмдү жакшыртуу үчүн, бирок мен тапканым менен бөлүшкүм келет. Мен Instructabesке жүктөгөн кээ бир сүрөттөрдүн кемчиликсиз, башка сүрөттөрдүн тунуктугун, бир аз түссүз же бүдөмүк экенин байкадым. Билбейм