Satura rādītājs:

Viedais sienas kalendārs: 5 soļi
Viedais sienas kalendārs: 5 soļi

Video: Viedais sienas kalendārs: 5 soļi

Video: Viedais sienas kalendārs: 5 soļi
Video: 5 февраля судьбоносный день, наберите стакан воды и скажите эти слова. Народные приметы на Агафья 2024, Jūlijs
Anonim
Gudrs sienas kalendārs
Gudrs sienas kalendārs

Mums ar sievu bija klasisks papīra sienas kalendārs, kurā mēs atzīmējām svarīgus datumus. Notikumu atzīmēšanai mēs arī izmantojam Google kalendāru savos viedtālruņos, tāpēc tas nozīmēja dubultu darbu. Tāpēc es nolēmu izveidot sava veida viedo sienas kalendāru, kurā tiks parādīti mūsu atgādinājumi, notikumi un daži citi dati. Tā kā man ir dažādas vecas elektroniskās detaļas, mans mērķis bija pēc iespējas vairāk tās izmantot un izveidot kalendāru ar pēc iespējas mazākām izmaksām.

Šajā apmācībā es jums parādīšu, kā izveidot viedo sienas kalendāru, parādot notikumus no vairākiem Google kontiem. Tas arī parādīs laiku, datumu, laika apstākļus, temperatūru un papildu informāciju. To darbinās dators Raspberry Pi, kuram ir pievienots kustības sensors PIR (Passive Infrared Sensor), lai displejs ieslēgtos, kad telpā tiek konstatēta kustība, bet izslēdzas pēc dažu minūšu neaktivitātes. Šī apmācība ir balstīta uz vairākām citām pamācībām, kuras atradu internetā, un es sniegšu saites uz tām, lai labāk izprastu. Nepieciešamas dažas programmēšanas pamatzināšanas (HTML, Python, …).

1. darbība: aparatūra

Kā minēts iepriekš, es mēģināju atkārtoti izmantot tik daudz veco elektronisko detaļu, lai samazinātu izmaksas. Tomēr dažas lietas man bija jāpērk, tāpēc es uzskaitīšu visu, kas nepieciešams būvniecībai.

- Aveņu Pi komplekts. Sākotnēji es izmantoju savu veco modeli 2 no kāda cita projekta. Tas darbojās, taču tīmekļa lapu rediģēšana un pārkraušana prasīja daudz laika, tāpēc es beidzot pārgāju uz 3. modeli, kas darbojas raitāk https://www.ebay.com/sch/i.html?_from=R40&_trksid=m570.l1313 & _nkw = aveņu+pi+komplekts & _sacat = 0

- LCD ekrāns. Es izmantoju ekrānu no sava vecā klēpjdatora, tāpēc man vajadzēja tikai iegādāties LVDS draivera paneli un barošanas avotu https://www.ebay.com/sch/i.html?_from=R40&_trksid=m570.l1313&_nkw=hdmi+ draiveris+LVDS+dēlis & _sacat = 0

-Plastmasas uzglabāšanas kaste elektronikai

- Pasīvais infrasarkanais kustības sensors

- AM2302 temperatūras/mitruma sensors

- Melna plastmasas uzvelkama saistviela LCD rāmim

- Dažādi kabeļi (HDMI, 5,5 mm līdzstrāvas padevei, lodēšanas paneļa džempera kabeļi, …)

2. darbība: LCD displeja izveide

LCD displeja izveide
LCD displeja izveide
LCD displeja izveide
LCD displeja izveide
LCD displeja izveide
LCD displeja izveide

Es izmantoju LCD ekrānu no sava vecā novecojušā klēpjdatora. Ir vairākas apmācības, kā to izdarīt, es sekoju šim:

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

Es demontēju sava vecā klēpjdatora vāku, izņēmu LCD displeju un pēc tam pasūtīju pareizo LVDS draivera paneli. Es pārdevējam norādīju produkta kodu, kas bija atrodams LCD aizmugurē, manā gadījumā tas ir LP171WE3 (TL) (A2) - skatīt apakšējo labo etiķeti pēdējā attēlā, un tad viņš man atsūtīja atbilstošo LVDS. Lūdzu, ņemiet vērā, ka displejam būs nepieciešams arī barošanas avots, tāpēc lūdziet arī pārdevējam to nosūtīt. Es arī iegādājos jauku 14,5 × 7,5 × 2 cm plastmasas kasti, lai tā labi ietilptu vadītāja panelī un piestiprinātu to LCD aizmugurē.

Tagad LCD displejam ir metāla rāmis, kas neizskatās skaisti. Sākotnēji es to izsmidzināju ar melnu krāsu, bet krāsa sāka lobīties. Tāpēc es paņēmu četras melnas plastmasas uzvelkamas saistvielas, kuras parasti izmanto papīra lapu iesiešanai, attiecīgi tās apgriezu un piestiprināju, lai nosegtu rāmi. Tas izskatījās labi, tāpēc es pievienoju visus kabeļus, pievienoju HDMI savam vecajam Raspberry Pi un Voila - tas strādāja! Displejā bija redzams attēls, tāpēc es biju gatavs pāriet uz nākamo soli - kādu informāciju parādīt displejā un kā to parādīt.

3. darbība: programmatūras iestatīšana

Kad internetā meklēju norādes, kā izveidot kalendāru, mani iedvesmoja šī lapa https://dakboard.com/site. Tie nodrošina gatavo produktu (displeju, datoru un darba programmatūru), taču tiem ir arī lieliska apmācība par DIY risinājumu (https://blog.dakboard.com/diy-wall-display/). Es iesaku jums sekot šai apmācībai, vismaz pirmajā daļā ar norādījumiem par sistēmas sagatavošanu un iestatīšanu Raspberry, lai pārlūkprogramma automātiski ielādētu vēlamo tīmekļa lapu sāknēšanas laikā.

Tas strādāja labi, tomēr es meklēju kādu risinājumu, kuru varētu vairāk pielāgot atbilstoši manām vēlmēm. Esmu nolēmis izveidot savu tīmekļa serveri un izveidot tīmekļa lapu, kurā papildus kalendāram tiks parādīta papildu informācija. Es izvēlējos Wordpress.org, jo tas ir labi dokumentēts, un tam ir labs atbalsts un liela kopiena, lai jums palīdzētu. Šeit ir apmācība par Wordpress instalēšanu Raspberry Pi: https://projects.raspberrypi.org/en/projects/lamp-web-server-with-wordpress. Kad Wordpress bija instalēts, bija pienācis laiks izveidot savu mājas lapu. Varat izmantot vienu no daudzajām piedāvātajām tēmām vai noformēt no jauna. Lai vai kā, tam ir nepieciešamas dažas HTML programmēšanas zināšanas.

Esmu izveidojis savu lapu tā, lai kreisajā pusē tiktu parādīts kalendārs (https://sl.wordpress.org/plugins/google-calendar-events/), bet labajā pusē-laiks un datums (https://www.timeanddate.com/clocks/free.html un https://www.arclab.com/en/kb/htmlcss/display-date-time-javascript-php-ssi.html). Laika prognoze ir no šīs lapas (https://www.1a-vreme.si/vremensko-okno/), kas nodrošina prognožu logrīku Slovēnijas pilsētām, taču, iespējams, arī citu valstu logrīkus var atrast internetā. Temperatūra tiek savākta, izmantojot AM2302 sensoru (https://www.ebay.com/sch/i.html?_from=R40&_trksid=m570.l1313&_nkw=AM2302+&_sacat=0), kā paskaidrots šīs nodaļas beigās. Apakšā ir vienkāršs ikdienas atpakaļskaitīšanas taimeris, kas parāda, cik dienas ir atlikušas līdz kādam notikumam (maniem bērniem ir interesanti zināt, cik dienas viņiem kaut kas jāgaida). Augšējā labajā malā ir MetaSlider spraudnis (https://wordpress.org/plugins/ml-slider/), kas nejauši tiek pārvietots uz atlasītiem manas ģimenes attēliem. Turklāt esmu izmantojis fona slīdņa spraudni (https://sl.wordpress.org/plugins/background-slider-master/), lai parādītu man nejaušu attēlu, lai iegūtu labāku fonu.

Kā minēts iepriekš, iekštelpu temperatūra tiek savākta, izmantojot AM2302 sensoru. Ir daudz pamācību par to, kā iegūt temperatūru, es sekoju šim: https://www.modmypi.com/blog/am2302-temphumidity-senor. Vēlāk šo sensoru pārvietoju uz citu Raspberry Pi, kurā darbojas Home Assistant, jo ir vieglāk lasīt un publicēt vērtības, izmantojot tā DHT sensora komponentu (https://www.home-assistant.io/components/sensor.dht/). Mājas palīgs var arī savākt āra temperatūru, izmantojot dažādus laika apstākļu komponentus, es izmantoju komponentu YR.no (https://www.home-assistant.io/components/sensor.yr/). Ar to es uzrakstīju automatizācijas skriptu, lai no šīm sastāvdaļām apkopotu iekštelpu/āra temperatūru un ierakstītu tās teksta failā, kas pēc tam tiek parādīts manā sienas kalendārā. Plašāku informāciju par mājas palīgu skatiet mājas lapā (https://www.home-assistant.io/).

4. solis: pēc izvēles - displeja izslēgšana

Tagad mūsu kalendārs ir izveidots un darbojas tieši tā, kā mums patīk. Bet mēs nevēlamies, lai displejs tiktu ieslēgts visu diennakti. Mēs vēlamies to ieslēgt tikai tad, kad kāds ir mājās. Mēs arī nevēlamies, lai tas tiktu ieslēgts nakts vidū, kad mēs ejam uz tualeti, tas ir pārāk gaišs! Tāpēc mēs pievienosim infrasarkano sensoru, lai pamanītu, kad kāds stāv priekšā, un pievienosim dažus laika ierobežojumus, kad tam vajadzētu ieslēgties.

Lūdzu, ņemiet vērā, ka manas programmēšanas prasmes ir diezgan ierobežotas, tāpēc tālāk minētais nevar būt optimāls, jo esmu to izvēlējies no dažādiem tiešsaistes forumiem un apmācībām, taču būtībā tas darbojas. Tomēr jebkurš ieteikums joprojām ir apsveicams. Vispirms sāksim ar testu, lai manuāli ieslēgtu/izslēgtu monitoru. Šim nolūkam mēs izveidosim divus failus (piemēram, monitor_on.sh un monitor_off.sh) un ierakstīsim tajā kodu. Vienkāršākais veids, kā to izdarīt, ir pieteikties savā Raspberry, izmantojot SSH un ierakstiet

sudo nano monitor_on.sh

un ierakstiet šādu kodu

TV pakalpojums -vēlamais;

startx/usr/bin/graphical_launcher `fgconsole`

Nospiediet CTRL+X, lai saglabātu un izietu, pēc tam izveidojiet otro failu

sudo nano monitor_off.sh

un ierakstiet šādu kodu

tvservice -izslēgts;

Vēlreiz nospiediet CTRL+X, lai saglabātu un izietu. Padariet šos jaunizveidotos failus izpildāmus:

sudo chmod +x monitor_on.sh

sudo chmod +x monitor_off.sh

Tagad, lai izmēģinātu, vai šīs komandas darbojas, ierakstiet

sudo./monitor_off.sh

sudo./monitor_on.sh

Tagad monitoram vajadzētu attiecīgi izslēgties un ieslēgties. Esmu ievērojis, ka Raspberry Pi 2 bija nepieciešamas gandrīz 10 sekundes, lai monitors ieslēgtos. Raspberry Pi 3 tas aizņem 1-2 sekundes. Tālāk mēs pievienosim infrasarkano sensoru, kas aktivizēs šos skriptus. Atkal ir daudz pamācību, kā iestatīt Raspberry Pi un PIR, es sekoju šim: https://www.instructables.com/id/PIR-Sensor-Interfacing-With-Raspberry-Pi/. Būtībā izveidojiet failu, izmantojot nano redaktoru (piemēram, motion_sensor.py), un ierakstiet tajā atbilstošo Python kodu. Zemāk ir mana faila piemērs:

importēt RPi. GPIO kā GPIOimportēt laikuimportēt sysimportēt apakšprocesuimportēt datuma laiku kā dtimportēt osGPIO.setwarnings (nepatiess) # GPIO.setmode (GPIO. BOARD) GPIO.setmode (GPIO. BCM) GPIO.setup (17, GPIO. IN) #PIRturned_off = False time.time () SHUTOFF_DELAY = 180 # secondswhile True: i = GPIO.input (17), ja i == 0: # Kad izeja no kustības sensora ir LOW, izslēdziet monitoru OFF, ja nav izslēgts_ un laiks. laiks ()> (last_motion_time + SHUTOFF_DELAY): drukāt "Nav iebrucēju", iturned_off = Truetime.sleep (1) subprocess.call (['/home/pi/monitor_off.sh'], apvalks = True) elif i == 1: #Kad tiek izvadīts no kustības sensora ir HIGH, ieslēdziet monitoru ONprint "Atklāts ielauzējs", itime.sleep (1) last_motion_time = time.time () sys.stdout.flush (), ja ieslēgts_izsl. un dt.datetime.now (). stunda> 5 un dt.datetime. tagad (). stunda <23: Turn_off = Falsesubprocess.call (['/home/pi/monitor_on.sh'], apvalks = True), ja _name_ == '_main _': try: main () izņemot KeyboardInterrupt: GPIO.cleanup ()

Ņemiet vērā, ka “GPIO.setup (17, GPIO. IN)” norāda, ka izejas tapa no PIR ir savienota ar Raspberry Pi 17. tapu. Kura tapa ir atkarīga no tā, vai definējat GPIO.setmode (GPIO. BOARD) vai GPIO.setmode (GPIO. BCM). Atšķirība ir izskaidrota šeit: https://raspberrypi.stackexchange.com/questions/12966/what-is-the-difference-between-board-and-bcm-for-gpio-pin-numbering. GPIO. BOARD priekšā ir #, tāpēc tas tiek ignorēts un tiek izmantots GPIO. BCM.

Ievērojiet līniju

SHUTOFF_DELAY = 180 #sekundes

Šeit ir norādīts, cik ilgi monitors ir ieslēgts kopš pēdējās kustības noteikšanas, pirms tas tiek izslēgts. Tas ir noderīgi, jo es nevēlos, lai, ejot garām, monitors nepārtraukti izslēdzas/ieslēdzas, bet vēlos to ieslēgt kādu laiku, pirms tas tiek izslēgts. Esmu izvēlējies 180 sekunžu intervālu, lai monitors izslēgtos apmēram 3 minūtes pēc pēdējās kustības noteikšanas.

Visbeidzot, šī līnija

ja ieslēgts_izslēgts un dt.datetime.now (). stunda> 6 un dt.datetime.now (). stunda <23:

norāda, ka monitors ieslēdzas tikai no 6:00 līdz 23:00, tāpēc tas mani netraucē nakts laikā. Līnijas

drukāt "Nav iebrucēju", t

un

drukāt "Ielauzējs konstatēts", t

ir paredzēti tikai skripta pārbaudei, varat tos izdzēst vēlāk, kad tas darbosies. Tagad pārbaudiet skriptu:

sudo python motion_sensor.py

Ja viļņojaties virs sensora, jums vajadzētu redzēt ziņojumus “Ielauzējs konstatēts”, pretējā gadījumā tas būs “Nav iebrucēju”. Kad šis skripts ir pārbaudīts un darbojas, iestatiet tā sākšanu sāknēšanas laikā:

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

un pievienojiet šādu rindu

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

Protams, jums ir jānorāda pareizais izveidotā Python skripta faila nosaukums.

5. darbība: pakārt kalendāru

Kad viss ir sagatavots, ir pienācis laiks pakārt kalendāru pie sienas!

Sākumā es domāju slēpt Raspberry Pi aiz LCD displeja, lai būtu nepieciešams tikai viens kabelis (līdzstrāvas barošana). Bet, tā kā Raspberry darbojas ar 5V un LCD displejs darbojas ar 12V, man būtu nepieciešams papildu transformators. Turklāt aveņu korpuss ir diezgan biezs, kas nozīmē, ka LCD ekrāns atrodas aptuveni 3 centimetru attālumā no sienas. Tāpēc es atteicos no tā un atstāju tikai LCD elektroniku aiz LCD, tā ka tas tagad atrodas mazāk nekā 1 centimetra attālumā no sienas. Es ieguvu divus 5 metrus garus kabeļus, vienu HDMI un vienu 5,5 mm līdzstrāvas barošanai. Abi kabeļi ir balti, tāpat kā siena, kas nozīmē, ka tie īpaši neizceļas. Es esmu uzstādījis LCD uz sienas un ievietojis Raspberry virs ledusskapja uz pretējās sienas, tāpēc tas būtībā ir paslēpts, tomēr joprojām ir viegli pieejams.

Ieteicams: