Բովանդակություն:

Գույն-պի ՝ 9 քայլ
Գույն-պի ՝ 9 քայլ

Video: Գույն-պի ՝ 9 քայլ

Video: Գույն-պի ՝ 9 քայլ
Video: Անքնությունը հաղթահարելու և քունն առնելու 9 եղանակ 2024, Նոյեմբեր
Anonim
Գույն-պի
Գույն-պի

Այս հրահանգը ցույց է տալիս, թե ինչպես օգտագործել Raspberry Pi- ն RGB LED շերտի ձայնային կառավարման համար ՝ վեբ կայքի միջոցով ՝ օգտագործելով SpeechRecognition և SpeechSynthesis- ի Web Speech API ինտերֆեյսերը:

Այս օրինակը ցույց է տալիս, թե ինչպես դա անել

  • Ստեղծեք հիմնական կայք ՝ օգտագործելով Node.js HTTPS- ով
  • Օգտագործեք Web Speech API ինտերֆեյսերը SpeechRecognition- ի և SpeechSynthesis- ի համար:
  • Օգտագործեք Cylon.js շրջանակը ՝ Raspberry Pi- ի վրա RGB LED ժապավենը վերահսկելու համար
  • Կապվեք WSS- ի (Ապահով վեբ վարդակների) միջոցով վեբ էջից Cylon.js- ին `LED- ի գույնը վերահսկելու համար

Նշում

  • Խոսքի սինթեզատորը լսելու համար ձեզ հարկավոր են բարձրախոսներ կամ ականջակալներ
  • Ձայնի ճանաչումը գործելու համար ձեզ հարկավոր է մուտք գործել խոսափող
  • Քանի որ այս խոսափողը մուտք է գործում, կայքը պետք է գործարկվի HTTPS- ով
  • Գրադարանի cylon-api-socketio- ն այս պահին չի աջակցում https- ը: Ես ունեմ քաշման հայտ, որը սպասում է միաձուլմանը, բայց մինչ այդ դուք պետք է /node_modules/cylon-api-socketio/lib/api.js- ը փոխարինեք այս շտեմարանի ֆայլով
  • pi-blaster- ը անհրաժեշտ է այս աշխատանքը կատարելու համար:

Քայլ 1: Սարքավորումներ

  1. Ազնվամորի 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: Սա գալիս է վերահսկիչով և մոտ 40 CAD- ի սնուցման աղբյուր
  3. Barrel Jack Connector - Ես գնել եմ իմ տեղական էլեկտրոնիկայի խանութից, այսպիսի բան Պարզապես համոզվեք, որ համապատասխանում է ձեր էներգիայի մատակարարմանը
  4. Jumper միակցիչներ / մետաղալարեր
  5. Breadboard Solderless Prototype PCB Board - այսպիսի մի բան
  6. 3 x 10kΩ դիմադրիչներ
  7. 3 x N -channel MOSFET ՝ LED- ները վերահսկելու համար. Կարևոր է, որ դարպասի շեմի լարումը լինի առավելագույնը: 3.3 Վ, այնպես որ այն կարող է վարվել RPi կապումներով; սովորաբար անվան մեջ նշվում է «L»-ով (տրամաբանական մակարդակ):

Քայլ 2: Ազնվամորու 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 install git

Քայլ 3: Pi-blaster

Պի-բլաստեր
Պի-բլաստեր

pi-blaster- ը PWM- ին հնարավորություն է տալիս Raspberry Pi- ի պահանջած GPIO կապում: Օգտագործված տեխնիկան չափազանց արդյունավետ է. Չի օգտագործում պրոցեսորը և տալիս է շատ կայուն իմպուլսներ:

Այս Pulse Width Modulation- ը 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 շերտի հետ:

Ո NOTՇԱԴՐՈԹՅՈՆ: Տարբերություն կա 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 վերագործարկում

Դադարեցրեք pi-blaster- ը

sudo ծառայություն pi-blaster կանգառ

Բեռնման ժամանակ ինքնաբերաբար գործարկեք pi-blaster- ը

sudo systemctl միացնել pi-blaster- ը

Wգուշացումներ և այլ նախազգուշացումներ

Pi-blaster- ի կողմից օգտագործվող կապումները կկարգավորվեն որպես ելքեր: Մի մուտքագրեք ինչ -որ բան մուտքի վրա, այլապես կարող եք այն ոչնչացնել: Այս դևը օգտագործում է ազնվամորի pi- ի ապարատային PWM գեներատորը `ճշգրիտ ժամկետներ ստանալու համար: Սա կարող է խանգարել ձեր ձայնային քարտի ելքին:

Քայլ 4. Օրինակ կոդի տեղադրում

Կլոնավորեք օրինակի կոդը

1. Ստեղծեք հիմնական թղթապանակ `տեղադրելու համար

cd /opt

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

2. Կլոնավորեք git շտեմարանի օրինակը

git կլոն

կամ

git clone [email protected]: haydockjp/color-pi.git

3. Տեղադրեք կախվածությունը

cd գույն-պի

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 -out color-pi-key.pem 2048 թ

2. Ստեղծեք CSR (վկայագրի ստորագրման հայց)

openssl req -new -key color-pi-key.pem -out color-pi-csr.pem

Այս պահին ձեզանից կպահանջվի որոշ տեղեկություններ սերտիֆիկատի հարցման վերաբերյալ: Քանի որ սա ինքն ստորագրված վկայական է, ձեզանից է կախված, թե որքան ճշգրիտ եք լրացնում տվյալները: Ահա մի օրինակ

Երկրի անուն (2 տառի կոդ) [AU]: CA

Նահանգի կամ նահանգի անուն (լրիվ անուն) [Որոշ նահանգներ]. Բրիտանական Կոլումբիա Տեղանքի անուն (օրինակ ՝ քաղաք) : Վանկուվեր կազմակերպության անվանումը (օրինակ ՝ ընկերությունը) [Internet Widgits Pty Ltd]: Color Pi կազմակերպության միավորի անվանումը (օրինակ ՝ բաժին) : Ընդհանուր անուն (օրինակ ՝ սերվերի FQDN կամ ՁԵՐ անունը) : color-pi էլ. Փոստի հասցե : [email protected]

Մարտահրավեր գաղտնաբառ :

Ընկերության պարտադիր անվանումը :

Այս օրինակում պարզապես սեղմեք return ՝ մարտահրավերի գաղտնաբառը դատարկ թողնելու համար

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 -առանց dh_2048.pem 2048

Սա կարող է տևել 15-20 րոպե

Քայլ 6: Շղթայի միացում

Էլեկտրագծերի միացում
Էլեկտրագծերի միացում
Էլեկտրագծերի միացում
Էլեկտրագծերի միացում
Էլեկտրագծերի միացում
Էլեկտրագծերի միացում
Էլեկտրագծերի միացում
Էլեկտրագծերի միացում

LED ժապավենի սնուցում

LED ժապավենը սնուցվում է 12 վոլտ հզորությամբ: Raspberry Pi- ն կարող է միայն 3.3v կամ 5v ելք թողնել և ի վիճակի չէ որևէ տեղ թողնել ամպերի մոտ, որոնք անհրաժեշտ են այդքան LED- ներ վարելու համար:

Կարևոր է 12 վոլտ էլեկտրամատակարարումը չմիացնել Raspberry Pi- ին: N-channel MOSFET տրանզիստորները օգտագործվում են RPi կապում 3.3v- ն և LED հոսանքի 12v լարման անջատման համար:

MOSFET- ն ունի երեք կապում Gate, Drain և Source: Եթե վստահ չեք, թե որն է ձեր օգտագործած տրանզիստորի տվյալների թերթիկի Google- ը, օրինակ. IRL3303

Մենք պատրաստվում ենք միացնել Raspberry Pi Pin- ը դարպասին, LED մետաղալարը `Drain- ին և ընդհանուր լեզուն` Աղբյուրին: Երբ Pin- ը բարձրանում է, Դրենաժի և Աղբյուրի միջև լարումը կակտիվացնի Դարպասը և դարպասը Կմիացնի Աղբյուրին:

Մենք նաև պատրաստվում ենք 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. Միացրեք Pin 20 -ը գետնատախտակի կողքի Ground գծերից մեկին
  4. Միացրեք Pin 22 -ը առաջին տրանզիստորի Gate Pin- ին (առաջին կապում) - սա կլինի կանաչ LED ալիքը

Ես օգտագործել եմ LED- ների համապատասխան մետաղալարերի գույները `կապույտ, կարմիր և կանաչ: Ես օգտագործել եմ սևը հողի համար

Միացրեք Barrel Jack- ը

  1. Սպիտակ մետաղալար միացրեք տակառի ճարմանդի + ծայրին
  2. Սև մետաղալար միացրեք տակառի ճարմանդի ծայրին
  3. Միացրեք սև մետաղալարը հացահատիկի նույն գետնին, որին միացված էր RPi Pin 20 -ը
  4. Սպիտակ մետաղալարը միացրեք տախտակի + գծին

LED ժապավենի միացում

Իմ LED ժապավենը գալիս էր մի միակցիչով, որն այնքան լավ չափ ուներ, որ այն կարող էր ժամանակավորապես միացվել հացատախտակին: Ես հրեցի միակցիչը տախտակի մեջ և միացրեցի այն շղթայի փորձարկմանը:

  1. Առաջին տրանզիստորը, որը միացված էր Pin 16 -ին: Ես Drain pin- ից (միջին քորոցից) կապույտ մետաղալար անցա դեպի 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 հարցումները:

Ո NOTՇԱԴՐՈԹՅՈՆ. Հիշեք, որ նախ պետք է աշխատի 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

Նշում. Սրանք պետք է համապատասխանեն ձեր օգտագործած ֆիզիկական կապումներին: Եթե դրանք փոխեք, ձեզ հարկավոր կլինի նաև/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 հրամանը, որը կանչում է 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: Կայքի ծածկագիր

Կայքի ծածկագիր
Կայքի ծածկագիր

Գեներալ

Կայքն օգտագործում է ձայնի ճանաչում `նախապես որոշված ցուցակից գույներ ընտրելու համար: Colorանկին գույն ավելացնելու համար խմբագրեք ֆայլը սերվերի վրա ՝ public/data/colours.json

օրինակ

"կարմիր": "#FF0000", Երբ գույնը գտնվի կամ ընտրվի բացվող տողից, Ելքի տուփը կդառնա այդ գույնի, և socket.io- ի միջոցով հաղորդագրություն կուղարկվի Raspnerry Pi- ին, որը LED- ները կդնի նույն գույնի:

ՈEՇԱԴՐՈԹՅՈՆ. Կախված նրանից, թե որքան լավ են ձեր LED- ները, կարող եք կամ չտեսնել նման գույն: Ոմանք ավելի հեշտ է կրկնօրինակել, քան մյուսները

Երբ վեբ կայքն առաջին անգամ եք բեռնում, քանի որ օգտագործում եք ինքն ստորագրված SSL վկայագիր, ձեզ հարկավոր է դա զննարկիչում հաստատել: Դուք պետք է տեսնեք անվտանգության ազդանշան վկայագրի վերաբերյալ:

Ձայնի ճանաչում

Այս տուփն ունի խոսափողի պատկերակ: Եթե կտտացրեք պատկերակին, երբ այն կանաչ է, այն կսկսի գույներ լսել: Մինչ նա լսում է, այն կարմիր կդառնա: Կարճ ժամանակ կլսի և հետո կդադարի: Եթե խոսափողի պատկերակը կարմիր է, այն նույնպես չի կարող լսել:

Քանի որ այս կայքը պետք է մուտք գործի ձեր խոսափող, ձեզ հարկավոր կլինի թույլտվություն տալ, երբ հուշվի

Այս մասի համար ձեզ անհրաժեշտ է խոսափող: Ես օգտագործում եմ այն իմ վեբ տեսախցիկի վրա:

Միջանկյալ սղագրություն

Այս տուփը հետևում է ձեր ասած բառերի գուշակություններին, ինչպես ասում եք դրանք:

Վերջնական սղագրություն

Այս տուփը հետևում է ձեր ասածի վերջին ենթադրություններին:

Հայտնի գույներ

Սա այն գույների ցանկն է, որոնց մասին էջը գիտի: Այն ստեղծվում է colours.json ֆայլից: Եթե ընտրեք այս գույներից մեկը, էջը կասի գույնը և կհաստատի ելքի գույնը:

ՆՇՈՄ. Խոսքը լսելու համար ձեզ անհրաժեշտ են բարձրախոսներ կամ ականջակալներ

Գտնված գույներ

Այս վեբ էջը ներկայումս աջակցում է միայն գույնի համապատասխանեցմանը: Եթե խոսափողի մեջ ձեր ասած բառը կամ բառերը համընկնում են հայտնի գույնի անվան հետ, կամ դուք ընտրում եք գույնը «Հայտնի գույն» ցանկից, այն այստեղ կավելացվի որպես մատյան:

Ելք

Վերջին գտած գույնը կցուցադրվի այստեղ: Color Hex արժեքը (օրինակ ՝ #7cb9e8) և RGB արժեքը (օրինակ ՝ 124, 185, 232) կցուցադրվեն որպես տեքստ, իսկ մեջտեղում գտնվող տուփի ֆոնը կտեղադրվի իրական գույնի:

Այս գույնը ուղարկվում է նաև Raspberry Pi- ին, և դուք պետք է տեսնեք, որ LED շերտի գույնը փոխվում է:

ՈEՇԱԴՐՈԹՅՈՆ. Եթե LED գույնի փոփոխություն չեք տեսնում, փորձեք վերագործարկել pi-blaster և/կամ node.js ծրագիրը

sudo ծառայության pi-blaster վերագործարկում

sudo npm սկիզբ

Հայտնի ձայներ

Այս տուփը ցուցադրում է աջակցվող խոսքի սինթեզի «Հայտնի ձայների» ցանկը: Այս ձայներից մեկը ընտրելը կփոխի ձայնը և այն լեզուն, որը դուք կլսեք, և այն կխոսի ձայնի անունը:

Այն նաև կփոխի SpeechRecognition- ի լեզուն ՝ նույնը, ինչ ընտրված է ցուցակում:

Քայլ 9: Վերջապես

Image
Image

Ահա մի օրինակ, թե ինչ պետք է տեսնեք:

Խնդրում եմ ինձ տեղյակ պահեք, եթե որևէ խնդիր ունեք, և ես կարող եմ թարմացնել ըստ անհրաժեշտության:

Խորհուրդ ենք տալիս: