Мазмуну:

Түсү: 9 кадам
Түсү: 9 кадам

Video: Түсү: 9 кадам

Video: Түсү: 9 кадам
Video: КЫЗ СУУГА АГЫП КЕТКЕН КАДРЫ ВИДЕОГО ТҮШҮП КАЛГАН 2024, Ноябрь
Anonim
Color-pi
Color-pi

Бул көрсөтмө 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 -кадам: жабдуулар

  1. Raspberry Pi - Мен Raspberry Pi 2B колдонгон элем, бирок сиз CAD 100 тегерегинде Raspberry Pi 3 башталгыч комплектин ала аласыз.
  2. RGB LED Strip Light - Мен Minger LED Strip Light 32.8ft/10M 600leds RGB SMD 5050 менен ойночумун. Бул контроллер жана CAD 40ка жакын электр энергиясы менен келет.
  3. Barrel Jack Connector - Мен муну жергиликтүү электроника дүкөнүнөн сатып алдым. Жөн гана сиздин электр булагыңызга туура келерин текшериңиз
  4. Jumper Connectors / Wire - Менде кээ бир Аялдан Эркекке туташтыргыч кабелдер жана кээ бир 22 Габариди Катуу кармоочу зым бар болчу
  5. Breadboard Solderless Prototype PCB Board - ушул сыяктуу нерсе
  6. 3 x 10kΩ резисторлор
  7. Жарык диоддорун көзөмөлдөө үчүн 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
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 тилкеси үчүн өчүрүлгөн учурда кылууну сунуштаар элем

Транзистордук микросхемаларды орнотуңуз, түстүү каналга бирден

  1. Диаграммада көрсөтүлгөндөй транзисторлордун бирин нан тактасына салыңыз
  2. 10kΩ резисторлордун бирин дренажга жана транзистордун булак казыктарына салыңыз. Бул биринчи жана акыркы пин
  3. Булак пинин (акыркы пин) нан тактасындагы жерге туташтыруу үчүн кээ бир зымдарды колдонуңуз
  4. 1 - 3 кадамдарды дагы эки жолу кайталаңыз, ошондо сизде үч топтом бар - бир түстө (Кызыл, Жашыл жана Көк)

RPi казыктарын тактага туташтырыңыз

  1. Пин 16ны биринчи транзистордун дарбазасына (биринчи пин) туташтырыңыз - Бул Blue LED каналы болот
  2. 18 -пинти биринчи транзистордун дарбаза пинине (биринчи пин) туташтырыңыз - Бул Кызыл LED каналы болот
  3. Пин 20ны нан тактасынын капталындагы Жер сызыктарынын бирине туташтырыңыз
  4. Pin 22ди биринчи транзистордун дарбазасы пинине (биринчи пин) туташтырыңыз - Бул Жашыл LED каналы болот

Мен светодиоддун түстөрүн LED диоддоруна колдондум: Көк, Кызыл жана Жашыл. Мен жерге кара түстү колдондум

Barrel Jack туташтырыңыз

  1. Баррель уячасынын + аягына ак зымды туташтырыңыз
  2. Баррель уячасынын аягына кара зымды туташтырыңыз
  3. Кара зымды RPi Pin 20 туташкандай эле нан тактасындагы бир эле жерге туташтырыңыз
  4. Ак зымды нан тактасындагы + сызыкка туташтырыңыз

LED тилкесин туташтыруу

Менин LED тилкесим жетиштүү өлчөмдөгү туташтыргычы менен келген, аны убактылуу нан тактасына туташтырууга болот. Мен туташтыргычты панелдин ичине түртүп, аны зым менен текшерип көрдүм.

  1. Биринчи транзистор Pin 16га туташты. Мен дренаждык пинден (орто пин) көк жипти LED тилкесинин туташтыргычындагы көк зымга чуркадым.
  2. 18 -пинге туташкан экинчи транзистор. Мен кызыл зымды чуркадым

    Drain

    pin (орто пин) LED тилкесинин туташтыргычындагы кызыл зымга

  3. Үчүнчү транзистор Pin 22ге туташты. Мен жашыл зымды чуркадым

    Drain

    пин тилкеси (орто пин) LED тилкесинин коннекторундагы жашыл зымга

  4. Акыр -аягы, мен баррелдин уячасына туташкан нан тактасындагы + линиясынан, LED тилкесинин туташтыргычындагы ак зымга чуркадым.

Күч

Районду текшергенден кийин, Raspberry Pi'ни күйгүзүп, баррелдин уячасына 12в камсыздоону туташтыруу керек.

7 -кадам: Server Side Code

Server Side Code
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 -кадам: Акыры

Image
Image

Бул жерде сиз көрүшүңүз керек болгон нерсенин мисалы.

Сураныч, эгерде сизде кандайдыр бир көйгөй болсо, мага кабарлаңыз жана мен керектүү учурда жаңырта алам.

Сунушталууда: