Мазмуну:

Smart Wall Календары: 5 кадам
Smart Wall Календары: 5 кадам

Video: Smart Wall Календары: 5 кадам

Video: Smart Wall Календары: 5 кадам
Video: Большие светодиодные часы с Али Экспресс . Обзор . Настройка . 2024, Июль
Anonim
Smart Wall Календары
Smart Wall Календары

Жубайым экөөбүздүн дубалдын классикалык календары бар болчу, анда биз маанилүү даталарды белгилегенбиз. Биз ошондой эле иш -чараларды белгилөө үчүн смартфондорубузда Google календарын колдонобуз, ошондуктан бул эки эсе иштөөнү билдирет. Ошентип, эстеткичтерибизди, окуяларды жана башка маалыматтарды көрсөтө турган акылдуу дубал календарын түзүүнү чечтим. Менде ар кандай эски электрондук бөлүктөр жаткандыктан, менин максатым - аларды мүмкүн болушунча көп колдонуу жана календарды мүмкүн болушунча аз чыгым менен куруу болчу.

Бул үйрөткүчтө мен сизге акылдуу дубал календарын кантип курууну, бир нече Google каттоо эсептериндеги окуяларды көрсөтүү менен көрсөтөм. Ошондой эле убакыт, күн, аба ырайы, температура жана кээ бир кошумча маалыматты көрсөтөт. Ал Raspberry Pi компьютери менен жабдылган, ага Passive Infrared Sensor (PIR) кыймыл сенсору тиркелет, ошондо дисплей күйүп турганда, бөлмөдө кыймыл аныкталганда, бирок бир нече мүнөттүк аракетсиздиктен кийин өчөт. Бул окуу куралы интернеттен тапкан башка бир нече окуу куралдарына негизделген жана мен жакшыраак түшүнүү үчүн аларга шилтемелерди берем. Негизги программалоо билими керек (HTML, Python, …).

1 -кадам: Аппараттык

Жогоруда айтылгандай, мен чыгымдарды азайтуу үчүн эски электрондук бөлүктөрдү кайра колдонууга аракет кылдым. Бирок кээ бир нерселерди сатып алышым керек болчу, ошондуктан мен курулушка керектүү нерселердин баарын тизмектеп берем.

- Raspberry Pi комплект. Башында мен башка долбоордон эски 2 моделимди колдондум. Бул иштеди, бирок веб -баракчаны түзөтүү жана кайра жүктөө мага көп убакытты талап кылды, ошондуктан мен акырында жакшыраак иштеген 3 -моделге алмаштырдым https://www.ebay.com/sch/i.html?_from=R40&_trksid=m570.l1313 & _nkw = малина+пи+комп & _sacat = 0

- ЖК экран. Мен эски ноутбугумдун экранын колдондум, ошондуктан ал үчүн LVDS драйвер тактасын жана электр менен камсыздоону сатып алышым керек болчу https://www.ebay.com/sch/i.html?_from=R40&_trksid=m570.l1313&_nkw=hdmi+ айдоочу+LVDS+такта & _sacat = 0

-Электроника үчүн пластикалык сактоочу куту

- Пассивдүү инфракызыл кыймыл сенсору

- AM2302 температура/нымдуулук сенсору

- СКД алкагы үчүн кара пластик жылдыргыч байлоочу

- Ар кандай кабелдер (HDMI, DC кубаттуулугу үчүн 5.5мм, ширетилбеген нандын секирүүчү кабелдери,…)

2 -кадам: ЖК дисплей түзүү

LCD дисплей түзүү
LCD дисплей түзүү
LCD дисплей түзүү
LCD дисплей түзүү
LCD дисплей түзүү
LCD дисплей түзүү

Мен эски эскирген ноутбугумдун LCD экранын колдондум. Муну кантип жасоо керектиги боюнча ар кандай үйрөткүчтөр бар, мен муну ээрчип жүрдүм:

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

Мен эски ноутбугумдун капкагын чечип, ЖК дисплейин алып, анан туура LVDS драйвер тактасына буйрутма бердим. Мен сатуучуга продукттун кодун бердим, аны ЖКнын арт жагында табууга болот, менин учурда бул LP171WE3 (TL) (A2) - акыркы сүрөттөгү ылдыйкы оң этикетканы караңыз, анан ал мага тиешелүү LVDSти жиберди. Көңүл буруңуз, сизге дисплей үчүн электр энергиясы керек болот, андыктан сатуучудан да жөнөтүүсүн сураныңыз. Мен дагы айдоочунун тактайына жакшынакай отуруп, аны ЖКнын арткы жагына бекитүү үчүн жакшы 14.5 × 7.5 × 2 см пластикалык кутучаны сатып алдым.

Азыр ЖК дисплейде металл алкагы бар, ал сулуу көрүнбөйт. Башында мен спрей менен кара түскө боёгом, бирок боёк сыйрыла баштады. Ошентип, мен, адатта, барактарды таңуу үчүн колдонулуучу төрт кара пластик жылдыргычты алдым, ошого жараша кыркып, рамканы жабуу үчүн тиркедим. Бул жакшы көрүндү, ошондуктан мен бардык кабелдерди туташтырып, HDMI менен эски Raspberry Pi жана Voila туташтырдым - ал иштеди! Дисплейде сүрөт бар болчу, ошондуктан мен кийинки кадамга өтүүгө даяр элем - дисплейде кандай маалыматты көрсөтүү жана аны кантип көрсөтүү керек.

3 -кадам: Программаны орнотуу

Мен интернеттен календарды кантип түзүү керектигин издеп жүргөндө, мен бул барактан шыктандым https://dakboard.com/site. Алар даяр продуктту (дисплей, компьютер жана жумушчу программалык камсыздоо) камсыз кылат, бирок аларда DIY чечүү үчүн мыкты окуу куралы бар (https://blog.dakboard.com/diy-wall-display/). Мен бул үйрөткүчтү аткарууну сунуштайм, жок дегенде биринчи бөлүктө Raspberryде системаны даярдоо жана орнотуу боюнча нускамалар менен, браузер каалаган веб баракты жүктөөдө автоматтык түрдө жүктөйт.

Бул жакшы иштеди, бирок мен каалоолорума ылайыкташтырылган чечимди издеп жүрдүм. Мен өзүмдүн веб -серверимди түзүүнү жана календардан тышкары кошумча маалыматты көрсөтө турган веб -баракча түзүүнү чечтим. Мен Wordpress.orgту тандадым, анткени ал жакшы документтештирилген жана сизге колдоо көрсөтүү үчүн жакшы колдоого жана чоң коомчулукка ээ. Бул жерде Raspberry Piде Wordpressти кантип орнотуу боюнча үйрөткүч бар: https://projects.raspberrypi.org/en/projects/lamp-web-server-with-wordpress. Wordpress орнотулганда, менин башкы баракчамды иштеп чыгууга убакыт келди. Сиз берилген темалардын бирин колдоно аласыз, же башынан баштап дизайнды. Кандай болбосун, бул үчүн кээ бир HTML программалоо билими керек.

Мен баракчамды сол жакта календар көрсөтүлө турган кылып түздүм (https://sl.wordpress.org/plugins/google-calendar-events/), оң жагында убакыт жана күн көрсөтүлөт (https): //www.timeanddate.com/clocks/free.html жана https://www.arclab.com/en/kb/htmlcss/display-date-time-javascript-php-ssi.html). Аба ырайы бул барактан алынган (https://www.1a-vreme.si/vremensko-okno/), ал Словениянын шаарлары үчүн болжолдуу виджетти камсыз кылат, бирок менимче, башка өлкөлөрдүн виджеттерин интернеттен деле табууга болот. Бул бөлүмдүн аягында түшүндүрүлгөндөй, температура AM2302 сенсорунун жардамы менен чогултулат (https://www.ebay.com/sch/i.html?_from=R40&_trksid=m570.l1313&_nkw=AM2302+&_sacat=0). Төмөндө күнүмдүк саноо таймери бар, ал кандайдыр бир иш -чарага канча күн калганын көрсөтөт (менин балдарым үчүн кызыктуу, канча күн бир нерсени күтүшү керек). Жогорку оң бурчта MetaSlider плагини (https://wordpress.org/plugins/ml-slider/), ал туш келди менин үй-бүлөмдүн тандалган сүрөттөрүнө жылат. Мындан тышкары, жакшы фон үчүн туш келди сүрөттү көрсөтүү үчүн Background Slider плагинин (https://sl.wordpress.org/plugins/background-slider-master/) колдондум.

Жогоруда айтылгандай, ички температура AM2302 сенсорунун жардамы менен чогултулат. Температураны кантип алуу боюнча көптөгөн окуу куралдары бар, мен муну ээрчидим: https://www.modmypi.com/blog/am2302-temphumidity-sensor. Кийинчерээк мен бул сенсорду башка Raspberry Piге котордум, анын үстүндө Home Assistant иштейт, анткени анын DHT Sensor компонентин колдонуу менен баалуулуктарды окуу жана жарыялоо оңой (https://www.home-assistant.io/components/sensor.dht/). Үйдүн жардамчысы аба ырайынын ар кандай компоненттерин колдонуп, тышкы температураны чогулта алат, мен YR.no компонентин колдондум (https://www.home-assistant.io/components/sensor.yr/). Муну менен мен бул компоненттерден ички/сырткы температураны чогултуу жана тексттик файлга жазуу үчүн автоматташтыруу сценарийин жаздым, ал менин дубал календарымда көрсөтүлөт. Home Assistant жөнүндө көбүрөөк маалымат алуу үчүн, башкы баракчаны караңыз (https://www.home-assistant.io/).

4 -кадам: Кошумча - Дисплейди өчүрүү

Эми биздин календарды өзүбүз каалагандай орнотуп, иштеп жатабыз. Бирок биз дисплейдин 24/7 күйгүзүлүшүн каалабайбыз. Биз муну күйгүзүүнү каалайбыз, кимдир бирөө үйдө болгондо. Ошондой эле биз түн ортосунда күйгүзүлүшүн каалабайбыз, ажатканага барганыбызда, бул өтө жарык! Ошентип, биз инфрақызыл сенсорду тиркеп коёбуз, кимдир бирөө анын алдында турганда, жана ал качан күйгүзүлүшү керек экенин белгилейбиз.

Менин программалоо жөндөмүм чектелүү экенин эске алыңыз, андыктан төмөнкүлөр оптималдуу боло албайт, анткени мен аны ар кандай онлайн форумдардан жана окуу куралдарынан тандап алдым, бирок негизинен ал иштейт. Ошентсе да, кандайдыр бир сунуш дагы деле жылуу кабыл алынат. Адегенде мониторду кол менен күйгүзүү/өчүрүү үчүн тесттен баштайбыз. Ал үчүн биз эки файл түзөбүз (мисалы, monitor_on.sh жана monitor_off.sh) жана ага бир нече код жазабыз. Мунун эң оңой жолу - Raspberry'ге SSH жана түрүн колдонуу менен кирүү

sudo nano monitor_on.sh

жана төмөнкү кодду териңиз

tvservice -артыкчылыктуу;

startx/usr/bin/graphical_launcher `fgconsole`

Сактоо жана чыгуу үчүн CTRL+X басыңыз, андан кийин экинчи файлды түзүңүз

sudo nano monitor_off.sh

жана төмөнкү кодду териңиз

tvservice -off;

Дагы, сактоо жана чыгуу үчүн CTRL+X басыңыз. Бул жаңы түзүлгөн файлдарды аткарылуучу кылыңыз:

sudo chmod +x monitor_on.sh

sudo chmod +x monitor_off.sh

Эми бул буйруктар иштеп жаткандыгын текшерүү үчүн териңиз

sudo./monitor_off.sh

sudo./monitor_on.sh

Монитор азыр өчүп, ошого жараша күйүшү керек. Мен байкадым, Raspberry Pi 2де монитордун күйгүзүлүшүнө дээрлик 10 секунд убакыт кеткен. Raspberry Pi 3те 1-2 секунд талап кылынат. Андан кийин инфрақызыл сенсорду туташтырабыз, бул скрипттерди иштетет. Дагы, Raspberry Pi жана PIRди орнотуунун көптөгөн үйрөткүчтөрү бар, мен муну ээрчидим: https://www.instructables.com/id/PIR-Sensor-Interfacing-With-Raspberry-Pi/. Негизинен, нано редактордун жардамы менен файл түзүңүз (мисалы, motion_sensor.py) жана ага тиешелүү Python кодун териңиз. Төмөндө менин файлымдын мисалы:

RPi. GPIO импорту 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 = Falselast_ time.time () SHUTOFF_DELAY = 180 # seconds while True: i = GPIO.input (17) if i == 0: # Кыймыл сенсорунан чыгаруу ТӨМӨН болгондо, мониторду ӨЧҮРҮП, өчүрүлбөсө жана time.time ()> (акыркы_кыймыл_ убактысы + SHUTOFF_DELAY): "No intruders" басып чыгаруу, iturned_off = Truetime.sleep (1) subprocess.call (['/home/pi/monitor_off.sh'], shell = True) elif i == 1: #Кыймыл сенсорунан чыкканда ЖОГОРУ, мониторду ONPRINT басып "Кирүүчү табылды", itime.sleep (1) last_motion_time = time.time () sys.stdout.flush () off_off жана dt.datetime.now (). hour> 5 жана dt.datetime. азыр (). саат <23: turn_off = Falsesubprocess.call (['/home/pi/monitor_on.sh'], shell = True) if _name_ == '_main _': try: main () KeyboardInterruptден башка: GPIO.cleanup ()

Көңүл буруңуз, "GPIO.setup (17, GPIO. IN)" PIRден чыккан пин Raspberry Piдеги 17 -пинге туташтырылганын көрсөтөт. Кайсы пин бул GPIO.setmode (GPIO. BOARD) же GPIO.setmode (GPIO. BCM) аныктагандыгыңыздан көз каранды. Айырмасы бул жерде түшүндүрүлөт: https://raspberrypi.stackexchange.com/questions/12966/what-is-the-difference-between-board-and-bcm-for-gpio-pin-numbering. Менде GPIO. BOARD алдында # бар, ошондуктан ага көңүл бурулбайт жана GPIO. BCM колдонулат.

Сызыкка көңүл буруңуз

SHUTOFF_DELAY = 180 #секунд

Бул жерде, акыркы кыймыл аныкталгандан бери, монитор өчүрүлгөнгө чейин канча убакыт күйгүзүлгөнү айтылат. Бул пайдалуу, анткени мен жөө жүргөндө монитордун дайыма өчүп/күйүп турушун каалабайм, бирок аны өчүрүүдөн мурун бир нече убакыт бою күйгүзүп тургум келет. Мен 180 секунд аралыгын тандадым, ошондо монитор акыркы кыймыл аныкталгандан 3 мүнөттөн кийин өчөт.

Акыры, бул линия

өчүрүлгөндө жана өчүрүлгөндө жана убакыттын өтүшү менен.

Монитор саат 6: 00дөн 23: 00гө чейин гана күйөт, ошондуктан ал түнкүсүн тынчымды албайт деп айтылат. Сызыктар

басып чыгаруу "Кирүүчүлөр жок", i

жана

басып чыгаруу "Кирүүчү табылды", i

скрипт гана сыноо үчүн, сиз аларды кийинчерээк жок кыла аласыз, эгерде ал иштей баштаса. Эми скриптти сынап көрүңүз:

sudo python motion_sensor.py

Сиз "Кирүүчү табылды" деген билдирүүлөрдү көрүшүңүз керек, эгер сенсордун үстүндө кол булгаласаңыз, анда ал "Кирүүчү жок" болот. Бул скрипт текшерилгенде жана иштеп жатканда, аны жүктөөдө баштоону орнотуңуз:

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

жана төмөнкү сапты кошуңуз

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

Албетте, сиз түзгөн Python скриптинин туура файл атын көрсөтүшүңүз керек.

5 -кадам: Календарды илип коюңуз

Баары даяр болгондон кийин, календарды дубалга илип коюуга убакыт келди!

Башында мен Raspberry Pi'ни ЖК дисплейдин артына жашырып коюуну ойлогом, ошондо бир гана кабель (DC күчү) керек болот. Бирок Raspberry 5V жана LCD дисплейи 12V менен иштегендиктен, мага кошумча трансформатор керек болот. Ошондой эле, Raspberry корпусу өтө калың, башкача айтканда, ЖК дубалдан 3 сантиметрдей аралыкта болот. Ошентип, мен муну таштап, ЖКнын электроникасын ЖКнын артына таштадым, ал азыр дубалдан 1 сантиметрге жетпеген аралыкта. Мен 5 метр узундуктагы эки кабелди алдым, бири HDMI жана бири 5, 5мм DC кубаттуулугу үчүн. Эки кабель тең ак түстө, дубалга окшош, бул анча деле айырмаланбайт. Мен LCDди дубалга орнотуп, карама -каршы дубалдагы муздаткычтын үстүнө Малинаны койдум, андыктан ал жашырылган, бирок дагы эле оңой жеткиликтүү.

Сунушталууда: