Агуулгын хүснэгт:

Өнгө-пи: 9 алхам
Өнгө-пи: 9 алхам

Видео: Өнгө-пи: 9 алхам

Видео: Өнгө-пи: 9 алхам
Видео: Бесшовные следки на 2-х спицах с красивой регланной линией. Подробный мастер класс ДЛЯ НАЧИНАЮЩИХ. 2024, Аравдугаар сар
Anonim
Өнгө-пи
Өнгө-пи

Энэхүү заавар нь Raspberry Pi ашиглан RGB LED зурвасыг вэбсайтаар дамжуулан SpeechRecognition болон SpeechSynthesis -ийн вэб ярианы API интерфэйсийг ашиглан хэрхэн удирдахыг харуулав.

Үүнийг хэрхэн яаж хийхийг энэ жишээ харуулж байна

  • HTTPS дээр Node.js ашиглан үндсэн вэбсайт үүсгэх
  • SpeechRecognition болон SpeechSynthesis -д Web Speech API интерфэйсийг ашиглана уу.
  • Raspberry Pi дээрх RGB LED зурвасыг хянахын тулд Cylon.js хүрээ ашиглана уу
  • LED -ийн өнгийг хянахын тулд вэб хуудаснаас Cylon.js руу WSS (Secure Web sockets) ашиглан холбогдоорой.

Тэмдэглэл

  • Ярианы синтезаторыг сонсохын тулд танд чанга яригч эсвэл чихэвч хэрэгтэй болно
  • Дуу таних функцийг ажиллуулахын тулд та микрофондоо хандах эрх өгөх шаардлагатай болно
  • Энэ нь таны микрофон руу нэвтрэх тул сайтыг HTTPS -ийн дагуу ажиллуулах шаардлагатай байна
  • Номын сангийн цилон-апи-сокетио одоогоор https-ийг дэмждэггүй. Надад татах хүсэлт байна, гэхдээ тэр хүртэл та /node_modules/cylon-api-socketio/lib/api.js файлыг энэ репозитор дахь файлаар солих хэрэгтэй.
  • Үүнийг хийхийн тулд pi-blaster хэрэгтэй болно.

Алхам 1: Тоног төхөөрөмж

  1. Бөөрөлзгөнө Pi - Би Raspberry Pi 2B -ийг ашиглаж байсан боловч та CAD 100 орчим Raspberry Pi 3 гарааны иж бүрдэл авах боломжтой.
  2. RGB LED зурвасын гэрэл - Би Minger LED Strip Light 32.8ft/10M 600leds RGB SMD 5050 -тэй тоглож байсан. Энэ нь хянагч болон CAD 40 орчим тэжээлийн хангамжтай ирдэг.
  3. Barrel Jack Connector - Би орон нутгийн цахилгаан барааны дэлгүүрээс ийм зүйл худалдаж авсан. Зөвхөн таны цахилгаан хангамжид нийцэж байгаа эсэхийг шалгаарай
  4. Холбогч / утас - Надад зарим эмэгтэй -эрэгтэй холбогч кабель, 22 хэмжигч хатуу залгууртай утас байсан.
  5. Breadboard гагнуургүй прототип ПХБ -ийн самбар - иймэрхүү зүйл
  6. 3 x 10kΩ эсэргүүцэл
  7. LED -ийг хянахад зориулагдсан 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 nodejs суулгаарай

Git -ийг суулгана уу

sudo apt-get суулгах git

Алхам 3: Pi-blaster

Pi-blaster
Pi-blaster

pi-blaster нь Raspberry Pi-ийн хүссэн GPIO зүү дээрх PWM-ийг идэвхжүүлдэг. Ашигласан техник нь маш үр дүнтэй байдаг: CPU ашигладаггүй бөгөөд маш тогтвортой импульс өгдөг.

Энэхүү импульсийн өргөний модуляци нь 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

Эцэст нь ямар зүү ашиглахыг тохируулна уу

Үндэс дансны дор эсвэл 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 үйлчилгээ pi-blaster дахин эхлүүлэх

Пи-тэсэлгээг зогсоо

sudo үйлчилгээ pi-blaster stop

Ачаалах үед pi-blaster-ийг автоматаар эхлүүлнэ үү

sudo systemctl нь pi-blaster-ийг идэвхжүүлдэг

Анхааруулга болон бусад анхааруулга

Pi-blaster-д ашигладаг тээглүүрүүдийг гаралт болгон тохируулах болно. Оролтонд ямар нэгэн зүйл бүү залгаарай, эс бөгөөс та үүнийг устгаж магадгүй юм! Энэ нь таны дууны картын гаралтад саад учруулж болзошгүй юм.

Алхам 4: Жишээ кодыг тохируулах

Жишээ кодыг хуулна уу

1. Суурилуулах үндсэн фолдерыг тохируулна уу

cd /opt

sudo mkdir com.jonhaydock sudo chown pi: pi com.jonhaydockcd com.jonhaydock

2. git 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 суулгасны дараа дараах тушаалыг ажиллуулна уу

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 -yeni -key color-pi-key.pem -out color-pi-csr.pem

Энэ үед гэрчилгээ авах хүсэлтийн талаар зарим мэдээллийг асуух болно. Энэ нь өөрөө гарын үсэг зурсан гэрчилгээ тул дэлгэрэнгүй мэдээллийг хэр үнэн зөв бөглөх нь танд хамаарна. Энд нэг жишээ дурдъя

Улсын нэр (2 үсгийн код) [AU]: CA

Муж эсвэл мужийн нэр (бүтэн нэр) [Зарим муж]: Британийн Колумбын нутаг дэвсгэрийн нэр (жишээ нь, хот) : Ванкуверын байгууллагын нэр (жишээ нь, компани) [Internet Widgits Pty Ltd]: Color Pi Байгууллагын нэгжийн нэр (жишээ нь, хэсэг)) : Нийтлэг нэр (жишээ нь сервер FQDN эсвэл ТАНЫ нэр) : color-pi Имэйл хаяг : [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 -dh_2048.pem 2048 он

Энэ нь 15-20 минут болно

Алхам 6: Цахилгаан хэлхээг холбох

Цахилгаан хэлхээг холбох
Цахилгаан хэлхээг холбох
Цахилгаан хэлхээг холбох
Цахилгаан хэлхээг холбох
Цахилгаан хэлхээг холбох
Цахилгаан хэлхээг холбох
Цахилгаан хэлхээг холбох
Цахилгаан хэлхээг холбох

LED туузыг тэжээх

LED зурвас нь 12 вольтоор тэжээгддэг. Raspberry Pi нь зөвхөн 3.3v эсвэл 5v гаралтын чадалтай бөгөөд маш олон LED хөтлөхөд шаардлагатай амперын ойролцоо хаана ч гаргах чадваргүй юм.

12 вольтын цахилгаан хангамжийг Raspberry Pi -тэй холбохгүй байх нь чухал юм. N сувгийн MOSFET транзисторыг RPi зүү дээрх 3.3v ба LED тэжээлийн 12v-ийг салгахад ашигладаг.

MOSFET нь Gate, Drain and Source гэсэн гурван голтой. Хэрэв та транзисторын өгөгдлийн хуудсыг аль google дээр ашиглахаа мэдэхгүй байгаа бол, жишээ нь. IRL3303

Бид Raspberry Pi Pin -ийг Хаалга, LED утсыг ус зайлуулах суваг руу холбож, Эх сурвалжтай нийтлэг газар холбох гэж байна. Зүү өндөр болоход ус зайлуулах суваг ба эх үүсвэрийн хоорондох хүчдэл нь хаалгыг идэвхжүүлж, хаалгыг эх үүсвэртэй холбох болно.

Бид мөн хаалга ба эх үүсвэрт 10 кО эсэргүүцэл тавих гэж байгаа бөгөөд ингэснээр бид RPi зүү өндөр байх үед дамжин өнгөрөх гүйдлийг бууруулах замаар зүүг хамгаалах боломжтой болно.

Дараагийн алхамуудыг өөрийн эрсдэлээр хийх. Буруу зүйлд би ямар ч хариуцлага хүлээхгүй

Дээрх бодит хэлхээний дүр зураг, гэрэл зураг байна.

RPi болон LED туузны тэжээл унтарсан үед үүнийг хийхийг зөвлөж байна

Транзисторын хэлхээг өнгөт суваг тутамд нэг тохируулна уу

  1. Диаграммд үзүүлсэн шиг транзисторын аль нэгийг талхны талбарт оруулна уу
  2. Транзисторын суваг ба эх зүү дээр 10 кОм резисторуудын нэгийг оруулна уу. Энэ бол анхны ба сүүлчийн зүү юм
  3. Эх сурвалжийн зүүг (сүүлийн зүү) талхны самбар дээрх газарт холбохын тулд зарим утсыг ашиглана уу
  4. 1-3 алхамыг хоёр удаа давтана, ингэснээр та гурван багцтай болно - нэг өнгө тутамд (Улаан, Ногоон, Цэнхэр)

RPi тээглүүрийг самбар дээр холбоно уу

  1. Pin 16 -ийг анхны транзисторын Хаалганы зүү (эхний зүү) -тэй холбоно уу - Энэ нь Цэнхэр LED суваг байх болно
  2. Pin 18 -ийг анхны транзисторын хаалганы зүү (эхний зүү) -тэй холбоно уу - Энэ бол Улаан LED суваг байх болно
  3. 20 -р зүүг талхны тавцангийн хажуугийн Ground шугамын аль нэгтэй холбоно уу
  4. 22 -р зүүг анхны транзисторын Хаалганы зүү (эхний зүү) -тэй холбоно уу - Энэ нь Ногоон LED суваг байх болно

Би LED -тэй тохирох утаснуудын өнгийг ашигласан: Цэнхэр, Улаан, Ногоон. Би газарт хар өнгийг ашигласан

Barrel Jack -ийг холбоно уу

  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 -ийг асааж, баррель үүрэнд 12 вольтын тэжээлийг залгах хэрэгтэй.

Алхам 7: Серверийн талын код

Серверийн талын код
Серверийн талын код

Сервер талын кодыг ажиллуулж байна

cd /opt/com.jonhaydock/colour-pi

sudo npm эхлэх

Энэ нь вэб серверийг эхлүүлж, HTTPS болон WSS хүсэлтийг сонсох болно.

ТАЙЛБАР: Эхлээд pi-blaster ажиллуулахаа мартуузай

Байгаль орчны хувьсагчид

Вэбсайтын үндсэн порт нь 443 боловч та кодыг эхлүүлэхээсээ өмнө орчны хувьсагчийг тохируулснаар үүнийг хүчингүй болгож болно. Жишээлбэл

COLOUR_PI_PORT = 2443 экспортлох

Анхдагч вэб сокет порт нь 1443 боловч та кодыг эхлүүлэхээс өмнө орчны хувьсагчийг тохируулснаар үүнийг дарж болно. Жишээлбэл

COLOUR_PI_WSS_PORT = 3443 экспортлох

Тэмдэглэл: Вэб сокетыг үндсэн вэбсайт биш, харин clilon.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 фреймээр дамжуулан сокет.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 Цэнхэр r = 0, g = 0, b = 255 Цагаан r = 255, g = 255, b = 255 Хар / Off r = 0, g = 0, b = 0

Алхам 8: Вэбсайтын код

Вэбсайтын код
Вэбсайтын код

Ерөнхий

Вэбсайт нь урьдчилан тодорхойлсон жагсаалтаас өнгө сонгохдоо дуу таних аргыг ашигладаг. Жагсаалтанд өнгө нэмэхийн тулд сервер дээрх файлыг засварлана уу: public/data/colours.json

жишээ нь

"улаан": "#FF0000", Өнгө олдох эсвэл доош унах хэсгээс сонгоход Гаралтын хайрцгийг тухайн өнгөөр тохируулах бөгөөд мессежийг socket.io -ээр дамжуулан Raspnerry Pi руу илгээх бөгөөд энэ нь LED -ийг ижил өнгөтэй болгоно.

ТАЙЛБАР: Таны LED хэр сайн байгаагаас хамааран ижил төстэй өнгийг харах эсвэл харахгүй байж болно. Заримыг нь хуулбарлах нь бусдаас илүү хялбар байдаг

Та вэбсайтыг анх ачаалахдаа өөрөө гарын үсэг зурсан SSL сертификат ашиглаж байгаа тул үүнийг хөтөч дээр хүлээн зөвшөөрөх шаардлагатай болно. Та гэрчилгээтэй холбоотой аюулгүй байдлын анхааруулгыг харах ёстой.

Дуу хоолой таних

Энэ хайрцагт микрофоны дүрс байна. Хэрэв та ногоон өнгөтэй байх үед дүрс дээр дарвал өнгийг сонсож эхэлнэ. Сонсож байхад улаан болж хувирна. Энэ нь богино хугацаанд сонсох бөгөөд дараа нь зогсох болно. Микрофоны дүрс улаан байхад дарахад түүнийг сонсохоо болино.

Энэ сайт нь таны микрофон руу нэвтрэх шаардлагатай тул та үүнийг асуух үед зөвшөөрөл өгөх шаардлагатай болно

ТАЙЛБАР: Энэ хэсэгт микрофон хэрэгтэй. Би вэб камерынхаа камерыг ашигладаг.

Түр завсарлага

Энэ хайрцаг нь таны хэлж буй үгсийн таамаглалыг хянаж байна.

Эцсийн хуулбар

Энэ хайрцаг нь таны хэлсэн зүйлийг таамаглах болно.

Мэдэгдэж буй өнгө

Энэ бол хуудасны мэддэг бүх өнгөний жагсаалт юм. Энэ нь colours.json файлаас үүсгэгдсэн болно. Хэрэв та эдгээр өнгөнүүдийн аль нэгийг сонговол хуудас өнгө ярьж, гаралтын өнгийг тохируулна.

ТАЙЛБАР: Яриаг сонсохын тулд танд чанга яригч эсвэл чихэвч хэрэгтэй

Өнгө олсон

Энэ вэб хуудас одоогоор зөвхөн өнгө таарахыг дэмждэг. Хэрэв таны микрофон дээр хэлсэн үг эсвэл үг нь мэдэгдэж буй өнгөний нэртэй таарч байвал, эсвэл та мэдэгдэж буй өнгөний жагсаалтаас өнгө сонговол энд үүнийг бүртгэл болгон нэмж оруулах болно.

Гаралт

Хамгийн сүүлд олдсон өнгийг энд харуулах болно. Color Hex утга (жишээ нь #7cb9e8) болон RGB утга (жишээ нь 124, 185, 232) текст хэлбэрээр гарч ирэх бөгөөд дунд хэсэгт байгаа хайрцгийн арын дэвсгэрийг жинхэнэ өнгө болгон тохируулах болно.

Энэ өнгийг мөн Raspberry Pi руу илгээдэг бөгөөд та LED зурвасын өнгийг өөрчлөх ёстой.

ТАЙЛБАР: Хэрэв та LED өнгөний өөрчлөлтийг харахгүй бол pi-blaster болон node.js програмыг дахин эхлүүлж үзээрэй.

sudo үйлчилгээ pi-blaster дахин эхлүүлэх

sudo npm эхлэх

Мэдэгдэж буй дуу хоолой

Энэ хайрцаг нь дэмжигдсэн speechSynthesis -ийн "Мэдэгдэж буй дуу хоолой" жагсаалтыг харуулна. Эдгээр хоолойноос аль нэгийг нь сонгосноор таны сонсох дуу хоолой, хэл өөрчлөгдөх бөгөөд энэ нь хоолойны нэрийг хэлэх болно.

Энэ нь мөн SpeechRecognition -ийн хэлийг жагсаалтаас сонгосон хэлтэй адил болгоно.

Алхам 9: Эцэст нь

Image
Image

Таны үзэх ёстой зүйлийн жишээ энд байна.

Хэрэв танд ямар нэгэн асуудал байгаа бол надад мэдэгдээрэй, шаардлагатай бол би шинэчлэх боломжтой.

Зөвлөмж болгож буй: