Mundarija:
- 1 -qadam: Pi uchun Express -ni yuklab oling
- 2 -qadam: Pi serverini sozlash
- 3 -qadam: IFTTT -ni sozlash (Trigger)
- 4 -qadam: IFTTTni sozlash (harakat)
- 5 -qadam: Portni yo'naltirish
- 6 -qadam: Ishingizni hozirgacha tekshirish
- 7 -qadam: O'chirish tizimini yaratish
- 8 -qadam: Sinab ko'ring
Video: Google uy boshqariladigan LEDlar: 8 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:25
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
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 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)
"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
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
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
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:
Sehrli Gerkules - raqamli LEDlar uchun haydovchi: 10 qadam
Sehrli Gerkules - Raqamli LEDlar uchun haydovchi: Tez ko'rib chiqish: Magic Hercules moduli NZR protokoliga taniqli va oddiy SPI o'rtasidagi konvertor. Modul kirishlari +3,3 V ga bardoshli, shuning uchun siz +3,3 V kuchlanishli ishlaydigan har qanday mikrokontrollerni ishonchli ulashingiz mumkin
Mahalliy keng sinxronlangan LEDlar: 5 qadam (rasmlar bilan)
Mahalliy keng sinxronlangan LEDlar: Menda simsiz LED chiziqlar bor edi, ularni men dam olish kunlari o'chirib qo'yishim mumkin edi. Lekin, mening hovlimda, ular ham xuddi shunday simli bo'lishi mumkin edi. Xo'sh, eng qiyin vazifa nima? Mening blokimdagi barcha uylarning sinxron displeyli LED bezaklari
Portativ Disko V2 -Ovozli boshqariladigan LEDlar: 11 qadam (rasmlar bilan)
Portativ Disko V2 -Ovozli boshqariladigan LEDlar: Men birinchi portativ diskotekani yaratganimdan buyon elektronika sohasida uzoq yo'lni bosib o'tdim. Asl qurilishda men prototip taxtasida sxemani sindirdim va toza, kichik cho'ntak diskotekasini qurishga muvaffaq bo'ldim. Bu safar men o'z shaxsiy PCB -ni ishlab chiqdim
Masofadan boshqariladigan USB Gamepad orqali boshqariladigan 4WD robot: 6 qadam
Uzoq USB Gamepad orqali boshqariladigan 4WD robot: Keyingi robototexnika loyiham uchun, men kutilmagan vaziyatlar tufayli o'z robot platformamni me'morchilik qilishga/loyihalashga majbur bo'ldim. Maqsad - avtonom bo'lish, lekin birinchi navbatda uning asosiy haydashini sinab ko'rishim kerak edi. qobiliyati, shuning uchun men bu qiziqarli tarafdor bo'ladi deb o'yladim
Harorat boshqariladigan LEDlar: 6 qadam
Haroratni boshqariladigan LEDlar: LEDlar ko'rsatgich berish, displeyda raqamlar qo'yish, masofadan boshqarish pultidagi kabi ma'lumotlarni uzatish kabi ko'p vazifalarni bajaradi. LEDlar elektronikaning qahramonlari va aslida " noaniq " qahramonlar Bu nafaqat, balki ular ham keng qo'llaniladi