Мазмұны:

Ақылды қабырға күнтізбесі: 5 қадам
Ақылды қабырға күнтізбесі: 5 қадам

Бейне: Ақылды қабырға күнтізбесі: 5 қадам

Бейне: Ақылды қабырға күнтізбесі: 5 қадам
Бейне: Басқа тышты деген осы 😡 2024, Шілде
Anonim
Ақылды қабырға күнтізбесі
Ақылды қабырға күнтізбесі

Әйелім екеумізде қабырғадағы классикалық күнтізбе болды, онда біз маңызды күндерді белгілеп қойдық. Біз сондай -ақ оқиғаларды белгілеу үшін смартфондарымызда Google күнтізбесін қолданамыз, сондықтан бұл екі есе жұмысты білдіреді. Сондықтан мен еске салғыштарды, оқиғаларды және басқа да деректерді көрсететін ақылды қабырға күнтізбесін құруды шештім. Менде әр түрлі ескі электронды бөлшектер жатқандықтан, менің мақсатым - оларды мүмкіндігінше көп қайта пайдалану және күнтізбені мүмкіндігінше аз шығынмен құру.

Бұл оқулықта мен сізге бірнеше Google есептік жазбаларындағы оқиғаларды көрсететін ақылды қабырға күнтізбесін қалай құруға болатынын көрсетемін. Ол сонымен қатар уақытты, күнді, ауа -райын, температураны және кейбір қосымша ақпаратты көрсетеді. Ол Пассивті инфрақызыл сенсор (PIR) қозғалыс сенсоры бар Raspberry Pi компьютерімен жұмыс істейді, сондықтан бөлмеде қозғалыс анықталған кезде дисплей қосылады, бірақ бірнеше минут әрекетсіздіктен кейін өшеді. Бұл оқулық интернеттен тапқан бірнеше басқа оқулықтарға негізделген және мен жақсы түсіну үшін оларға сілтемелер беремін. Бағдарламалау бойынша кейбір негізгі білім қажет (HTML, Python, …).

1 -қадам: аппараттық құрал

Жоғарыда айтылғандай, мен шығындарды төмендету үшін ескі электронды бөлшектерді қайта пайдалануға тырыстым. Мен кейбір заттарды сатып алуым керек болды, сондықтан мен құрылысқа қажетті заттардың бәрін тізімдеймін.

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

- СКД экран. Мен экранды ескі ноутбуктен қолдандым, сондықтан оған тек LVDS драйверлер тақтасын және қуат көзін сатып алу қажет болды https://www.ebay.com/sch/i.html?_from=R40&_trksid=m570.l1313&_nkw=hdmi+ драйвер+LVDS+тақта & _sacat = 0

-электрониканы сақтауға арналған пластикалық қорап

- пассивті инфрақызыл қозғалыс сенсоры

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

- СКД жақтауы үшін қара пластикалық сырғытпалы байланыстырғыш

- Әр түрлі кабельдер (HDMI, тұрақты ток үшін 5,5 мм, дәнекерлемей жалғанған кабель,…)

2 -қадам: СКД дисплейін құру

СКД дисплейін құру
СКД дисплейін құру
СКД дисплейін құру
СКД дисплейін құру
СКД дисплейін құру
СКД дисплейін құру

Мен ескі ескірген ноутбуктың СКД экранын қолдандым. Мұны қалай жасау керектігі туралы бірнеше оқулықтар бар, мен оларды орындадым:

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/kz/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-ге ауыстырдым, онда үй көмекшісі жұмыс істейді, себебі оның 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 -қадам: Қосымша - Дисплейді өшіру

Енді бізде күнтізбе өз қалауымыз бойынша орнатылып, жұмыс істейді. Бірақ біз дисплейдің тәулік бойы қосылуын қаламаймыз. Біз оны үйде біреу болған кезде ғана жалғастырғымыз келеді. Сонымен қатар, біз оны түн ортасында қосқанды қаламаймыз, дәретханаға барғанда, ол тым жарық! Сондықтан біз инфрақызыл сенсорды біреудің алдында тұрғанын байқаймыз және ол қосылатын уақытты қосамыз.

Назар аударыңыз, менің бағдарламалау дағдыларым шектеулі, сондықтан төмендегілер оңтайлы бола алмайды, өйткені мен оны әр түрлі онлайн форумдар мен оқулықтардан таңдадым, бірақ ол жұмыс істейді. Дегенмен, кез келген ұсыныс әлі де құпталады. Алдымен біз мониторды қолмен қосу/өшіру тестінен бастаймыз. Ол үшін біз екі файл құрамыз (мысалы monitor_on.sh және monitor_off.sh) және оған бірнеше код жазамыз. Мұны істеудің ең оңай жолы - таңқурайға SSH арқылы кіру және теру

sudo nano monitor_on.sh

және келесі кодты теріңіз

tvservice -таңдаулы;

startx/usr/bin/graphical_launcher `fgconsole`

Сақтау және шығу үшін CTRL+X пернелер тіркесімін басыңыз, содан кейін екінші файлды жасаңыз

sudo nano monitor_off.sh

және келесі кодты теріңіз

tvservice -өшіру;

Сақтау және шығу үшін тағы 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 ретінде импорттауды жүйелік импорттауды қосалқы уақытты 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 # секунд ішінде True: i = GPIO.input (17) егер i == 0 болса: # Қозғалыс сенсорынан шығыс LOW болса, мониторды ӨШІРІҢІЗ, егер өшірілмесе және time.time ()> (соңғы_қозғалыс_ уақыты + SHUTOFF_DELAY): «Зиянкестер жоқ» деп басып шығарыңыз, 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 () егер өшірулі және уақыт бойынша. қазір (). сағат> 5 және уақыт. now (). сағат <23: turn_off = Falsesubprocess.call (['/home/pi/monitor_on.sh'], shell = True) егер _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 және уақыттың дәл қазіргінде (). сағаты <23:

монитор тек 6: 00 -ден 23: 00 -ге дейін қосылатынын айтады, сондықтан ол мені түнде мазаламайды. Сызықтар

«Зиянкестер жоқ» деп басып шығарыңыз, яғни

және

басып шығару «Кіруші анықталды», яғни

олар тек сценарийді тексеруге арналған, сіз оны кейін жұмыс істей алатын кезде жоюға болады. Енді сценарийді тексеріңіз:

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 -ді СКД дисплейінің артына жасыруды ойладым, осылайша тек бір кабель (тұрақты ток) қажет болады. Бірақ Raspberry 5В -да жұмыс істейтіндіктен және СК -дисплей 12В -да жұмыс істейтіндіктен, маған қосымша трансформатор қажет болады. Сондай -ақ, Raspberry корпусы өте қалың, яғни СКД қабырғадан 3 сантиметр қашықтықта орналасады. Мен мұны тастадым және тек СКД электроникасын СКД -нің артында қалдырдым, ол қазір қабырғадан 1 сантиметрге жетпейді. Мен ұзындығы 5 метрлік екі кабель алдым, біреуі HDMI және біреуі 5, 5мм тұрақты ток көзі. Екі кабель де қабырға тәрізді ақ түсті, яғни олар көп ерекшеленбейді. Мен СКД -ны қабырғаға қойдым және таңқурайды қарама -қарсы қабырғадағы тоңазытқыштың үстіне қойдым, сондықтан ол негізінен жасырын, бірақ әлі де оңай қол жетімді.

Ұсынылған: