{"id":5060,"date":"2022-02-21T07:24:40","date_gmt":"2022-02-20T22:24:40","guid":{"rendered":"https:\/\/now0930.pe.kr\/wordpress\/?p=5060"},"modified":"2022-02-21T09:05:54","modified_gmt":"2022-02-21T00:05:54","slug":"sensehat-%ec%98%a8%eb%8f%84-led-matrix2","status":"publish","type":"post","link":"https:\/\/now0930.pe.kr\/wordpress\/sensehat-%ec%98%a8%eb%8f%84-led-matrix2\/","title":{"rendered":"sensehat \uc628\ub3c4 + LED matrix(2)"},"content":{"rendered":"\n<p>\uc81c\ud55c\ub41c \ud654\uba74\uc5d0 \uc628\ub3c4, \uc2b5\ub3c4\ub97c \uc5b4\ub5bb\uac8c \ud45c\uc2dc\ud560\uae4c \uace0\ubbfc\ud558\ub2e4, \ub514\ubc14\uc774\uc2a4\ub97c 2\uac1c\ub97c \ub9cc\ub4e4\ub85c \ud588\ub2e4. \uc0ac\uc6a9\uc790\uac00 \ub514\ubc14\uc774\uc2a4 \uac1c\uc218\ub97c \uc81c\ud55c \uc5c6\uc774 \ub9cc\ub4e4 \uc218 \uc788\ub294 \uc810\uc774 \uc88b\ub2e4. 2\uac1c\ub97c \ub9cc\ub4e4\uc5b4 \uc628\ub3c4\ub85c \ud55c \uac1c, \uc2b5\ub3c4\ub85c \ud55c \uac1c\ub97c \ud560\ub2f9 \ud588\ub2e4.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"816\" height=\"459\" src=\"https:\/\/now0930.pe.kr\/wordpress\/wp-content\/uploads\/2022\/02\/\uc2a4\ud06c\ub9b0\uc0f7-2022-02-21-08-46-03-edited.png\" alt=\"\" class=\"wp-image-5070\" srcset=\"https:\/\/now0930.pe.kr\/wordpress\/wp-content\/uploads\/2022\/02\/\uc2a4\ud06c\ub9b0\uc0f7-2022-02-21-08-46-03-edited.png 816w, https:\/\/now0930.pe.kr\/wordpress\/wp-content\/uploads\/2022\/02\/\uc2a4\ud06c\ub9b0\uc0f7-2022-02-21-08-46-03-edited-768x432.png 768w\" sizes=\"auto, (max-width: 816px) 100vw, 816px\" \/><\/figure>\n\n\n\n<p>\uc704 \uadf8\ub9bc\uc5d0\uc11c \uc0ac\uc6a9\uc790\uac00 rs-tmpre1\ub97c \uc77d\uc5b4(read) module\uc774 \uc800\uc7a5\ud55c HTS221 \uc628\ub3c4 \uad00\ub828 \ub808\uc9c0\uc2a4\ud130 \uac12\uc744 \uc5bb\ub294\ub2e4. \uc0ac\uc6a9\uc790\uac00 \ubc1b\uc740 \uac12\uc73c\ub85c \uc628\ub3c4\ub97c \uacc4\uc0b0\ud55c \ud6c4 LED Matrix\ub97c \ube68\uac15\uc73c\ub85c \uc124\uc815\ud558\uace0, \ucee4\ub110\ub85c \uc4f4\ub2e4(write). \uc0ac\uc6a9\uc790\uac00 rs-tempre2\ub97c \uc77d\uc5b4(read) module\uc774 \uc800\uc7a5\ud55c HTS221 \uc2b5\ub3c4 \uad00\ub828 \ub808\uc9c0\uc2a4\ud130 \uac12\uc744 \uc5bb\ub294\ub2e4. \uc5ed\uc2dc \ubc1b\uc740 \uac12\uc73c\ub85c \uc2b5\ub3c4\ub97c \uacc4\uc0b0\ud558\uace0, LED Matrix\ub97c \ub179\uc0c9\uc73c\ub85c \uc124\uc815, \ucee4\ub110\ub85c \uc4f4\ub2e4(write). \uc0ac\uc6a9\uc790 \ud504\ub85c\uadf8\ub7a8\uc774 \uc77c\uc815 \uc8fc\uae30\ub85c \uacc4\uc18d\ud55c\ub2e4.<\/p>\n\n\n\n<p>LED Matrix\uac00 \uc22b\uc790\ub97c \ubcf4\uc5ec\uc8fc\ub294 \ubc29\uc2dd\uc774 \ub108\ubb34 \ucd0c\uc2a4\ub7fd\ub2e4. \uc880 \uac1c\uc120\ud574\uc57c \uaca0\ub2e4.<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>\ubd80\ud305<\/li><li>\ub0b4\uac00 \ub9cc\ub4e0 \ubaa8\ub4c8 \ub85c\ub529<\/li><li>\uc0ac\uc6a9\uc790 \ud504\ub85c\uadf8\ub7a8 \uc2e4\ud589<\/li><\/ol>\n\n\n\n<p>1 ~ 3\ubc88\uc744 \uc790\ub3d9\uc73c\ub85c \ud558\uace0 \uc2f6\uc5c8\ub2e4. \uc774\uac8c \uc880 \uae4c\ub2e4\ub86d\ub2e4. \ucc98\uc74c\uc5d0\ub294 \uac04\ub2e8\ud558\uac8c crontab\uc73c\ub85c @reboot\ub85c \uc124\uc815\ud588\uc73c\ub098, \uc2e4\ud328\ud588\ub2e4. \ubaa8\ub4c8\uc774 \uc62c\ub77c\uac00\uae30 \uc804\uc5d0 \uc0ac\uc6a9\uc790 \ud504\ub85c\uadf8\ub7a8\uc774 \uc2e4\ud589\ub41c\ub2e4. \ucc3e\ub358 \uc911 udev\uac00 \uc774\ubca4\ud2b8\ub97c \uac10\uc9c0(\ub514\ubc14\uc774\uc2a4 \ucd94\uac00, \uc0ad\uc81c)\ud558\uc5ec \uc0ac\uc6a9\uc790 \uc815\uc758 \ud589\ub3d9\uc744 \ud55c\ub2e4\uace0 \uc54c\uc558\ub2e4.<\/p>\n\n\n\n<p>udev\uc5d0 \ub4f1\ub85d\ud558\ub824\uba74 \ub514\ubc14\uc774\uc2a4 \uc815\ubcf4\ub97c \uc54c\uc544\uc57c \ub41c\ub2e4. \uc65c class\ub85c \ucd94\uac00\ud558\ub294\uc9c0 \ub290\uaf08\ub2e4. \uc778\ud130\ub137 \uac80\uc0c9\uc73c\ub85c \ub2e4\uc74c\uacfc \uac19\uc774 \uc54c\uc544\ub0c8\ub2e4.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">pi@raspberrypi:~ $ udevadm info \/dev\/rs-tmpre1\nP: \/devices\/virtual\/rpi-sensehat\/rs-tmpre1\nN: rs-tmpre1\nL: 0\nE: DEVPATH=\/devices\/virtual\/rpi-sensehat\/rs-tmpre1\nE: DEVNAME=\/dev\/rs-tmpre1\nE: DEVMODE=0666\nE: MAJOR=235\nE: MINOR=0\nE: SUBSYSTEM=rpi-sensehat\n\npi@raspberrypi:~ $ udevadm info \/dev\/rs-tmpre2\nP: \/devices\/virtual\/rpi-sensehat\/rs-tmpre2\nN: rs-tmpre2\nL: 0\nE: DEVPATH=\/devices\/virtual\/rpi-sensehat\/rs-tmpre2\nE: DEVNAME=\/dev\/rs-tmpre2\nE: DEVMODE=0666\nE: MAJOR=235\nE: MINOR=1\nE: SUBSYSTEM=rpi-sensehat\n\npi@raspberrypi:\/dev $ udevadm info -a -n \/dev\/rs-tmpre1\n\nUdevadm info starts with the device specified by the devpath and then\nwalks up the chain of parent devices. It prints for every device\nfound, all possible attributes in the udev rules key format.\nA rule to match, can be composed by the attributes of the device\nand the attributes from one single parent device.\n\n  looking at device '\/devices\/virtual\/rpi-sensehat\/rs-tmpre1':\n    KERNEL==\"rs-tmpre1\"\n    SUBSYSTEM==\"rpi-sensehat\"\n    DRIVER==\"\"\n    ATTR{power\/control}==\"auto\"\n    ATTR{power\/runtime_active_time}==\"0\"\n    ATTR{power\/runtime_status}==\"unsupported\"\n    ATTR{power\/runtime_suspended_time}==\"0\"<\/pre>\n\n\n\n<p>\uc544\ub798 \uc2a4\ud06c\ub9bd\ud2b8\uc640 \uac19\uc774 \uc0ac\uc6a9\uc790 \uc815\uc758 rules\ub97c \ub9cc\ub4e4\uba74 \uc804\uc6d0\uc774 \ub4e4\uc5b4\uac00\uba74\uc11c \uc2e4\ud589\ub428\uc744 \ud655\uc778 \ud588\ub2e4.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">pi@raspberrypi:\/etc\/udev\/rules.d $ pwd\n\/etc\/udev\/rules.d\npi@raspberrypi:\/etc\/udev\/rules.d $ cat 100-sensehat.rules \nACTION==\"add\", SUBSYSTEM==\"rpi-sense-tmpre\", KERNEL==\"rs-tmpre2\", RUN+=\"\/bin\/sensehat_display\"<\/pre>\n\n\n\n<p>\uc544\uc27d\uac8c\ub3c4 udev\ub85c \ub4f1\ub85d\ud55c \ud504\ub85c\uc138\uac00 \uc624\ub798 \ubabb\uc0b0\ub2e4. <a href=\"https:\/\/unix.stackexchange.com\/questions\/593031\/application-started-by-udev-rule-closes-after-4-seconds\">\uc774\ubca4\ud2b8\uac00 \ub05d\ub098\uba74 process\uac00 \uc8fd\ub294\ub2e4.<\/a> systemctl\ub85c \uc11c\ube44\uc2a4 \ud615\uc2dd\uc73c\ub85c \ub4f1\ub85d\ud574\uc57c \ud55c\ub2e4. \ucc38\uc870\ud558\uc5ec \uc544\ub798\uc640 \uac19\uc774 \uc124\uc815\ud588\ub2e4. \uc798 \ub41c\ub2e4. \uc774\uc81c LED matrix\ub97c \uc5b4\ub5bb\uac8c \ud574 \ubd10\uc57c\uaca0\ub2e4.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">pi@raspberrypi:\/etc\/systemd\/system $ cat sensehat_display.service \n[Unit]\nDescription=SenseHat Temperatur &amp; Humidity Monitor\n\n[Service]\nType=simple\nExecStart=\/usr\/bin\/sensehat_display\n\n[Install]<\/pre>\n\n\n\n<figure class=\"wp-block-embed\"><div class=\"wp-block-embed__wrapper\">\nhttps:\/\/github.com\/now0930\/sensehat_toy\n<\/div><\/figure>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"\uc7ac\ubd80\ud305 \uc790\ub3d9 \uc2e4\ud589\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/tVd1sNaY1JY?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<p>\ucc38\uc870 \uc0ac\uc774\ud2b8<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/askubuntu.com\/questions\/299676\/how-to-install-3rd-party-module-so-that-it-is-loaded-on-boot\">stack over flow<\/a><\/li><li><a href=\"https:\/\/askubuntu.com\/questions\/1021547\/writing-udev-rule-for-usb-device\">writing udev rule for USB device<\/a><\/li><li><a href=\"https:\/\/baykara.medium.com\/how-to-daemonize-a-process-or-service-with-systemd-c34501e646c9\">How to daemonize a process or service with Systemd<\/a><\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"<p>\uc81c\ud55c\ub41c \ud654\uba74\uc5d0 \uc628\ub3c4, \uc2b5\ub3c4\ub97c \uc5b4\ub5bb\uac8c \ud45c\uc2dc\ud560\uae4c \uace0\ubbfc\ud558\ub2e4, \ub514\ubc14\uc774\uc2a4\ub97c 2\uac1c\ub97c \ub9cc\ub4e4\ub85c \ud588\ub2e4. \uc0ac\uc6a9\uc790\uac00 \ub514\ubc14\uc774\uc2a4 \uac1c\uc218\ub97c \uc81c\ud55c \uc5c6\uc774 \ub9cc\ub4e4 \uc218 \uc788\ub294 \uc810\uc774 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":5069,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[12],"tags":[775,1033,1032,911,1034,53,1040],"class_list":["post-5060","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-12","tag-c","tag-hts221","tag-i2c","tag-kernel","tag-led2472g","tag-linux","tag-systemctl"],"jetpack_featured_media_url":"https:\/\/now0930.pe.kr\/wordpress\/wp-content\/uploads\/2022\/02\/\uc2a4\ud06c\ub9b0\uc0f7-2022-02-21-08-46-03.png","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/posts\/5060","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/comments?post=5060"}],"version-history":[{"count":8,"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/posts\/5060\/revisions"}],"predecessor-version":[{"id":5071,"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/posts\/5060\/revisions\/5071"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/media\/5069"}],"wp:attachment":[{"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/media?parent=5060"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/categories?post=5060"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/tags?post=5060"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}