Sisällysluettelo:

Älykäs seinäkalenteri: 5 vaihetta
Älykäs seinäkalenteri: 5 vaihetta

Video: Älykäs seinäkalenteri: 5 vaihetta

Video: Älykäs seinäkalenteri: 5 vaihetta
Video: 82 - Miten suunnitella viikko - 5 yksinkertaista vaihetta 2024, Heinäkuu
Anonim
Älykäs seinäkalenteri
Älykäs seinäkalenteri

Vaimollani ja minulla oli perinteinen paperinen seinäkalenteri, jolle merkitsimme tärkeät päivämäärät. Käytämme myös Google -kalenteria älypuhelimissamme tapahtumien merkitsemiseen, joten tämä tarkoitti kaksinkertaista työtä. Joten päätin rakentaa jonkinlaisen älykkään seinäkalenterin, joka näyttää muistutuksemme, tapahtumamme ja muut tiedot. Koska minulla on erilaisia vanhoja elektronisia osia, tavoitteeni oli käyttää niitä uudelleen mahdollisimman paljon ja rakentaa kalenteri mahdollisimman pienin kustannuksin.

Tässä opetusohjelmassa näytän sinulle, kuinka rakentaa älykäs seinäkalenteri näyttämällä tapahtumia useilta Google -tileiltä. Se näyttää myös ajan, päivämäärän, sään, lämpötilan ja joitain lisätietoja. Sen virtalähteenä toimii Raspberry Pi -tietokone, johon on liitetty passiivinen infrapuna -anturi (PIR) -liiketunnistin, joten näyttö syttyy, kun huoneessa havaitaan liike, mutta sammuu muutaman minuutin käyttämättömyyden jälkeen. Tämä opetusohjelma perustuu useisiin muihin opetusohjelmiin, jotka löysin Internetistä, ja annan linkit niihin ymmärtääksesi paremmin. Ohjelmoinnin perustiedot tarvitaan (HTML, Python,…).

Vaihe 1: Laitteisto

Kuten aiemmin mainitsin, yritin käyttää uudelleen mahdollisimman monia vanhoja elektronisia osia pitämään kustannukset alhaisina. Jotkut kohteet jouduin kuitenkin ostamaan, joten luetellaan kaikki rakentamiseen tarvittava.

- Raspberry Pi -sarja. Aluksi käytin vanhaa malliani 2 jostain muusta projektista. Se toimi, mutta verkkosivujen muokkaaminen ja lataaminen veivät paljon aikaa, joten vaihdoin lopulta malliin 3, joka toimii sujuvammin https://www.ebay.com/sch/i.html?_from=R40&_trksid=m570.l1313 & _nkw = vadelma+pi+pakkaus & _sacat = 0

- LCD-näyttö. Käytin näyttöä vanhalta kannettavalta tietokoneeltani, joten minun piti vain ostaa sille LVDS -ohjainkortti ja virtalähde https://www.ebay.com/sch/i.html?_from=R40&_trksid=m570.l1313&_nkw=hdmi+ ajuri+LVDS+-levy & _sacat = 0

-Muovinen säilytyslaatikko elektroniikalle

- Passiivinen infrapuna -liiketunnistin

- AM2302 lämpötila-/kosteusanturi

- Musta muovinen liukuva sideaine LCD-kehykseen

- Erilaisia kaapeleita (HDMI, 5,5 mm tasavirtaa varten, juottamattomat leipälevyn hyppykaapelit, …)

Vaihe 2: LCD -näytön luominen

LCD -näytön luominen
LCD -näytön luominen
LCD -näytön luominen
LCD -näytön luominen
LCD -näytön luominen
LCD -näytön luominen

Käytin LCD -näyttöä vanhasta vanhentuneesta kannettavastani. On olemassa useita opetusohjelmia tämän tekemiseksi, seurasin tätä:

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

Irrotin vanhan kannettavan tietokoneen kannen, otin LCD -näytön ja tilasin sitten oikean LVDS -ohjainkortin. Annoin myyjälle tuotekoodi, joka löytyi nestekidenäytön takapuolelta, minun tapauksessani se on LP171WE3 (TL) (A2) - katso oikea kuva alhaalla viimeisessä kuvassa, ja sitten hän lähetti minulle sopivan LVDS: n. Huomaa, että tarvitset myös näytön virtalähteen, joten pyydä myyjää lähettämään se myös. Ostin myös mukavan 14,5 × 7,5 × 2 cm: n muovilaatikon, joka sopi hyvin ohjainkorttiin ja kiinnitti sen LCD -näytön takaosaan.

Nyt LCD -näytössä on metallinen kehys, joka ei näytä kauniilta. Aluksi ruiskutin maalaamalla sen mustaksi, mutta maali alkoi irrota. Joten otin neljä mustaa muovista sidottavaa sideainetta, joita tyypillisesti käytetään paperiarkkien sitomiseen, leikkasin ne vastaavasti ja kiinnitin ne peittämään kehyksen. Tämä näytti hyvältä, joten liitin kaikki kaapelit ja HDMI -liitännän vanhaan Raspberry Pi: hen ja Voilaan - se toimi! Näytöllä oli kuva, joten olin valmis siirtymään seuraavaan vaiheeseen - mitä tietoja näytöllä näytetään ja miten ne näytetään.

Vaihe 3: Ohjelmiston asentaminen

Kun etsin Internetistä vihjeitä kalenterin rakentamisesta, inspiroiduin tästä sivusta https://dakboard.com/site. Ne tarjoavat lopputuotteen (näyttö, tietokone ja toimiva ohjelmisto), mutta niillä on myös erinomainen opetusohjelma DIY-ratkaisulle (https://blog.dakboard.com/diy-wall-display/). Suosittelen, että noudatat tätä opetusohjelmaa, ainakin ensimmäisessä osassa, jossa on ohjeet Raspberry-järjestelmän valmisteluun ja käyttöönottoon, jotta selain lataa halutun verkkosivun automaattisesti käynnistyksen yhteydessä.

Tämä toimi hienosti, mutta etsin ratkaisua, joka voitaisiin räätälöidä toiveitteni mukaan. Olen päättänyt perustaa oman verkkopalvelimen ja luoda verkkosivun, joka näyttää kalenterin lisäksi lisätietoja. Olen valinnut Wordpress.orgin, koska se on hyvin dokumentoitu ja sillä on hyvä tuki ja suuri yhteisö auttamaan sinua. Tässä on opetusohjelma Wordpressin asentamisesta Raspberry Pi: hen: https://projects.raspberrypi.org/en/projects/lamp-web-server-with-wordpress. Kun Wordpress oli asennettu, oli aika suunnitella kotisivuni. Voit käyttää yhtä monista tarjotuista teemoista tai suunnitella alusta. Joka tapauksessa tähän tarvitaan jonkin verran HTML -ohjelmointitaitoa.

Olen suunnitellut sivuni niin, että vasemmalla puolella näkyy kalenteri (https://sl.wordpress.org/plugins/google-calendar-events/) ja oikealla puolella kellonaika ja päivämäärä (https://www.timeanddate.com/clocks/free.html ja https://www.arclab.com/en/kb/htmlcss/display-date-time-javascript-php-ssi.html). Sääennuste on tältä sivulta (https://www.1a-vreme.si/vremensko-okno/), joka tarjoaa ennuste-widgetin Slovenian kaupungeille, mutta luulen, että muiden maiden widgetit löytyisivät myös Internetistä. Lämpötila kerätään käyttämällä AM2302 -anturia (https://www.ebay.com/sch/i.html?_from=R40&_trksid=m570.l1313&_nkw=AM2302+&_sacat=0), kuten tämän luvun lopussa selitetään. Alareunassa on yksinkertainen päivittäinen ajastin, joka näyttää, kuinka monta päivää on jäljellä johonkin tapahtumaan (lapsilleni on mielenkiintoista tietää, kuinka monta päivää heidän on odotettava jotain). Oikeassa yläkulmassa on MetaSlider-laajennus (https://wordpress.org/plugins/ml-slider/), joka liukuu satunnaisesti perheeni valittuihin kuviin. Lisäksi olen käyttänyt Background Slider -laajennusta (https://sl.wordpress.org/plugins/background-slider-master/) näyttääkseni minulle satunnaisen kuvan paremman taustan saamiseksi.

Kuten aiemmin mainittiin, sisälämpötila kerätään AM2302 -anturilla. Lämpötilan saamiseksi on monia opetusohjelmia, seurasin tätä: https://www.modmypi.com/blog/am2302-temphumidity-sensor. Myöhemmin muutin tämän anturin toiseen Raspberry Pi -laitteeseen, jossa oli käytössä Home Assistant, koska arvojen lukeminen ja julkaiseminen on helpompaa sen DHT-anturikomponentin avulla (https://www.home-assistant.io/components/sensor.dht/). Home Assistant voi myös kerätä ulkolämpötilaa eri sääkomponenteilla, minä käytin YR.no-komponenttia (https://www.home-assistant.io/components/sensor.yr/). Kirjoitin sen avulla automaatiokomentosarjan, joka kerää sisä- ja ulkolämpötilan näistä komponenteista ja kirjoittaa ne tekstitiedostoon, joka näytetään seinäkalenterissani. Lisätietoja Home Assistantista on kotisivulla (https://www.home-assistant.io/).

Vaihe 4: Valinnainen - Näytön sammuttaminen

Nyt meillä on kalenteri valmiina ja käynnissä juuri haluamallamme tavalla. Mutta emme halua, että näyttö kytketään päälle 24/7. Haluamme sen olevan päällä vain, kun joku on kotona. Emme myöskään halua, että se kytketään päälle keskellä yötä, kun menemme wc: hen, se on liian kirkas! Joten kiinnitämme infrapuna -anturin havaitsemaan, kun joku seisoo sen edessä, ja lisäämme tiettyjä aikarajoja, jolloin sen pitäisi käynnistyä.

Huomaa, että ohjelmointitaitoni ovat melko rajalliset, joten seuraava ei voisi olla optimaalinen, koska olen valinnut sen erilaisilta online -foorumeilta ja opetusohjelmista, mutta pohjimmiltaan se toimii. Kaikki suositukset ovat kuitenkin edelleen tervetulleita. Ensin aloitamme testin näytön kytkemiseksi päälle/pois manuaalisesti. Tätä varten luomme kaksi tiedostoa (esimerkiksi monitor_on.sh ja monitor_off.sh) ja kirjoitamme siihen jonkin koodin. Helpoin tapa tehdä tämä on kirjautua Raspberryyn SSH: lla ja kirjoittamalla

sudo nano monitor_on.sh

ja kirjoita seuraava koodi

tv -palvelu -ensisijainen;

startx/usr/bin/graphical_launcher `fgconsole`

Tallenna ja poistu painamalla CTRL+X ja luo sitten toinen tiedosto

sudo nano monitor_off.sh

ja kirjoita seuraava koodi

tv -palvelu -pois päältä;

Tallenna ja poistu painamalla CTRL+X. Tee näistä uusista tiedostoista suoritettavia:

sudo chmod +x monitor_on.sh

sudo chmod +x monitor_off.sh

Kokeile nyt, toimivatko nämä komennot, kirjoita

sudo./monitor_off.sh

sudo./monitor_on.sh

Näytön pitäisi nyt sammua ja käynnistyä vastaavasti. Olen huomannut, että Raspberry Pi 2 -laitteessa kesti lähes 10 sekuntia, ennen kuin näyttö käynnistyi. Raspberry Pi 3: lla kestää 1-2 sekuntia. Seuraavaksi liitämme infrapuna -anturin, joka käynnistää nämä skriptit. Jälleen on olemassa monia opetusohjelmia Raspberry Pi: n ja PIR: n asentamisesta, seurasin tätä: https://www.instructables.com/id/PIR-Sensor-Interfacing-With-Raspberry-Pi/. Periaatteessa luo tiedosto nano -editorilla (esimerkiksi motion_sensor.py) ja kirjoita siihen sopiva Python -koodi. Alla on esimerkki tiedostostani:

tuoda RPi. GPIO GPIO -muodossa tuoda aikaimportti sysimport aliprosessi tuoda päivämäärän dtimport osGPIO.setwarnings (False) # GPIO.setmode (GPIO. BOARD) GPIO.setmode (GPIO. BCM) GPIO.setup (17, GPIO. IN) #PIRturned_off = False time.time () SHUTOFF_DELAY = 180 # secondswhile True: i = GPIO.input (17), jos i == 0: #Kun liikeanturin lähtö on LOW, käännä monitori pois päältä, jos sitä ei ole kytketty pois päältä ja aika.aika ()> (last_motion_time + SHUTOFF_DELAY): tulosta "Ei tunkeilijoita", iturned_off = Truetime.sleep (1) subprocess.call (['/home/pi/monitor_off.sh'], shell = True) elif i == 1: #Kun liiketunnistimesta lähetetään on KORKEA, käännä näyttö ONprint "Tunkeutuja havaittu", itime.sleep (1) last_motion_time = time.time () sys.stdout.flush () jos turn_off ja dt.datetime.now (). hour> 5 and dt.datetime. now (). hour <23: Turn_off = Falsesubprocess.call (['/home/pi/monitor_on.sh'], shell = True) jos _name_ == '_main _': try: main () paitsi KeyboardInterrupt: GPIO.cleanup ()

Huomaa, että "GPIO.setup (17, GPIO. IN)" osoittaa, että PIR: n ulostulonappi on kytketty Raspberry Pi: n nastaan 17. Kumpi nasta riippuu siitä, määritetäänkö GPIO.setmode (GPIO. BOARD) vai GPIO.setmode (GPIO. BCM). Ero selitetään täällä: https://raspberrypi.stackexchange.com/questions/12966/what-is-the-difference-between-board-and-bcm-for-gpio-pin-numbering. Minulla on # GPIO. BOARDin edessä, joten se jätetään huomiotta ja GPIO. BCM on käytössä.

Huomaa linja

SHUTOFF_DELAY = 180 #sekuntia

Tässä kerrotaan, kuinka kauan näyttö on kytketty päälle viimeisen liikkeen havaitsemisen jälkeen, ennen kuin se sammutetaan. Tästä on hyötyä, koska en halua, että näyttö sammuu/käynnistyy jatkuvasti kävellessäni sen ohi, mutta haluan pitää sen käynnissä jonkin aikaa, ennen kuin se sammuu. Olen valinnut 180 sekunnin välin, jotta näyttö sammuu noin 3 minuutin kuluttua viimeisen liikkeen havaitsemisesta.

Lopuksi tämä rivi

jos off_off ja dt.datetime.now (). tunti> 6 ja dt.datetime.now (). tunti <23:

ilmoittaa, että näyttö käynnistyy vain klo 6.00–23.00, joten se ei häiritse minua yöllä. Viivat

tulosta "Ei tunkeilijoita", ts

ja

tulosta "Tunkeutuja havaittu", ts

ovat vain komentosarjan testaamiseen, voit poistaa ne myöhemmin, kun saat sen toimimaan. Testaa nyt käsikirjoitus:

sudo python motion_sensor.py

Näet viestit "Tunkeutuja havaittu", jos heilutat anturin yläpuolella, muuten se on "Ei tunkeilijoita". Kun tämä komentosarja on testattu ja toimii, aseta se käynnistymään käynnistyksen yhteydessä:

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

ja lisää seuraava rivi

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

Tietenkin sinun on määritettävä luomasi Python -komentosarjan oikea tiedostonimi.

Vaihe 5: Ripusta kalenteri

Kun kaikki on valmiina, on aika ripustaa kalenteri seinälle!

Aluksi ajattelin piilottaa Raspberry Pi nestekidenäytön taakse, jotta tarvittaisiin vain yksi kaapeli (tasavirta). Mutta koska Vadelma toimii 5V ja LCD -näyttö 12V, tarvitsisin lisämuuntajan. Lisäksi Vadelma -kotelo on melko paksu, mikä tarkoittaa, että nestekidenäyttö on noin 3 senttimetrin päässä seinästä. Joten hylkäsin tämän ja jätin LCD -elektroniikan vain nestekidenäytön taakse, joten se on nyt alle 1 senttimetrin päässä seinästä. Ostin kaksi 5 metriä pitkää kaapelia, yhden HDMI: n ja yhden 5,5 mm: n tasavirtalähteen. Molemmat kaapelit ovat valkoisia, kuten seinä, joten ne eivät erotu paljon. Olen asentanut nestekidenäytön seinälle ja asettanut Vadelman jääkaapin päälle vastakkaiselle seinälle, joten se on periaatteessa piilotettu, mutta silti helposti saatavilla.

Suositeltava: