Sisukord:

Nutikas seinakalender: 5 sammu
Nutikas seinakalender: 5 sammu

Video: Nutikas seinakalender: 5 sammu

Video: Nutikas seinakalender: 5 sammu
Video: 5 sammu korras rahaasjadeni, neljas osa "Pikk‌ ‌planeerimine‌" 2024, November
Anonim
Nutikas seinakalender
Nutikas seinakalender

Mu naisega ja mul oli varem klassikaline paberist seinakalender, millele märkisime olulised kuupäevad. Kasutame sündmuste tähistamiseks ka nutitelefonides Google'i kalendrit, seega tähendas see topelt tööd. Seega otsustasin ehitada mingi nutika seinakalendri, mis kuvab meie meeldetuletusi, sündmusi ja mõningaid muid andmeid. Kuna mul lebavad mitmesugused vanad elektroonilised osad, oli minu eesmärk neid võimalikult palju taaskasutada ja koostada kalender võimalikult väikeste kuludega.

Selles õpetuses näitan teile, kuidas luua nutikat seinakalendrit, kuvades sündmusi mitmelt Google'i kontolt. Samuti kuvatakse kellaaeg, kuupäev, ilm, temperatuur ja lisateavet. Selle toiteallikaks on Raspberry Pi arvuti, millele on kinnitatud passiivse infrapunaanduri (PIR) liikumisandur, nii et ekraan lülitub ruumis liikumise tuvastamisel sisse, kuid lülitub välja pärast mõne minuti tegevusetust. See õpetus põhineb mitmel muul õpetusel, mille leidsin Internetist, ja annan neile lingid paremaks mõistmiseks. Vaja on programmeerimise põhiteadmisi (HTML, Python jne).

Samm: riistvara

Nagu varem mainitud, proovisin kulusid madalal hoida, et kasutada nii palju vanu elektroonilisi osi. Kuid mõned esemed pidin ostma, seega loetlen kõik ehitamiseks vajaliku.

- Vaarika Pi komplekt. Esialgu kasutasin oma vana mudelit 2 mõnest teisest projektist. See töötas, kuid veebilehe redigeerimine ja uuesti laadimine võttis mul palju aega, nii et lõpuks läksin üle mudelile 3, mis töötab ladusamalt https://www.ebay.com/sch/i.html?_from=R40&_trksid=m570.l1313 & _nkw = vaarikas+pi+komplekt & _sacat = 0

- LCD ekraan. Kasutasin ekraani oma vanast sülearvutist, nii et mul oli vaja selle jaoks osta ainult LVDS draiveriplaat ja toide https://www.ebay.com/sch/i.html?_from=R40&_trksid=m570.l1313&_nkw=hdmi+ draiver+LVDS+plaat & _sacat = 0

-Plastikust hoiukarp elektroonika jaoks

- Passiivne infrapuna liikumisandur

- temperatuuri/niiskuse andur AM2302

- Must plastikust libistatav sideaine LCD-raami jaoks

- Erinevad kaablid (HDMI, 5,5 mm alalisvoolu jaoks, jooteta leivaplaadi hüppajakaablid jne)

2. samm: LCD -ekraani loomine

LCD -ekraani loomine
LCD -ekraani loomine
LCD -ekraani loomine
LCD -ekraani loomine
LCD -ekraani loomine
LCD -ekraani loomine

Kasutasin oma vananenud sülearvuti LCD -ekraani. Selle tegemiseks on mitu õpetust, ma järgisin seda:

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

Demonteerisin oma vana sülearvuti kaane, võtsin välja LCD -ekraani ja tellisin seejärel õige LVDS -draiveriplaadi. Esitasin müüjale tootekoodi, mille leiate LCD -ekraani tagaküljelt, minu puhul on see LP171WE3 (TL) (A2) - vaadake viimast pilti paremas alanurgas ja siis saatis ta mulle vastava LVDS -i. Pange tähele, et vajate ka ekraani toiteallikat, nii et paluge ka müüjal see saata. Ostsin ka kena 14,5 × 7,5 × 2 cm plastkarbi, mis sobiks ilusti juhtplaadile ja kinnitaks selle LCD -ekraani tagaküljele.

Nüüd on LCD -ekraanil metallist raam, mis ei näe ilus välja. Esialgu pihustasin selle mustaks, kuid värv hakkas maha kooruma. Nii võtsin neli musta plastikust libistatavat köitematerjali, mida tavaliselt kasutatakse paberilehtede sidumiseks, kärpisin need vastavalt ja kinnitasin raami katmiseks. See tundus hea, nii et ühendasin kõik kaablid, ühendasin HDMI oma vana Raspberry Pi ja Voilaga - see töötas! Ekraanil oli pilt, nii et olin valmis järgmise sammu juurde liikuma - millist teavet ekraanil kuvada ja kuidas seda näidata.

3. samm: tarkvara seadistamine

Kui otsisin Internetist vihjeid kalendri koostamiseks, sain inspiratsiooni sellest lehest https://dakboard.com/site. Nad pakuvad valmistoodet (kuvar, arvuti ja töötav tarkvara), kuid neil on ka suurepärane õpetus isetegemise lahenduse jaoks (https://blog.dakboard.com/diy-wall-display/). Soovitan teil seda õpetust järgida, vähemalt esimeses osas koos juhistega süsteemi ettevalmistamiseks ja seadistamiseks Vaarikas, nii et brauser laadib soovitud veebilehe automaatselt alglaadimisel.

See toimis kenasti, kuid otsisin mingit lahendust, mida saaks vastavalt minu soovidele paremini kohandada. Olen otsustanud luua oma veebiserveri ja luua veebilehe, mis kuvab lisaks kalendrile ka lisateavet. Olen valinud Wordpress.org, kuna see on hästi dokumenteeritud ning sellel on hea tugi ja suur kogukond, mis teid aitab. Siit leiate õpetuse Wordpressi installimiseks Raspberry Pi-le: https://projects.raspberrypi.org/en/projects/lamp-web-server-with-wordpress. Kui Wordpress oli installitud, oli aeg kujundada oma koduleht. Võite kasutada ühte paljudest pakutud teemadest või kujundada nullist. Igatahes on selleks vaja mõningaid HTML -i programmeerimise teadmisi.

Olen kujundanud oma lehe nii, et vasakul küljel kuvatakse kalender (https://sl.wordpress.org/plugins/google-calendar-events/), paremal aga kellaaeg ja kuupäev (https://www.timeanddate.com/clocks/free.html ja https://www.arclab.com/en/kb/htmlcss/display-date-time-javascript-php-ssi.html). Ilmateade pärineb siit lehelt (https://www.1a-vreme.si/vremensko-okno/), mis pakub Sloveenia linnade prognooside vidinaid, kuid arvan, et teiste riikide vidinaid võib leida ka Internetist. Temperatuuri kogumiseks kasutatakse AM2302 andurit (https://www.ebay.com/sch/i.html?_from=R40&_trksid=m570.l1313&_nkw=AM2302+&_sacat=0), nagu on selgitatud käesoleva peatüki lõpus. Altpoolt on lihtne igapäevane loendur, mis näitab, mitu päeva on mõne ürituseni jäänud (minu lastele on huvitav teada, mitu päeva peavad nad midagi ootama). Ülemises paremas servas on MetaSlideri pistikprogramm (https://wordpress.org/plugins/ml-slider/), mis libiseb juhuslikult minu pere valitud piltidele. Lisaks olen kasutanud tausta liuguri pistikprogrammi (https://sl.wordpress.org/plugins/background-slider-master/), et näidata mulle juhusliku pildi saamiseks ilusamat tausta.

Nagu varem mainitud, kogutakse sisetemperatuuri anduri AM2302 abil. Temperatuuri saamiseks on palju õpetusi, ma järgisin seda: https://www.modmypi.com/blog/am2302-temphumidity-sensor. Hiljem teisaldasin selle anduri teisele Raspberry Pi-le, kus töötab Home Assistant, sest selle DHT-sensori komponendi abil on väärtusi lihtsam lugeda ja avaldada (https://www.home-assistant.io/components/sensor.dht/). Home Assistant saab koguda ka välistemperatuuri, kasutades erinevaid ilmastikukomponente, mina kasutasin YR.no komponenti (https://www.home-assistant.io/components/sensor.yr/). Sellega kirjutasin automaatika skripti, et koguda nendest komponentidest sise- ja välistemperatuur ning kirjutada need tekstifaili, mis seejärel kuvatakse minu seinakalendris. Koduabilise kohta lisateabe saamiseks vaadake kodulehte (https://www.home-assistant.io/).

4. samm: valikuline - ekraani väljalülitamine

Nüüd on meil kalender seadistatud ja käivitatud just nii, nagu meile meeldib. Kuid me ei taha, et ekraan oleks ööpäevaringselt sisse lülitatud. Me tahame, et see lülituks sisse ainult siis, kui keegi on kodus. Samuti ei taha me, et see lülitataks sisse keset ööd, kui me tualetti läheme, on see liiga hele! Seega kinnitame infrapunaanduri, et märgata, kui keegi seisab selle ees, ja lisame teatud ajapiirangud, millal see peaks sisse lülituma.

Pange tähele, et minu programmeerimisoskus on üsna piiratud, nii et järgnev ei saa olla optimaalne, kuna olen selle valinud erinevatest veebifoorumitest ja õpetustest, kuid sisuliselt see toimib. Igasugune soovitus on siiski teretulnud. Kõigepealt alustame testist monitori käsitsi sisse- ja väljalülitamiseks. Selleks loome kaks faili (näiteks monitor_on.sh ja monitor_off.sh) ja kirjutame sinna koodi. Lihtsaim viis selleks on SSL -i abil sisestada oma Raspberry ja logida sisse

sudo nano monitor_on.sh

ja tippige järgmine kood

tv -teenus -eelistatud;

startx/usr/bin/graphical_launcher `fgconsole`

Salvestamiseks ja väljumiseks vajutage CTRL+X, seejärel looge teine fail

sudo nano monitor_off.sh

ja tippige järgmine kood

tv -teenus -välja lülitatud;

Salvestamiseks ja väljumiseks vajutage uuesti CTRL+X. Tehke need äsja loodud failid käivitatavaks:

sudo chmod +x monitor_on.sh

sudo chmod +x monitor_off.sh

Nüüd proovige, kas need käsud töötavad, tippige

sudo./monitor_off.sh

sudo./monitor_on.sh

Nüüd peaks monitor vastavalt välja ja sisse lülituma. Olen märganud, et Raspberry Pi 2 -l kulus monitori sisselülitamiseks peaaegu 10 sekundit. Raspberry Pi 3-l kulub 1-2 sekundit. Järgmisena ühendame infrapunaanduri, mis käivitab need skriptid. Jällegi on palju õpetusi Raspberry Pi ja PIR seadistamiseks, ma järgisin seda: https://www.instructables.com/id/PIR-Sensor-Interfacing-With-Raspberry-Pi/. Põhimõtteliselt looge fail nanoredaktori abil (näiteks motion_sensor.py) ja tippige sinna sobiv Pythoni kood. Allpool on minu faili näide:

RPi. GPIO importimine GPIO -ks impordi aegimport sysimporti alamprotsessiimporteeri kuupäeva kui dtimport osGPIO.setwarnings (vale) # GPIO.setmode (GPIO. BOARD) GPIO.setmode (GPIO. BCM) GPIO.setup (17, GPIO. IN) #PIRturned_off = False time.time () SHUTOFF_DELAY = 180 # secondswhile Tõsi: i = GPIO.input (17), kui i == 0: # Kui liikumisanduri väljund on LOW, lülitage monitor välja, kui ei ole välja lülitatud ja time.time ()> (last_motion_time + SHUTOFF_DELAY): printige "Ei sissetungijaid", iturned_off = Truetime.sleep (1) alamprotsess. Call (['/home/pi/monitor_off.sh'], shell = True) elif i == 1: #Kui liikumisandurilt väljastatakse on HIGH, lülitage monitor ONprint "Sissetungija tuvastatud", itime.sleep (1) last_motion_time = time.time () sys.stdout.flush () kui turn_off ja dt.datetime.now (). tund> 5 ja dt.datetime. now (). tund <23: Turn_off = Falsesubprocess.call (['/home/pi/monitor_on.sh'], shell = True) kui _name_ == '_main _': try: main () välja arvatud KeyboardInterrupt: GPIO.cleanup ()

Pange tähele, et „GPIO.setup (17, GPIO. IN)“näitab, et PIR -i väljundnõel on ühendatud Raspberry Pi pistikuga 17. Milline tihvt see on, sõltub sellest, kas määratlete GPIO.setmode (GPIO. BOARD) või GPIO.setmode (GPIO. BCM). Erinevust selgitatakse siin: https://raspberrypi.stackexchange.com/questions/12966/what-is-the-difference-between-board-and-bcm-for-gpio-pin-numbering. Mul on GPIO. BOARD ees #, nii et seda eiratakse ja kasutatakse GPIO. BCM -i.

Pange tähele joont

SHUTOFF_DELAY = 180 #sekundit

Siin on öeldud, kui kaua on monitor pärast viimase liikumise tuvastamist sisse lülitatud, enne kui see välja lülitatakse. See on kasulik, sest ma ei taha, et monitor minust mööda kõndides pidevalt välja/välja lülituks, kuid soovin, et see oleks mõnda aega enne väljalülitamist sisse lülitatud. Olen valinud intervalli 180 sekundit, nii et monitor lülitub välja umbes 3 minutit pärast viimase liikumise tuvastamist.

Lõpuks see rida

kui lülitatud_ välja ja dt.datetime.now (). tund> 6 ja dt.datetime.now (). tund <23:

teatab, et monitor lülitub sisse ainult kella 6.00–23.00, seega ei häiri see mind öösel. Liinid

trükk "Ei mingeid sissetungijaid", st

ja

print "Sissetungija tuvastatud", st

on mõeldud ainult skripti testimiseks, saate need hiljem kustutada, kui see töötab. Nüüd testige skripti:

sudo python motion_sensor.py

Kui lehvitate anduri kohal, peaksite nägema sõnumeid „Sissetungija tuvastatud”, vastasel juhul kuvatakse teade „Sissetungijaid pole”. Kui seda skripti testitakse ja see töötab, määrake see käivitamiseks alglaadimisel:

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

ja lisage järgmine rida

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

Loomulikult peate määrama loodud Pythoni skripti õige failinime.

Samm: riputage kalender üles

Kui kõik on valmis, on aeg kalender seinale riputada!

Algselt mõtlesin Raspberry Pi peita LCD -ekraani taha, et oleks vaja ainult ühte kaablit (alalisvoolu toide). Aga kuna Vaarikas töötab 5V ja LCD -ekraan 12V, oleks mul vaja lisatrafot. Samuti on Raspberry ümbris üsna paks, mis tähendab, et LCD oleks seinast umbes 3 sentimeetri kaugusel. Nii et ma loobusin sellest ja jätsin LCD -elektroonika alles LCD -ekraani taha, nii et see on nüüd seinast vähem kui 1 sentimeetri kaugusel. Ostsin kaks 5 meetri pikkust kaablit, ühe HDMI ja ühe 5,5 mm alalisvoolu toiteallika. Mõlemad kaablid on valged nagu sein, mis tähendab, et need ei paista eriti silma. Paigaldasin LCD -ekraani seinale ja panin vaarika külmkapi peale vastasseinale, nii et see on põhimõtteliselt peidetud, kuid siiski kergesti ligipääsetav.

Soovitan: