Indholdsfortegnelse:

Smart Wall Calendar: 5 trin
Smart Wall Calendar: 5 trin

Video: Smart Wall Calendar: 5 trin

Video: Smart Wall Calendar: 5 trin
Video: 🖥️ Top 7 Best Smart Digital Calendars | Holiday BIG SALE 2023 2024, Juli
Anonim
Smart vægkalender
Smart vægkalender

Min kone og jeg havde tidligere en klassisk papirvægskalender, som vi markerede vigtige datoer på. Vi bruger også Google -kalender på vores smartphones til at markere begivenheder, så dette betød dobbelt arbejde. Så jeg besluttede at bygge en slags smart vægkalender, som viser vores påmindelser, begivenheder og nogle andre data. Da jeg har forskellige gamle elektroniske dele liggende, var mit mål at genbruge dem så mange som muligt og bygge kalenderen med så få omkostninger som muligt.

I denne vejledning vil jeg vise dig, hvordan du opbygger en smart vægkalender, der viser begivenheder fra flere Google -konti. Det viser også tid, dato, vejr, temperatur og nogle yderligere oplysninger. Den drives af en Raspberry Pi -computer med en passiv infrarød sensor (PIR) bevægelsessensor tilsluttet, så displayet tændes, når der registreres bevægelse i rummet, men slukker efter få minutters inaktivitet. Denne vejledning er baseret på flere andre selvstudier, jeg fandt på internettet, og jeg vil give linkene til dem for bedre forståelse. Nogle grundlæggende programmeringskendskaber er nødvendige (HTML, Python, …).

Trin 1: Hardware

Som nævnt før forsøgte jeg at genbruge så mange gamle elektroniske dele for at holde omkostningerne nede. Dog måtte jeg købe nogle varer, så jeg vil liste alt det nødvendige til konstruktionen.

- Et Raspberry Pi kit. I første omgang brugte jeg min gamle model 2 fra et andet projekt. Det fungerede, men webstedets redigering og genindlæsning tog mig meget tid, så jeg skiftede til sidst til model 3, som fungerer mere flydende https://www.ebay.com/sch/i.html?_from=R40&_trksid=m570.l1313 & _nkw = hindbær+pi+kit & _sacat = 0

- LCD -skærm. Jeg brugte skærmen fra min gamle bærbare, så jeg behøvede kun at købe LVDS -driverkort til det og strømforsyningen https://www.ebay.com/sch/i.html?_from=R40&_trksid=m570.l1313&_nkw=hdmi+ driver+LVDS+board & _sacat = 0

-Plastikboks til elektronik

- Passiv infrarød bevægelsessensor

- AM2302 temperatur/fugtighedsføler

- Sort plastikbinder til LCD-ramme

- Forskellige kabler (HDMI, 5,5 mm til jævnstrøm, loddefri brødbrætskabel,…)

Trin 2: Oprettelse af LCD -skærmen

Oprettelse af LCD -skærmen
Oprettelse af LCD -skærmen
Oprettelse af LCD -skærmen
Oprettelse af LCD -skærmen
Oprettelse af LCD -skærmen
Oprettelse af LCD -skærmen

Jeg brugte LCD -skærmen fra min gamle forældede bærbare computer. Der er flere tutorials om, hvordan man gør dette, jeg fulgte denne:

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

Jeg demonterede dækslet til min gamle bærbare computer, tog LCD -displayet ud og bestilte derefter det korrekte LVDS -driverkort. Jeg gav sælgeren produktkoden, som kunne findes på bagsiden af LCD'et, i mit tilfælde er det LP171WE3 (TL) (A2) - se etiketten nederst til højre på sidste billede, og så sendte han mig den relevante LVDS. Bemærk, du skal også bruge strømforsyningen til skærmen, så bed sælgeren også om at sende den. Jeg har også købt en flot 14,5 × 7,5 × 2 cm plastkasse, der passer fint til driverkortet og fastgør den til bagsiden af LCD'et.

Nu har LCD -displayet en metallisk ramme, hvilket ikke ser smukt ud. I starten sprøjtede jeg det til sort, men malingen begyndte at skrælle af. Så jeg tog fire sorte plastbindere, der typisk bruges til indbinding af ark, trimmede dem derefter og fastgjorde dem for at dække rammen. Dette så godt ud, så jeg tilsluttede alle kablerne, tilsluttet HDMI til min gamle Raspberry Pi og Voila - det virkede! Der var et billede på displayet, så jeg var klar til at gå videre til det næste trin - hvilke oplysninger jeg skulle vise på displayet, og hvordan jeg skulle vise det.

Trin 3: Opsætning af softwaren

Da jeg ledte over internettet efter nogle spor, hvordan jeg opbygger en kalender, blev jeg inspireret af denne side https://dakboard.com/site. De leverer det færdige produkt (displayet, computeren og arbejdssoftwaren), men de har også en glimrende vejledning til DIY-løsning (https://blog.dakboard.com/diy-wall-display/). Jeg anbefaler dig at følge denne vejledning, i det mindste i den første del med instruktionerne om forberedelse og opsætning af systemet på Raspberry, så browseren automatisk indlæser den ønskede webside ved opstart.

Dette fungerede fint, men jeg ledte efter en løsning, som kunne tilpasses mere efter mine ønsker. Jeg har besluttet at oprette min egen webserver og oprette en webside, der viser yderligere oplysninger udover kalenderen. Jeg har valgt Wordpress.org, da det er veldokumenteret og har god support og et stort fællesskab til at hjælpe dig. Her er selvstudiet om, hvordan du installerer Wordpress på Raspberry Pi: https://projects.raspberrypi.org/en/projects/lamp-web-server-with-wordpress. Med Wordpress installeret, var det tid til at designe min hjemmeside. Du kan bruge et af de mange temaer, eller designe helt fra bunden. Anyway, en vis HTML -programmeringskendskab er nødvendig for dette.

Jeg har designet min side, så kalenderen i venstre side vises (https://sl.wordpress.org/plugins/google-calendar-events/), mens tid og dato vises i højre side (https://www.timeanddate.com/clocks/free.html og https://www.arclab.com/en/kb/htmlcss/display-date-time-javascript-php-ssi.html). Vejrudsigten er fra denne side (https://www.1a-vreme.si/vremensko-okno/), som giver prognose-widget for slovenske byer, men jeg tror også, at widgets til andre lande også kan findes på internettet. Temperatur indsamles ved hjælp af AM2302 -sensor (https://www.ebay.com/sch/i.html?_from=R40&_trksid=m570.l1313&_nkw=AM2302+&_sacat=0), som forklaret i slutningen af dette kapitel. I bunden er en simpel daglig nedtællingstimer, der viser, hvor mange dage der er tilbage til en begivenhed (interessant for mine børn at vide, hvor mange dage skal de vente på noget). I øverste højre kant er MetaSlider-pluginet (https://wordpress.org/plugins/ml-slider/), der tilfældigt glider til udvalgte billeder af min familie. Derudover har jeg brugt Plugin til baggrundsskyder (https://sl.wordpress.org/plugins/background-slider-master/) til at vise mig et tilfældigt billede til en pænere baggrund.

Som nævnt før opsamles indendørstemperaturen ved hjælp af AM2302 sensor. Der er mange tutorials om, hvordan man får temperatur, jeg fulgte denne: https://www.modmypi.com/blog/am2302-temphumidity-sensor. Senere flyttede jeg denne sensor til en anden Raspberry Pi med Home Assistant kørende på den, fordi det er lettere at læse og udgive værdier ved hjælp af dens DHT Sensor-komponent (https://www.home-assistant.io/components/sensor.dht/). Home Assistant kan også indsamle udetemperatur ved hjælp af forskellige vejrkomponenter, jeg brugte YR.no-komponent (https://www.home-assistant.io/components/sensor.yr/). Med det skrev jeg et automatiseringsskript til at samle indendørs/udetemperatur fra disse komponenter og skrive dem til en tekstfil, som derefter vises på min vægkalender. For mere information om Home Assistant, se hjemmesiden (https://www.home-assistant.io/).

Trin 4: Valgfrit - Slå skærmen fra

Nu har vi vores kalender sat op og kører, lige som vi kan lide det. Men vi ønsker ikke, at skærmen skal være tændt 24/7. Vi vil kun have det tændt, når nogen er hjemme. Vi vil heller ikke have, at den skal være tændt midt om natten, når vi går på toilettet, er det for lyst! Så vi vil vedhæfte en infrarød sensor til at lægge mærke til, når nogen står foran den, og tilføje nogle tidsbegrænsninger, når den skal tænde.

Bemærk, at mine programmeringsevner er ret begrænsede, så følgende kunne ikke være optimalt, da jeg har valgt det fra forskellige online fora og tutorials, men det fungerer i det væsentlige. Alligevel er enhver anbefaling stadig velkommen. Først starter vi med test for at tænde/slukke skærmen manuelt. Til det opretter vi to filer (for eksempel monitor_on.sh og monitor_off.sh) og skriver noget kode i den. Den nemmeste måde at gøre dette på er at logge ind på din Hindbær ved hjælp af SSH og skrive

sudo nano monitor_on.sh

og indtast følgende kode

tvservice -foretrukket;

startx/usr/bin/grafisk_lancering `fgconsole`

Tryk på CTRL+X for at gemme og afslutte, og opret derefter den anden fil

sudo nano monitor_off.sh

og indtast følgende kode

tvservice --off;

Igen skal du trykke på CTRL+X for at gemme og afslutte. Gør disse nyoprettede filer eksekverbare:

sudo chmod +x monitor_on.sh

sudo chmod +x monitor_off.sh

For at prøve, om disse kommandoer fungerer, skal du skrive

sudo./monitor_off.sh

sudo./monitor_on.sh

Skærmen skal nu slukke og tænde i overensstemmelse hermed. Jeg har bemærket, at det på Raspberry Pi 2 tog næsten 10 sekunder for skærmen at tænde. På Raspberry Pi 3 tager det 1-2 sekunder. Dernæst tilslutter vi en infrarød sensor, som udløser disse scripts. Igen er der mange selvstudier om, hvordan du konfigurerer Raspberry Pi og PIR, jeg fulgte denne: https://www.instructables.com/id/PIR-Sensor-Interfacing-With-Raspberry-Pi/. Grundlæggende skal du oprette en fil ved hjælp af nano -editor (f.eks. Motion_sensor.py) og skrive den relevante Python -kode i den. Nedenfor er eksemplet på min fil:

import RPi. GPIO som GPIOimport timeimport sysimport subprocessimport datetime as dtimport osGPIO.setwarnings (False) # GPIO.setmode (GPIO. BOARD) GPIO.setmode (GPIO. BCM) GPIO.setup (17, GPIO. IN) #PIRturned_off = Falsel_ time.time () SHUTOFF_DELAY = 180 # sekunder imens True: i = GPIO.input (17) hvis i == 0: #Når output fra bevægelsessensoren er LAV, skal du slukke for skærmen OFF if not off_off og time.time ()> (last_motion_time + SHUTOFF_DELAY): udskriv "Ingen ubudne gæster", iturned_off = Truetime.sleep (1) subprocess.call (['/home/pi/monitor_off.sh'], shell = True) elif i == 1: #When output from motion sensor er HØJ, tænd skærmen ONprint "Indbrud opdaget", itime.sleep (1) last_motion_time = time.time () sys.stdout.flush () hvis slukket_off og dt.datetime.now (). time> 5 og dt.datetime. nu (). time <23: turn_off = Falsesubprocess.call (['/home/pi/monitor_on.sh'], shell = True) hvis _name_ == '_main _': try: main () undtagen KeyboardInterrupt: GPIO.cleanup ()

Bemærk, at "GPIO.setup (17, GPIO. IN)" angiver, at output -pin fra PIR er forbundet til pin 17 på Raspberry Pi. Hvilken pin er det, afhænger af, om du definerer GPIO.setmode (GPIO. BOARD) eller GPIO.setmode (GPIO. BCM). Forskellen forklares her: https://raspberrypi.stackexchange.com/questions/12966/what-is-the-difference-between-board-and-bcm-for-gpio-pin-numbering. Jeg har # foran GPIO. BOARD, så det ignoreres, og GPIO. BCM bruges.

Læg mærke til linjen

SHUTOFF_DELAY = 180 #sekunder

Her er angivet, hvor længe skærmen er tændt siden sidste bevægelse blev registreret, før den blev slukket. Dette er nyttigt, fordi jeg ikke vil have skærmen til at slukke/tænde konstant, når jeg går forbi den, men vil beholde den tændt i et stykke tid, før den er slukket. Jeg har valgt intervallet på 180 sekunder, så skærmen slukker cirka 3 minutter efter, at den sidste bevægelse blev registreret.

Endelig denne linje

hvis slukket_off og dt.datetime.now (). time> 6 og dt.datetime.now (). time <23:

oplyser, at skærmen kun tænder mellem 6:00 og 23:00, så det forstyrrer mig ikke i løbet af natten. Linjerne

print "Ingen ubudne gæster", dvs.

og

udskrive "Ubudsmand fundet", dvs.

er kun til test af scriptet, kan du slette dem senere, når du får det til at fungere. Test nu scriptet:

sudo python motion_sensor.py

Du bør se meddelelser "Indbrud fundet", hvis du vinker over sensoren, ellers vil det være "Ingen ubudne gæster". Når dette script er testet og fungerer, skal du indstille det til at starte ved opstart:

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

og tilføj følgende linje

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

Selvfølgelig skal du angive det korrekte filnavn på det Python -script, du har oprettet.

Trin 5: Hæng kalenderen

Med alt opsat er det tid til at hænge kalenderen på væggen!

Oprindeligt tænkte jeg på at skjule Raspberry Pi bag LCD -skærmen, så der kun skulle bruges et kabel (jævnstrøm). Men da Hindbær kører på 5V og LCD -display kører på 12V, ville jeg have brug for yderligere transformer. Raspberry -sagen er også temmelig tyk, hvilket betyder, at LCD -skærmen ville være placeret omkring 3 centimeter fra væggen. Så jeg opgav dette og forlod kun LCD -elektronik bag LCD'et, så det nu er mindre end 1 centimeter væk fra væggen. Jeg anskaffede mig to 5 meter lange kabler, et HDMI og et 5, 5 mm til DC -strømforsyning. Begge kabler er hvide, ligesom væggen, hvilket betyder, at de ikke skiller sig meget ud. Jeg har monteret LCD'en på væggen og lagt Raspberry oven på køleskabet på den modsatte væg, så den er dybest set skjult, men alligevel let tilgængelig.

Anbefalede: