{"id":1427,"date":"2018-01-20T14:04:30","date_gmt":"2018-01-20T05:04:30","guid":{"rendered":"http:\/\/blog.moramcnt.com\/?p=1427"},"modified":"2018-06-04T15:03:16","modified_gmt":"2018-06-04T06:03:16","slug":"raspberry-pi-bluez-%ec%84%a4%ec%b9%98","status":"publish","type":"post","link":"http:\/\/blog.moramcnt.com\/?p=1427","title":{"rendered":"Raspberry PI \ube14\ub8e8\ud22c\uc2a4 \uc124\uc815"},"content":{"rendered":"<p>1. bluez \uc124\uce58<br \/>\n\ub77c\uc988\ubca0\ub9ac\ud30c\uc774\uc5d0\uc11c \uc4f8\uc218 \uc788\ub294 \ube14\ub8e8\ud22c\uc2a4 \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \ub2e4\uc74c\uacfc \uac19\uc740 \uc808\ucc28\ub85c \uc124\uce58\ud55c\ub2e4.<\/p>\n<p>1) \uc124\uce58\ubc29\ubc95<br \/>\n &#8211; bluez \uc124\uce58<\/p>\n<div class=\"my-syntax-highlighter\">\n<pre><textarea id=\"mshighlighter\" class=\"mshighlighter\" language=\"\" name=\"mshighlighter\" >\r\nsudo apt-get update\r\nsudo apt-get install -y libusb-dev libdbus-1-dev libglib2.0-dev libudev-dev libical-dev libreadline-dev\r\n\r\nsudo wget www.kernel.org\/pub\/linux\/bluetooth\/bluez-5.9.tar.gz\r\ntar xvf bluez-5.9.tar.gz\r\ncd bluez-5.9\/\r\nsudo .\/configure\r\nsudo make\r\nsudo make install<\/textarea><\/pre>\n<\/div>\n<p> &#8211; \ud30c\uc774\uc36c\uc6a9 pybluez \uc124\uce58<\/p>\n<div class=\"my-syntax-highlighter\">\n<pre><textarea id=\"mshighlighter\" class=\"mshighlighter\" language=\"\" name=\"mshighlighter\" >\r\nsudo apt-get install libbluetooth-dev\r\n\r\nsudo apt-get install python3-pip\r\nsudo pip3 install pybluez<\/textarea><\/pre>\n<\/div>\n<p>2) \ube14\ub8e8\ud22c\uc2a4 \ub3d9\uc791 \ud655\uc778<br \/>\n\ub2e4\uc74c\uacfc \uac19\uc774 hciconfig \uba85\ub839\uc744 \uc785\ub825\ud558\uc5ec \ubcf4\uba74 RUNNING \uc774\ub77c\uace0 \ub728\ub294\uac83\uc744 \ud655\uc778\ud560\uc218 \uc788\ub2e4.<\/p>\n<div class=\"my-syntax-highlighter\">\n<pre><textarea id=\"mshighlighter\" class=\"mshighlighter\" language=\"\" name=\"mshighlighter\" >\r\nhciconfig\r\nhci0: Type: Primary Bus: UART\r\nBD Address: B8:27:EB:40:07:6F ACL MTU: 1021:8 SCO MTU: 64:1\r\nUP RUNNING\r\nRX bytes:752 acl:0 sco:0 events:47 errors:0\r\nTX bytes:2733 acl:0 sco:0 commands:47 errors:0<\/textarea><\/pre>\n<\/div>\n<p>&#8211; RUNNING\uc544 \uc544\ub2c8\ub77c\uba74 sudo hciconfig hci0 up \ub97c \uc785\ub825\ud558\uc5ec RUNNING\uc0c1\ud0dc\ub85c \ubc14\uafbc\ub2e4.<\/p>\n<p>3) \ud30c\uc774\uc36c\uc6a9 \ube44\ucf58\uc2a4\uce90\ub108 \uc124\uce58<br \/>\n\uac1c\ubc1c\uc804\uc5d0 \ube44\ucf58\uac12\uc744 \uc81c\ub300\ub85c \ubc1b\uc744\uc218 \uc788\ub294\uc9c0 \ud14c\uc2a4\ud2b8\ud558\uae30 \uc704\ud574 \uc624\ud508\uc18c\uc2a4\ub85c \ub418\uc5b4 \uc788\ub294 \ube44\ucf58\uc2a4\uce90\ub108\ub97c \uc544\ub798\uc640 \uac19\uc774 \ub2e4\uc6b4\ub85c\ub4dc \ubc1b\uc544 \ud14c\uc2a4\ud2b8\ud574\ubcf4\uc558\ub2e4.<br \/>\n\ube44\ucf58\uac12\uc744 \uc81c\ub300\ub85c \ubc1b\ub294\ub2e4\uba74 UUID, RSSI\ub4f1\uc758 \uac12\uc774 \ucd9c\ub825\ub418\ub294\uac83\uc744 \ubcfc\uc218\uc788\ub2e4.<\/p>\n<div class=\"my-syntax-highlighter\">\n<pre><textarea id=\"mshighlighter\" class=\"mshighlighter\" language=\"\" name=\"mshighlighter\" >\r\nsudo apt-get install python-bluez\r\nsudo apt-get install git\r\ngit clone https:\/\/github.com\/switchdoclabs\/iBeacon-Scanner-\r\ncd iBeacon-Scanner-\/\r\nsudo python testblescan.py<\/textarea><\/pre>\n<\/div>\n<p>2.\ub77c\uc988\ubca0\ub9ac\ud30c\uc774\uc5d0\uc11c \ube14\ub8e8\ud22c\uc2a4\uc640 \uc2dc\ub9ac\uc5bc \ud3ec\ud2b8\ub97c \ubaa8\ub450 \uc0ac\uc6a9\ud558\uae30 \uc704\ud55c \ubc29\uc548<br \/>\n&#8211; GPS\uc7a5\uce58 \ubc0f \ube14\ub8e8\ud22c\uc2a4 2\uac1c\ub97c \ubaa8\ub450 \uc2dc\ub9ac\uc5bc \ud3ec\ud2b8\ub85c \uc0ac\uc6a9\ud560\uc218 \uc5c6\ub294 \ubb38\uc81c\uac00 \ubc1c\uc0dd\ud558\uc5ec<br \/>\nGPS\ub294 \uc2dc\ub9ac\uc5bc, \ube14\ub8e8\ud22c\uc2a4\ub294 miniuart \ub97c \uc774\uc6a9\ud558\uc5ec \ub370\uc774\ud130\ub97c \uc218\uc2e0\ud558\uae30\ub85c \ud568<\/p>\n<p>1) cmdline.txt \ud30c\uc77c \uc218\uc815<\/p>\n<div class=\"my-syntax-highlighter\">\n<pre><textarea id=\"mshighlighter\" class=\"mshighlighter\" language=\"\" name=\"mshighlighter\" >\r\nsudo vi \/boot\/cmdline.txt<\/textarea><\/pre>\n<\/div>\n<div class=\"my-syntax-highlighter\">\n<pre><textarea id=\"mshighlighter\" class=\"mshighlighter\" language=\"\" name=\"mshighlighter\" >\r\ndwc_otg.lpm_enable=0 console=tty1 root=PARTUUID=53707d2f-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait<\/textarea><\/pre>\n<\/div>\n<p>2) \ud30c\uc774\uc36c3 \uc2dc\ub9ac\uc5bc\ub85c GPS \ub370\uc774\ud130\ub97c \ubc1b\uae30 \uc704\ud574 \uc2dc\ub9ac\uc5bc\ubaa8\ub4c8 \uc124\uce58<\/p>\n<div class=\"my-syntax-highlighter\">\n<pre><textarea id=\"mshighlighter\" class=\"mshighlighter\" language=\"\" name=\"mshighlighter\" >\r\nsudo apt-get install python3-serial<\/textarea><\/pre>\n<\/div>\n<p>3) config.txt \ud30c\uc77c \uc218\uc815<\/p>\n<div class=\"my-syntax-highlighter\">\n<pre><textarea id=\"mshighlighter\" class=\"mshighlighter\" language=\"\" name=\"mshighlighter\" >\r\nsudo vi \/boot\/config.txt<\/textarea><\/pre>\n<\/div>\n<p>\uc544\ub798\uc640 \uac19\uc740 \ub0b4\uc6a9\uc744 \ucd94\uac00\ud55c\ub2e4.<\/p>\n<div class=\"my-syntax-highlighter\">\n<pre><textarea id=\"mshighlighter\" class=\"mshighlighter\" language=\"\" name=\"mshighlighter\" >\r\ndtoverlay=pi3-miniuart-bt\r\ncore_freq=250\r\nforce_turbo=1<\/textarea><\/pre>\n<\/div>\n<p>3. \ube14\ub8e8\ud22c\uc2a4 \ube44\ucf58 \ub370\uc774\ud130 \ud30c\uc2f1<br \/>\n&#8211; iBeacon\uc774 \uc5ec\ub7ec\uac1c \ucf1c\uc838\uc788\uc73c\uba74 \ube44\ucf58\ubcc4\ub85c \ubd84\uc11d\ud558\uc5ec \ud30c\uc2f1\ucc98\ub9ac\ub97c \ud574\uc57c \ub370\uc774\ud130\ub85c \uc774\uc6a9\ud560\uc218 \uc788\ub2e4.<br \/>\n\uc989 \ube44\ucf58\ub370\uc774\ud130\ub97c \uc544\ub798\uc640 \uac19\uc774 \ud328\ud0b7\uc758 \uc790\ub9ac\uc218\ub97c \uc774\ub3d9\ud558\uba74\uc11c \uac01\uac01 UUID, Major\/Minor \ubc84\uc804, Tx Power, RSSI\ub4f1\uc744 \uad6c\ud574\uc57c \ud55c\ub2e4.<\/p>\n<div class=\"my-syntax-highlighter\">\n<pre><textarea id=\"mshighlighter\" class=\"mshighlighter\" language=\"\" name=\"mshighlighter\" >\r\npkt = sock.recv(255)\r\nptype, event, plen = struct.unpack(\"BBB\", pkt[:3])\r\n\r\nif event == LE_META_EVENT:\r\nsubevent, = struct.unpack(\"B\", pkt[3])\r\npkt = pkt[4:]\r\nif subevent == EVT_LE_ADVERTISING_REPORT:\r\nnum_reports = struct.unpack(\"B\", pkt[0])[0]\r\nreport_pkt_offset = 0\r\nfor i in range(0, num_reports):\r\nprint \"UDID: \", self.getByteToString(pkt[intPacketOffset -22: report_pkt_offset - 6])\r\nprint \"MAJOR: \", self.getByteToString(pkt[intPacketOffset -6: intPacketOffset - 4])\r\nprint \"MINOR: \", self.getByteToString(pkt[intPacketOffset -4: intPacketOffset - 2])\r\n\r\n# TxPower\r\nstrTxPower = self.getByteToString(pkt[intPacketOffset - 2:intPacketOffset - 1])\r\nintTxPower = int(strTxPower, 16) - 256\r\n\r\nprint(\"TxPower:%d\" %intTxPower)\r\n\r\n# Report\ub370\uc774\ud130 \uae38\uc774 : \ub9e5\uc5b4\ub4dc\ub808\ub4dc \ub2e4\uc74c\uc5d0 \ub2e4\uc624\ub294 \ubc14\uc774\ud2b8\r\nintReportDataLength, = struct.unpack(\"B\", pkt[intPacketOffset + 9:intPacketOffset + 10])\r\nintPacketOffset = intPacketOffset + 10 + intReportDataLength + 1\r\nstrRssi, = struct.unpack(\"b\", pkt[intPacketOffset - 1:intPacketOffset])\r\nprint(\"RSSI:%d\" % strRssi)<\/textarea><\/pre>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>1. bluez \uc124\uce58 \ub77c\uc988\ubca0\ub9ac\ud30c\uc774\uc5d0\uc11c \uc4f8\uc218 \uc788\ub294 \ube14\ub8e8\ud22c\uc2a4 \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \ub2e4\uc74c\uacfc \uac19\uc740 \uc808\ucc28\ub85c \uc124\uce58\ud55c\ub2e4. 1) \uc124\uce58\ubc29\ubc95 &#8211; bluez \uc124\uce58 sudo apt-get update sudo apt-get install -y libusb-dev libdbus-1-dev libglib2.0-dev libudev-dev libical-dev libreadline-dev sudo wget www.kernel.org\/pub\/linux\/bluetooth\/bluez-5.9.tar.gz tar xvf bluez-5.9.tar.gz cd bluez-5.9\/ sudo .\/configure sudo make sudo make install &#8211; \ud30c\uc774\uc36c\uc6a9 pybluez \uc124\uce58 sudo apt-get install libbluetooth-dev sudo apt-get [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[2,35],"tags":[248,228,249],"class_list":["post-1427","post","type-post","status-publish","format-standard","hentry","category-2","category-iot","tag-l","tag-python3","tag-249"],"_links":{"self":[{"href":"http:\/\/blog.moramcnt.com\/index.php?rest_route=\/wp\/v2\/posts\/1427","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/blog.moramcnt.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.moramcnt.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.moramcnt.com\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.moramcnt.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1427"}],"version-history":[{"count":13,"href":"http:\/\/blog.moramcnt.com\/index.php?rest_route=\/wp\/v2\/posts\/1427\/revisions"}],"predecessor-version":[{"id":1719,"href":"http:\/\/blog.moramcnt.com\/index.php?rest_route=\/wp\/v2\/posts\/1427\/revisions\/1719"}],"wp:attachment":[{"href":"http:\/\/blog.moramcnt.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1427"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.moramcnt.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1427"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.moramcnt.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1427"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}