Innholdsfortegnelse:

Smart Wall Calendar: 5 trinn
Smart Wall Calendar: 5 trinn

Video: Smart Wall Calendar: 5 trinn

Video: Smart Wall Calendar: 5 trinn
Video: НЕ ВЗДУМАЙ снимать аккумулятор с машины. Делай это ПРАВИЛЬНО ! 2024, Juli
Anonim
Smart veggkalender
Smart veggkalender

Min kone og jeg pleide å ha en klassisk papirveggkalender, som vi markerte viktige datoer på. Vi bruker også Google -kalender på smarttelefonene våre for å markere hendelser, så dette betydde dobbeltarbeid. Så jeg bestemte meg for å bygge en slags smart veggkalender, som viser påminnelser, hendelser og andre data. Siden jeg har forskjellige gamle elektroniske deler liggende, var målet mitt å gjenbruke dem så mange som mulig og bygge kalenderen med så lite kostnader som mulig.

I denne opplæringen vil jeg vise deg hvordan du bygger en smart veggkalender, som viser hendelser fra flere Google -kontoer. Det vil også vise tid, dato, vær, temperatur og litt tilleggsinformasjon. Den blir drevet av en Raspberry Pi -datamaskin med en passiv infrarød sensor (PIR) bevegelsessensor festet til den, slik at skjermen slås på når bevegelse oppdages i rommet, men slås av etter noen minutter med inaktivitet. Denne opplæringen er basert på flere andre opplæringsprogrammer jeg fant på internett, og jeg vil gi lenker til dem for bedre forståelse. Noen grunnleggende programmeringskunnskaper er nødvendig (HTML, Python, …).

Trinn 1: Maskinvaren

Som nevnt før, prøvde jeg å gjenbruke så mange gamle elektroniske deler for å holde kostnadene nede. Imidlertid måtte jeg kjøpe noen ting, så jeg vil liste opp alt som er nødvendig for konstruksjonen.

- Et Raspberry Pi -sett. Opprinnelig brukte jeg min gamle modell 2 fra et annet prosjekt. Det fungerte, men redigering og omlasting av websiden tok meg lang tid, så jeg byttet til slutt til modell 3, som fungerer mer flytende https://www.ebay.com/sch/i.html?_from=R40&_trksid=m570.l1313 & _nkw = bringebær+pi+sett & _sacat = 0

- LCD skjerm. Jeg brukte skjermen fra den gamle bærbare datamaskinen min, så jeg trengte bare å kjøpe LVDS -driverkort for den og strømforsyningen https://www.ebay.com/sch/i.html?_from=R40&_trksid=m570.l1313&_nkw=hdmi+ driver+LVDS+brett & _sacat = 0

-Oppbevaringsboks i plast for elektronikken

- Passiv infrarød bevegelsessensor

- AM2302 temperatur-/fuktighetssensor

- Slide-on-perm av svart plast for LCD-ramme

- Ulike kabler (HDMI, 5,5 mm for likestrøm, loddefrie brødbrettkabler, …)

Trinn 2: Opprette LCD -skjermen

Opprette LCD -skjermen
Opprette LCD -skjermen
Opprette LCD -skjermen
Opprette LCD -skjermen
Opprette LCD -skjermen
Opprette LCD -skjermen

Jeg brukte LCD -skjermen fra min gamle foreldede bærbare. Det er flere opplæringsprogrammer om hvordan du gjør dette, jeg fulgte denne:

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

Jeg demonterte dekselet på den gamle bærbare datamaskinen, tok ut LCD -skjermen og bestilte deretter riktig LVDS -driverkort. Jeg ga selgeren produktkoden, som kan bli funnet på baksiden av LCD -skjermen, i mitt tilfelle er det LP171WE3 (TL) (A2) - se etiketten nederst til høyre på det siste bildet, og så sendte han meg den passende LVDS. Vær oppmerksom på at du også trenger strømforsyningen til skjermen, så be selgeren om å sende den også. Jeg kjøpte også en fin 14,5 × 7,5 × 2 cm plastboks for å passe førerkortet godt og feste den på baksiden av LCD -skjermen.

Nå har LCD -skjermen en metallisk ramme, som ikke ser pen ut. Opprinnelig sprayet jeg den til svart, men malingen begynte å skrelle av. Så jeg tok fire glidelapper av svart plast, som vanligvis brukes til å binde papirark, trimmet dem deretter og festet dem for å dekke rammen. Dette så bra ut, så jeg koblet alle kablene, plugget inn HDMI til min gamle Raspberry Pi og Voila - det fungerte! Det var et bilde som ble vist på skjermen, så jeg var klar til å gå videre til neste trinn - hvilken informasjon jeg skulle vise på skjermen og hvordan jeg skulle vise den.

Trinn 3: Konfigurere programvaren

Da jeg lette over internett etter noen ledetråder om hvordan jeg bygger kalender, ble jeg inspirert av denne siden https://dakboard.com/site. De gir det ferdige produktet (skjermen, datamaskinen og programvaren), men de har også en utmerket opplæring for DIY-løsning (https://blog.dakboard.com/diy-wall-display/). Jeg anbefaler deg å følge denne opplæringen, i det minste for den første delen med instruksjonene for å forberede og sette opp systemet på Raspberry, slik at nettleseren automatisk laster inn ønsket webside ved oppstart.

Dette fungerte bra, men jeg var på utkikk etter en løsning, som kunne tilpasses mer etter mine ønsker. Jeg har bestemt meg for å sette opp min egen webserver og opprette en webside, som vil vise tilleggsinformasjon i tillegg til kalenderen. Jeg har valgt Wordpress.org, siden det er godt dokumentert og har god støtte og et stort fellesskap for å hjelpe deg. Her er opplæringen om hvordan du installerer Wordpress på Raspberry Pi: https://projects.raspberrypi.org/en/projects/lamp-web-server-with-wordpress. Med Wordpress installert var det på tide å designe hjemmesiden min. Du kan bruke et av de mange temaene som tilbys, eller designe fra bunnen av. Uansett, litt HTML -programmeringskunnskap er nødvendig for dette.

Jeg har designet siden min, slik at på venstre side vises kalenderen (https://sl.wordpress.org/plugins/google-calendar-events/), mens på høyre side vises tid og dato (https://www.timeanddate.com/clocks/free.html og https://www.arclab.com/en/kb/htmlcss/display-date-time-javascript-php-ssi.html). Værvarselet er fra denne siden (https://www.1a-vreme.si/vremensko-okno/), som gir prognosemodul for slovenske byer, men jeg antar at widgets for andre land også kan bli funnet på internett. Temperatur samles inn ved hjelp av AM2302 -sensor (https://www.ebay.com/sch/i.html?_from=R40&_trksid=m570.l1313&_nkw=AM2302+&_sacat=0), som forklart på slutten av dette kapitlet. På bunnen er en enkel daglig nedtellingstimer som viser hvor mange dager som er igjen til en hendelse (interessant for barna mine å vite, hvor mange dager de må vente på noe). Øverst til høyre er MetaSlider-pluginet (https://wordpress.org/plugins/ml-slider/), som tilfeldigvis glir til utvalgte bilder av familien min. I tillegg har jeg brukt Background Slider-plugin (https://sl.wordpress.org/plugins/background-slider-master/) for å vise meg et tilfeldig bilde for bedre bakgrunn.

Som nevnt tidligere, samles innetemperaturen ved hjelp av AM2302 -sensor. Det er mange opplæringsprogrammer om hvordan du får temperatur, jeg fulgte denne: https://www.modmypi.com/blog/am2302-temphumidity-sensor. Senere flyttet jeg denne sensoren til en annen Raspberry Pi med Home Assistant som kjører på den, fordi det er lettere å lese og publisere verdier ved hjelp av DHT Sensor-komponenten (https://www.home-assistant.io/components/sensor.dht/). Home Assistant kan også samle utetemperatur ved hjelp av forskjellige værkomponenter, jeg brukte YR.no-komponent (https://www.home-assistant.io/components/sensor.yr/). Med det skrev jeg et automatiseringsskript for å samle innendørs/utetemperatur fra disse komponentene og skrive dem til en tekstfil, som deretter vises på min veggkalender. For mer informasjon om Home Assistant, se hjemmesiden (https://www.home-assistant.io/).

Trinn 4: Valgfritt - Slå av skjermen

Nå har vi satt opp kalenderen vår, akkurat slik vi liker den. Men vi vil ikke at skjermen skal slås på 24/7. Vi vil bare at den skal slås på når noen er hjemme. Vi vil heller ikke at den skal slås på midt på natten, når vi går på toalettet, er det for lyst! Så vi legger til en infrarød sensor for å legge merke til når noen står foran den, og legge til noen tidsbegrensninger når den skal slås på.

Vær oppmerksom på at programmeringskunnskapene mine er ganske begrenset, så det følgende kan ikke være optimalt, siden jeg har valgt det fra forskjellige online fora og opplæringsprogrammer, men det fungerer i hovedsak. Likevel er enhver anbefaling fortsatt velkommen. Først starter vi med test for å slå skjermen på/av manuelt. For det vil vi lage to filer (for eksempel monitor_on.sh og monitor_off.sh) og skrive litt kode i den. Den enkleste måten å gjøre dette på er å logge på bringebæret ditt med SSH og skrive

sudo nano monitor_on.sh

og skriv inn følgende kode

tvservice -foretrukket;

startx/usr/bin/graphical_launcher `fgconsole`

Trykk CTRL+X for å lagre og avslutte, og opprett deretter den andre filen

sudo nano monitor_off.sh

og skriv inn følgende kode

tvservice -off;

Trykk igjen CTRL+X for å lagre og avslutte. Gjør disse nyopprettede filene kjørbare:

sudo chmod +x monitor_on.sh

sudo chmod +x monitor_off.sh

For å prøve om disse kommandoene fungerer, skriver du inn

sudo./monitor_off.sh

sudo./monitor_on.sh

Monitoren skal nå slås av og på. Jeg har lagt merke til at det tok nesten 10 sekunder for Raspberry Pi 2 å slå på skjermen. På Raspberry Pi 3 tar det 1-2 sekunder. Deretter kobler vi til en infrarød sensor, som vil utløse disse skriptene. Igjen er det mange opplæringsprogrammer for hvordan du konfigurerer Raspberry Pi og PIR, jeg fulgte denne: https://www.instructables.com/id/PIR-Sensor-Interfacing-With-Raspberry-Pi/. I utgangspunktet kan du lage en fil ved hjelp av nano -editor (for eksempel motion_sensor.py) og skrive inn passende Python -kode i den. Nedenfor er eksemplet på filen min:

importer 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 =_alsalast_ time.time () SHUTOFF_DELAY = 180 # sekunder mens True: i = GPIO.input (17) hvis i == 0: #Når utgangen fra bevegelsessensoren er LAV, slå av monitoren hvis ikke slått av og time.time ()> (last_motion_time + SHUTOFF_DELAY): skriv ut "Ingen inntrengere", iturned_off = Truetime.sleep (1) subprocess.call (['/home/pi/monitor_off.sh'], shell = True) elif i == 1: #Når utdata fra bevegelsessensor er HØY, slå på skjermen ONprint "Innbrudd oppdaget", itime.sleep (1) last_motion_time = time.time () sys.stdout.flush () hvis slått av og dt.datetime.now (). time> 5 og dt.datetime. nå (). time <23: turn_off = Falsesubprocess.call (['/home/pi/monitor_on.sh'], shell = True) hvis _name_ == '_main _': try: main () unntatt KeyboardInterrupt: GPIO.cleanup ()

Vær oppmerksom på at "GPIO.setup (17, GPIO. IN)" indikerer at utgangspinnen fra PIR er koblet til pin 17 på Raspberry Pi. Hvilken pin er det som avhenger av om du definerer GPIO.setmode (GPIO. BOARD) eller GPIO.setmode (GPIO. BCM). Forskjellen 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 blir ignorert og GPIO. BCM brukes.

Legg merke til linjen

SHUTOFF_DELAY = 180 #sekunder

Her angis hvor lenge skjermen er slått på siden siste bevegelse ble oppdaget, før den ble slått av. Dette er nyttig fordi jeg ikke vil at skjermen skal slås av/på konstant når jeg går forbi den, men vil beholde den slått på en stund før den slås av. Jeg har valgt intervallet på 180 sekunder, slik at skjermen slås av omtrent 3 minutter etter at den siste bevegelsen ble oppdaget.

Til slutt, denne linjen

hvis slått av og dt.datetime.now (). time> 6 og dt.datetime.now (). time <23:

sier at skjermen bare slås på mellom 6:00 og 23:00, så det forstyrrer meg ikke om natten. Linjene

print "Ingen inntrengere", dvs.

og

print "Innbrudd oppdaget", dvs.

er bare for å teste skriptet, kan du slette dem senere når du får det til å fungere. Test nå skriptet:

sudo python motion_sensor.py

Du bør se meldingene "Innbrudd oppdaget", hvis du vinker over sensoren, ellers vil det være "Ingen inntrengere". Når dette skriptet er testet og fungerer, setter du det til å starte ved oppstart:

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

og legg til følgende linje

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

Selvfølgelig må du spesifisere det riktige filnavnet til Python -skriptet du opprettet.

Trinn 5: Heng kalenderen

Med alt klart, er det på tide å henge kalenderen på veggen!

I utgangspunktet tenkte jeg på å gjemme Raspberry Pi bak LCD -skjermen, slik at bare en kabel (likestrøm) ville være nødvendig. Men siden bringebær kjører på 5V og LCD -skjerm kjører på 12V, trenger jeg en ekstra transformator. Raspberry -saken er også ganske tykk, noe som betyr at LCD -skjermen vil være omtrent 3 centimeter fra veggen. Så jeg forlot dette og forlot bare LCD -elektronikk bak LCD -skjermen, slik at den nå er mindre enn 1 centimeter unna veggen. Jeg kjøpte to 5 meter lange kabler, en HDMI og en 5, 5 mm for likestrømforsyning. Begge kablene er hvite, som veggen, noe som betyr at de ikke skiller seg mye ut. Jeg har montert LCD -en på veggen og satt bringebær på toppen av kjøleskapet på motsatt vegg, så den er i utgangspunktet skjult, men likevel lett tilgjengelig.

Anbefalt: