Sadržaj:

Pametni zidni kalendar: 5 koraka
Pametni zidni kalendar: 5 koraka

Video: Pametni zidni kalendar: 5 koraka

Video: Pametni zidni kalendar: 5 koraka
Video: Какого числа от 1 до 31, родился человек, такая у него и вся жизнь 2024, Novembar
Anonim
Pametni zidni kalendar
Pametni zidni kalendar

Moja supruga i ja imali smo klasični papirni zidni kalendar na kome smo obeležavali važne datume. Također koristimo Google kalendar na svojim pametnim telefonima za obilježavanje događaja, pa je to značilo dvostruki rad. Odlučio sam izgraditi neku vrstu pametnog zidnog kalendara koji će prikazivati naše podsjetnike, događaje i neke druge podatke. S obzirom na to da okolo ležim po raznim starim elektroničkim dijelovima, cilj mi je bio ponovno ih upotrijebiti u što većem broju i izgraditi kalendar sa što manje troškova.

U ovom vodiču pokazat ću vam kako izgraditi pametni zidni kalendar s prikazom događaja s nekoliko Google računa. Također će prikazati vrijeme, datum, vrijeme, temperaturu i neke dodatne informacije. Pokretat će ga računar Raspberry Pi sa senzorom pokreta pasivnog infracrvenog senzora (PIR), tako da se ekran uključuje, kada se otkrije kretanje u prostoriji, ali se isključuje nakon nekoliko minuta neaktivnosti. Ovaj vodič zasnovan je na nekoliko drugih vodiča koje sam pronašao na internetu i dat ću veze do njih radi boljeg razumijevanja. Potrebno je neko osnovno znanje programiranja (HTML, Python, …).

Korak 1: Hardver

Kao što je već spomenuto, pokušao sam ponovno upotrijebiti što više starih elektroničkih dijelova kako bih smanjio troškove. Međutim neke stvari sam morao kupiti, pa ću navesti sve što je potrebno za izgradnju.

- Raspberry Pi komplet. U početku sam koristio svoj stari model 2 iz nekog drugog projekta. Uspjelo je, ali uređivanje i ponovno učitavanje web stranice oduzeli su mi puno vremena, pa sam na kraju prešao na model 3, koji radi tečnije https://www.ebay.com/sch/i.html?_from=R40&_trksid=m570.l1313 & _nkw = malina+pi+komplet & _sacat = 0

- LCD ekran. Koristio sam ekran sa svog starog laptopa, pa sam trebao kupiti samo LVDS upravljačku ploču za njega i napajanje https://www.ebay.com/sch/i.html?_from=R40&_trksid=m570.l1313&_nkw=hdmi+ driver+LVDS+board & _sacat = 0

-Plastična kutija za pohranu elektronike

- Pasivni infracrveni senzor pokreta

- Senzor temperature/vlažnosti AM2302

- Crno plastično klizno vezivo za LCD okvir

- Razni kabeli (HDMI, 5,5 mm za istosmjernu struju, prespojni kablovi za lemljenje, …)

Korak 2: Kreiranje LCD ekrana

Kreiranje LCD ekrana
Kreiranje LCD ekrana
Kreiranje LCD ekrana
Kreiranje LCD ekrana
Kreiranje LCD ekrana
Kreiranje LCD ekrana

Koristio sam LCD ekran sa svog starog zastarjelog laptopa. Postoji nekoliko vodiča o tome kako to učiniti, pratio sam ovaj:

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

Demontirao sam poklopac svog starog laptopa, izvadio LCD ekran i zatim naručio ispravnu LVDS upravljačku ploču. Prodavatelju sam dao šifru proizvoda koja se nalazi na stražnjoj strani LCD -a, u mom slučaju to je LP171WE3 (TL) (A2) - pogledajte donju desnu oznaku na zadnjoj slici, a zatim mi je poslao odgovarajući LVDS. Imajte na umu da će vam za prikaz trebati i napajanje, pa zamolite prodavača da vam ga pošalje. Također sam kupio lijepu plastičnu kutiju dimenzija 14,5 × 7,5 × 2 cm koja lijepo pristaje na upravljačku ploču i pričvršćuje je na stražnju stranu LCD -a.

Sada LCD ekran ima metalni okvir, koji ne izgleda lijepo. U početku sam ga farbao u crno, ali se boja počela ljuštiti. Tako sam uzeo četiri crna plastična klizna veziva, koja se obično koriste za uvezivanje listova papira, obrezao ih u skladu s tim i pričvrstio ih da prekriju okvir. Ovo je izgledalo dobro, pa sam spojio sve kabele, priključio HDMI na stare Raspberry Pi i Voila - uspjelo je! Na ekranu se prikazala slika pa sam bio spreman da pređem na sljedeći korak - koje informacije prikazati na ekranu i kako ih prikazati.

Korak 3: Postavljanje softvera

Kad sam preko interneta tražio neke tragove o tome kako napraviti kalendar, inspirirala me ova stranica https://dakboard.com/site. Oni pružaju gotov proizvod (ekran, računar i radni softver), ali imaju i odličan vodič za DIY rješenje (https://blog.dakboard.com/diy-wall-display/). Preporučujem vam da slijedite ovaj vodič, barem u prvom dijelu s uputama o pripremi i postavljanju sistema na Raspberryju, tako da preglednik automatski učitava željenu web stranicu pri pokretanju.

Ovo je dobro funkcioniralo, međutim tražio sam neko rješenje koje bi se moglo više prilagoditi mojim željama. Odlučio sam postaviti vlastiti web poslužitelj i stvoriti web stranicu koja će osim kalendara prikazivati dodatne informacije. Odabrao sam Wordpress.org jer je dobro dokumentiran i ima dobru podršku i veliku zajednicu koja vam može pomoći. Evo vodiča o tome kako instalirati Wordpress na Raspberry Pi: https://projects.raspberrypi.org/en/projects/lamp-web-server-with-wordpress. Sa instaliranim Wordpress -om, došlo je vrijeme za dizajn moje početne stranice. Možete koristiti jednu od mnogih ponuđenih tema ili dizajnirati od nule. U svakom slučaju, za to je potrebno neko znanje programiranja HTML -a.

Dizajnirao sam svoju stranicu tako da se s lijeve strane prikazuje kalendar (https://sl.wordpress.org/plugins/google-calendar-events/), dok se s desne strane prikazuju vrijeme i datum (https://www.timeanddate.com/clocks/free.html i https://www.arclab.com/en/kb/htmlcss/display-date-time-javascript-php-ssi.html). Vremenska prognoza je sa ove stranice (https://www.1a-vreme.si/vremensko-okno/), koja pruža widget za prognozu za slovenske gradove, ali pretpostavljam da se widgeti za druge zemlje mogu naći i na internetu. Temperatura se prikuplja pomoću senzora AM2302 (https://www.ebay.com/sch/i.html?_from=R40&_trksid=m570.l1313&_nkw=AM2302+&_sacat=0), kako je objašnjeno na kraju ovog poglavlja. Na dnu je jednostavan tajmer za dnevno odbrojavanje koji prikazuje koliko je dana ostalo do nekog događaja (zanimljivo je da moja djeca znaju, koliko će dana morati čekati na nešto). U gornjem desnom rubu je dodatak MetaSlider (https://wordpress.org/plugins/ml-slider/), koji nasumično klizi prema odabranim slikama moje porodice. Osim toga, koristio sam dodatak Background Slider (https://sl.wordpress.org/plugins/background-slider-master/) da mi pokaže neku nasumičnu sliku za ljepšu pozadinu.

Kao što je već spomenuto, sobna temperatura se prikuplja pomoću senzora AM2302. Postoji mnogo vodiča o tome kako postići temperaturu, a slijedio sam ovaj: https://www.modmypi.com/blog/am2302-temphumidity-sensor. Kasnije sam ovaj senzor premjestio na drugi Raspberry Pi s kućnim pomoćnikom na njemu, jer je lakše čitati i objavljivati vrijednosti pomoću komponente DHT senzora (https://www.home-assistant.io/components/sensor.dht/). Kućni pomoćnik može prikupljati i vanjsku temperaturu pomoću različitih vremenskih komponenti, koristio sam komponentu YR.no (https://www.home-assistant.io/components/sensor.yr/). S tim sam napisao skriptu za automatizaciju kako bih sakupio unutarnju/vanjsku temperaturu od ovih komponenti i zapisao ih u tekstualnu datoteku, koja se zatim prikazuje na mom zidnom kalendaru. Više informacija o kućnom pomoćniku potražite na početnoj stranici (https://www.home-assistant.io/).

Korak 4: Opcionalno - isključivanje ekrana

Sada smo naš kalendar postavili i radi, baš onako kako nam se sviđa. Ali ne želimo da se zaslon uključi 24 sata dnevno. Mi to želimo samo kad je neko kod kuće. Takođe ne želimo da se uključi usred noći, kada idemo u toalet, presvijetlo je! Zato ćemo priključiti infracrveni senzor da primijeti, kada neko stoji ispred njega, i dodati neka vremenska ograničenja, kada bi se trebao uključiti.

Imajte na umu da su moje vještine programiranja prilično ograničene, pa sljedeće ne može biti optimalno, budući da sam ga odabrao s raznih internetskih foruma i vodiča, ali u osnovi funkcionira. Ipak, svaka preporuka je i dalje dobrodošla. Prvo ćemo početi s testom za ručno uključivanje/isključivanje monitora. Za to ćemo stvoriti dvije datoteke (na primjer monitor_on.sh i monitor_off.sh) i u nju upisati neki kôd. Najlakši način za to je da se prijavite na svoj Raspberry koristeći SSH i upišete

sudo nano monitor_on.sh

i upišite sljedeći kôd

tvservice --preferred;

startx/usr/bin/graphical_launcher `fgconsole`

Pritisnite CTRL+X za spremanje i izlaz, a zatim kreirajte drugu datoteku

sudo nano monitor_off.sh

i upišite sljedeći kôd

tvservice -off;

Ponovo pritisnite CTRL+X za spremanje i izlaz. Učinite ove novostvorene datoteke izvršnim:

sudo chmod +x monitor_on.sh

sudo chmod +x monitor_off.sh

Sada da biste pokušali funkcioniraju li ove naredbe, upišite

sudo./monitor_off.sh

sudo./monitor_on.sh

Monitor bi se sada trebao isključiti i uključiti u skladu s tim. Primijetio sam da je na Raspberry Pi 2 bilo potrebno gotovo 10 sekundi da se monitor uključi. Na Raspberry Pi 3 potrebno je 1-2 sekunde. Zatim ćemo spojiti infracrveni senzor koji će pokrenuti ove skripte. Opet, postoji mnogo vodiča kako postaviti Raspberry Pi i PIR, slijedio sam ovaj: https://www.instructables.com/id/PIR-Sensor-Interfacing-With-Raspberry-Pi/. U osnovi, stvorite datoteku pomoću nano uređivača (na primjer motion_sensor.py) i unesite odgovarajući Python kod u nju. Ispod je primjer moje datoteke:

uvoz RPi. GPIO kao GPIOimport vremenaimport podimprocesimprosimportacije uvoz vremena kao dtimport osGPIO.setwarnings (Netačno) # GPIO.setmode (GPIO. BOARD) GPIO.setmode (GPIO. BCM) GPIO.setup (17, GPIO. IN) #PIRturned_off = Falselast_motion time.time () SHUTOFF_DELAY = 180 # sekundi SHUTOFF_DELAY): ispisuje "Nema uljeza", iturned_off = Truetime.sleep (1) podproces.call (['/home/pi/monitor_off.sh'], ljuska = Tačno) elif i == 1: #Prilikom izlaza sa senzora pokreta je VISOKO, uključite monitor ispis "Otkriven uljez", itime.sleep (1) last_motion_time = time.time () sys.stdout.flush () ako je isključeno i dt.datetime.now (). sat> 5 i dt.datetime. now (). hour <23: turn_off = Falsesubprocess.call (['/home/pi/monitor_on.sh'], shell = True) if _name_ == '_main _': try: main () osim KeyboardInterrupt: GPIO.cleanup ()

Imajte na umu da „GPIO.setup (17, GPIO. IN)“označava da je izlazni pin iz PIR -a spojen na pin 17 na Raspberry Pi -u. Koji pin je to ovisi da li definirate GPIO.setmode (GPIO. BOARD) ili GPIO.setmode (GPIO. BCM). Razlika je objašnjena ovdje: https://raspberrypi.stackexchange.com/questions/12966/what-is-the-difference-between-board-and-bcm-for-gpio-pin-numbering. Imam # ispred GPIO. BOARD -a, pa se zanemaruje i koristi se GPIO. BCM.

Obratite pažnju na liniju

SHUTOFF_DELAY = 180 #sekundi

Ovdje je navedeno koliko dugo je monitor uključen od otkrivanja zadnjeg pokreta, prije nego se isključi. Ovo je korisno jer ne želim da se monitor stalno isključuje/uključuje dok prolazim pored njega, već želim da ostane uključeno neko vrijeme, prije nego što se isključi. Odabrao sam interval od 180 sekundi, tako da se monitor isključuje otprilike 3 minute nakon otkrivanja zadnjeg pokreta.

Konačno, ova linija

ako je isključeno i dt.datetime.now (). sat> 6 i dt.datetime.now (). sat <23:

navodi da se monitor uključuje samo između 6:00 i 23:00, tako da me ne ometa tokom noći. Linije

ispisati "Bez uljeza", i

i

ispis "Otkriven uljez", i

služe samo za testiranje skripte, možete ih izbrisati kasnije, kad budete radili. Sada isprobajte skriptu:

sudo python motion_sensor.py

Trebali biste vidjeti poruku “Uljez je otkriven”, ako mašete iznad senzora, u suprotnom će biti “Bez uljeza”. Kad se ova skripta testira i radi, postavite je da započne pri pokretanju:

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

i dodajte sljedeći red

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

Naravno, morate navesti ispravan naziv datoteke Python skripte koju ste kreirali.

Korak 5: Objesite kalendar

Kad je sve postavljeno, vrijeme je da objesite kalendar na zid!

U početku sam razmišljao o tome da sakrijem Raspberry Pi iza LCD ekrana, tako da će biti potreban samo jedan kabel (DC napajanje). Ali budući da Raspberry radi na 5V, a LCD ekran na 12V, trebao bi mi dodatni transformator. Također, kućište Raspberry je prilično debelo, što znači da bi LCD bio udaljen oko 3 centimetra od zida. Zato sam ovo napustio i ostavio samo LCD elektroniku iza LCD -a, tako da je sada udaljena manje od 1 centimetra od zida. Nabavio sam dva kabla dugačka 5 metara, jedan HDMI i jedan 5, 5 mm za napajanje istosmjernom strujom. Oba kabela su bijela, poput zida, što znači da se ne ističu mnogo. Postavio sam LCD na zid i stavio Raspberry na vrh frižidera na suprotnom zidu, tako da je u osnovi skriven, ali ipak lako dostupan.

Preporučuje se: