Mundarija:

Google uy boshqariladigan LEDlar: 8 qadam
Google uy boshqariladigan LEDlar: 8 qadam

Video: Google uy boshqariladigan LEDlar: 8 qadam

Video: Google uy boshqariladigan LEDlar: 8 qadam
Video: Miyani 100% ishlatuvchi va xotirani kuchaytiruvchi 8 mahsulot! 2024, Noyabr
Anonim
Google uy boshqaradigan LEDlar
Google uy boshqaradigan LEDlar
Google uy boshqaradigan LEDlar
Google uy boshqaradigan LEDlar

So'nggi paytlarda qo'limda bo'sh vaqt ko'p bo'lgani uchun men ko'plab loyihalar ustida ishlayapman.

Bu loyiha sizga Raspberry Pi yordamida Google Home orqali RGB LEDlarini boshqarishga imkon beradi. Endi loyihaning 3 qismi bor, Raspberry Pi -ni sozlash, Google Home -ni IFTTT yordamida maxsus buyruq bilan sozlash va keyin chiroqlar sxemasini yaratish. Men aylanani o'zim qildim, lekin men ishonamanki, siz Adafruitdan kerakli narsani qila olasiz.

Raspberry Pi qismi uchun materiallar

  • Raspberry Pi - har qanday narsa ishlaydi, lekin men nolni ishlataman
  • Simsiz ulanish - agar Wi -Fi tarmog'ida Pi o'rnatilgan bo'lmasa
  • Google Home - Agar telefoningizda Google Assistant bo'lsa, ixtiyoriy

O'chirish uchun materiallar- bu sizni to'xtatishga yo'l qo'ymang … Bu juda oddiy

  • Protoboard
  • Tel
  • LED tasmasi
  • 12V quvvat manbai - 2 amperdan yuqori bo'lgan hamma narsa yaxshi bo'lishi kerak
  • DC Barrel Jek - quvvat manbai bilan bir xil o'lcham
  • NPN BJT Power Transistors (x3) - Men TIP31C dan foydalanayapman
  • Erkak va ayol pin sarlavhalari - ixtiyoriy, lekin tavsiya etiladi

1 -qadam: Pi uchun Express -ni yuklab oling

Pi uchun ekspres yuklab olish
Pi uchun ekspres yuklab olish

Men Pi -ni sozlash haqida juda ko'p tafsilotlarni aytmoqchi emasman, chunki ularni o'rnatish uchun juda ko'p darsliklar mavjud.

Men nima qilmasligim kerak, men aytmayapman …

  • Yangi Raspbian bilan Raspberry Pi yonib turadi
  • Tarmoq kartasini Internetga Pi orqali kirishingiz uchun sozlang
  • Raspberry Pi -ga statik IP -ni o'rnating

Mana bu erda o'yin -kulgi boshlanadi! Biz nodeJS, npm, express va express-generatorni o'rnatishimiz kerak.

sudo apt-get yangilanishi

sudo apt-get nodejs npm ni o'rnating

Ular o'rnatilgandan so'ng, quyidagilarni bajaring

npm ekspress-generatorni o'rnating

Express sizga Raspberry Pi -dan foydalanish uchun juda oddiy veb -server yaratishga imkon beradi. Ekspress-generator avtomatik ravishda ekspress-server uchun fayllarni yaratadi.

Katalog va CD ni katalogga yarating. Men piWebpage deb nomladim. Endi quyidagilarni bajaring (rasmda ham ko'rsatilgan)

mkdir piWebpage

cd piWebpage express --view = ejs webApp

Bu webApp nomli papkani yaratadi, undagi barcha tezkor fayllar. Agar siz keyinchalik bu veb -sahifada ko'proq ish qilishni rejalashtirmoqchi bo'lsangiz va sizga PUG yoqsa, --view = ejs -ni --view = pug bilan almashtiring. Biz veb -sahifaga tegmaymiz, shuning uchun bu dastur uchun biz nimani ishlatayotganimiz muhim emas.

2 -qadam: Pi serverini sozlash

Yangi webApp katalogiga o'ting.

CD veb -ilovasi

npm o'rnatish

npm o'rnatish biroz vaqt talab etadi, chunki u ekspress uchun barcha bog'liqliklarni o'rnatadi.

SetColor.py -ni webApp papkasiga joylashtiring. Bu faylda asosiy ranglar uchun oldindan o'rnatilgan sozlamalar mavjud. O'zingiz xohlaganingizcha ko'proq qo'shishingiz mumkin. Diapazon 0 dan 255 gacha, bu erda 255 to'liq rangda. Bir paytlar men, ehtimol, chiroqlarni xiralashtirish qobiliyatini qo'shaman, lekin hozircha ular to'liq nashrida.

Marshrutlarga o'ting

cd yo'nalishlari

Endi index.js faylini biriktirilgan fayl bilan almashtiring. Bu POST buyrug'ini olish uchun ba'zi satrlarni qo'shadi, bu esa Google Home yuboradi. POSTdan biz rangni tanlaymiz va Pi -ga chiroqlarni sozlash uchun setColor python skriptini ishga tushirishni aytamiz.

Oxirgi narsa … webApp papkasiga qaytish.

cd ~/piWebpage/webApp

O'zingiz yoqtirgan muharrirdan foydalanib, pastdagi kodni webApp.js -ga joylashtiring va saqlang. "Module.exports = app;" dan oldin hamma joyda yaxshi.

// LED uskuna drayverini o'rnatish {exec} = talab ('child_process'); exec ('sudo pigpiod', (err, stdout, stderr) => {if (err) {console.log ('LED drayverini yuklashda xato'); qaytish;} else console.log ('LED drayveri muvaffaqiyatli yuklandi'); });

Izohda aytilganidek, pigpiod - bu PWM signallarining apparat drayveri, biz LED ranglarini sozlash uchun foydalanamiz. Menimcha, u allaqachon Raspbian -da o'rnatilgan, lekin bo'lmasa …

sudo apt-get install pigpiod

Endi haqiqiy sinov uchun! Server ishga tushmoqda!

DEBUG = webapp:* npm boshlanishi

3 -qadam: IFTTT -ni sozlash (Trigger)

IFTTT sozlamalari (Trigger)
IFTTT sozlamalari (Trigger)
IFTTT sozlamalari (Trigger)
IFTTT sozlamalari (Trigger)

IFTTT ko'p ish qila oladi va men ba'zi ilovalarni ko'rib chiqishni tavsiya qilaman.

Birinchidan, siz hisob yaratishingiz kerak. Google Home bilan bog'langan Google hisobidan foydalaning, aks holda ular birgalikda sinxronlanmaydi. Tugatgandan va kirganingizdan so'ng, IFTTT sahifasining yuqori o'ng burchagini bosing, u erda sizning ismingiz va avataringiz ko'rsatiladi. Keyin ochiladigan menyudan Yangi Applet -ni bosing.

Agar siz qiziqmoqchi bo'lsangiz, IFTTT "Agar bu paydo bo'lsa" degan ma'noni anglatadi. Shunday qilib, agar biz Google Assistantni xohlasak, Webhook bizning tanlovimiz bo'ladi.

Qidiruv satrini yuklaydigan +ni bosish bilan davom eting. Qidiruvda Google Assistant -ni kiriting va qidiruv ostidagi belgini bosing.

Triggerni tanlashda matnli tarkibli iborani aytish deb nomlangan uchinchi variantni tanlang. Endi bu sizga xuddi shu amalni bajaradigan 3 ta buyruqdan foydalanish imkonini beradi. Siz $ ni iboraga qo'shasiz, bu erda siz rangni eslatib o'tasiz. Masalan, agar men tabiiy ravishda Hey Google, Blue LED -larni o'rnating (qurilmaga baqirish kabi tabiiy) deb aytsam, men $ LED -ni sozlash maydoniga yozardim. Buni buyruqning turli versiyalari bo'lgan barcha 3 ta maydon uchun bajaring.

Men foydalangan 3 ta edi

LEDlar $

$ LEDlarni o'rnating

$ LED rangini o'rnating

Oxirgi maydon - bu sizning buyrug'ingizni aytgandan so'ng, Google Home -ga javob berishini xohlaysiz. Bu xohlagan narsangiz bo'lishi mumkin, lekin men rangni $ ga sozlashdan foydalandim. $ Degani, u rangni qaytaradi.

Trigger yaratish -ni bosing

4 -qadam: IFTTTni sozlash (harakat)

IFTTTni sozlash (harakat)
IFTTTni sozlash (harakat)
IFTTTni sozlash (harakat)
IFTTTni sozlash (harakat)

"Trigger yaratish" tugmachasini bosgandan so'ng, siz bu ko'rinishga qaytasiz, lekin u Google Assistant logotipi bilan almashtirilgan. Davom etish uchun +belgisini bosing

Xuddi shu narsa sizni qidiruv paneliga olib boradigan joy. Webhooks -ni kiriting va qidirish paneli ostidagi webhook belgisini bosing. Webhooks uchun harakatni tanlash ostida faqat bitta variant bor, shuning uchun Veb -so'rov yaratish -ni bosing.

Bu erda ishlar biroz murakkablashadi. Google sizning uyingizda boshqa kompyuter emasligi uchun sizga tashqi IP -manzilingiz kerak bo'ladi. Bu portni boshqa yo'naltirishni talab qiladi, lekin biz bu haqda keyinroq gaplashamiz. Tashqi IP manzilingizni olish uchun https://canyouseeme.org/ saytiga o'ting.

URL maydoniga https://xxx.xxx.xxx.xxx:3000/{{TextField}} kiriting (x sizning tashqi IP manzilingiz). Agar siz qiziqmoqchi bo'lsangiz, TextField buyruq berganingizda siz tanlagan rangga ega bo'ladi. 3000 -dan foydalanishimizning sababi shundaki, bu Raspberry Pi Express serveri ishlayotgan port. (Siz koddagi portni o'zgartirishingiz mumkin, lekin biz faqat Express uchun standart sozlamalardan foydalanmoqdamiz)

Usul uchun POST -ni tanlang.

Kontent turi uchun matnni tanlang.

Body uchun {{TextField}} kiriting

POST buyrug'i qanday ishlashini biladiganlar, agar siz so'rovning asosiy xususiyatini tahlil qilsangiz, rangni olasiz deb o'ylaysiz. Ba'zi sabablarga ko'ra, so'rovning asosiy maydoniga hech narsa kiritilmagan, shuning uchun men aslida URL uchun rangni tahlil qilaman. Umid qilamanki, bu tez orada tuzatiladi, chunki bu mening kodimni index.js yo'nalishida soddalashtiradi. Lekin men chekinaman.

Nihoyat, Harakat yaratish -ni bosing va keyingi sahifada Finish -ni bosing. (Men bildirishnomalarni o'chirib qo'ydim, lekin bu afzallik)

5 -qadam: Portni yo'naltirish

Portni yo'naltirish
Portni yo'naltirish
Portni yo'naltirish
Portni yo'naltirish

Bu erda hamma narsani tushuntirish qiyin, chunki hamma yo'riqnoma boshqacha …

Endi bizda Google 3000 -port orqali uyimizga buyruq yuboradi, lekin u LAN tarmog'idagi qaysi qurilmaga o'tishi kerakligini bilmaydi. Buni tuzatish uchun biz 3000 -portni Raspberry Pi -ning mahalliy IP -manziliga yuborishimiz kerak.

Routeringizga 10.0.0.1 yoki 192.168.1.1 (oxirgi raqam 254 bo'lgan joyni ham ko'rganman) yordamida kiring va portni yo'naltirishni toping. Portga yo'naltirishda, rasmga o'xshab, siz yangi qurilmani (IFTTT) nomlaysiz va portni (3000) Pi -ning IP -manziliga (mening holatimda 10.0.0.11) yuborasiz.

Yangi sozlamani saqlang, yo'riqchini qayta ishga tushiring va Raspberry Pi serveringiz ishlayotganligini tekshiring. Agar u ishlamayotgan bo'lsa, uni qayta ishga tushiring.

Https://canyouseeme.org/ saytiga qayting. Sizning IP -manzilingiz ostida port tekshirgichi bor. Portni yo'naltirish to'g'ri deb hisoblasangiz, 3000 raqamini kiriting va tekshirish portini bosing. Muvaffaqiyat bilan qaytishi kerak.

6 -qadam: Ishingizni hozirgacha tekshirish

Sizning ishingizni hozirgacha tekshirish
Sizning ishingizni hozirgacha tekshirish
Sizning ishingizni hozirgacha tekshirish
Sizning ishingizni hozirgacha tekshirish

Endi … siz kutgan payt … Google -ga ko'k LED kabi buyruqni ayting (agar siz mening misolimga amal qilgan bo'lsangiz).

Hammasi to'g'ri bajarilgan deb hisoblasangiz, siz rasmda ko'rinadigan natijani olasiz. Bizda hozircha sxema yo'q, shuning uchun siz faqat ekrandagi matnni ko'rasiz. Odatda Google -dan qayta ishlanib, Pi -da paydo bo'lishidan oldin ikkinchi yoki 2 kechikish bo'ladi.

(Agar bu rasmga o'xshash bo'lsa, keyingi bosqichga o'ting)

Agar u ishlamasa, bir nechta narsalarni ko'rib chiqish kerak …

Rasmda shunday deyilgan chiziq bor

POST /rang /ko'k 200 250.458 ms - 2

200 - bu muhim qism. Agar siz 200 -ni ko'rmasangiz, unda yomon POST bor edi, ya'ni sizning serveringiz ma'lumotlar bilan nima qilishni bilmas edi. 2 -qadamga qayting va index.js faylini tekshiring.

Shuningdek rasmda

stdout: ko'k

stderr:

Bu LEDlarni ishlaydigan python faylining chiqishi. Agar u erda xato ko'rsangiz, 2 -qadamda sizda drayver o'rnatilmagan bo'lishi mumkin.

Nihoyat, agar hech narsa ko'rinmasa … sizning IFTTT to'g'ri sozlanmagan yoki serverga ulanmagan bo'lishi mumkin. IFTTT sahifasiga qayting va yuqori navigatsiya panelida Faoliyat -ni bosing. U erda siz har safar ilovangiz ishga tushganda ko'rishingiz mumkin va agar xato bo'lsa, nima bo'lganini ko'rishingiz mumkin. Men Pi serveri bilan Google buyrug'ini qildim va rasmdagi xatoni oldim.

7 -qadam: O'chirish tizimini yaratish

O'chirish davri
O'chirish davri
O'chirish davri
O'chirish davri
O'chirish davri
O'chirish davri

Biz buni qilishimiz kerak bo'lgan sabab shundaki, Raspberry Pi -ning kuchi etarli emas … Demak, bu yechim … KO'PROQ QUVAT (asbobli odam Teylor uzoqdan qichqiradi). AKA boshqa quvvat manbai (12V 2A)

O'chirish qismi uchun materiallar

  • Protoboard
  • Tel
  • RGB LED tasmasi
  • 12V quvvat manbai - 2 amperdan yuqori bo'lgan hamma narsa yaxshi bo'lishi kerak
  • DC Barrel Jek - quvvat manbai bilan bir xil o'lcham
  • NPN BJT Power Transistors (x3) - Men TIP31C dan foydalanayapman
  • Erkak va ayol pin sarlavhalari

Men Pi Zero GPIO bilan interweblardan o'g'irlangan qulay rasmdan foydalanib, siz GPIO17, GPIO18 va GPIO 27 ni GND bilan bir -birining yonida ko'rishingiz mumkin. Biz 4 ta pinli kvadratdan foydalanamiz (pinlar 11, 12, 13, 14).

Birinchidan, men rasmda ko'rinib turganidek, sizning LED tasmangizga erkak sarlavhalarini lehimlashni maslahat beraman (mening eng yaxshi ishim emas). Agar kerak bo'lsa, bu osonlikcha uzilishga imkon beradi. Men LED chizig'ini protoboardimga va erkak boshliklarini protobarddan Raspberry Pi ga ulash uchun ayol sarlavhalarni ishlatardim. (Har doim quvvat/signal manbai uchun ayol ulanishlardan foydalaning). Menga o'xshab, Pi -ning barcha pinlarini bir -birining yoniga siljitishning hojati yo'q … Men uning toza ko'rinishini xohlardim, lekin bu juda ko'p ish edi.

O'chirish bo'yicha tushuntirish

Transistorlar bilan tanish bo'lmaganlar uchun tranzistorlar asosan raqamli kalitdir. Pi -dan GPIO pinlari uchta kalitni (qizil, yashil va ko'k) ishga tushiradi. O'chirish sxemasida REDga alohida qarasak, GPIO_17 yoqilganda, REDni GND ga ulaydigan kalit "yopiladi" va qizil chiroqlar yonadi. GPIO_17 o'chganda, kalit ochiq va shu sababli chiroqlar o'chadi.

Asosiy - GPIO

Kollektor - Ranglar (KIRMIZI, Yashil, Moviy)

Emitent - er (quvvat manbai va Pi)

Pi simini elektr tarmog'iga ulaganingizga ishonch hosil qiling. Chiroqlar hali ham ishlaydi, lekin ular erga ulanmaguncha juda xira ko'rinadi.

Mening protoboardimda 4 -tranzistorli qurilma bor. Bu L7805CV bo'lib, u 12Vni 5V ga aylantirish uchun ishlatiladi, shuning uchun men Pi -ni bir xil sxemada quvvatlantirishim mumkin edi. U ishladi, lekin isitishni davom ettirdi, shuning uchun men uning aloqalarini olib tashladim.

8 -qadam: Sinab ko'ring

O'chirish tugagandan so'ng, ulanishdan oldin Pi -ni qayta ishga tushiring. Buning sababi, pinlar hali ham server testidan faol. Shu bilan bir qatorda, siz server va pigpiod xizmatini o'ldirishingiz mumkin.

LEDlarni va o'tish panellarini protobarddan Pi ga ulang. Quvvat berishdan oldin barcha ulanishlarni ikki marta tekshiring. Agar siz noto'g'ri ulangan bo'lsangiz, siz Pi -ni qovurishingiz mumkin (bosimsiz).

Tekshirish ro'yxati

  • Simlarni tekshiring
  • Power Pi
  • Quvvat davri
  • Serverni ishga tushirish (DEBUG = webapp:* npm ~/piWebpage/webApp katalogida boshlanadi)
  • Googlega o'z taklifingizni bildirishini ayting!

TABRIKLAR, siz hech narsani portlatmadingiz va endi siz LED -larni Google Home -dan boshqarishingiz mumkin.

Muammo bo'lsa, izohlarda qoldiring va men sizga javob qaytarish uchun qo'limdan kelganicha harakat qilaman!

Tavsiya: