Obsah:

Chytrý nástěnný kalendář: 5 kroků
Chytrý nástěnný kalendář: 5 kroků

Video: Chytrý nástěnný kalendář: 5 kroků

Video: Chytrý nástěnný kalendář: 5 kroků
Video: Recenze: chytré hodinky TicWatch Pro 5 – vše co potřebujete vědět 2024, Listopad
Anonim
Chytrý nástěnný kalendář
Chytrý nástěnný kalendář

Moje žena a já jsme měli klasický papírový nástěnný kalendář, na který jsme označili důležitá data. Kalendář Google na našich chytrých telefonech používáme také k označování událostí, takže to znamenalo dvojí práci. Rozhodl jsem se tedy vytvořit nějaký inteligentní nástěnný kalendář, který bude zobrazovat naše připomenutí, události a některá další data. Vzhledem k tomu, že se mi povalují různé staré elektronické součástky, bylo mým cílem znovu jich použít co nejvíce a sestavit kalendář s co nejmenšími náklady.

V tomto tutoriálu vám ukážu, jak vytvořit inteligentní nástěnný kalendář, zobrazující události z několika účtů Google. Zobrazí také čas, datum, počasí, teplotu a některé další informace. Bude poháněn počítačem Raspberry Pi s připojeným pohybovým senzorem PIR (Passive Infrared Sensor), takže se displej zapne, když je v místnosti detekován pohyb, ale vypne se po několika minutách nečinnosti. Tento tutoriál je založen na několika dalších tutoriálech, které jsem našel na internetu, a poskytnu na ně odkazy pro lepší pochopení. Jsou nutné základní znalosti programování (HTML, Python, …).

Krok 1: Hardware

Jak již bylo zmíněno dříve, pokusil jsem se znovu použít tolik starých elektronických součástek, abych udržel nízké náklady. Nicméně některé položky jsem musel koupit, takže uvedu vše, co je pro stavbu nutné.

- Sada Raspberry Pi. Zpočátku jsem použil svůj starý model 2 z jiného projektu. Fungovalo to, ale úpravy a opětovné načtení webové stránky mi zabraly spoustu času, takže jsem nakonec přešel na model 3, který funguje plynuleji https://www.ebay.com/sch/i.html?_from=R40&_trksid=m570.l1313 & _nkw = malina+pi+sada & _sacat = 0

- LCD obrazovka. Použil jsem obrazovku ze svého starého notebooku, takže jsem k ní potřeboval koupit pouze ovladač LVDS a napájecí zdroj https://www.ebay.com/sch/i.html?_from=R40&_trksid=m570.l1313&_nkw=hdmi+ ovladač+LVDS+deska & _sacat = 0

-Plastový úložný box na elektroniku

- Pasivní infračervený snímač pohybu

- Senzor teploty/vlhkosti AM2302

- Černý plastový nasouvací pořadač pro rámeček LCD

- Různé kabely (HDMI, 5,5 mm pro stejnosměrné napájení, pájecí propojovací kabely bez páječky, …)

Krok 2: Vytvoření LCD displeje

Vytvoření LCD displeje
Vytvoření LCD displeje
Vytvoření LCD displeje
Vytvoření LCD displeje
Vytvoření LCD displeje
Vytvoření LCD displeje

Použil jsem LCD obrazovku ze svého starého zastaralého notebooku. Existuje několik návodů, jak to udělat, následoval jsem tento:

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

Demontoval jsem kryt svého starého notebooku, vytáhl LCD displej a poté objednal správnou desku ovladače LVDS. Poskytl jsem prodejci kód produktu, který lze nalézt na zadní straně LCD, v mém případě je to LP171WE3 (TL) (A2) - viz štítek vpravo dole na posledním obrázku, a poté mi poslal příslušný LVDS. Vezměte prosím na vědomí, že budete také potřebovat napájecí zdroj pro displej, proto požádejte prodejce, aby jej také poslal. Také jsem koupil pěkný plastový box o rozměrech 14,5 × 7,5 × 2 cm, aby pěkně zapadl na desku řidiče a připevnil jej k zadní straně LCD.

Nyní má LCD displej kovový rám, který nevypadá hezky. Zpočátku jsem to nastříkal černou barvou, ale barva se začala odlupovat. Vzal jsem tedy čtyři černé plastové nasouvací pořadače, které se obvykle používají pro vazbu listů papíru, podle toho je ořízl a připevnil, aby zakryl rám. Vypadalo to dobře, tak jsem připojil všechny kabely, zapojil HDMI do svého starého Raspberry Pi a Voila - fungovalo to! Na displeji se zobrazoval obrázek, takže jsem byl připraven přejít k dalšímu kroku - jaké informace zobrazit na displeji a jak je zobrazit.

Krok 3: Nastavení softwaru

Když jsem hledal na internetu nějaké vodítka, jak sestavit kalendář, inspirovala mě tato stránka https://dakboard.com/site. Poskytují hotový produkt (displej, počítač a pracovní software), ale mají také vynikající výukový program pro kutilské řešení (https://blog.dakboard.com/diy-wall-display/). Doporučuji vám tento tutoriál dodržet, alespoň u první části s pokyny k přípravě a nastavení systému na Raspberry, aby prohlížeč při načítání automaticky načítal požadovanou webovou stránku.

To fungovalo dobře, ale hledal jsem nějaké řešení, které by bylo možné více přizpůsobit podle mých přání. Rozhodl jsem se nastavit svůj vlastní webový server a vytvořit webovou stránku, která bude kromě kalendáře zobrazovat další informace. Vybral jsem Wordpress.org, protože je dobře zdokumentovaný a má dobrou podporu a velkou komunitu, která vám pomůže. Zde je návod, jak nainstalovat Wordpress na Raspberry Pi: https://projects.raspberrypi.org/en/projects/lamp-web-server-with-wordpress. S nainstalovaným Wordpressem bylo načase navrhnout moji domovskou stránku. Můžete použít jedno z mnoha poskytnutých motivů nebo navrhnout úplně od začátku. Každopádně jsou k tomu potřeba určité znalosti programování HTML.

Vytvořil jsem svou stránku tak, aby se na levé straně zobrazoval kalendář (https://sl.wordpress.org/plugins/google-calendar-events/), zatímco na pravé straně se zobrazoval čas a datum (https://www.timeanddate.com/clocks/free.html a https://www.arclab.com/en/kb/htmlcss/display-date-time-javascript-php-ssi.html). Předpověď počasí je z této stránky (https://www.1a-vreme.si/vremensko-okno/), která poskytuje widget předpovědí pro slovinská města, ale myslím, že widgety pro jiné země lze nalézt také na internetu. Teplota se zaznamenává pomocí senzoru AM2302 (https://www.ebay.com/sch/i.html?_from=R40&_trksid=m570.l1313&_nkw=AM2302+&_sacat=0), jak je vysvětleno na konci této kapitoly. Ve spodní části je jednoduchý denní odpočítávací časovač, který zobrazuje, kolik dní zbývá do nějaké události (zajímavé pro mé děti vědět, kolik dní budou muset na něco čekat). V pravém horním okraji je plugin MetaSlider (https://wordpress.org/plugins/ml-slider/), který náhodně přejde na vybrané obrázky mé rodiny. Navíc jsem použil plugin Background Slider (https://sl.wordpress.org/plugins/background-slider-master/), aby mi ukázal nějaký náhodný obrázek pro hezčí pozadí.

Jak již bylo zmíněno dříve, vnitřní teplota se snímá pomocí senzoru AM2302. Existuje mnoho návodů, jak dosáhnout teploty, sledoval jsem tento: https://www.modmypi.com/blog/am2302-temphumidity-sensor. Později jsem tento senzor přesunul na jiný Raspberry Pi s běžícím Home Assistant, protože je snazší číst a publikovat hodnoty pomocí jeho komponenty DHT Sensor (https://www.home-assistant.io/components/sensor.dht/). Home Assistant může také shromažďovat venkovní teplotu pomocí různých komponent počasí, já jsem použil komponentu YR.no (https://www.home-assistant.io/components/sensor.yr/). S tím jsem napsal automatizační skript, který shromažďuje vnitřní/venkovní teplotu z těchto komponent a zapisuje je do textového souboru, který se pak zobrazí v mém nástěnném kalendáři. Další informace o Home Assistant naleznete na domovské stránce (https://www.home-assistant.io/).

Krok 4: Volitelné - Vypnutí displeje

Nyní máme svůj kalendář nastavený a spuštěný, přesně tak, jak ho máme rádi. Nechceme však mít displej zapnutý 24/7. Chceme, aby se zapínala pouze tehdy, když je někdo doma. Také nechceme, aby byl zapnutý uprostřed noci, když jdeme na toaletu, je příliš jasné! Připojíme tedy infračervený senzor, aby si všiml, když před ním někdo stojí, a přidáme nějaké časové limity, kdy by se měl zapnout.

Vezměte prosím na vědomí, že moje programovací schopnosti jsou poměrně omezené, takže následující nemůže být optimální, protože jsem jej vybral z různých online fór a tutoriálů, ale v zásadě funguje. Přesto je jakékoli doporučení stále vítáno. Nejprve začneme testem pro ruční zapnutí/vypnutí monitoru. Za tímto účelem vytvoříme dva soubory (například monitor_on.sh a monitor_off.sh) a napíšeme do nich nějaký kód. Nejjednodušší způsob, jak to udělat, je přihlásit se do vašeho Raspberry pomocí SSH a zadat

sudo nano monitor_on.sh

a zadejte následující kód

tvservice -doporučováno;

startx/usr/bin/graphical_launcher `fgconsole`

Stisknutím kláves CTRL+X uložte a ukončete program a poté vytvořte druhý soubor

sudo nano monitor_off.sh

a zadejte následující kód

tvservice --off;

Opět stiskněte CTRL+X pro uložení a ukončení. Nastavit tyto nově vytvořené soubory jako spustitelné:

sudo chmod +x monitor_on.sh

sudo chmod +x monitor_off.sh

Nyní zkuste, zda tyto příkazy fungují, zadejte

sudo./monitor_off.sh

sudo./monitor_on.sh

Monitor by se nyní měl odpovídajícím způsobem vypnout a zapnout. Všiml jsem si, že na Raspberry Pi 2 trvalo téměř 10 sekund, než se monitor zapnul. Na Raspberry Pi 3 to trvá 1–2 sekundy. Dále připojíme infračervený senzor, který spustí tyto skripty. Opět existuje mnoho návodů, jak nastavit Raspberry Pi a PIR, následoval jsem tento: https://www.instructables.com/id/PIR-Sensor-Interfacing-With-Raspberry-Pi/. V zásadě vytvořte soubor pomocí nano editoru (například motion_sensor.py) a zadejte do něj příslušný kód Pythonu. Níže je uveden příklad mého souboru:

import RPi. GPIO jako GPIOimport timeimport sysimport subprocessimport datetime jako dtimport osGPIO.setwarnings (False) # GPIO.setmode (GPIO. BOARD) GPIO.setmode (GPIO. BCM) GPIO.setup (17, GPIO. IN) #PIRturned_off = Falselast_mot time.time () SHUTOFF_DELAY = 180 # sekund mezitím True: i = GPIO.input (17) pokud i == 0: # Když je výstup ze snímače pohybu NÍZKÝ, vypněte monitor, pokud není vypnutý_off a time.time ()> (last_motion_time + SHUTOFF_DELAY): tisk "Žádní vetřelci", iturned_off = Truetime.sleep (1) subprocess.call (['/home/pi/monitor_off.sh'], shell = True) elif i == 1: #Při výstupu ze snímače pohybu je VYSOKÝ, zapněte monitor ONprint „Detekován narušitel“, itime.sleep (1) last_motion_time = time.time () sys.stdout.flush () pokud je vypnuto_vypnuto a dt.datetime.now (). hodina> 5 a dt.datetime. now (). hour <23: turn_off = Falsesubprocess.call (['/home/pi/monitor_on.sh'], shell = True) if _name_ == '_main _': try: main () kromě KeyboardInterrupt: GPIO.cleanup ()

Všimněte si, že „GPIO.setup (17, GPIO. IN)“znamená, že výstupní pin z PIR je připojen ke kolíku 17 na Raspberry Pi. Který pin to závisí, zda definujete GPIO.setmode (GPIO. BOARD) nebo GPIO.setmode (GPIO. BCM). Rozdíl je vysvětlen zde: https://raspberrypi.stackexchange.com/questions/12966/what-is-the-difference-between-board-and-bcm-for-gpio-pin-numbering. Mám # před GPIO. BOARD, takže je ignorováno a používá se GPIO. BCM.

Všimněte si řádku

SHUTOFF_DELAY = 180 #sekund

Zde je uvedeno, jak dlouho je monitor zapnutý od detekce posledního pohybu, než se vypne. To je užitečné, protože nechci, aby se monitor neustále vypínal/zapínal, když kolem něj procházím, ale chtěl bych ho nechat nějakou dobu zapnutý, než se vypne. Zvolil jsem interval 180 sekund, takže se monitor vypne asi 3 minuty po detekci posledního pohybu.

Nakonec tento řádek

je -li vypnuto_vypnuto a dt.datetime.now (). hodina> 6 a dt.datetime.now (). hodina <23:

uvádí, že se monitor zapíná pouze mezi 6:00 a 23:00, takže mě v noci neruší. Čáry

tisknout „Žádní vetřelci“, t

a

vytisknout „Detekován narušitel“, t

jsou určeny pouze k testování skriptu, můžete je později smazat, až to bude fungovat. Nyní otestujte skript:

sudo python motion_sensor.py

Pokud zamáváte nad senzorem, měli byste vidět zprávy „Detekován narušitel“, jinak to bude „Žádní vetřelci“. Když je tento skript testován a funguje, nastavte ho tak, aby začínal při spuštění:

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

a přidejte následující řádek

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

Samozřejmě musíte zadat správný název souboru skriptu Python, který jste vytvořili.

Krok 5: Zavěste kalendář

Když je vše nastaveno, je čas zavěsit kalendář na zeď!

Zpočátku jsem uvažoval o skrytí Raspberry Pi za LCD displej, takže bude potřeba pouze jeden kabel (stejnosměrné napájení). Ale protože Raspberry běží na 5V a LCD displej běží na 12V, potřeboval bych další transformátor. Pouzdro Raspberry je také poměrně silné, což znamená, že LCD bude od zdi vzdáleno asi 3 centimetry. Opustil jsem to a nechal jsem za LCD pouze elektroniku LCD, takže je nyní méně než 1 centimetr od zdi. Získal jsem dva 5 metrů dlouhé kabely, jeden HDMI a jeden 5, 5 mm pro napájení stejnosměrným proudem. Oba kabely jsou bílé, jako zeď, což znamená, že příliš nevyčnívají. Namontoval jsem LCD na zeď a položil Raspberry na chladničku na protější stěně, takže je v podstatě skrytý, ale přesto snadno přístupný.

Doporučuje: