Съдържание:
- Стъпка 1: Оборудване
- Стъпка 2: Настройване на Raspberry Pi
- Стъпка 3: Pi-blaster
- Стъпка 4: Настройване на примерния код
- Стъпка 5: Създайте самоподписан SSL сертификат
- Стъпка 6: Окабеляване на веригата
- Стъпка 7: Код от страна на сървъра
- Стъпка 8: Код на уебсайта
- Стъпка 9: Най -накрая
Видео: Color-pi: 9 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:54
Тази инструкция показва как да използвате 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: Оборудване
- Raspberry Pi - Използвах Raspberry Pi 2B, който имах около, но можете да получите Raspberry Pi 3 Starter Kit за около 100 CAD
- RGB LED Strip Light - играех с Minger LED Strip Light 32.8ft/10M 600leds RGB SMD 5050. Това идва с контролер и захранване за около CAD 40
- Съединител на барел джак - Купих такъв от местния магазин за електроника, нещо подобно. Просто се уверете, че отговаря на вашето захранване
- Съединители / проводник на джъмпера
- Breadboard Solderless Prototype PCB Board - нещо подобно
- 3 x 10 kΩ резистора
- 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-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 лентата
Настройте транзисторните вериги, по една на цветен канал
- Поставете един от транзисторите в чертежа, както е показано на диаграмата
- Поставете един от 10kΩ резистори през дренажа и изходните щифтове на транзистора. Това е първият и последният щифт
- Използвайте малко проводник, за да свържете изходния извод (последния щифт) към земята на макета
- Повторете стъпки 1 - 3 още два пъти, така че да имате три комплекта - по един на цвят (червен, зелен и син)
Свържете щифтовете RPi към платката
- Свържете Pin 16 към Gate Pin (първи извод) на първия транзистор - това ще бъде синият LED канал
- Свържете Pin 18 към Gate Pin (първи извод) на първия транзистор - това ще бъде червеният LED канал
- Свържете щифт 20 към една от заземяващите линии отстрани на платката
- Свържете Pin 22 към Gate Pin (първи извод) на първия транзистор - Това ще бъде каналът със зелен светодиод
Използвал съм съответстващи цветове на проводниците към светодиодите: син, червен и зелен. Използвал съм черно за земята
Свържете Варела Жак
- Свържете бял проводник към + края на жака
- Свържете черен проводник към - края на жака
- Свържете черния проводник към същата заземителна линия на платката, към която е свързан RPi Pin 20
- Свържете белия проводник към линията + на макета
Свързване на LED лентата
Моята LED лента идваше с конектор, който беше с достатъчно добър размер, за да може временно да бъде включен в макет. Натиснах конектора в макета и го свързах към теста на веригата.
- Първият транзистор, свързан към Pin 16. Проведох син проводник от дренажния щифт (среден щифт) към синия проводник на конектора на LED лентата
-
Вторият транзистор, свързан към Pin 18. Проведох червен проводник от
Изцедете
щифт (среден щифт) към червения проводник на конектора на LED лентата
-
Третият транзистор, свързан към Pin 22. Проверих зелен проводник от
Изцедете
щифт (среден щифт) към зеления проводник на конектора на LED лентата
- И накрая, пуснах бял проводник от линията + на макета, който беше свързан към жака на цевта, към белия проводник на конектора на 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: Най -накрая
Ето пример за това, което трябва да видите.
Моля, уведомете ме, ако имате проблем и мога да актуализирам, ако е необходимо.
Препоръчано:
Как да използвате Detect Color TCS3200 със SkiiiD: 9 стъпки
Как да използвате Detect Color TCS3200 със SkiiiD: Урок за разработване на Detect Color TCS3200 със skiiiD
Macintosh Classic II Color Hackintosh: 7 стъпки (със снимки)
Macintosh Classic II Color Hackintosh: Mac Classic II (M4150, построен през 1992 г.), Историята на Classic II Hackintosh, Дойдох във владение на реколта 1992 Mac Classic II и мислех, че това ще направи чудесно преобразуване. След дълго време на търсене на LCD панел с правилния размер, който да се смени
Arduino RGB Color Picker - Изберете цветове от обекти от реалния живот: 7 стъпки (със снимки)
Arduino RGB Color Picker - Изберете цветове от обекти от реалния живот: Лесно избирайте цветове от физически обекти с този Arduino базиран RGB инструмент за избор на цвят, който ви позволява да пресъздадете цветовете, които виждате в обекти от реалния живот на вашия компютър или мобилен телефон. Просто натиснете бутон, за да сканирате цвета на обекта, използвайки евтин TCS347
Arduino Brick Color Sorter Project: 5 стъпки
Arduino Brick Color Sorter Project: В този урок за Arduino ще се научим как да разпознаваме цветовете на моята играчка тухла, като използваме Arduino и TCS3200 Color Sensor. Можете да прочетете писмения урок по -долу за повече подробности. Материали: Arduino Leonardo x 1TCS3200 x 1 Много картон 180 Servo
IR-Remote Color Guessing Game: 3 стъпки
IR-Remote Color Guessing Game: В тази инструкция ще ви покажа как да управлявате RGB светодиод с помощта на IR-дистанционно управление и да направите забавна игра от него