Innehållsförteckning:

Smart Wall Calendar: 5 steg
Smart Wall Calendar: 5 steg

Video: Smart Wall Calendar: 5 steg

Video: Smart Wall Calendar: 5 steg
Video: Master the iPhone Calendar App with these Tips! 2024, November
Anonim
Smart väggkalender
Smart väggkalender

Min fru och jag brukade ha en klassisk papperväggskalender, som vi markerade viktiga datum med. Vi använder också Googles kalender på våra smarttelefoner för att markera händelser, så detta innebar dubbelarbete. Så jag bestämde mig för att bygga någon slags smart väggkalender som visar våra påminnelser, händelser och lite annan data. Eftersom jag har olika gamla elektroniska delar liggande var mitt mål att återanvända dem så många som möjligt och bygga kalendern med så lite kostnader som möjligt.

I den här självstudien kommer jag att visa dig hur du bygger en smart väggkalender och visar händelser från flera Google -konton. Det kommer också att visa tid, datum, väder, temperatur och lite ytterligare information. Den kommer att drivas av en Raspberry Pi -dator med en passiv infraröd sensor (PIR) rörelsessensor ansluten till den, så att displayen slås på när rörelse detekteras i rummet, men stängs av efter några minuters inaktivitet. Denna handledning är baserad på flera andra handledning jag hittade på internet och jag kommer att ge länkarna till dem för bättre förståelse. Några grundläggande kunskaper i programmering behövs (HTML, Python, …).

Steg 1: Hårdvaran

Som tidigare nämnts försökte jag återanvända så många gamla elektroniska delar för att hålla kostnaderna nere. Men vissa saker var jag tvungen att köpa, så jag listar allt som är nödvändigt för konstruktionen.

- Ett Raspberry Pi -kit. Till en början använde jag min gamla modell 2 från ett annat projekt. Det fungerade, men webbsidans redigering och omladdning tog mig mycket tid, så jag bytte till slut till modell 3, som fungerar mer flytande https://www.ebay.com/sch/i.html?_from=R40&_trksid=m570.l1313 & _nkw = hallon+pi+kit & _sacat = 0

- LCD skärm. Jag använde skärmen från min gamla bärbara dator, så jag behövde bara köpa LVDS -drivrutin för den och strömförsörjningen https://www.ebay.com/sch/i.html?_from=R40&_trksid=m570.l1313&_nkw=hdmi+ driver+LVDS+board & _sacat = 0

-Plastförvaringslåda för elektroniken

- Passiv infraröd rörelsesensor

- AM2302 temperatur-/fuktighetssensor

- Svart plastglidband för LCD-ram

- Olika kablar (HDMI, 5,5 mm för likström, lödfria brödbrädekablar, …)

Steg 2: Skapa LCD -skärmen

Skapa LCD -skärmen
Skapa LCD -skärmen
Skapa LCD -skärmen
Skapa LCD -skärmen
Skapa LCD -skärmen
Skapa LCD -skärmen

Jag använde LCD -skärmen från min gamla föråldrade bärbara dator. Det finns flera självstudier om hur man gör detta, jag följde den här:

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

Jag demonterade omslaget på min gamla bärbara dator, tog fram LCD -skärmen och beställde sedan rätt LVDS -drivrutin. Jag gav säljaren produktkoden, som kan hittas på baksidan av LCD -skärmen, i mitt fall är det LP171WE3 (TL) (A2) - se etiketten längst ner till höger på sista bilden och sedan skickade han mig lämplig LVDS. Observera att du också behöver strömförsörjningen för displayen, så be säljaren att skicka den också. Jag köpte också en fin 14,5 × 7,5 × 2 cm plastlåda för att passa förarkortet snyggt och fästa den på baksidan av LCD -skärmen.

Nu har LCD -skärmen en metallram, vilket inte ser vackert ut. Inledningsvis spraymålade jag den till svart, men färgen började skala av. Så jag tog fyra svarta plastpärmar, som vanligtvis används för att binda papper, klippte dem därefter och fäst dem för att täcka ramen. Det här såg bra ut, så jag kopplade alla kablar, kopplade in HDMI till min gamla Raspberry Pi och Voila - det fungerade! Det fanns en bild på displayen, så jag var redo att gå vidare till nästa steg - vilken information som ska visas på displayen och hur jag ska visa den.

Steg 3: Konfigurera programvaran

När jag letade efter några ledtrådar över internet om hur jag bygger kalender inspirerades jag av den här sidan https://dakboard.com/site. De tillhandahåller den färdiga produkten (displayen, datorn och arbetsprogramvaran), men de har också en utmärkt handledning för DIY-lösning (https://blog.dakboard.com/diy-wall-display/). Jag rekommenderar dig att följa denna handledning, åtminstone för den första delen med instruktionerna för att förbereda och konfigurera systemet på Raspberry, så att webbläsaren automatiskt läser in önskad webbsida vid start.

Detta fungerade bra, men jag letade efter någon lösning som kunde anpassas mer efter mina önskemål. Jag har bestämt mig för att skapa min egen webbserver och skapa en webbsida som visar ytterligare information förutom kalendern. Jag har valt Wordpress.org, eftersom det är väl dokumenterat och har bra stöd och ett stort community för att hjälpa dig. Här är handledningen om hur du installerar Wordpress på Raspberry Pi: https://projects.raspberrypi.org/en/projects/lamp-web-server-with-wordpress. Med Wordpress installerat var det dags att designa min hemsida. Du kan använda ett av de många teman, eller designa från början. Hur som helst behövs lite HTML -programmeringskunskap för detta.

Jag har utformat min sida så att kalendern på vänster sida visas (https://sl.wordpress.org/plugins/google-calendar-events/), medan tid och datum på höger sida visas (https://www.timeanddate.com/clocks/free.html och https://www.arclab.com/en/kb/htmlcss/display-date-time-javascript-php-ssi.html). Väderprognosen är från denna sida (https://www.1a-vreme.si/vremensko-okno/), som ger prognoswidget för slovenska städer, men jag antar att widgets för andra länder också kan hittas på internet. Temperatur samlas in med sensorn AM2302 (https://www.ebay.com/sch/i.html?_from=R40&_trksid=m570.l1313&_nkw=AM2302+&_sacat=0), som förklaras i slutet av detta kapitel. På botten är en enkel daglig nedräkningstimer som visar hur många dagar som är kvar till någon händelse (intressant för mina barn att veta, hur många dagar kommer de att behöva vänta på något). I den övre högra kanten finns MetaSlider-plugin (https://wordpress.org/plugins/ml-slider/), som slumpmässigt glider till utvalda bilder av min familj. Dessutom har jag använt plugin för bakgrundsreglage (https://sl.wordpress.org/plugins/background-slider-master/) för att visa mig en slumpmässig bild för en trevligare bakgrund.

Som nämnts tidigare samlas inomhustemperaturen med sensorn AM2302. Det finns många handledning om hur man får temperatur, jag följde den här: https://www.modmypi.com/blog/am2302-temphumidity-sensor. Senare flyttade jag den här sensorn till en annan Raspberry Pi med Home Assistant som körs på den, eftersom det är lättare att läsa och publicera värden med sin DHT-sensorkomponent (https://www.home-assistant.io/components/sensor.dht/). Home Assistant kan också samla utomhustemperatur med olika väderkomponenter, jag använde YR.no-komponent (https://www.home-assistant.io/components/sensor.yr/). Med det skrev jag ett automatiseringsskript för att samla inomhus/utetemperatur från dessa komponenter och skriva dem till en textfil som sedan visas på min väggkalender. Mer information om Home Assistant finns på hemsidan (https://www.home-assistant.io/).

Steg 4: Valfritt - Stänga av skärmen

Nu har vi vår kalender igång, precis som vi vill. Men vi vill inte att skärmen ska vara påslagen dygnet runt. Vi vill bara att den ska fortsätta när någon är hemma. Vi vill inte heller att den ska slås på mitt på natten, när vi går på toaletten är det för ljust! Så vi kommer att fästa en infraröd sensor för att märka när någon står framför den och lägga till några tidsbegränsningar när den ska slås på.

Observera att mina programmeringskunskaper är ganska begränsade, så följande kan inte vara optimalt, eftersom jag har valt det från olika onlineforum och självstudier, men i huvudsak fungerar det. Ändå är alla rekommendationer fortfarande välkomna. Först börjar vi med test för att slå på/av bildskärmen manuellt. För det skapar vi två filer (till exempel monitor_on.sh och monitor_off.sh) och skriver lite kod i den. Det enklaste sättet att göra detta är att logga in på ditt hallon med SSH och skriva

sudo nano monitor_on.sh

och skriv följande kod

tvservice -föredragen;

startx/usr/bin/graphical_launcher `fgconsole`

Tryck på CTRL+X för att spara och avsluta och skapa sedan den andra filen

sudo nano monitor_off.sh

och skriv följande kod

tvservice -av;

Återigen, tryck på CTRL+X för att spara och avsluta. Gör dessa nyskapade filer körbara:

sudo chmod +x monitor_on.sh

sudo chmod +x monitor_off.sh

För att försöka om dessa kommandon fungerar skriver du

sudo./monitor_off.sh

sudo./monitor_on.sh

Skärmen ska nu stängas av och sättas på i enlighet därmed. Jag har märkt att det på Raspberry Pi 2 tog nästan 10 sekunder för skärmen att slå på. På Raspberry Pi 3 tar det 1-2 sekunder. Därefter kommer vi att ansluta en infraröd sensor, som kommer att utlösa dessa skript. Återigen finns det många handledning om hur du konfigurerar Raspberry Pi och PIR, jag följde den här: https://www.instructables.com/id/PIR-Sensor-Interfacing-With-Raspberry-Pi/. I grund och botten skapar du en fil med nano -editor (till exempel motion_sensor.py) och skriver in lämplig Python -kod i den. Nedan är exemplet på min fil:

importera 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 medan True: i = GPIO.input (17) om i == 0: #När utsignalen från rörelsesensorn är LÅG, stäng av skärmen OFF if not off_off och time.time ()> (last_motion_time + SHUTOFF_DELAY): skriv ut "Inga inkräktare", iturned_off = Truetime.sleep (1) subprocess.call (['/home/pi/monitor_off.sh'], shell = True) elif i == 1: #När utmatning från rörelsesensor är HÖG, sätt på bildskärmen ONprint "Inbrott upptäckt", itime.sleep (1) last_motion_time = time.time () sys.stdout.flush () om avstängd_off och dt.datetime.now (). timme> 5 och dt.datetime. nu (). timme <23: turn_off = Falsesubprocess.call (['/home/pi/monitor_on.sh'], shell = True) om _name_ == '_main _': try: main () utom KeyboardInterrupt: GPIO.cleanup ()

Observera att "GPIO.setup (17, GPIO. IN)" indikerar att utgångsstiftet från PIR är anslutet till stift 17 på Raspberry Pi. Vilken pin är det beror på om du definierar GPIO.setmode (GPIO. BOARD) eller GPIO.setmode (GPIO. BCM). Skillnaden förklaras här: https://raspberrypi.stackexchange.com/questions/12966/what-is-the-difference-between-board-and-bcm-for-gpio-pin-numbering. Jag har # framför GPIO. BOARD, så det ignoreras och GPIO. BCM används.

Lägg märke till raden

SHUTOFF_DELAY = 180 #sekunder

Här anges hur länge monitorn är påslagen sedan den senaste rörelsen detekterades, innan den stängdes av. Detta är användbart eftersom jag inte vill att bildskärmen ska stängas av/ständigt när jag går förbi den, men vill ha den påslagen en stund innan den stängs av. Jag har valt intervallet 180 sekunder, så att monitorn stängs av cirka 3 minuter efter att den senaste rörelsen detekterades.

Slutligen, den här raden

om avstängd_ och dt.datetime.now (). timme> 6 och dt.datetime.now (). timme <23:

säger att monitorn bara slås på mellan 6:00 och 23:00, så det stör mig inte under natten. Linjerna

print "Inga inkräktare", dvs.

och

print "Inträngare upptäckt", i

är endast för att testa skriptet, kan du ta bort dem senare när du får det att fungera. Testa nu skriptet:

sudo python motion_sensor.py

Du bör se meddelanden "Inbrott upptäckt", om du vinkar ovanför sensorn, annars blir det "Inga inkräktare". När det här skriptet testas och fungerar, ställ in det så att det startar vid start:

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

och lägg till följande rad

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

Naturligtvis måste du ange rätt filnamn för Python -skriptet du skapade.

Steg 5: Häng kalendern

När allt är klart är det dags att hänga kalendern på väggen!

Inledningsvis tänkte jag gömma Raspberry Pi bakom LCD -skärmen, så att bara en kabel (likström) skulle behövas. Men eftersom Hallon körs på 5V och LCD -skärmen körs på 12V, skulle jag behöva ytterligare transformator. Raspberry -fodralet är också ganska tjockt, vilket innebär att LCD -skärmen skulle vara på avstånd cirka 3 centimeter från väggen. Så jag övergav detta och lämnade bara LCD -elektronik bakom LCD -skärmen, så att den nu är mindre än 1 centimeter från väggen. Jag skaffade två 5 meter långa kablar, en HDMI och en 5, 5 mm för likström. Båda kablarna är vita, som väggen, vilket betyder att de inte sticker ut mycket. Jag har monterat LCD -skärmen på väggen och lagt hallon ovanpå kylskåpet på motsatt vägg, så det är i grunden dolt, men ändå lättillgängligt.

Rekommenderad: