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, Srpanj
Anonim
Pametni zidni kalendar
Pametni zidni kalendar

Moja supruga i ja imali smo klasični zidni kalendar od papira, na kojem smo obilježavali važne datume. Također koristimo Google kalendar na svojim pametnim telefonima za označavanje događaja, pa je to značilo dvostruki rad. Stoga sam odlučio izgraditi neku vrstu pametnog zidnog kalendara koji će prikazivati naše podsjetnike, događaje i neke druge podatke. Budući da u blizini leže razni stari elektronički dijelovi, cilj mi je bio ponovno ih upotrijebiti u što većem broju i izgraditi kalendar uz što manje troškove.

U ovom ću vam vodiču pokazati 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čunalo Raspberry Pi sa priključenim senzorom pokreta pasivnog infracrvenog senzora (PIR), tako da se zaslon uključuje, kada se detektira kretanje u prostoriji, ali se isključuje nakon nekoliko minuta neaktivnosti. Ovaj vodič temelji se na nekoliko drugih vodiča koje sam pronašao na internetu i dat ću veze do njih radi boljeg razumijevanja. Potrebno je osnovno znanje programiranja (HTML, Python, …).

Korak 1: Hardver

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

- Set za Raspberry Pi. 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+kit & _sacat = 0

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

-Plastična kutija za pohranu elektronike

- Pasivni infracrveni senzor pokreta

- Senzor temperature/vlage AM2302

- Crno plastično klizno vezivo za LCD okvir

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

Korak 2: Stvaranje LCD zaslona

Izrada LCD zaslona
Izrada LCD zaslona
Izrada LCD zaslona
Izrada LCD zaslona
Izrada LCD zaslona
Izrada LCD zaslona

Koristio sam LCD zaslon sa svog starog zastarjelog prijenosnog računala. Postoji nekoliko uputstava o tome kako to učiniti, slijedio sam ovaj:

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

Demontirao sam poklopac svog starog prijenosnog računala, izvadio LCD zaslon, a 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 prodavatelja da 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 zaslon ima metalni okvir, koji ne izgleda lijepo. U početku sam ga lakirao sprejom u crno, ali boja se počela ljuštiti. Stoga sam uzeo četiri crna plastična klizna veziva, koja se obično koriste za uvezivanje listova papira, prema potrebi ih obrezao i pričvrstio da prekriju okvir. Ovo je izgledalo dobro pa sam spojio sve kabele, priključio HDMI na stare Raspberry Pi i Voila - uspjelo je! Na zaslonu se prikazala slika pa sam bio spreman prijeći na sljedeći korak - koje podatke prikazati na zaslonu i kako ih prikazati.

Korak 3: Postavljanje softvera

Kad sam putem interneta tražio neke tragove o tome kako izgraditi kalendar, inspirirala me ova stranica https://dakboard.com/site. Oni pružaju gotov proizvod (zaslon, računalo i radni softver), ali imaju i izvrstan vodič za DIY rješenje (https://blog.dakboard.com/diy-wall-display/). Preporučujem da slijedite ovaj vodič, barem za prvi dio s uputama o pripremi i postavljanju sustava 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. S instaliranim Wordpressom 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 nudi widget za prognozu za slovenske gradove, ali pretpostavljam da bi se widgeti za druge zemlje mogli 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 dnevni mjerač vremena, 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 obitelji. Osim toga, upotrijebio sam dodatak Background Slider (https://sl.wordpress.org/plugins/background-slider-master/) da mi pokaže neku slučajnu sliku za ljepšu pozadinu.

Kao što je već spomenuto, unutarnja temperatura se prikuplja pomoću senzora AM2302. Postoje mnogi vodiči o tome kako postići temperaturu, slijedio sam ovaj: https://www.modmypi.com/blog/am2302-temphumidity-sensor. Kasnije sam ovaj senzor premjestio na drugi Raspberry Pi na kojem radi Home Assistant, jer je lakše čitati i objavljivati vrijednosti pomoću komponente DHT Sensor (https://www.home-assistant.io/components/sensor.dht/). Kućni pomoćnik također može prikupljati vanjsku temperaturu pomoću različitih vremenskih komponenti, koristio sam komponentu YR.no (https://www.home-assistant.io/components/sensor.yr/). Time 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: Izborno - isključivanje zaslona

Sada imamo kalendar postavljen 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 netko kod kuće. Također ne želimo da se uključi usred noći, kad idemo u WC, presvijetlo je! Zato ćemo priključiti infracrveni senzor da primijeti, kada netko 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 biti radi. 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 da to učinite je da se prijavite na svoj Raspberry pomoću SSH -a i upišete

sudo nano monitor_on.sh

i upišite sljedeći kôd

tvservice -preferirano;

startx/usr/bin/graphical_launcher `fgconsole`

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

sudo nano monitor_off.sh

i upišite sljedeći kôd

tvservice -isključeno;

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

sudo chmod +x monitor_on.sh

sudo chmod +x monitor_off.sh

Da biste isprobali funkcioniraju li ove naredbe, upišite

sudo./monitor_off.sh

sudo./monitor_on.sh

Monitor bi se sada trebao isključiti i uključiti. 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, postoje mnogi vodiči 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 upišite odgovarajući Python kod u nju. Ispod je primjer moje datoteke:

uvoz RPi. GPIO kao GPIOimport timeimport sysimport podprocesimport datum i vrijeme kao dtimport osGPIO.setwarnings (False) # 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): ispis "Nema uljeza", iturned_off = Truetime.sleep (1) podproces.call (['/home/pi/monitor_off.sh'], ljuska = True) elif i == 1: #Kada izlaz iz senzora pokreta je VISOKO, uključite monitor ONprint "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. Koji pin je to ovisi hoćete li definirati 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.

Uočite 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 kad prolazim pored njega, ali želim ga držati uključenim 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 tijekom noći. Linije

ispisati "Bez uljeza", tj

i

ispis "Otkriven uljez", tj

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 protivnom će biti "Nema uljeza". Kad se ova skripta testira i radi, postavite je za početak pri pokretanju:

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

i dodajte sljedeći redak

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

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

Korak 5: Objesite kalendar

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

U početku sam razmišljao sakriti Raspberry Pi iza LCD zaslona, tako da će biti potreban samo jedan kabel (DC napajanje). No, budući da Raspberry radi na 5V, a LCD zaslon na 12V, trebat će mi dodatni transformator. Također, Raspberry kućište je prilično debelo, što znači da bi LCD bio udaljen oko 3 centimetra od zida. Zato sam napustio ovo i ostavio samo LCD elektroniku iza LCD -a, tako da je sada udaljena manje od 1 centimetra od zida. Nabavio sam dva kabela dugačka 5 metara, jedan HDMI i jedan 5, 5 mm za istosmjerno napajanje. 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 hladnjaka na suprotnom zidu, tako da je u osnovi skriven, ali ipak lako dostupan.

Preporučeni: