Mundarija:

Smart devor taqvimi: 5 qadam
Smart devor taqvimi: 5 qadam

Video: Smart devor taqvimi: 5 qadam

Video: Smart devor taqvimi: 5 qadam
Video: 102 Year Old Lady's Abandoned Home in the USA ~ Power Still ON! 2024, Noyabr
Anonim
Aqlli devor taqvimi
Aqlli devor taqvimi

Xotinim bilan men klassik qog'oz taqvimidan foydalanganmiz, unda biz muhim sanalarni belgilaganmiz. Shuningdek, biz tadbirlarni belgilash uchun aqlli telefonlarimizda Google taqvimidan foydalanamiz, shuning uchun bu ikki baravar ko'p ish demakdir. Shunday qilib, biz qandaydir aqlli devor taqvimini tuzishga qaror qildik, u bizning eslatmalarimiz, voqealarimiz va boshqa ma'lumotlarni aks ettiradi. Menda turli xil eski elektron qismlar yotar ekan, mening maqsadim ularni iloji boricha ko'p ishlatish va taqvimni iloji boricha kam xarajat bilan qurish edi.

Bu qo'llanmada men sizga bir nechta Google hisoblaridagi voqealarni aks ettiruvchi, aqlli devor taqvimini qanday qurishni ko'rsataman. Shuningdek, u vaqt, sana, ob -havo, harorat va ba'zi qo'shimcha ma'lumotlarni ko'rsatadi. U Raspberry Pi kompyuteri bilan jihozlangan bo'lib, unga passiv infraqizil sensori (PIR) harakat sensori biriktirilgan, shuning uchun displey xonada harakat aniqlanganda, lekin bir necha daqiqalik harakatsizlikdan keyin o'chadi. Bu darslik Internetda topilgan boshqa darsliklarga asoslangan va men ularni yaxshiroq tushunish uchun havolalarni beraman. Dasturlash bo'yicha ba'zi asosiy bilimlar kerak (HTML, Python, …).

1 -qadam: Uskuna

Yuqorida aytib o'tganimdek, men xarajatlarni kamaytirish uchun eski elektron qismlarni qayta ishlatishga harakat qildim. Men sotib olishim kerak bo'lgan ba'zi narsalarni sotib oldim, shuning uchun men qurilish uchun zarur bo'lgan narsalarni sanab o'taman.

- Raspberry Pi to'plami. Dastlab men boshqa modeldagi eski modelim 2 dan foydalanardim. Bu ishladi, lekin veb -sahifani tahrirlash va qayta yuklash menga ko'p vaqt kerak bo'ldi, shuning uchun men oxirigacha ravonroq ishlaydigan 3 -modelga o'tdim https://www.ebay.com/sch/i.html?_from=R40&_trksid=m570.l1313 & _nkw = malina+pi+to'plami va _sacat = 0

- LCD displey. Men eski noutbukdan ekranni ishlatardim, shuning uchun unga faqat LVDS drayveri va quvvat manbasini sotib olish kerak edi https://www.ebay.com/sch/i.html?_from=R40&_trksid=m570.l1313&_nkw=hdmi+ haydovchi+LVDS+taxtasi va _sacat = 0

-Elektron uchun plastik saqlash qutisi

- Passiv infraqizil harakat sensori

- AM2302 harorat/namlik sensori

- Qora plastmassa slayd-biriktiruvchi LCD ramka uchun bog'lovchi

- Har xil kabellar (HDMI, doimiy quvvat uchun 5,5 mm, lehimsiz non paneli o'tish kabellari,…)

2 -qadam: LCD displeyni yaratish

LCD displey yaratish
LCD displey yaratish
LCD displey yaratish
LCD displey yaratish
LCD displey yaratish
LCD displey yaratish

Men eski eskirgan noutbukdan LCD displeydan foydalandim. Buni qanday qilish kerakligi haqida bir nechta darsliklar bor, men bunga amal qildim:

www.instructables.com/id/How-to-reuse-the-old-LCD-Screen-of-your-broken-Lap/

Men eski noutbukimning qopqog'ini demontaj qildim, LCD displeyni oldim va keyin to'g'ri LVDS haydovchi platasiga buyurtma berdim. Men sotuvchiga LCD displeyining orqa tomonida topilishi mumkin bo'lgan mahsulot kodini taqdim qildim, bu mening LP171WE3 (TL) (A2) - oxirgi rasmning pastki o'ng tomonidagi yorliqni ko'ring va keyin u menga tegishli LVDS -ni yubordi. E'tibor bering, sizga displey uchun quvvat manbai ham kerak bo'ladi, shuning uchun sotuvchidan ham uni yuborishini so'rang. Men shuningdek, haydovchiga mos keladigan va LCD displeyining orqa tomoniga mahkamlanadigan 14,5 × 7,5 × 2 sm o'lchamdagi chiroyli plastik quti sotib oldim.

Endi LCD displey metall ramkaga ega, bu unchalik chiroyli ko'rinmaydi. Avvaliga uni purkagich bilan qora rangga bo'yadim, lekin bo'yoq qichiy boshladi. Shunday qilib, men odatda qog'oz varaqlarini bog'lash uchun ishlatiladigan to'rtta qora plastmassa biriktirgichni oldim, ularni mos ravishda qirqdim va ramkani yopish uchun biriktirdim. Bu yaxshi ko'rinardi, shuning uchun men barcha kabellarni HDMI -ga eski Raspberry Pi va Voila -ga uladim - u ishladi! Displeyda rasm ko'rsatilgandi, shuning uchun men keyingi bosqichga o'tishga tayyor edim - displeyda qanday ma'lumotlarni ko'rsatish va uni qanday ko'rsatish kerak.

3 -qadam: dasturiy ta'minotni sozlash

Kalendarni qanday tuzish kerakligi haqida Internetda izlayotganimda, bu sahifadan ilhomlandim https://dakboard.com/site. Ular tayyor mahsulotni (displey, kompyuter va ishchi dasturiy ta'minot) taqdim etishadi, lekin ularda DIY echimlari uchun ajoyib qo'llanma mavjud (https://blog.dakboard.com/diy-wall-display/). Men sizga hech bo'lmaganda birinchi qismda Raspberry-da tizimni tayyorlash va sozlash bo'yicha ko'rsatmalarni bajarishni maslahat beraman, shunda brauzer kerakli veb-sahifani yuklashda avtomatik yuklaydi.

Bu yaxshi ishladi, lekin men o'z xohishimga ko'ra ko'proq moslashtirilishi mumkin bo'lgan echimni qidirardim. Men o'z veb -serverimni o'rnatishga va taqvimdan tashqari qo'shimcha ma'lumotlarni ko'rsatadigan veb -sahifa yaratishga qaror qildim. Men Wordpress.org -ni tanladim, chunki u yaxshi hujjatlashtirilgan va sizga yordam berish uchun yaxshi qo'llab -quvvatlash va katta jamoaga ega. Bu erda Raspberry Pi-da Wordpress-ni o'rnatish bo'yicha qo'llanma: https://projects.raspberrypi.org/en/projects/lamp-web-server-with-wordpress. Wordpress o'rnatilganda, mening bosh sahifamni loyihalash vaqti keldi. Siz taqdim etilgan mavzulardan birini yoki noldan dizayndan foydalanishingiz mumkin. Qanday bo'lmasin, buning uchun ba'zi HTML dasturlash bilimlari kerak.

Men o'z sahifamni shunday tuzdimki, chap tomonda taqvim ko'rsatiladi (https://sl.wordpress.org/plugins/google-calendar-events/), o'ng tomonda vaqt va sana ko'rsatiladi (https): //www.timeanddate.com/clocks/free.html va https://www.arclab.com/en/kb/htmlcss/display-date-time-javascript-php-ssi.html). Ob-havo ma'lumoti bu sahifada (https://www.1a-vreme.si/vremensko-okno/), u Sloveniya shaharlari uchun prognozli vidjetni taqdim etadi, lekin menimcha, boshqa mamlakatlar uchun ham vidjetlarni Internetda topish mumkin. Harorat AM2302 sensori yordamida yig'iladi (https://www.ebay.com/sch/i.html?_from=R40&_trksid=m570.l1313&_nkw=AM2302+&_sacat=0), bu bob oxirida tushuntirilgan. Pastki qismida har kuni sanash taymeri joylashgan bo'lib, u ba'zi tadbirlarga necha kun qolganini ko'rsatadi (mening bolalarim bilishi qiziq, ular necha kun biror narsani kutishlari kerak). O'ng yuqori burchakda MetaSlider plagini (https://wordpress.org/plugins/ml-slider/) joylashgan bo'lib, u tasodifiy ravishda oilamning tanlangan rasmlariga siljiydi. Bundan tashqari, men fon rasmi plaginini (https://sl.wordpress.org/plugins/background-slider-master/) ishlatib, menga yaxshi fon uchun tasodifiy rasmni ko'rsatdim.

Yuqorida aytib o'tilganidek, ichki harorat AM2302 sensori yordamida yig'iladi. Haroratni o'lchash bo'yicha ko'plab qo'llanmalar bor, men bunga amal qildim: https://www.modmypi.com/blog/am2302-temphumidity-sensor. Keyinchalik men bu sensorni boshqa Raspberry Pi-ga o'tkazdim, u erda Home Assistant ishlaydi, chunki uning DHT Sensor komponenti yordamida qiymatlarni o'qish va nashr qilish osonroq (https://www.home-assistant.io/components/sensor.dht/). Uy yordamchisi har xil ob-havo komponentlari yordamida tashqi haroratni to'plashi mumkin, men YR.no komponentidan foydalanardim (https://www.home-assistant.io/components/sensor.yr/). Shu bilan men ushbu komponentlardan ichki/tashqi haroratni yig'ish va ularni matnli faylga yozish uchun avtomatlashtirish skriptini yozdim, u keyin devor taqvimimda ko'rsatiladi. Home Assistant haqida qo'shimcha ma'lumot olish uchun bosh sahifaga qarang (https://www.home-assistant.io/).

4 -qadam: ixtiyoriy - displeyni o'chirish

Endi biz taqvimimizni o'zimiz xohlagan tarzda o'rnatdik va ishga tushirdik. Lekin biz displeyning 24/7 yoqilishini xohlamaymiz. Biz buni faqat kimdir uyda bo'lganida yoqishni xohlaymiz. Bundan tashqari, biz uni tunda yoqishni xohlamaymiz, hojatxonaga borganimizda, bu juda yorug '! Shunday qilib, biz infraqizil sensorni ulaymiz, kimdir uning oldida turganini va u yoqilishi kerak bo'lgan vaqt chegaralarini qo'shamiz.

E'tibor bering, mening dasturlash ko'nikmalarim juda cheklangan, shuning uchun quyidagilar maqbul bo'la olmaydi, chunki men uni turli onlayn forumlar va darsliklardan tanlaganman, lekin aslida u ishlaydi. Shunga qaramay, har qanday tavsiyanomalar hali ham mamnuniyat bilan qabul qilinadi. Avval biz monitorni qo'lda yoqish/o'chirish uchun testdan boshlaymiz. Buning uchun biz ikkita fayl yaratamiz (masalan monitor_on.sh va monitor_off.sh) va unga kod yozamiz. Buning eng oson yo'li - Raspberry -ga SSH va yozish orqali kirish

sudo nano monitor_on.sh

va quyidagi kodni kiriting

tvservice -afzal ko'rilgan;

startx/usr/bin/graphical_launcher `fgconsole`

Saqlash va chiqish uchun CTRL+X tugmalar birikmasini bosing, so'ng ikkinchi faylni yarating

sudo nano monitor_off.sh

va quyidagi kodni kiriting

tvservice -o'chirish;

Saqlash va chiqish uchun yana CTRL+X tugmalar birikmasini bosing. Yangi yaratilgan fayllarni bajariladigan qilib qo'ying:

sudo chmod +x monitor_on.sh

sudo chmod +x monitor_off.sh

Endi bu buyruqlar ishlayaptimi, yozing

sudo./monitor_off.sh

sudo./monitor_on.sh

Endi monitor o'chishi va shunga mos ravishda yoqilishi kerak. Men Raspberry Pi 2 -da monitorni yoqish uchun deyarli 10 soniya vaqt ketganini payqadim. Raspberry Pi 3-da 1-2 soniya vaqt ketadi. Keyin biz skriptlarni ishga tushiradigan infraqizil sensorni ulaymiz. Shunga qaramay, Raspberry Pi va PIR-ni o'rnatish bo'yicha ko'plab qo'llanmalar mavjud, men bunga amal qildim: https://www.instructables.com/id/PIR-Sensor-Interfacing-With-Raspberry-Pi/. Nano muharriri yordamida fayl yarating (masalan, motion_sensor.py) va unga tegishli Python kodini kiriting. Quyida mening faylimga misol:

RPi. GPIO -ni GPIOimport -ga import qilib yuborish -tizim -vaqtini dtimport -ga osGPIO.setwarnings (noto'g'ri) # GPIO.setmode (GPIO. BOARD) GPIO.setmode (GPIO. BCM) - GPIO.setup (17, GPIO. IN) #PIRturned_off = Falselast_ time.time () SHUTOFF_DELAY = 180 # soniya To'g'ri: i = GPIO.input (17), agar i == 0 bo'lsa: # Harakat sensori chiqishi LOW bo'lsa, monitorni o'chirmang va time.time ()> (last_motion_time +) SHUTOFF_DELAY): "Bosqinchilar yo'q" ni chop eting, iturned_off = Truetime.sleep (1) subprocess.call (['/home/pi/monitor_off.sh'], shell = True) elif i == 1: #Harakat sensori chiqqanda YUQORI, monitorni ONPRINT "Intruder aniqlandi" ni aylantiring, itime.sleep (1) last_motion_time = time.time () sys.stdout.flush () off_off va dt.datetime.now (). soat> 5 va dt.datetime. now (). soat <23: turn_off = Falsesubprocess.call (['/home/pi/monitor_on.sh'], shell = True) agar _name_ == '_main _' bo'lsa: try: main () tashqari KeyboardInterrupt: GPIO.cleanup ()

E'tibor bering, "GPIO.setup (17, GPIO. IN)" PIR -dan chiqish pin Raspberry Pi -dagi 17 -pinga ulanganligini ko'rsatadi. Qaysi pin GPIO.setmode (GPIO. BOARD) yoki GPIO.setmode (GPIO. BCM) ni belgilashingizga bog'liq. Farq bu erda tushuntiriladi: https://raspberrypi.stackexchange.com/questions/12966/what-is-the-difference-between-board-and-bcm-for-gpio-pin-numbering. Menda GPIO. BOARD oldida # bor, shuning uchun u e'tiborga olinmaydi va GPIO. BCM ishlatiladi.

Chiziqqa e'tibor bering

SHUTOFF_DELAY = 180 #soniya

Bu erda, monitor oxirgi harakat aniqlangandan keyin, o'chirilmaguncha qancha vaqt yoqilganligi ko'rsatilgan. Bu foydalidir, chunki men uning yonidan o'tayotganda monitorni doimiy ravishda o'chirishni/yoqishni xohlamayman, lekin uni o'chirilishidan oldin bir muddat yoqib turishni xohlayman. Men 180 soniya oralig'ini tanladim, shuning uchun monitor oxirgi harakat aniqlangandan 3 minut o'tgach o'chadi.

Nihoyat, bu qator

agar turn_off va dt.datetime.now (). soat> 6 va dt.datetime.now (). soat <23:

Monitör faqat soat 6:00 dan 23:00 gacha yonadi, shuning uchun u meni tunda bezovta qilmaydi. Chiziqlar

"Bosqinchilar yo'q" ni chop eting, ya'ni

va

"Intruder aniqlandi" ni chop eting, ya'ni

ular faqat skriptni sinab ko'rish uchun mo'ljallangan, keyinroq ishlayotganda ularni o'chirib tashlashingiz mumkin. Endi skriptni sinab ko'ring:

sudo python motion_sensor.py

Agar siz "buzg'unchi aniqlansa" xabarini ko'rishingiz kerak, agar siz sensorni tepasida silkitsangiz, aks holda "buzg'unchilar yo'q" bo'ladi. Qachonki bu skript sinovdan o'tkazilsa va ishlayotgan bo'lsa, uni yuklashda boshlashni sozlang:

sudo nano ~/.config/lxsession/LXDE-pi/autostart

va quyidagi qatorni qo'shing

@sudo/usr/bin/python /home/pi/motion_sensor.py

Albatta, siz yaratgan Python skriptining to'g'ri fayl nomini ko'rsatishingiz kerak.

5 -qadam: Kalendarni osib qo'ying

Hammasi tayyor, taqvimni devorga osib qo'yish vaqti keldi!

Dastlab men Raspberry Pi -ni LCD displey orqasida yashirishni o'ylardim, shunda faqat bitta kabel (shahar quvvati) kerak bo'ladi. Ammo Raspberry 5V va LCD displey 12Vda ishlagani uchun menga qo'shimcha transformator kerak bo'ladi. Bundan tashqari, Raspberry qutisi juda qalin, ya'ni LCD displey devordan 3 santimetr masofada joylashgan bo'ladi. Men bundan voz kechdim va faqat LCD elektronikasini LCD orqasida qoldirdim, shunda u devordan 1 santimetrdan kamroq masofada joylashgan. Men 5 metr uzunlikdagi ikkita kabel oldim, bittasi HDMI va bittasi 5, 5 mm, shahar quvvat manbai. Ikkala kabel ham devorga o'xshash oq rangga ega, ya'ni ular unchalik ajralib turmaydi. Men LCD -ni devorga o'rnatdim va Raspberry -ni qarama -qarshi devorda muzlatgichning tepasiga qo'ydim, shuning uchun u asosan yashiringan, lekin unga hali ham oson kirish mumkin.

Tavsiya: