Мазмуну:

Google Home көзөмөлдөгөн LED: 8 кадам
Google Home көзөмөлдөгөн LED: 8 кадам

Video: Google Home көзөмөлдөгөн LED: 8 кадам

Video: Google Home көзөмөлдөгөн LED: 8 кадам
Video: КАК ПОДКЛЮЧИТЬ ТЕЛЕФОН К ТЕЛЕВИЗОРУ 2024, Ноябрь
Anonim
Google Home көзөмөлдөгөн LED
Google Home көзөмөлдөгөн LED
Google Home көзөмөлдөгөн LED
Google Home көзөмөлдөгөн LED

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

Бул проект Rasp LEDлерин Google Home аркылуу Raspberry Pi аркылуу башкарууга мүмкүндүк берет. Азыр долбоордун 3 бөлүмү бар, Raspberry Pi орнотуу, Google Home'ду IFTTTтин жардамы менен ыңгайлаштырылган буйрук менен орнотуу, андан кийин жарыктар үчүн схема түзүү. Районду мен өзүм түздүм, бирок сиз Адафруттан керектүү нерсени кыла турган нерсени ала аласыз деп ишенем.

Raspberry Pi бөлүгү үчүн материалдар

  • Raspberry Pi - баары иштейт, бирок мен нөлдү колдонуп жатам
  • Wireless Dongle - эгерде Pi Wifiда курулбаса
  • Google Home - Телефонуңузда Google Жардамчы болсо, милдеттүү эмес

Circuit Part үчүн материалдар- Бул сизге тоскоолдук кылбасын … Бул абдан жөнөкөй

  • Protoboard
  • Зым
  • LED Strip
  • 12V электр менен камсыздоо - 2 амперден жогору нерсе жакшы болушу керек
  • DC Barrel Jack - Электр энергияңыздын көлөмү менен бирдей
  • NPN BJT Power Transistors (x3) - Мен TIP31C колдонуп жатам
  • Эркек жана Ургаачы пин баштары - Милдеттүү эмес, бирок абдан сунушталат

1 -кадам: Pi үчүн Экспресс жүктөө

Pi үчүн Express жүктөлүп алынууда
Pi үчүн Express жүктөлүп алынууда

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

Мен эмне кылышым керек, мен жашырбайм …

  • Жаңы Raspbian менен жаркылдаган Raspberry Pi
  • Тармактык картаны орнотуңуз, сиз Интернетке Piден кире аласыз
  • Raspberry Pi'ге статикалык IP коюңуз

Эми бул жерде көңүл ачуу башталат! Биз nodeJS, npm, express жана express-generator орнотушубуз керек.

sudo apt-get update

sudo apt-get nodejs npm орнотуу

Алар орнотулгандан кийин, төмөнкүлөрдү аткарыңыз

npm экспресс-генераторду орнотуңуз

Express сизге Raspberry Pi үчүн эң жөнөкөй веб -серверди түзүүгө мүмкүнчүлүк берет. Экспресс-генератор экспресс сервер үчүн файлдарды автоматтык түрдө түзөт.

Каталогду жана CDди каталогго түзүңүз. Мен piWebpage деп атадым. Эми төмөнкүлөрдү иштетиңиз (сүрөттө да көрсөтүлгөн)

mkdir piWebpage

cd piWebpage express --view = ejs webApp

Бул анын ичиндеги бардык экспресс файлдары бар webApp аттуу папканы түзөт. Эгер кийинчерээк бул веб -баракча менен көбүрөөк иш кылууну пландап жатсаңыз жана сизге PUG жакса, --view = ejs дегенди --view = pug менен алмаштырыңыз. Биз веб -баракчага тийбейбиз, андыктан бул колдонмо үчүн биз эмнени колдонобуз.

2 -кадам: Pi Server Орнотуу

Жаңы webApp каталогуна өтүңүз.

cd webApp

npm орнотуу

npm орнотуу бир аз убакытты талап кылат, анткени ал экспресс үчүн бардык көз карандылыкты орнотуп жатат.

SetColor.py'ди webApp папкасына чаптаңыз. Бул файлда негизги түстөр үчүн кээ бир алдын ала орнотуулар бар. Сиз каалагандай көбүрөөк кошууга болот. Диапазону 0дөн 255ке чейин, мында 255 толук түстүү. Качандыр бир убакта мен, балким, жарыкты өчүрүү жөндөмүн кошом, бирок азырынча алар толук жарык.

Маршруттарга өтүңүз

cd маршруттары

Эми index.js файлын тиркелген файл менен алмаштырыңыз. Бул Google Home жөнөтө турган POST буйругун алуу үчүн кээ бир саптарды кошот. Ошол POSTтан биз тандалган түскө ээ болобуз жана Piге жарыкты тууралоо үчүн setColor python скриптин иштетүүнү айтабыз.

Акыркы нерсе … webApp папкасына кайтыңыз.

cd ~/piWebpage/webApp

Сүйүктүү редакторуңузду колдонуп, төмөндөгү кодду webApp.jsке сактаңыз. "Module.exports = app;" чейин болгон жерде, баары жакшы.

// Орнотуу LED жабдуулары driverconst {exec} = талап ('child_process'); exec ('sudo pigpiod', (err, stdout, stderr) => {if (err) {console.log ('LED драйверин жүктөөдө ката'); кайтуу;} else console.log ('LED драйвери ийгиликтүү жүктөлдү'); });

Комментарийде айтылгандай, pigpiod - бул PWM сигналдарынын аппараттык драйвери, биз аны LED түстөрүн тууралоо үчүн колдонобуз. Менимче, бул Raspbianда мурунтан эле орнотулган, бирок андай болбосо …

sudo apt-get pigpiod орнотуу

Эми чыныгы сыноо үчүн! Серверди баштоо!

DEBUG = webapp:* npm баштоо

3 -кадам: IFTTT орнотуусу (Trigger)

IFTTT орнотуусу (триггер)
IFTTT орнотуусу (триггер)
IFTTT орнотуусу (триггер)
IFTTT орнотуусу (триггер)

IFTTT көп нерсени кыла алат жана мен кээ бир тиркемелерди карап чыгууну сунуштаар элем.

Биринчиден, сиз каттоо эсебин түзүшүңүз керек. Google Home менен байланышкан Google каттоо эсебин колдонуңуз, антпесе алар чогуу шайкештештирилбейт. Аяктагандан жана киргенден кийин, IFTTT барагынын жогорку оң жагын чыкылдатыңыз, анда ал сиздин атыңызды жана аватарыңызды көрсөтөт. Андан кийин ачылуучу тизмеден Жаңы Аплетти чыкылдатыңыз.

Эгер сизди кызыктырса, IFTTT эгерде сиз экрандан көрүнбөгөн болсо, анда IF This That That дегенди билдирет. Демек, биз Google Жардамчыны кааласак, анда Webhook биздин варианттарыбыз.

Издөө тилкесин жүктөй турган +муну басуу менен улантыңыз. Издөөдө Google Жардамчыны терип, издөөнүн астындагы сөлөкөттү басыңыз.

Триггерди тандоодо, текст ингредиенти бар фразаны айтуу деп аталган үчүнчү вариантты тандаңыз. Эми бул ошол эле аракетти жасай турган 3 буйрукка ээ болууга мүмкүнчүлүк берет. Сиз түстү айтып турган $ сөз айкашын кошуңуз. Мисалы, эгер мен табигый түрдө Hey Google, Set LEDs Blue (түзмөккө кыйкыруу сыяктуу табигый) деп айтсам, анда мен Set LEDs $ талаасына терип жазмакмын. Муну буйруктун ар кандай версиялары бар бардык 3 талаа үчүн кылыңыз.

Мен колдонгон 3 болчу

LED $

$ Диоддорду коюңуз

LED түсүн коюу $

Акыркы талаа - бул сиздин Google Home буйругуңузду айткандан кийин жооп берүүсүн каалаган нерсе. Бул каалаган нерсеңиз болушу мүмкүн, бирок мен $ түсүн коюу үчүн колдондум. $ Ал түстү кайра кайталайт дегенди билдирет.

Триггер түзүү чыкылдатыңыз

4 -кадам: IFTTT Орнотуу (Аракет)

IFTTT Орнотуу (Аракет)
IFTTT Орнотуу (Аракет)
IFTTT Орнотуу (Аракет)
IFTTT Орнотуу (Аракет)

"Триггер түзүү" баскычын баскандан кийин, эгер сиз бул көрүнүшкө кайра жүктөсөңүз, бирок бул Google Жардамчысынын логотиби менен алмаштырылган. +Басуу менен улантыңыз

Бул издөө тилкесине алып келген жердегидей эле нерсе. Webhooks терип, издөө тилкесинин астындагы webhook сөлөкөтүн чыкылдатыңыз. Вебхуктар үчүн аракеттерди тандоо астында бир гана вариант бар, андыктан Веб сурам жасоону чыкылдатыңыз.

Бул жерде нерселер бир аз татаалдашат. Google сиздин үйүңүздөгү башка компьютер болбогондуктан, сизге тышкы IP дарегиңиз керек болот. Бул кандайдыр бир портту багыттоону талап кылат, бирок биз кийинчерээк ага токтолобуз. Тышкы IP дарегиңизди алуу үчүн https://canyouseeme.org/ дарегине өтүңүз

URL талаасына https://xxx.xxx.xxx.xxx:3000/{{TextField}} териңиз (x сиздин тышкы IP дарегиңиз менен). Эгер сиз кызыксаңыз, TextField сиз буйрук бергенде сиз тандаган түскө ээ болот. 3000 колдонуунун себеби, бул Raspberry Pi Express серверинин иштеп жаткан порту. (Сиз кодду портту өзгөртө аласыз, бирок биз жөн гана Express үчүн демейки жөндөөлөрдү колдонуп жатабыз)

Метод үчүн POST тандаңыз.

Мазмун түрү үчүн текстти/жөнөкөйдү тандаңыз.

Дене үчүн {{TextField}} териңиз

POST буйругу кандай иштээрин билгендер, эгер сиз өтүнүчтүн дене касиетин талдай турган болсоңуз, анда түскө ээ болом деп ойлойсуз. Эмнегедир, сурамдын негизги талаасына эч нерсе киргизилбейт, андыктан мен түстүн URL дарегин талдап жатам. Жакында оңдолот деп үмүттөнөм, анткени бул index.js каттамындагы менин кодумду жөнөкөйлөтөт. Бирок мен чегинем.

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

5 -кадам: Портту багыттоо

Портту багыттоо
Портту багыттоо
Портту багыттоо
Портту багыттоо

Бул жерде түшүндүрүү кыйын болуп жатат, анткени бардык роутерлер башкача …

Азыр бизде Google 3000 порт аркылуу үйүбүзгө буйрук жөнөтүп жатат, бирок ал LANдагы кайсы түзмөккө барыш керек экенин билбейт. Муну оңдоо үчүн, 3000 портун Raspberry Piңиздин жергиликтүү IP дарегине жөнөтүшүбүз керек.

Маршрутизаторуңузга 10.0.0.1 же 192.168.1.1 аркылуу кириңиз (мен аны акыркы цифра 254 болгон жерде көрдүм) жана порт багыттоону табыңыз. Портту кайра жөнөтүүдө, сүрөттө окшош, сиз жаңы түзмөккө (IFTTT) ат коюп, портту (3000) Piнин IP дарегине (менин учурда 10.0.0.11) жөнөтөсүз.

Жаңы орнотууңузду сактап, роутериңизди өчүрүп күйгүзүңүз жана Raspberry Pi сервериңиз дагы эле иштеп жатканын текшериңиз. Эгер ал иштебей жатса, кайра баштаңыз.

Колдонулган https://canyouseeme.org/ веб -сайтына кайтыңыз. Сиздин IP дарегиңиздин астында порт текшергичи бар. Портту багыттоо туура деп ойлосоңуз, 3000 терип, текшерүү портун басыңыз. Бул ийгилик менен кайтып келиши керек.

6 -кадам: Жумушуңузду азырынча текшерүү

Азырынча Жумушуңузду Текшерүү
Азырынча Жумушуңузду Текшерүү
Азырынча Жумушуңузду Текшерүү
Азырынча Жумушуңузду Текшерүү

Эми … сиз күткөн учур … Googleга LED ди көк сыяктуу буйрукту айтыңыз (эгер сиз менин үлгүмдү ээрчисеңиз).

Баары туура өттү деп ойлосоңуз, сүрөттө көрүнгөн жыйынтыкты аласыз. Бизде азырынча схема жок, андыктан экранда текстти гана көрөсүз. Адатта, Googleдан иштетилип, Pi'де пайда болгонго чейин экинчи же 2 кечигүү болот.

(Бул сүрөттө окшош чыкса, кийинки кадамга өтүңүз)

Эми иштебей калса, карап чыгууга бир нече нерсе бар …

Сүрөттө мындай деп жазылган сызык бар

POST /түс /көк 200 250.458 мс - 2

200 маанилүү бөлүгү болуп саналат. Эгерде сиз 200дү көрө элек болсоңуз, анда начар POST бар болчу, бул сиздин сервер маалымат менен эмне кылууну билбей турганын билдирет. 2 -кадамга кайтыңыз жана index.js файлыңызды текшериңиз.

Ошондой эле сүрөттө

stdout: көк

stderr:

Бул диоддорду иштетүүчү python файлынан чыккан продукт. Эгер сиз ал жерден ката көрсөңүз, анда 2 -кадамда драйвер орнотулбаган болушу мүмкүн.

Акырында, эгер эч нерсе көрүнбөсө … сиздин IFTTT туура эмес орнотулган же серверге туташпай калган болушу мүмкүн. IFTTT барагына кайтып барыңыз жана үстүнкү навигация тилкесинен Аракетти басыңыз. Ал жерде сиз колдонмоңуз иштеген сайын көрө аласыз, эгер ката болсо, анын эмне болгонун көрө аласыз. Мен Pi сервери менен Google буйругун чыгардым жана сүрөттөгү катаны алдым.

7 -кадам: Районду куруу

Районду куруу
Районду куруу
Районду куруу
Районду куруу
Районду куруу
Районду куруу

Муну эмне үчүн кылышыбыз керектигинин себеби, Raspberry Pi жетиштүү күчкө ээ эместигинен … Чечим … КӨБҮРӨК БИЙЛИК (Тимер инструмент Тейлор алыстан шылдыңдайт). АКА дагы бир электр менен камсыздоо (12V 2A)

Райондук бөлүк үчүн материалдар

  • Protoboard
  • Зым
  • RGB LED тилкеси
  • 12V электр менен камсыздоо - 2 амперден жогору нерсе жакшы болушу керек
  • DC Barrel Jack - Электр энергияңыздын көлөмү менен бирдей
  • NPN BJT Power Transistors (x3) - Мен TIP31C колдонуп жатам
  • Эркек жана Ургаачы пин баштары

Pi Zero GPIO менен интервейлерден уурдап алган ыңгайлуу сүрөттү колдонуп, GPIO17, GPIO18 жана GPIO 27 бири -бири менен GND түз экенин көрө аласыз. Биз 4 казыктан турган квадратты колдонобуз (Pins 11, 12, 13, 14).

Биринчиден, мен сүрөттө көрүнгөндөй LED тилкесине эркектердин башын кошууну сунуштайт элем (менин эң жакшы ишим эмес). Бул сизге керек болсо оңой ажыратууга мүмкүнчүлүк берет. Мен LED тилкесин protoboardыма жана эркек баштарын protoboardдан Raspberry Piге туташтыруу үчүн аялдын башын колдондум. (Ар дайым күч/сигнал булагы үчүн аял байланыштарын колдонуңуз). Пи пиндеринин баарын мен сыяктуу эле жанаша жылдыруунун кереги жок … Мен анын таза болушун кааладым, бирок бул көп жумуш болду.

Райондук түшүндүрмө

Транзистор менен тааныш эмес адамдар үчүн, транзисторлор негизинен санарип которгуч. Pi'ден GPIO казыктары үч өчүргүчтү (кызыл, жашыл жана көк) иштетет. Райондук диаграммада REDге атайын карасак, GPIO_17 күйүп турганда, которгуч REDди GND менен туташтырып, "жабылат", кызыл чырактар күйөт. GPIO_17 өчкөндө, которгуч ачык жана жарык өчөт.

Негизги - GPIO

Коллекционер - Түстөр (КЫЗЫЛ, ЖАШЫЛ, КӨК)

Эмитент - Жер (Электр энергиясы менен Пи үчүн)

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

Менин протоколумда 4 -транзистордук түзүлүш бар. Бул L7805CV, ал 12Vны 5Vга айландыруу үчүн колдонулат, ошондуктан мен Пиди ошол эле схемада иштете алам. Бул иштеди, бирок жылытуу үстүндө калды, ошондуктан мен анын байланыштарын алып салдым.

8 -кадам: Аны сынап көрүңүз

Районду бүтүргөндөн кийин, эч кандай байланыш жасоодон мурун Пиңизди өчүрүп күйгүзүңүз. Бул казыктар дагы деле сервердик тесттен активдүү болгондуктан. Же болбосо, сиз серверди жана pigpiod кызматын өлтүрө аласыз.

Светодиоддорду жана секиргичтерди протобоардан Пи -ге туташтырыңыз. Кубат берүүдөн мурун бардык туташууларды текшериңиз. Эгер сиз аны туура эмес туташтырсаңыз, Пиңизди куурууңуз мүмкүн (басым жок).

Текшерүү тизмеси

  • Зымдарды текшериңиз
  • Power Pi
  • Power Circuit
  • Серверди баштоо (DEBUG = webapp:* npm ~/piWebpage/webApp каталогунда башталат)
  • Сунушуңузду Googleга айтыңыз!

КУТТУКТАЙМЫЗ, сиз эч нерсе жардырган жоксуз, эми сиз Google Home'дон LEDди башкара аласыз.

Кыйынчылыктар болсо комментарий калтырыңыз, мен сизге кайрылып келүү үчүн болгон күчүмдү жумшайм!

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