Съдържание:

Color-pi: 9 стъпки
Color-pi: 9 стъпки

Видео: Color-pi: 9 стъпки

Видео: Color-pi: 9 стъпки
Видео: Негативное погружение в цвет - рисование воздушным шаром - флюид-арт 2024, Октомври
Anonim
Цвят-пи
Цвят-пи

Тази инструкция показва как да използвате Raspberry Pi за гласово управление на RGB LED лента, чрез уебсайт, използвайки Web Speech API интерфейси за SpeechRecognition и SpeechSynthesis.

Този пример показва как да

  • Създайте основен уебсайт, използвайки Node.js през
  • Използвайте Web Speech API интерфейси за SpeechRecognition и SpeechSynthesis.
  • Използвайте рамката Cylon.js, за да контролирате RGB LED лента на Raspberry Pi
  • Комуникирайте през WSS (защитени уеб гнезда) от уеб страницата на Cylon.js, за да контролирате цвета на светодиода

Забележка

  • За да чуете синтезатора на речта, ще ви трябват високоговорители или слушалки
  • Ще трябва да дадете достъп до микрофона си, за да работи разпознаването на глас
  • Тъй като този достъп до вашия микрофон, сайтът трябва да се изпълнява под
  • Понастоящем библиотеката cylon-api-socketio не поддържа https. Имам заявка за изтегляне, която чака да бъде обединена, но дотогава трябва да замените /node_modules/cylon-api-socketio/lib/api.js с файла в това хранилище
  • За тази работа е необходим pi-blaster.

Стъпка 1: Оборудване

  1. Raspberry Pi - Използвах Raspberry Pi 2B, който имах около, но можете да получите Raspberry Pi 3 Starter Kit за около 100 CAD
  2. RGB LED Strip Light - играех с Minger LED Strip Light 32.8ft/10M 600leds RGB SMD 5050. Това идва с контролер и захранване за около CAD 40
  3. Съединител на барел джак - Купих такъв от местния магазин за електроника, нещо подобно. Просто се уверете, че отговаря на вашето захранване
  4. Съединители / проводник на джъмпера
  5. Breadboard Solderless Prototype PCB Board - нещо подобно
  6. 3 x 10 kΩ резистора
  7. 3 x N -канал MOSFET за управление на светодиодите - Купих някои IRL3303 от местния електронен магазин. Важно е праговото напрежение на портата да е макс. 3.3V, за да може да се задвижва от щифтовете RPi; обикновено се обозначава с „L“(логическо ниво) в името.

Стъпка 2: Настройване на Raspberry Pi

Операционна система

Обикновено използвам най -новата версия на Raspbian. Изтеглете изображението и го запишете на SD картата. Ако използвате компютър с Windows, можете да използвате Win32 Disk Imager, за да запишете изображението на SD картата.

Node.js

Инсталирайте най -новата версия на Node.js. По време на писането използвам 8.9.1

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

sudo apt-get install nodejs

Инсталирайте Git

sudo apt-get install git

Стъпка 3: Pi-blaster

Pi-бластер
Pi-бластер

pi-blaster позволява PWM на GPIO пиновете, които поискате от Raspberry Pi. Използваната техника е изключително ефективна: не използва процесора и дава много стабилни импулси.

Тази модулация на ширината на импулса позволява на 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 make install

Накрая конфигурирайте кои пинове искате да използвате

Под root акаунта или с помощта на sudo създайте и редактирайте файла

/etc/default/pi-blaster

Добавете следните редове

DAEMON_OPTS =-gpio 23, 24, 25

Тези gpio щифтове трябва да съвпадат с щифтовете, които свързвате към вашата LED лента.

ЗАБЕЛЕЖКА: Има разлика между GPIO и пинов номер. Този пример използва следното

LED - син, GPIO -23, щифт - 16

LED - Червен, GPIO -24, Pin - 18 LED - Зелен, GPIO -25, Pin - 22

Допълнителни ощипвания

Стартирайте pi-blaster

sudo услуга pi-blaster старт

Рестартирайте pi-blaster

рестартиране на услугата sudo pi-blaster

Спрете pi-blaster

sudo услуга pi-blaster stop

Стартирайте pi-blaster автоматично по време на зареждане

sudo systemctl активира pi-blaster

Предупреждения и други предупреждения

Пиновете, използвани от 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 цвят-pi

npm инсталиране

Това може да отнеме 2-3 минути

4. Този проект трябва да комуникира по HTTPS и WSS. Понастоящем cylon-api-socketio не поддържа SSL връзки. Има отворена заявка за изтегляне, за да се добави тази поддръжка, но докато не бъде обединена, в това хранилище има файл с кръпка. Изпълнете следната команда след npm install

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

Стъпка 5: Създайте самоподписан SSL сертификат

1. Създайте файл с частен ключ

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

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

2. Създайте CSR (Заявка за подписване на сертификат)

openssl req -нов-ключ color-pi-key.pem -out цвят-pi-csr.pem

В този момент ще бъдете подканени за някаква информация за заявката за сертификат. Тъй като това е самоподписан сертификат, от вас зависи колко точно ще попълните данните. Ето един пример

Име на държава (двубуквен код) [AU]: CA

Име на щат или провинция (пълно име) [Some-State]: Име на местността в Британска Колумбия (напр. Град) : Име на организацията във Ванкувър (напр. Компания) [Internet Widgits Pty Ltd]: Име на организационната единица Color Pi (напр. Раздел) : Общо име (напр. FQDN на сървъра или ВАШЕТО име) : color-pi имейл адрес : [email protected]

Парола за предизвикателство :

Незадължително име на фирма :

В този пример просто натиснете връщане, за да оставите празната парола за предизвикателство

3. Генерирайте сертификата

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

4. За допълнителна сигурност ще създадем и файл с параметри на Diffie Hellman Parameters

openssl dhparam -out dh_2048.pem 2048

Това може да отнеме 15-20 минути

Стъпка 6: Окабеляване на веригата

Окабеляване на веригата
Окабеляване на веригата
Окабеляване на веригата
Окабеляване на веригата
Окабеляване на веригата
Окабеляване на веригата
Окабеляване на веригата
Окабеляване на веригата

Захранване на LED лентата

LED лентата се захранва от 12 волта. Raspberry Pi може да извежда само 3.3v или 5v и не може да извежда никъде близо до усилвателите, необходими за задвижване на толкова много светодиоди.

Важно е да не свързвате 12 -волтовото захранване към Raspberry Pi. N-каналните MOSFET транзистори се използват за разделяне на 3.3v на щифтовете RPi и 12v на LED захранването.

MOSFET има три щифта Gate, Drain и Source. Ако не сте сигурни кой е кой гугъл за листа с данни на транзистора, който използвате, напр. IRL3303

Ще свържем Raspberry Pi Pin към портата, LED проводника към канализацията и обща маса към източника. Когато щифтът се повиши, напрежението между канализацията и източника ще активира портата и ще свърже портата към източника.

Също така ще поставим 10kΩ резистори през портата и източника, така че когато щифтът RPi е висок, можем да защитим щифта, като намалим тока, преминаващ през него.

Изпълнете следващите стъпки на свой собствен риск. Не поемам отговорност за всичко, което може да се обърка

Има горещо изображение и снимка на действителната верига по -горе.

Бих препоръчал да направите това, докато захранването е изключено за RPi и LED лентата

Настройте транзисторните вериги, по една на цветен канал

  1. Поставете един от транзисторите в чертежа, както е показано на диаграмата
  2. Поставете един от 10kΩ резистори през дренажа и изходните щифтове на транзистора. Това е първият и последният щифт
  3. Използвайте малко проводник, за да свържете изходния извод (последния щифт) към земята на макета
  4. Повторете стъпки 1 - 3 още два пъти, така че да имате три комплекта - по един на цвят (червен, зелен и син)

Свържете щифтовете RPi към платката

  1. Свържете Pin 16 към Gate Pin (първи извод) на първия транзистор - това ще бъде синият LED канал
  2. Свържете Pin 18 към Gate Pin (първи извод) на първия транзистор - това ще бъде червеният LED канал
  3. Свържете щифт 20 към една от заземяващите линии отстрани на платката
  4. Свържете Pin 22 към Gate Pin (първи извод) на първия транзистор - Това ще бъде каналът със зелен светодиод

Използвал съм съответстващи цветове на проводниците към светодиодите: син, червен и зелен. Използвал съм черно за земята

Свържете Варела Жак

  1. Свържете бял проводник към + края на жака
  2. Свържете черен проводник към - края на жака
  3. Свържете черния проводник към същата заземителна линия на платката, към която е свързан RPi Pin 20
  4. Свържете белия проводник към линията + на макета

Свързване на LED лентата

Моята LED лента идваше с конектор, който беше с достатъчно добър размер, за да може временно да бъде включен в макет. Натиснах конектора в макета и го свързах към теста на веригата.

  1. Първият транзистор, свързан към Pin 16. Проведох син проводник от дренажния щифт (среден щифт) към синия проводник на конектора на LED лентата
  2. Вторият транзистор, свързан към Pin 18. Проведох червен проводник от

    Изцедете

    щифт (среден щифт) към червения проводник на конектора на LED лентата

  3. Третият транзистор, свързан към Pin 22. Проверих зелен проводник от

    Изцедете

    щифт (среден щифт) към зеления проводник на конектора на LED лентата

  4. И накрая, пуснах бял проводник от линията + на макета, който беше свързан към жака на цевта, към белия проводник на конектора на LED лентата.

Мощност

След като проверите веригата, трябва да включите Raspberry Pi и да включите 12v захранването към жака за цевта.

Стъпка 7: Код от страна на сървъра

Код от страна на сървъра
Код от страна на сървъра

Изпълнение на кода от страна на сървъра

cd /opt/com.jonhaydock/colour-pi

sudo npm старт

Това ще стартира уеб сървъра и ще започне да слуша HTTPS и WSS заявки.

ЗАБЕЛЕЖКА: Не забравяйте първо да стартирате pi-blaster

Променливи на околната среда

Портът на уебсайта по подразбиране е 443, но можете да го замените, като зададете променлива на средата, преди да стартирате кода. Например

експортиране COLOUR_PI_PORT = 2443

Портът за уеб гнездо по подразбиране е 1443, но можете да го замените, като зададете променлива на средата, преди да стартирате кода. Например

експортиране COLOUR_PI_WSS_PORT = 3443

Забележка: Тъй като уеб гнездото се обработва от cylon.js, а не от основния уебсайт, те трябва да са на различни портове

Щифтовете, които се използват за синьо (щифт 16), зелено (щифт 18) и червено (щифт 22), също могат да бъдат отменени. Например

експортиране COLOUR_PI_PIN_BLUE = 36

експортиране COLOUR_PI_PIN_RED = 38 експортиране COLOUR_PI_PIN_GREEN = 40

Забележка: Те трябва да съответстват на физическите щифтове, които сте използвали. Ако ги промените, ще трябва да актуализирате и GPIO, дефинирани във/etc/default/pi-blaster файла. Например

DAEMON_OPTS =-gpio 16, 20, 21

Основният код на сървъра може да се намери във файла app.js. Този файл стартира HTTPS уеб сървъра и също, чрез рамката Cylon.js, използва socket.io за изслушване на заявки за уеб гнезда на отделен порт.

За достъп до уебсайта трябва да отворите уеб браузър на основния си компютър (тествах само това в Chrome) и да използвате IP адреса на Raspberry Pi, напр.

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 до през гнездото, за да зададете стойностите Red, Green и Blue

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

Което извиква командата set_colour, която извиква функцията setColour в app.js. Тази функция задава нивата на яркост за всяка от стойностите R, G и B между 0 и 255. Където 0 е изключено и 255 е напълно включено.

напр.

Червено r = 255, g = 0, b = 0

Зелено r = 0, g = 255, b = 0 Синьо r = 0, g = 0, b = 255 Бяло r = 255, g = 255, b = 255 Черно / Изключено r = 0, g = 0, b = 0

Стъпка 8: Код на уебсайта

Код на уебсайта
Код на уебсайта

Общ

Уебсайтът използва разпознаване на глас за избор на цветове от предварително определен списък. За да добавите цвят към списъка, редактирайте файла на сървъра: public/data/colours.json

напр.

"red": "#FF0000", Когато се намери цвят или бъде избран от падащото меню, полето за изход ще бъде зададено на този цвят и съобщение ще бъде изпратено чрез socket.io до Raspnerry Pi, който ще настрои светодиодите към същия цвят.

ЗАБЕЛЕЖКА: в зависимост от това колко добри са вашите светодиоди, можете или не можете да видите подобен цвят. Някои по -лесно се дублират от други

При първото зареждане на уебсайта, тъй като използвате самоподписан SSL сертификат, ще трябва да потвърдите това в браузъра. Трябва да видите предупреждение за сигурност за сертификата.

Гласово разпознаване

Това поле има икона на микрофон. Ако щракнете върху иконата, когато е зелена, тя ще започне да слуша за цветове. Докато слуша, той ще стане червен. Той ще слуша за кратко време и след това ще спре. Щракването върху иконата на микрофона, когато е червено, също ще го спре да слуша.

Тъй като този сайт се нуждае от достъп до вашия микрофон, ще трябва да му дадете разрешение, когато бъдете подканени

ЗАБЕЛЕЖКА: За тази част ви е необходим микрофон. Използвам този на уеб камерата си.

Междинен препис

Това поле проследява предположенията на думите, които казвате, докато ги казвате.

Окончателен препис

Това поле проследява последното предположение какво сте казали.

Известни цветове

Това е списък на всички цветове, за които страницата знае. Той е създаден от файла colours.json. Ако изберете един от тези цветове, страницата ще изговаря цвета и ще зададе изходния цвят.

ЗАБЕЛЕЖКА: За да чуете речта, ви трябват високоговорители или слушалки

Намерени цветове

Тази уеб страница понастоящем поддържа само съвпадение на цвета. Ако думата или думите, които сте говорили в микрофона, съвпадат с името на известен цвят или изберете цвят от списъка с известни цветове, той ще бъде добавен тук като дневник.

Изход

Тук ще се покаже последният намерен цвят. Стойността на Hex Color (напр. #7cb9e8) и RGB стойността (напр. 124, 185, 232) ще бъдат показани като текст и фонът на полето в средата ще бъде зададен на действителния цвят.

Този цвят също се изпраща към Raspberry Pi и трябва да видите как цветът на LED лентата се променя.

ЗАБЕЛЕЖКА: ако не виждате промяната на цвета на светодиода, опитайте да рестартирате pi-blaster и/или приложението node.js

рестартиране на услугата sudo pi-blaster

sudo npm старт

Известни гласове

Това поле показва списък с „известни гласове“от поддържаната реч Синтез. Избирането на един от тези гласове ще промени гласа и езика, който ще чуете, и той ще говори името на гласа.

Той също така ще промени езика на SpeechRecognition да бъде същият като този, избран в списъка.

Стъпка 9: Най -накрая

Image
Image

Ето пример за това, което трябва да видите.

Моля, уведомете ме, ако имате проблем и мога да актуализирам, ако е необходимо.

Препоръчано: