(window.webpackJsonp=window.webpackJsonp||[]).push([[2729],{3137:function(t,e,s){"use strict";s.r(e);var n=s(31),a=Object(n.a)({},(function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"iot-programming-with-python-and-raspberry-pi"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#iot-programming-with-python-and-raspberry-pi"}},[t._v("#")]),t._v(" IoT Programming with Python and Raspberry PI")]),t._v(" "),s("h2",{attrs:{id:"example-temperature-sensor"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#example-temperature-sensor"}},[t._v("#")]),t._v(" Example - Temperature sensor")]),t._v(" "),s("p",[t._v("Interfacing of DS18B20 with Raspberry pi")]),t._v(" "),s("p",[s("strong",[t._v("Connection of DS18B20 with Raspberry pi")])]),t._v(" "),s("p",[s("a",{attrs:{href:"https://i.stack.imgur.com/OBA2X.png",target:"_blank",rel:"noopener noreferrer"}},[s("img",{attrs:{src:"https://i.stack.imgur.com/OBA2X.png",alt:"enter image description here"}}),s("OutboundLink")],1)]),t._v(" "),s("p",[t._v("You can see there are three terminal")]),t._v(" "),s("ol",[s("li",[t._v("Vcc")]),t._v(" "),s("li",[t._v("Gnd")]),t._v(" "),s("li",[t._v("Data (One wire protocol)")])]),t._v(" "),s("p",[s("a",{attrs:{href:"https://i.stack.imgur.com/dSFFQ.png",target:"_blank",rel:"noopener noreferrer"}},[s("img",{attrs:{src:"https://i.stack.imgur.com/dSFFQ.png",alt:"enter image description here"}}),s("OutboundLink")],1)]),t._v(" "),s("p",[s("strong",[t._v("R1 is 4.7k ohm resistance for pulling up the voltage level")])]),t._v(" "),s("ol",[s("li",[s("strong",[t._v("Vcc")]),t._v(" should be connected to any of the 5v or 3.3v pins of Raspberry pi (PIN : 01, 02, 04, 17).")]),t._v(" "),s("li",[s("strong",[t._v("Gnd")]),t._v(" should be connected to any of the Gnd pins of Raspberry pi (PIN : 06, 09, 14, 20, 25).")]),t._v(" "),s("li",[s("strong",[t._v("DATA")]),t._v(" should be connected to (PIN : 07)")])]),t._v(" "),s("p",[s("strong",[t._v("Enabling the one-wire interface from the RPi side")])]),t._v(" "),s("li",[t._v("\nLogin to Raspberry pi using putty or any other linux/unix terminal.\n")]),t._v(" "),s("li",[t._v("\nAfter login, open the /boot/config.txt file in your favourite browser.\nnano /boot/config.txt\n")]),t._v(" "),s("li",[t._v("\nNow add the this line `dtoverlay=w1–gpio` to the end of the file.\n")]),t._v(" "),s("li",[t._v("\nNow reboot the Raspberry pi `sudo reboot`.\n")]),t._v(" "),s("li",[t._v("\nLog in to Raspberry pi, and run `sudo modprobe g1-gpio`\n")]),t._v(" "),s("li",[t._v("\nThen run `sudo modprobe w1-therm`\n")]),t._v(" "),s("li",[t._v("\nNow go to the directory /sys/bus/w1/devices `cd /sys/bus/w1/devices`\n")]),t._v(" "),s("li",[t._v("\nNow you will found out a virtual directory created of your temperature sensor starting from 28-********.\n")]),t._v(" "),s("li",[t._v("\nGo to this directory `cd 28-********`\n")]),t._v(" "),s("li",[t._v("\nNow there is a file name **w1-slave**, This file contains the temperature and other information like CRC. `cat w1-slave`.\n")]),t._v(" "),s("p",[s("strong",[t._v("Now write a module in python to read the temperature")])]),t._v(" "),s("div",{staticClass:"language-py extra-class"},[s("pre",{pre:!0,attrs:{class:"language-py"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("import")]),t._v(" glob\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("import")]),t._v(" time\n\nRATE "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("30")]),t._v("\nsensor_dirs "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" glob"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("glob"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/sys/bus/w1/devices/28*"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("if")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("len")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("sensor_dirs"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("while")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("True")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n time"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("sleep"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("RATE"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("for")]),t._v(" directories "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("in")]),t._v(" sensor_dirs"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n temperature_file "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("open")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("directories "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("+")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"/w1_slave"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Reading the files")]),t._v("\n text "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" temperature_file"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("read"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n temperature_file"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("close"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Split the text with new lines (\\n) and select the second line.")]),t._v("\n second_line "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" text"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("split"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"\\n"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Split the line into words, and select the 10th word")]),t._v("\n temperature_data "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" second_line"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("split"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('" "')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("9")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# We will read after ignoring first two character.")]),t._v("\n temperature "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("float")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("temperature_data"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Now normalise the temperature by dividing 1000.")]),t._v("\n temperature "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" temperature "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("/")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("1000")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("print")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'Address : '")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("+")]),s("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("str")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("directories"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("split"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'/'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("+")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("', Temperature : '")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("+")]),s("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("str")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("temperature"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n")])])]),s("p",[t._v("Above python module will print the temperature vs address for infinite time. RATE parameter is defined to change or adjust the frequency of temperature query from the sensor.")]),t._v(" "),s("p",[t._v("GPIO pin diagram")]),t._v(" "),s("ol",[s("li",[s("a",{attrs:{href:"https://www.element14.com/community/servlet/JiveServlet/previewBody/73950-102-11-339300/pi3_gpio.png%5D%5B3%5D",target:"_blank",rel:"noopener noreferrer"}},[t._v("[https://www.element14.com/community/servlet/JiveServlet/previewBody/73950-102-11-339300/pi3_gpio.png][3]"),s("OutboundLink")],1)])])])}),[],!1,null,null,null);e.default=a.exports}}]);