Kazalo:

Pametni stenski koledar: 5 korakov
Pametni stenski koledar: 5 korakov

Video: Pametni stenski koledar: 5 korakov

Video: Pametni stenski koledar: 5 korakov
Video: ZEITGEIST: MOVING FORWARD | OFFICIAL RELEASE | 2011 2024, Julij
Anonim
Pametni stenski koledar
Pametni stenski koledar

Z ženo sva imela klasičen stenski koledar iz papirja, na katerem smo obeleževali pomembne datume. Za označevanje dogodkov uporabljamo tudi Googlov koledar na naših pametnih telefonih, zato je to pomenilo dvojno delo. Zato sem se odločil zgraditi nekakšen pameten stenski koledar, ki bo prikazal naše opomnike, dogodke in nekatere druge podatke. Ker imam naokoli različne stare elektronske dele, je bil moj cilj čim večjo uporabo in izdelavo koledarja s čim manj stroški.

V tej vadnici vam bom pokazal, kako sestaviti pametni stenski koledar in prikazati dogodke iz več Googlovih računov. Prikazal bo tudi čas, datum, vreme, temperaturo in nekatere dodatne informacije. Napajal ga bo računalnik Raspberry Pi s pritrjenim senzorjem gibanja s pasivnim infrardečim senzorjem (PIR), tako da se zaslon vklopi, ko zazna gibanje v prostoru, vendar se po nekaj minutah nedejavnosti izklopi. Ta vadnica temelji na številnih drugih vadnicah, ki sem jih našel na internetu, in jim bom dal povezave za boljše razumevanje. Potrebno je nekaj osnovnega znanja programiranja (HTML, Python, …).

1. korak: Strojna oprema

Kot sem že omenil, sem poskušal znova uporabiti čim več starih elektronskih delov, da bi znižali stroške. Vendar sem moral kupiti nekaj predmetov, zato bom navedel vse, kar je potrebno za gradnjo.

- Komplet Raspberry Pi. Sprva sem uporabil svoj stari model 2 iz nekega drugega projekta. Uspelo je, vendar mi je urejanje in ponovno nalaganje spletne strani vzelo veliko časa, zato sem na koncu zamenjal model 3, ki deluje bolj tekoče https://www.ebay.com/sch/i.html?_from=R40&_trksid=m570.l1313 & _nkw = malina+pi+komplet & _sacat = 0

- LCD zaslon. Zaslon sem uporabljal pri svojem starem prenosnem računalniku, zato sem moral zanj kupiti le gonilniško ploščo LVDS in napajalnik https://www.ebay.com/sch/i.html?_from=R40&_trksid=m570.l1313&_nkw=hdmi+ gonilnik+LVDS+plošča & _sacat = 0

-Plastična škatla za shranjevanje elektronike

- Pasivni infrardeči senzor gibanja

- Senzor temperature/vlažnosti AM2302

- Črno plastično vezivo za LCD okvir

- Različni kabli (HDMI, 5,5 mm za enosmerno napajanje, spajkalni kabli za spajkanje, …)

2. korak: Ustvarite LCD zaslon

Ustvarjanje LCD zaslona
Ustvarjanje LCD zaslona
Ustvarjanje LCD zaslona
Ustvarjanje LCD zaslona
Ustvarjanje LCD zaslona
Ustvarjanje LCD zaslona

Uporabil sem LCD zaslon iz starega zastarelega prenosnika. Obstaja nekaj vaj, kako to narediti, sledil sem temu:

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

Odstranil sem ovitek starega prenosnika, vzel LCD zaslon in nato naročil pravilno gonilniško ploščo LVDS. Prodajalcu sem posredoval kodo izdelka, ki jo najdete na hrbtni strani LCD -ja, v mojem primeru je to LP171WE3 (TL) (A2) - glej spodnjo desno nalepko na zadnji sliki, nato pa mi je poslal ustrezen LVDS. Upoštevajte, da boste za zaslon potrebovali tudi napajanje, zato prosite prodajalca, naj ga pošlje. Kupil sem tudi lepo plastično škatlo velikosti 14,5 × 7,5 × 2 cm, ki se lepo prilega voznikovi plošči in jo pritrdi na zadnjo stran LCD -ja.

Zdaj ima LCD zaslon kovinski okvir, ki ni videti lep. Sprva sem ga brizgal v črno, vendar se je barva začela luščiti. Zato sem vzel štiri črne plastične vezi, ki se običajno uporabljajo za vezavo listov papirja, jih ustrezno obrezal in pritrdil, da pokrijejo okvir. To je izgledalo dobro, zato sem priključil vse kable, priključil HDMI v stare Raspberry Pi in Voila - delovalo je! Na zaslonu je bila prikazana slika, zato sem bil pripravljen preiti na naslednji korak - katere podatke prikazati na zaslonu in kako jih prikazati.

3. korak: Nastavitev programske opreme

Ko sem po internetu iskal nekaj namigov, kako sestaviti koledar, me je navdihnila ta stran https://dakboard.com/site. Zagotavljajo končni izdelek (zaslon, računalnik in delovno programsko opremo), imajo pa tudi odlično vadnico za DIY rešitev (https://blog.dakboard.com/diy-wall-display/). Priporočam vam, da vsaj v prvem delu sledite tej vadnici z navodili za pripravo in nastavitev sistema na Raspberryju, tako da brskalnik ob zagonu samodejno naloži želeno spletno stran.

To je lepo delovalo, vendar sem iskal neko rešitev, ki bi jo lahko bolj prilagodil glede na moje želje. Odločil sem se, da bom nastavil svoj spletni strežnik in ustvaril spletno stran, ki bo poleg koledarja prikazala še dodatne informacije. Izbral sem Wordpress.org, saj je dobro dokumentiran in ima dobro podporo ter veliko skupnost, ki vam lahko pomaga. Tukaj je vadnica o tem, kako namestiti Wordpress na Raspberry Pi: https://projects.raspberrypi.org/en/projects/lamp-web-server-with-wordpress. Ko je bil Wordpress nameščen, je bil čas, da oblikujem svojo domačo stran. Uporabite lahko eno od številnih ponujenih tem ali oblikujete iz nič. Kakorkoli že, za to je potrebno nekaj znanja programiranja HTML.

Svojo stran sem oblikoval tako, da je na levi strani prikazan koledar (https://sl.wordpress.org/plugins/google-calendar-events/), na desni pa čas in datum (https://www.timeanddate.com/clocks/free.html in https://www.arclab.com/en/kb/htmlcss/display-date-time-javascript-php-ssi.html). Vremenska napoved je s te strani (https://www.1a-vreme.si/vremensko-okno/), ki ponuja pripomoček za napovedi za slovenska mesta, vendar predvidevam, da bi pripomočke za druge države našli tudi na internetu. Temperatura se zbira s senzorjem AM2302 (https://www.ebay.com/sch/i.html?_from=R40&_trksid=m570.l1313&_nkw=AM2302+&_sacat=0), kot je razloženo na koncu tega poglavja. Na dnu je preprost dnevni odštevalnik časa, ki prikazuje, koliko dni je ostalo do nekega dogodka (mojim otrokom je zanimivo vedeti, koliko dni bodo morali na nekaj čakati). V zgornjem desnem robu je vtičnik MetaSlider (https://wordpress.org/plugins/ml-slider/), ki naključno drsi do izbranih slik moje družine. Poleg tega sem z vtičnikom Background Slider (https://sl.wordpress.org/plugins/background-slider-master/) pokazal naključno sliko za lepše ozadje.

Kot smo že omenili, se notranja temperatura zbira s senzorjem AM2302. Obstaja veliko vaj o tem, kako doseči temperaturo, sledil sem temu: https://www.modmypi.com/blog/am2302-temphumidity-sensor. Kasneje sem ta senzor premaknil na drugo Raspberry Pi z domačim pomočnikom, ker je lažje brati in objavljati vrednosti s komponento senzorja DHT (https://www.home-assistant.io/components/sensor.dht/). Domači pomočnik lahko zbira tudi zunanjo temperaturo z različnimi vremenskimi komponentami, uporabil sem komponento YR.no (https://www.home-assistant.io/components/sensor.yr/). S tem sem napisal skript za avtomatizacijo, da bi iz teh komponent zbral notranjo/zunanjo temperaturo in jih zapisal v besedilno datoteko, ki je nato prikazana na mojem stenskem koledarju. Za več informacij o domačem pomočniku si oglejte domačo stran (https://www.home-assistant.io/).

4. korak: Izbirno - izklop zaslona

Zdaj imamo koledar nastavljen in deluje, tako kot nam je všeč. Ne želimo pa, da se zaslon vklopi 24 ur na dan. Hočemo le, ko je nekdo doma. Prav tako ne želimo, da se vklopi sredi noči, ko gremo na stranišče, je preveč svetlo! Zato bomo priložili infrardeči senzor, ki bo opazil, ko nekdo stoji pred njim, in dodali nekaj časovnih omejitev, kdaj naj se vklopi.

Upoštevajte, da so moje programske sposobnosti precej omejene, zato naslednje ne more biti optimalno, saj sem jih izbral na različnih spletnih forumih in vajah, vendar v bistvu deluje. Kljub temu je vsako priporočilo še vedno dobrodošlo. Najprej bomo začeli s testom za ročni vklop/izklop monitorja. Za to bomo ustvarili dve datoteki (na primer monitor_on.sh in monitor_off.sh) in vanj zapisali nekaj kode. Najlažji način za to je, da se prijavite v svojo malino s pomočjo SSH in vnesete

sudo nano monitor_on.sh

in vnesite naslednjo kodo

tvservice -prednostno;

startx/usr/bin/graphical_launcher `fgconsole`

Pritisnite CTRL+X za shranjevanje in izhod, nato ustvarite drugo datoteko

sudo nano monitor_off.sh

in vnesite naslednjo kodo

tvservice -off;

Za shranjevanje in izhod znova pritisnite CTRL+X. Naj bodo te na novo ustvarjene datoteke izvedljive:

sudo chmod +x monitor_on.sh

sudo chmod +x monitor_off.sh

Zdaj poskusite, če ti ukazi delujejo, vnesite

sudo./monitor_off.sh

sudo./monitor_on.sh

Monitor bi se moral zdaj ustrezno izklopiti in vklopiti. Opazil sem, da je na Raspberry Pi 2 trajalo skoraj 10 sekund, da se je monitor vklopil. Na Raspberry Pi 3 traja 1-2 sekundi. Nato bomo povezali infrardeči senzor, ki bo sprožil te skripte. Še enkrat, obstaja veliko vaj, kako nastaviti Raspberry Pi in PIR, sledil sem temu: https://www.instructables.com/id/PIR-Sensor-Interfacing-With-Raspberry-Pi/. V bistvu ustvarite datoteko z nano urejevalnikom (na primer motion_sensor.py) in vanj vnesite ustrezno kodo Python. Spodaj je primer moje datoteke:

uvoz RPi. GPIO kot GPIOimport timeimport sysimport podprocesimport datetime as 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 # sekund SHUTOFF_DELAY): natisnite "Brez vsiljivcev", iturned_off = Truetime.sleep (1) podproces.call (['/home/pi/monitor_off.sh'], lupina = True) elif i == 1: #Pri izhodu iz senzorja gibanja je VISOKO, vklopite monitor, natisnite "Odkril je vsiljivca", itime.sleep (1) last_motion_time = time.time () sys.stdout.flush (), če je turn_off in dt.datetime.now (). ura> 5 in dt.datetime. zdaj (). ura <23: turn_off = Falsesubprocess.call (['/home/pi/monitor_on.sh'], lupina = True), če je _name_ == '_main _': try: main () razen KeyboardInterrupt: GPIO.cleanup ()

Upoštevajte, da »GPIO.setup (17, GPIO. IN)« označuje, da je izhodni pin iz PIR -a priključen na pin 17 na Raspberry Pi. Kateri pin je to odvisno od tega, ali definirate način GPIO.setmode (GPIO. BOARD) ali GPIO.setmode (GPIO. BCM). Razlika je razložena tukaj: https://raspberrypi.stackexchange.com/questions/12966/what-is-the-difference-between-board-and-bcm-for-gpio-pin-numbering. # Pred GPIO. BOARD imam #, zato ga prezremo in uporabimo GPIO. BCM.

Opazujte črto

SHUTOFF_DELAY = 180 #sekund

Tu je navedeno, kako dolgo je monitor vklopljen od zadnjega gibanja, preden se izklopi. To je uporabno, ker ne želim, da se monitor med sprehodom nenehno izklaplja/vklopi, ampak želim, da je še nekaj časa vklopljen, preden se ugasne. Izbral sem interval 180 sekund, tako da se monitor izklopi približno 3 minute po zaznanem zadnjem gibanju.

Končno ta vrstica

če sta izklopljena in dt.datetime.now (). ura> 6 in dt.datetime.now (). ura <23:

navaja, da se monitor vklopi le med 6.00 in 23.00, zato me ne moti ponoči. Linije

natisni "Brez vsiljivcev", tj

in

natisni "Vsiljivec odkrit", tj

so samo za testiranje skripta, jih lahko izbrišete pozneje, ko bo deloval. Zdaj preizkusite skript:

sudo python motion_sensor.py

Če mahate nad senzorjem, bi se morali prikazati sporočila »Zaznan vsiljivec«, sicer bo »Brez vsiljivcev«. Ko je ta skript preizkušen in deluje, ga nastavite na zagon ob zagonu:

sudo nano ~/.config/lxsession/LXDE-pi/samodejni zagon

in dodajte naslednjo vrstico

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

Seveda morate določiti pravilno ime datoteke skripta Python, ki ste ga ustvarili.

5. korak: obesite koledar

Ko je vse nastavljeno, je čas, da koledar obesite na steno!

Sprva sem razmišljal o skrivanju Raspberry Pi za LCD -prikazovalnikom, tako da bo potreben le en kabel (enosmerno napajanje). Ker pa Raspberry deluje na 5V, LCD zaslon pa na 12V, bi potreboval dodaten transformator. Tudi ohišje Raspberry je precej debelo, kar pomeni, da bi bil LCD oddaljen približno 3 centimetre od stene. Zato sem to opustil in za LCD -jem pustil le elektroniko LCD, tako da je zdaj od stene oddaljen manj kot 1 centimeter. Kupil sem dva kabla dolžine 5 metrov, enega HDMI in enega 5, 5 mm za napajanje z enosmernim tokom. Oba kabla sta bela, tako kot stena, kar pomeni, da ne izstopata veliko. LCD sem namestil na steno in postavil Raspberry na hladilnik na nasprotno steno, tako da je v bistvu skrit, a še vedno lahko dostopen.

Priporočena: