Obsah:

Inteligentný nástenný kalendár: 5 krokov
Inteligentný nástenný kalendár: 5 krokov

Video: Inteligentný nástenný kalendár: 5 krokov

Video: Inteligentný nástenný kalendár: 5 krokov
Video: Урок польского языка 6. Время, часы 2024, Júl
Anonim
Inteligentný nástenný kalendár
Inteligentný nástenný kalendár

S manželkou sme mali klasický papierový nástenný kalendár, na ktorý sme si poznačili dôležité dátumy. Kalendár Google používame na našich inteligentných telefónoch aj na označovanie udalostí, takže to znamenalo dvojnásobnú prácu. Rozhodol som sa preto vytvoriť nejaký inteligentný nástenný kalendár, ktorý bude zobrazovať naše pripomenutia, udalosti a niektoré ďalšie údaje. Keďže mám okolo seba rozvalené rôzne staré elektronické súčiastky, mojim cieľom bolo ich znova použiť čo najviac a zostaviť kalendár s čo najmenšími nákladmi.

V tomto tutoriále vám ukážem, ako vytvoriť inteligentný nástenný kalendár, zobrazujúci udalosti z niekoľkých účtov Google. Tiež zobrazí čas, dátum, počasie, teplotu a niektoré ďalšie informácie. Napájať ho bude počítač Raspberry Pi s pripojeným pohybovým senzorom Passive Infrared Sensor (PIR), takže sa displej zapne, keď je v miestnosti zaznamenaný pohyb, ale vypne sa po niekoľkých minútach nečinnosti. Tento návod je založený na niekoľkých ďalších návodoch, ktoré som našiel na internete, a kvôli lepšiemu porozumeniu na ne uvediem odkazy. Potrebné sú určité znalosti programovania (HTML, Python, …).

Krok 1: Hardvér

Ako už bolo spomenuté, pokúsil som sa znova použiť toľko starých elektronických dielov, aby sa znížili náklady. Niektoré položky som si však musel kúpiť, preto uvediem zoznam všetkého, čo je k stavbe potrebné.

- Súprava Raspberry Pi. Pôvodne som použil svoj starý model 2 z iného projektu. Fungovalo to, ale úprava a načítanie webovej stránky mi zabralo veľa času, takže som nakoniec prešiel na model 3, ktorý funguje plynulejšie https://www.ebay.com/sch/i.html?_from=R40&_trksid=m570.l1313 & _nkw = malina+pi+súprava & _sacat = 0

- LCD obrazovka. Použil som obrazovku zo starého prenosného počítača, takže som k nej potreboval kúpiť iba dosku ovládača LVDS a napájací zdroj https://www.ebay.com/sch/i.html?_from=R40&_trksid=m570.l1313&_nkw=hdmi+ ovládač+LVDS+doska & _sacat = 0

-Plastový úložný box na elektroniku

- Pasívny infračervený snímač pohybu

- snímač teploty/vlhkosti AM2302

- Čierny plastový nasúvací zakladač na rám LCD

- Rôzne káble (HDMI, 5,5 mm pre napájanie jednosmerným prúdom, spájkovacie prepojovacie káble bez spájkovania, …)

Krok 2: Vytvorenie LCD displeja

Vytvorenie LCD displeja
Vytvorenie LCD displeja
Vytvorenie LCD displeja
Vytvorenie LCD displeja
Vytvorenie LCD displeja
Vytvorenie LCD displeja

Použil som LCD obrazovku zo svojho starého zastaraného prenosného počítača. Existuje niekoľko návodov, ako to urobiť, nasledoval som tento:

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

Demontoval som kryt svojho starého prenosného počítača, vytiahol LCD displej a potom som objednal správnu dosku ovládača LVDS. Poskytol som predajcovi kód výrobku, ktorý sa nachádza na zadnej strane LCD, v mojom prípade je to LP171WE3 (TL) (A2) - viď štítok vpravo dole na poslednom obrázku, a potom mi poslal príslušný LVDS. Upozorňujeme, že budete potrebovať aj napájanie displeja, preto ho požiadajte aj predajcu. Kúpil som si tiež pekný plastový box s rozmermi 14,5 × 7,5 × 2 cm, aby sa pekne zmestil na dosku vodiča a pripevnil ho k zadnej strane LCD.

LCD displej má teraz kovový rám, ktorý nevyzerá pekne. Pôvodne som to striekal na čierno, ale farba sa začala odlupovať. Vzal som teda štyri čierne plastové nasúvacie zakladače, ktoré sa zvyčajne používajú na viazanie listov papiera, podľa toho ich orezal a pripevnil tak, aby zakrývali rám. Vyzeralo to dobre, tak som zapojil všetky káble a zapojil HDMI do svojho starého Raspberry Pi a Voila - fungovalo to! Na displeji sa zobrazil obrázok, takže som bol pripravený prejsť na ďalší krok - aké informácie sa majú na displeji zobraziť a ako ich zobraziť.

Krok 3: Nastavenie softvéru

Keď som hľadal na internete nejaké indície, ako zostaviť kalendár, inšpirovala ma táto stránka https://dakboard.com/site. Poskytujú hotový produkt (displej, počítač a pracovný softvér), ale majú aj vynikajúci návod na riešenie pre domácich majstrov (https://blog.dakboard.com/diy-wall-display/). Odporúčam vám nasledovať tento návod, aspoň pre prvú časť s pokynmi na prípravu a nastavenie systému na Raspberry, aby prehliadač pri načítaní automaticky načítal požadovanú webovú stránku.

Toto fungovalo dobre, ale hľadal som nejaké riešenie, ktoré by bolo možné viac prispôsobiť podľa mojich prianí. Rozhodol som sa vytvoriť si vlastný webový server a vytvoriť webovú stránku, ktorá bude okrem kalendára zobrazovať ďalšie informácie. Vybral som si Wordpress.org, pretože je dobre zdokumentovaný a má dobrú podporu a veľkú komunitu, ktorá vám pomôže. Tu je návod, ako nainštalovať Wordpress na Raspberry Pi: https://projects.raspberrypi.org/en/projects/lamp-web-server-with-wordpress. Keď je nainštalovaný Wordpress, bolo načase navrhnúť moju domovskú stránku. Môžete použiť jednu z mnohých ponúkaných tém alebo návrh od začiatku. Na to sú však potrebné určité znalosti programovania HTML.

Vytvoril som svoju stránku tak, aby sa na ľavej strane zobrazoval kalendár (https://sl.wordpress.org/plugins/google-calendar-events/), na pravej strane sa zobrazoval čas a dátum (https://www.timeanddate.com/clocks/free.html a https://www.arclab.com/en/kb/htmlcss/display-date-time-javascript-php-ssi.html). Predpoveď počasia je z tejto stránky (https://www.1a-vreme.si/vremensko-okno/), ktorá poskytuje widget predpovedí pre slovinské mestá, ale myslím, že widgety pre iné krajiny možno nájsť aj na internete. Teplota sa meria pomocou senzora AM2302 (https://www.ebay.com/sch/i.html?_from=R40&_trksid=m570.l1313&_nkw=AM2302+&_sacat=0), ako je vysvetlené na konci tejto kapitoly. V spodnej časti je jednoduchý denný odpočítavač, ktorý ukazuje, koľko dní zostáva na nejakú udalosť (pre moje deti je zaujímavé vedieť, koľko dní budú musieť na niečo čakať). V pravom hornom okraji je doplnok MetaSlider (https://wordpress.org/plugins/ml-slider/), ktorý náhodne prechádza na vybrané obrázky z mojej rodiny. Okrem toho som použil doplnok Background Slider (https://sl.wordpress.org/plugins/background-slider-master/), aby mi ukázal nejaký náhodný obrázok pre krajšie pozadie.

Ako bolo uvedené vyššie, vnútorná teplota sa meria pomocou senzora AM2302. Existuje mnoho návodov, ako dosiahnuť teplotu, nasledoval som tento: https://www.modmypi.com/blog/am2302-temphumidity-sensor. Neskôr som tento senzor presťahoval do iného Raspberry Pi, na ktorom je spustený Home Assistant, pretože je jednoduchšie čítať a publikovať hodnoty pomocou jeho komponentu DHT Sensor (https://www.home-assistant.io/components/sensor.dht/). Home Assistant môže tiež zbierať vonkajšiu teplotu pomocou rôznych komponentov počasia, ja som použil komponent YR.no (https://www.home-assistant.io/components/sensor.yr/). S tým som napísal skript automatizácie, ktorý z týchto komponentov zozbiera vnútornú/vonkajšiu teplotu a napíše ich do textového súboru, ktorý sa potom zobrazí v mojom nástennom kalendári. Ďalšie informácie o aplikácii Home Assistant nájdete na domovskej stránke (https://www.home-assistant.io/).

Krok 4: Voliteľné - vypnutie displeja

Teraz máme kalendár nastavený a spustený tak, ako sa nám páči. Nechceme však, aby bol displej zapnutý 24/7. Chceme, aby sa zapínala iba vtedy, keď je niekto doma. Tiež nechceme, aby bolo zapnuté uprostred noci, keď ideme na toaletu, je príliš svetlo! Pripojíme teda infračervený snímač, aby si všimol, keď pred ním niekto stojí, a pridáme určité časové limity, kedy by sa mal zapnúť.

Upozorňujeme, že moje programátorské schopnosti sú dosť obmedzené, takže nasledujúce informácie nemôžu byť optimálne, pretože som ich vybral z rôznych online fór a návodov, ale v zásade funguje. Akékoľvek odporúčanie je však stále vítané. Najprv začneme testom na manuálne zapnutie/vypnutie monitora. Za týmto účelom vytvoríme dva súbory (napríklad monitor_on.sh a monitor_off.sh) a napíšeme do nich nejaký kód. Najľahšie to urobíte tak, že sa prihlásite do svojho Raspberry pomocou SSH a napíšete

sudo nano monitor_on.sh

a zadajte nasledujúci kód

tvservice -odporúčané;

startx/usr/bin/graphical_launcher `fgconsole`

Stlačením klávesov CTRL+X uložte a ukončite program a potom vytvorte druhý súbor

sudo nano monitor_off.sh

a zadajte nasledujúci kód

tvservice -vypnuté;

Opäť stlačte CTRL+X na uloženie a ukončenie. Vykonajte spustenie týchto novovytvorených súborov:

sudo chmod +x monitor_on.sh

sudo chmod +x monitor_off.sh

Teraz vyskúšajte, či tieto príkazy fungujú, zadajte

sudo./monitor_off.sh

sudo./monitor_on.sh

Monitor by sa teraz mal zodpovedajúcim spôsobom vypnúť a zapnúť. Všimol som si, že na Raspberry Pi 2 trvalo takmer 10 sekúnd, kým sa monitor zapol. Na Raspberry Pi 3 to trvá 1-2 sekundy. Ďalej pripojíme infračervený senzor, ktorý spustí tieto skripty. Opäť existuje mnoho návodov, ako nastaviť Raspberry Pi a PIR, nasledoval som tento: https://www.instructables.com/id/PIR-Sensor-Interfacing-With-Raspberry-Pi/. V zásade vytvorte súbor pomocou nano editora (napríklad motion_sensor.py) a zadajte doň príslušný kód Pythonu. Nasleduje príklad môjho súboru:

import RPi. GPIO ako GPIOimport timeimport sysimport subprocessimport datetime ako 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 # sekúnd medzitým True: i = GPIO.input (17) ak i == 0: # Keď je výstup zo snímača pohybu NÍZKY, vypnite monitor, ak nie je vypnutý_vypnutý a time.time ()> (last_motion_time + SHUTOFF_DELAY): vytlačte „Žiadni votrelci“, iturned_off = Truetime.sleep (1) subprocess.call (['/home/pi/monitor_off.sh'], shell = True) elif i == 1: #Pri výstupe zo snímača pohybu je VYSOKÁ, zapnite monitor ONprint „Zistený narušiteľ“, itime.sleep (1) last_motion_time = time.time () sys.stdout.flush () ak je vypnuté_vypnuté 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 () okrem KeyboardInterrupt: GPIO.cleanup ()

Všimnite si toho, že „GPIO.setup (17, GPIO. IN)“znamená, že výstupný pin z PIR je pripojený na pin 17 na Raspberry Pi. Ktorý pin to je, závisí od toho, či definujete GPIO.setmode (GPIO. BOARD) alebo GPIO.setmode (GPIO. BCM). Rozdiel je vysvetlený tu: https://raspberrypi.stackexchange.com/questions/12966/what-is-the-difference-between-board-and-bcm-for-gpio-pin-numbering. Mám # pred GPIO. BOARD, takže je ignorované a používa sa GPIO. BCM.

Všimnite si čiaru

SHUTOFF_DELAY = 180 #sekúnd

Tu je uvedené, ako dlho je monitor zapnutý od detekcie posledného pohybu, než sa vypne. Je to užitočné, pretože nechcem, aby sa monitor neustále vypínal/zapínal, keď okolo neho prechádzam, ale chcem ho nechať nejaký čas zapnutý, kým sa nevypne. Vybral som interval 180 sekúnd, aby sa monitor vypol asi 3 minúty po detekcii posledného pohybu.

Nakoniec tento riadok

ak je vypnuté_ a dt.datetime.now (). hodina> 6 a dt.datetime.now (). hodina <23:

uvádza, že monitor sa zapína iba medzi 6:00 a 23:00, takže ma v noci neruší. Čiary

vytlačiť „Žiadni votrelci“, t.j.

a

vytlačiť „Zistený narušiteľ“, t.j.

sú určené iba na testovanie skriptu, môžete ich neskôr odstrániť, keď to bude fungovať. Teraz vyskúšajte skript:

sudo python motion_sensor.py

Mali by ste vidieť správy „Zistený narušiteľ“, ak mávnete nad senzorom, inak to bude „Žiadni votrelci“. Keď je tento skript testovaný a funguje, nastavte ho na spustenie pri štarte:

sudo nano ~/.config/lxsession/LXDE-pi/automatické spustenie

a pridajte nasledujúci riadok

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

Samozrejme musíte zadať správny názov súboru skriptu Python, ktorý ste vytvorili.

Krok 5: Zaveste kalendár

Keď je všetko pripravené, je čas zavesiť kalendár na stenu!

Pôvodne som uvažoval o skrytí Raspberry Pi za LCD displej, aby bol potrebný iba jeden kábel (jednosmerný prúd). Ale keďže Raspberry beží na 5V a LCD displej beží na 12V, potreboval by som prídavný transformátor. Puzdro Raspberry je tiež dosť hrubé, čo znamená, že displej LCD by bol od steny vzdialený asi 3 centimetre. Preto som to opustil a nechal som za LCD iba elektroniku LCD, takže teraz je od steny vzdialený menej ako 1 centimeter. Získal som dva 5 metrov dlhé káble, jeden HDMI a jeden 5,5 mm na napájanie jednosmerným prúdom. Oba káble sú biele, ako stena, čo znamená, že príliš nevynikajú. Namontoval som LCD na stenu a položil Raspberry na chladničku na protiľahlej stene, takže je v zásade skrytý, ale stále ľahko prístupný.

Odporúča: