Talaan ng mga Nilalaman:

Smart Wall Calendar: 5 Hakbang
Smart Wall Calendar: 5 Hakbang

Video: Smart Wall Calendar: 5 Hakbang

Video: Smart Wall Calendar: 5 Hakbang
Video: The Best iPad Wall Mount for Your Smart Home - VidaBox iPad Wall Mount Review and Installation 2024, Hulyo
Anonim
Smart Wall Calendar
Smart Wall Calendar

Mayroon kaming klasikong kalendaryo sa dingding ng aking asawa, na minarkahan namin ng mahahalagang petsa. Gumagamit din kami ng kalendaryo ng Google sa aming mga smart phone para sa pagmamarka ng mga kaganapan, kaya't nangangahulugan ito ng dobleng trabaho. Kaya't nagpasya akong bumuo ng isang uri ng matalinong kalendaryo sa dingding, na magpapakita ng aming mga paalala, kaganapan at ilang iba pang data. Dahil mayroon akong iba't ibang mga lumang elektronikong bahagi na namamalagi, ang aking hangarin ay muling gamitin ang mga ito hangga't maaari at buuin ang kalendaryo ng kaunting mga gastos hangga't maaari.

Sa tutorial na ito ipapakita ko sa iyo, kung paano bumuo ng matalinong kalendaryo sa dingding, nagpapakita ng mga kaganapan mula sa maraming mga Google account. Magpapakita rin ito ng oras, petsa, panahon, temperatura at ilang karagdagang impormasyon. Patayin ito ng isang computer na Raspberry Pi na may isang Passive Infrared Sensor (PIR) na sensor ng paggalaw na nakakabit dito, upang ang display ay buksan, kapag nakita ang paggalaw sa silid, ngunit pinapatay pagkatapos ng ilang minuto ng hindi aktibo. Ang tutorial na ito ay batay sa maraming iba pang mga tutorial na nakita ko sa internet at ibibigay ko ang mga link sa kanila para sa mas mahusay na pag-unawa. Ang ilang pangunahing kaalaman sa programa ay kinakailangan (HTML, Python,…).

Hakbang 1: Ang Hardware

Tulad ng nabanggit kanina, sinubukan kong muling gamitin ang maraming mga lumang elektronikong bahagi upang mapanatili ang gastos. Gayunpaman ilang mga item ang kailangan kong bilhin, kaya ililista ko ang lahat ng kinakailangan para sa konstruksyon.

- Isang kit ng Raspberry Pi. Sa una ginamit ko ang aking dating modelo 2 mula sa ibang proyekto. Gumana ito, ngunit ang pag-edit at pag-reload ng web page ay tumagal ng maraming oras sa akin, kaya't sa paglaon ay nagpalit ako sa modelo 3, na mas mahusay na gumana https://www.ebay.com/sch/i.html?_from=R40&_trksid=m570.l1313 & _nkw = raspberry + pi + kit & _sacat = 0

- LCD screen. Ginamit ko ang screen mula sa aking luma na laptop, kaya kailangan ko lamang bumili ng LVDS driver board para dito at ang supply ng kuryente https://www.ebay.com/sch/i.html?_from=R40&_trksid=m570.l1313&_nkw=hdmi+ driver + LVDS + board & _sacat = 0

- Kahon ng imbakan ng plastik para sa electronics

- Passive infrared motion sensor

- AM2302 temperatura / sensor ng kahalumigmigan

- Itim na plastic slide-on binder para sa LCD frame

- Iba't ibang mga cable (HDMI, 5.5mm para sa DC power, mga solderless breadboard jumper cable, …)

Hakbang 2: Paglikha ng LCD Display

Paglikha ng LCD Display
Paglikha ng LCD Display
Paglikha ng LCD Display
Paglikha ng LCD Display
Paglikha ng LCD Display
Paglikha ng LCD Display

Ginamit ko ang LCD screen mula sa aking luma na laptop. Mayroong maraming mga tutorial kung paano ito gawin, sinunod ko ang isang ito:

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

Inalis ko ang takip ng aking luma na laptop, inilabas ang LCD display at pagkatapos ay nag-order ng wastong LVDS driver board. Ibinigay ko sa nagbebenta ang code ng produkto, na maaaring matagpuan sa likurang bahagi ng LCD, sa aking kaso ito ay LP171WE3 (TL) (A2) - tingnan ang kanang kanang label sa huling larawan, at pagkatapos ay pinadalhan niya ako ng naaangkop na LVDS. Mangyaring tandaan, kakailanganin mo rin ang supply ng kuryente para sa display, kaya't hilingin sa nagbebenta na ipadala din ito. Bumili din ako ng magandang 14.5 × 7.5 × 2cm na plastic box upang magkasya nang maayos ang driver board at ikabit ito sa likurang bahagi ng LCD.

Ngayon ang LCD display ay may metal na frame, na hindi maganda ang hitsura. Sa una ay spray ko itong pininturahan sa itim, ngunit ang pintura ay nagsimulang magbalat. Kaya kumuha ako ng apat na itim na plastic slide-on binders, na karaniwang ginagamit para sa mga nagbubuklod na sheet, na-trim ang mga ito nang naaayon at ikinabit ito upang masakop ang frame. Maayos ang hitsura nito, kaya't ikinonekta ko ang lahat ng mga cable, na naka-plug sa HDMI sa aking lumang Raspberry Pi at Voila - gumana ito! Mayroong isang larawan na nagpapakita sa display, kaya handa akong lumipat sa susunod na hakbang - kung anong impormasyong ipapakita sa display at kung paano ito ipakita.

Hakbang 3: Pag-set up ng Software

Nang tumingin ako sa internet para sa ilang mga pahiwatig, kung paano bumuo ng kalendaryo, inspirasyon ako ng pahinang ito https://dakboard.com/site. Ibinibigay nila ang natapos na produkto (ang display, computer at nagtatrabaho software), ngunit mayroon din silang mahusay na tutorial para sa solusyon sa DIY (https://blog.dakboard.com/diy-wall-display/). Inirerekumenda ko sa iyo na sundin ang tutorial na ito, hindi bababa sa unang bahagi na may mga tagubilin sa paghahanda at pag-set up ng system sa Raspberry, upang awtomatikong mai-load ng browser ang nais na web page sa boot.

Ito ay gumana nang maayos, subalit naghahanap ako ng ilang solusyon, na maaaring mas pasadya ayon sa aking mga kagustuhan. Napagpasyahan kong i-set up ang aking sariling web server at lumikha ng isang web page, na magpapakita ng karagdagang impormasyon bukod sa kalendaryo. Pinili ko ang Wordpress.org, dahil mahusay itong dokumentado at may mahusay na suporta at malaking komunidad na makakatulong sa iyo. Narito ang tutorial sa kung paano i-install ang Wordpress sa Raspberry Pi: https://projects.raspberrypi.org/en/projects/lamp-web-server-with-wordpress. Sa naka-install na Wordpress, oras na upang idisenyo ang aking homepage. Maaari mong gamitin ang isa sa maraming mga ibinigay na tema, o disenyo mula sa simula. Gayunpaman, ang ilang kaalaman sa pagprograma ng HTML ay kinakailangan para dito.

Dinisenyo ko ang aking pahina, upang sa kaliwang bahagi ang kalendaryo ay ipinapakita (https://sl.wordpress.org/plugins/google-calendar-events/), habang sa kanang bahagi ng oras at petsa ay ipinapakita (https://www.timeanddate.com/clocks/free.html at https://www.arclab.com/en/kb/htmlcss/display-date-time-javascript-php-ssi.html). Ang pagtataya ng panahon ay mula sa pahinang ito (https://www.1a-vreme.si/vremensko-okno/), na nagbibigay ng widget ng pagtataya para sa mga lungsod ng Slovenian, ngunit hulaan ko ang mga widget para sa ibang mga bansa ay matatagpuan din sa internet. Kinokolekta ang temperatura gamit ang AM2302 sensor (https://www.ebay.com/sch/i.html?_from=R40&_trksid=m570.l1313&_nkw=AM2302+&_sacat=0), tulad ng ipinaliwanag sa pagtatapos ng kabanatang ito. Sa ibaba ay isang simpleng pang-araw-araw na timer sa pag-countdown, na nagpapakita kung gaano karaming araw ang natitira sa ilang kaganapan (kagiliw-giliw na malaman ng aking mga anak, kung gaano karaming araw ang maghihintay sila para sa isang bagay). Sa kanang tuktok na gilid ay ang MetaSlider plugin (https://wordpress.org/plugins/ml-slider/), na sapalarang dumudulas sa mga piling larawan ng aking pamilya. Bilang karagdagan Nagamit ko ang Background Slider plugin (https://sl.wordpress.org/plugins/background-slider-master/) upang ipakita sa akin ang ilang mga random na larawan para sa mas magandang background.

Tulad ng nabanggit dati, ang panloob na temperatura ay nakolekta gamit ang AM2302 sensor. Maraming mga tutorial kung paano makakuha ng temperatura, sinundan ko ang isang ito: https://www.modmypi.com/blog/am2302-temphumidity-sensor. Nang maglaon inilipat ko ang sensor na ito sa isa pang Raspberry Pi na may Home Assistant na tumatakbo dito, sapagkat mas madaling basahin at mai-publish ang mga halaga gamit ang bahagi ng DHT Sensor (https://www.home-assistant.io/components/sensor.dht/). Maaari ding kolektahin ng Home Assistant ang temperatura sa labas gamit ang iba't ibang mga sangkap ng panahon, ginamit ko ang YR.no sangkap (https://www.home-assistant.io/components/sensor.yr/). Sa pamamagitan nito, nagsulat ako ng isang script ng automation upang makalikom ng panloob / labas na temperatura mula sa mga sangkap na ito at isulat ang mga ito sa isang file ng teksto, na pagkatapos ay ipinapakita sa aking kalendaryo sa dingding. Para sa karagdagang impormasyon sa Home Assistant, tingnan ang homepage (https://www.home-assistant.io/).

Hakbang 4: Opsyonal - Patayin ang Display

Ngayon ay nakaayos na ang aming kalendaryo, ayon sa gusto namin. Ngunit hindi namin nais na buksan ang display 24/7. Gusto lamang namin ito, kung may isang tao sa bahay. Gayundin hindi namin nais na mai-on ito sa kalagitnaan ng gabi, kapag pumunta kami sa banyo, masyadong maliwanag! Kaya magkakabit kami ng isang infrared sensor upang mapansin, kapag ang isang tao ay nakatayo sa harap nito, at magdagdag ng ilang mga limitasyon sa oras, kung kailan ito dapat i-on.

Mangyaring tandaan na ang aking mga kasanayan sa pag-program ay limitado, kaya't ang mga sumusunod ay hindi maaaring maging pinakamainam, dahil pinili ko ito mula sa iba't ibang mga online forum at tutorial, ngunit talagang gumagana ito. Gayunpaman, ang anumang rekomendasyon ay tinatanggap pa rin. Magsisimula muna kami sa pagsubok upang manu-manong i-on / i-off ang monitor. Para doon, lilikha kami ng dalawang mga file (halimbawa monitor_on.sh at monitor_off.sh) at magsulat ng ilang code dito. Ang pinakamadaling paraan upang gawin ito ay mag-log in sa iyong Raspberry gamit ang SSH at uri

sudo nano monitor_on.sh

at i-type ang sumusunod na code

tvservice - ginustong;

startx / usr / bin / graphical_launcher `fgconsole`

Pindutin ang CTRL + X upang i-save at lumabas, pagkatapos ay likhain ang pangalawang file

sudo nano monitor_off.sh

at i-type ang sumusunod na code

tvservice --off;

Muli, pindutin ang CTRL + X upang makatipid at lumabas. Gawing maipapatupad ang mga bagong nilikha na file:

sudo chmod + x monitor_on.sh

sudo chmod + x monitor_off.sh

Ngayon upang subukan kung gumagana ang mga utos na ito, i-type

sudo./monitor_off.sh

sudo./monitor_on.sh

Ang monitor ay dapat na patayin at magpatuloy nang naaayon. Napansin ko na sa Raspberry Pi 2 tumagal ng halos 10 segundo para ma-on ang monitor. Sa Raspberry Pi 3 tumatagal ng 1-2 segundo. Susunod na ikonekta namin ang isang infrared sensor, na mag-uudyok sa mga script na ito. Muli, maraming mga tutorial kung paano i-set up ang Raspberry Pi at PIR, sinundan ko ang isang ito: https://www.instructables.com/id/PIR-Sensor-Interfacing-With-Raspberry-Pi/. Talaga, lumikha ng isang file gamit ang paggamit ng nano editor (halimbawa ng motion_sensor.py) at i-type ang naaangkop na Python code dito. Nasa ibaba ang halimbawa ng aking file:

i-import ang RPi. GPIO bilang GPIOimport timeimport sysimport subprocessimport datime bilang dtimport osGPIO.setwarnings (False) # GPIO.setmode (GPIO. BOARD) GPIO.setmode (GPIO. BCM) GPIO.setup (17, GPIO. IN) #PIRturned_off = Falselast_motion time.time () SHUTOFF_DELAY = 180 # secondswhile True: i = GPIO.input (17) kung ako == 0: #Kapag ang output mula sa sensor ng paggalaw ay mababa, i-turn OFF ang monitor na hindi naka -_off at time.time ()> (last_motion_time + SHUTOFF_DELAY): i-print ang "Walang nanghihimasok", iturned_off = Truetime.s Sleep (1) subprocess.call (['/ home / pi / monitor_off.sh'], shell = True) elif i == 1: #Kapag output mula sa sensor ng paggalaw ay MATAAS, buksan ang monitor ONprint na "Intruder nakita", itime.s Sleep (1) last_motion_time = time.time () sys.stdout.flush () kung naka -_off at dt.datetime.now (). oras> 5 at dt.datime. ngayon (). oras <23: turn_off = Falsesubprocess.call (['/ home / pi / monitor_on.sh'], shell = True) kung _name_ == '_main _': subukan: main () maliban sa KeyboardInterrupt: GPIO.cleanup ()

Tandaan na ang "GPIO.setup (17, GPIO. IN)" ay nagpapahiwatig na ang output pin mula sa PIR ay konektado sa pin 17 sa Raspberry Pi. Aling pin ang nakasalalay kung tukuyin mo ang GPIO.setmode (GPIO. BOARD) o GPIO.setmode (GPIO. BCM). Ipinaliwanag dito ang pagkakaiba: https://raspberrypi.stackexchange.com/questions/12966/what-is-the-difference-bet pagitan-board-and-bcm-for-gpio-pin-numbering. Mayroon akong # sa harap ng GPIO. BOARD, kaya hindi ito pinansin at ginagamit ang GPIO. BCM.

Pansinin ang linya

SHUTOFF_DELAY = 180 #seconds

Nakasaad dito, kung gaano katagal nakabukas ang monitor mula nang nakita ang huling paggalaw, bago ito naka-off. Kapaki-pakinabang ito sapagkat hindi ko nais na patayin / i-on ang monitor nang regular sa aking paglalakad, ngunit nais kong panatilihin itong naka-on nang ilang oras, bago ito patayin. Pinili ko ang agwat ng 180 segundo, upang ang monitor ay patayin mga 3 minuto pagkatapos ng napansin ang huling paggalaw.

Sa wakas, ang linyang ito

kung naging

isinasaad na ang monitor ay lumiliko lamang sa pagitan ng 6:00 at 23:00, kaya hindi ako nito maaabala sa oras ng gabi. Ang mga linya

i-print ang "Walang nanghihimasok", i

at

i-print ang "Intruder Nakita", i

ay para sa pagsubok lamang sa script, maaari mong i-delete ang mga ito sa ibang pagkakataon, kapag nais mo itong gumana. Ngayon subukan ang script:

sudo python motion_sensor.py

Dapat mong makita ang mga mensahe na "Nakita ng nanghihimasok", kung kumaway ka sa itaas ng sensor, kung hindi man ay "Walang nanghihimasok". Kapag nasubukan ang script na ito at gumagana, itakda ito upang magsimula sa boot:

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

at idagdag ang sumusunod na linya

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

Siyempre dapat mong tukuyin ang tamang pangalan ng file ng Python script na iyong nilikha.

Hakbang 5: I-hang ang Kalendaryo

Sa lahat ng pag-set up, oras na upang i-hang ang kalendaryo sa dingding!

Sa una ay iniisip kong itago ang Raspberry Pi sa likod ng LCD display, upang ang isang cable (DC power) lamang ang kakailanganin. Ngunit dahil tumatakbo ang Raspberry sa 5V at tumatakbo ang LCD display sa 12V, kakailanganin ko ng karagdagang transpormer. Gayundin, ang kaso ng Raspberry ay sa halip makapal, na nangangahulugang ang LCD ay may puwang na mga 3 sentimetro mula sa dingding. Kaya't inabandona ko ito at iniwan lamang ang mga LCD electronics sa likod ng LCD, kaya't mas mababa sa 1 sentimeter ang layo nito mula sa dingding. Nakuha ko ang dalawang 5 metro ang haba ng mga cable, isang HDMI at isa 5, 5mm para sa DC power supply. Ang parehong mga kable ay puti, tulad ng dingding, na nangangahulugang hindi sila gaanong namumukod-tangi. Inilagay ko ang LCD sa dingding at inilagay ang Raspberry sa tuktok ng ref sa tapat ng dingding, kaya't ito ay karaniwang nakatago, ngunit madali pa ring ma-access.

Inirerekumendang: