{"componentChunkName":"component---src-templates-blog-template-js","path":"/arduino","result":{"data":{"site":{"siteMetadata":{"title":"Advanced Technology Portfolio"}},"markdownRemark":{"html":"<div class=\"video-responsive\">\n<iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/AMAUcPJ385g\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen></iframe>\n</div>\n<style>\n.video-responsive{\n    overflow:hidden;\n    padding-bottom:56.25%;\n    position:relative;\n    height:0;\n}\n.video-responsive iframe{\n    left:0;\n    margin-right:auto;\n    margin-left:auto;\n    top:0;\n    height:100%;\n    width:100%;\n    position:absolute;\n}\n</style>\n<h1>Introduction</h1>\n<p>Introducing the Arduino Weather Center! With this small and compact weather station you can see the current temperature and if it is currently precipitating. The station has the following three components to make it work: a rain detection sensor, a temperature &#x26; humidity sensor, and an LED screen. </p>\n<p>The LED screen automatically updates every 200ms with new temperature and humidity data. The screen also updates every 50ms with new information about rain detection. If rain is detected the screen updates with the words \"Rain!\".  When rain in no longer detected the screen removes the words \"Rain!\".</p>\n<p><img src=\"/assets/IMG_1716roate.jpeg\"></p>\n<p>To accommodate extra power and ground locations a breadboard was used. The sensors are wired and connected to Arduino UNO board. I used the starter code from SunFounder to display temp and humidity values but added the rain detection element on my own. I also ran a port checker to find the port of the device to properly display info on the LED screen. The port of this device is 0x27. </p>\n<p>To make the rain detection work an IF statement was used. Simply put if rain was detected print \"Rain!\". ELSE print \"      \". The else statement must be blank to accommodate for the removal of \"Rain!\".</p>\n<h1>A Real-World Application</h1>\n<p>When building this device I imagined how I could scale it up to apply it to real-world application. The idea I came up with was a hyperlocal weather app. As of now we rely on radar and expensive weather stations, what if we could deploy a network of these to areas where weather information is less accurate? The information that is then compiled from the sensors would be stored in a server and then data would be sent over the air (OTA). With my implementation in conjunction with the OTA element we would have one of most accurate weather apps in the world. The only thing we would need is more sensors! </p>\n<p>To take this a step further, if we combined the data being collected from the sensors and the data coming from conventional weather stations/radar we could use artificial intelligence (AI) and machine learning (ML) to predict weather events and use the weather station that I built to send more accurate information to users and to confirm that it is indeed raining. </p>\n<h1>Wrapping Up</h1>\n<p>The primary reason that I built this weather station was to aid in my learning in the internet-of-things (IOT) space. IOT devices are starting to be the backbone of our daily lives. It would also be super cool to deploy a network of these and analyze the data and compare it to a weather app or historical weather data. </p>\n<p>While this was my first time coding in C++ and using Arduino boards it was a super interesting experience to actually pull things from the real-world and have the device react to those changes. Normally all the programming I do is \"virtual\", an example being web design. The real struggle of this project was wiring the board, this is where I spent most of time on Google and on Youtube. Overall, I am super happy the way that this turned out!</p>\n<h1>Code</h1>\n<div class=\"gatsby-highlight\" data-language=\"cpp\"><pre class=\"language-cpp\"><code class=\"language-cpp\"><span class=\"token comment\">/*****************************************************\n   name:weather_station\n   function:you can see the current value of humidity, temperature and if it is currently raining.\n ******************************************************/</span>\n\n<span class=\"token comment\">//include the libraries</span>\n<span class=\"token macro property\">#<span class=\"token directive keyword\">include</span> <span class=\"token string\">&lt;dht.h></span></span>\n<span class=\"token macro property\">#<span class=\"token directive keyword\">include</span> <span class=\"token string\">&lt;LiquidCrystal_I2C.h></span></span>\n<span class=\"token macro property\">#<span class=\"token directive keyword\">include</span> <span class=\"token string\">&lt;Wire.h></span></span>\nLiquidCrystal_I2C <span class=\"token function\">lcd</span><span class=\"token punctuation\">(</span><span class=\"token number\">0x27</span><span class=\"token punctuation\">,</span> <span class=\"token number\">16</span><span class=\"token punctuation\">,</span> <span class=\"token number\">2</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// set the LCD address to 0x27 for a 16 chars and 2 line display</span>\n\ndht DHT<span class=\"token punctuation\">;</span><span class=\"token comment\">//create a variable type of dht</span>\n\n<span class=\"token keyword\">const</span> <span class=\"token keyword\">int</span> DHT11_PIN <span class=\"token operator\">=</span> <span class=\"token number\">7</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">//Humiture sensor attach to pin7</span>\n<span class=\"token keyword\">const</span> <span class=\"token keyword\">int</span> analogPin <span class=\"token operator\">=</span> A0<span class=\"token punctuation\">;</span> <span class=\"token comment\">//the AO of the module attach to A0</span>\n<span class=\"token keyword\">const</span> <span class=\"token keyword\">int</span> digitalPin <span class=\"token operator\">=</span> <span class=\"token number\">7</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">//D0 attach to pin7</span>\n<span class=\"token keyword\">const</span> <span class=\"token keyword\">int</span> ledPin <span class=\"token operator\">=</span> <span class=\"token number\">13</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">//pin 13 built-in led</span>\n<span class=\"token keyword\">int</span> Astate <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">//store the value of A0</span>\nboolean Dstate <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">//store the value of D0</span>\n\n<span class=\"token keyword\">void</span> <span class=\"token function\">setup</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n<span class=\"token punctuation\">{</span>\n  Serial<span class=\"token punctuation\">.</span><span class=\"token function\">begin</span><span class=\"token punctuation\">(</span><span class=\"token number\">9600</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span><span class=\"token comment\">//initialize the serial</span>\n  lcd<span class=\"token punctuation\">.</span><span class=\"token function\">init</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>  <span class=\"token comment\">//initialize the lcd</span>\n  lcd<span class=\"token punctuation\">.</span><span class=\"token function\">backlight</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>  <span class=\"token comment\">//open the backlight</span>\n  <span class=\"token function\">pinMode</span><span class=\"token punctuation\">(</span>ledPin<span class=\"token punctuation\">,</span> OUTPUT<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">//set the ledPin as OUTPUT</span>\n  <span class=\"token function\">pinMode</span><span class=\"token punctuation\">(</span>digitalPin<span class=\"token punctuation\">,</span> INPUT<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">//set digitalPin as INPUT</span>\n<span class=\"token punctuation\">}</span>\n\n<span class=\"token keyword\">void</span> <span class=\"token function\">loop</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n<span class=\"token punctuation\">{</span>\n  <span class=\"token comment\">// READ DATA</span>\n  <span class=\"token comment\">//Serial.println(\"DHT11:\");</span>\n\n  <span class=\"token keyword\">int</span> chk <span class=\"token operator\">=</span> DHT<span class=\"token punctuation\">.</span><span class=\"token function\">read11</span><span class=\"token punctuation\">(</span>DHT11_PIN<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span><span class=\"token comment\">//read the value returned from sensor</span>\n  <span class=\"token keyword\">switch</span> <span class=\"token punctuation\">(</span>chk<span class=\"token punctuation\">)</span>\n  <span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">case</span> DHTLIB_OK<span class=\"token operator\">:</span>\n      <span class=\"token comment\">//Serial.println(\"OK!\");</span>\n      <span class=\"token keyword\">break</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">case</span> DHTLIB_ERROR_CHECKSUM<span class=\"token operator\">:</span>\n      <span class=\"token comment\">//Serial.print(\"Checksum error,\\t\");</span>\n      <span class=\"token keyword\">break</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">case</span> DHTLIB_ERROR_TIMEOUT<span class=\"token operator\">:</span>\n      <span class=\"token comment\">//Serial.print(\"Time out error,\\t\");</span>\n      <span class=\"token keyword\">break</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">default</span><span class=\"token operator\">:</span>\n      <span class=\"token comment\">//Serial.print(\"Unknown error,\\t\");</span>\n      <span class=\"token keyword\">break</span><span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span>\n  <span class=\"token comment\">// DISPLAY DATA</span>\n  lcd<span class=\"token punctuation\">.</span><span class=\"token function\">setCursor</span><span class=\"token punctuation\">(</span><span class=\"token number\">0</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  lcd<span class=\"token punctuation\">.</span><span class=\"token function\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Tem:\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  <span class=\"token comment\">//Serial.print(\"Tem:\");</span>\n  lcd<span class=\"token punctuation\">.</span><span class=\"token function\">print</span><span class=\"token punctuation\">(</span>DHT<span class=\"token punctuation\">.</span>temperature<span class=\"token punctuation\">,</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">//print the temperature on lcd</span>\n  <span class=\"token comment\">// Serial.print(DHT.temperature,1);</span>\n  lcd<span class=\"token punctuation\">.</span><span class=\"token function\">print</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">char</span><span class=\"token punctuation\">(</span><span class=\"token number\">223</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span><span class=\"token comment\">//print the unit\" ℃ \"</span>\n  lcd<span class=\"token punctuation\">.</span><span class=\"token function\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"C\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  <span class=\"token comment\">// Serial.println(\" C\");</span>\n  lcd<span class=\"token punctuation\">.</span><span class=\"token function\">setCursor</span><span class=\"token punctuation\">(</span><span class=\"token number\">0</span><span class=\"token punctuation\">,</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  lcd<span class=\"token punctuation\">.</span><span class=\"token function\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Hum:\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  <span class=\"token comment\">//Serial.print(\"Hum:\");</span>\n  lcd<span class=\"token punctuation\">.</span><span class=\"token function\">print</span><span class=\"token punctuation\">(</span>DHT<span class=\"token punctuation\">.</span>humidity<span class=\"token punctuation\">,</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">//print the humidity on lcd</span>\n  <span class=\"token comment\">//Serial.print(DHT.humidity,1);</span>\n  lcd<span class=\"token punctuation\">.</span><span class=\"token function\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">\" %\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  <span class=\"token comment\">//Serial.println(\" %\");</span>\n  Astate <span class=\"token operator\">=</span> <span class=\"token function\">analogRead</span><span class=\"token punctuation\">(</span>analogPin<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">//read the value of A0</span>\n  Serial<span class=\"token punctuation\">.</span><span class=\"token function\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"A0: \"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  Serial<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span>Astate<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>  <span class=\"token comment\">//print the value in the serial monitor</span>\n  Dstate <span class=\"token operator\">=</span> <span class=\"token function\">digitalRead</span><span class=\"token punctuation\">(</span>digitalPin<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">//read the value of D0</span>\n  Serial<span class=\"token punctuation\">.</span><span class=\"token function\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"D0: \"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  Serial<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span>Dstate<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  <span class=\"token function\">delay</span><span class=\"token punctuation\">(</span><span class=\"token number\">200</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">//wait a while</span>\n  <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>Dstate <span class=\"token operator\">==</span> HIGH<span class=\"token punctuation\">)</span>\n  <span class=\"token punctuation\">{</span>\n    <span class=\"token function\">digitalWrite</span><span class=\"token punctuation\">(</span>ledPin<span class=\"token punctuation\">,</span> LOW<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    lcd<span class=\"token punctuation\">.</span><span class=\"token function\">setCursor</span><span class=\"token punctuation\">(</span><span class=\"token number\">11</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    lcd<span class=\"token punctuation\">.</span><span class=\"token function\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"     \"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n  <span class=\"token punctuation\">}</span>\n  <span class=\"token keyword\">else</span>\n  <span class=\"token punctuation\">{</span>\n    <span class=\"token function\">digitalWrite</span><span class=\"token punctuation\">(</span>ledPin<span class=\"token punctuation\">,</span> HIGH<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">//turn on the led</span>\n\n  <span class=\"token punctuation\">}</span>\n  <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>Astate <span class=\"token operator\">&lt;</span> <span class=\"token number\">500</span><span class=\"token punctuation\">)</span>\n  <span class=\"token punctuation\">{</span>\n  lcd<span class=\"token punctuation\">.</span><span class=\"token function\">setCursor</span><span class=\"token punctuation\">(</span><span class=\"token number\">11</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  lcd<span class=\"token punctuation\">.</span><span class=\"token function\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Rain!\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span>\n  <span class=\"token function\">delay</span><span class=\"token punctuation\">(</span><span class=\"token number\">50</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre></div>","frontmatter":{"date":"February 18, 2021","path":"/arduino","title":"Building a Weather Station With Arduino  ","thumbnail":"/assets/IMG_1716roate.jpeg","metaDescription":null}}},"pageContext":{}}}