<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Your Site's RSS Feed]]></title><description><![CDATA[Welcome to TinoIoT! Read our pinned posts below to get started : )]]></description><link>https://tinoiot.com</link><generator>GatsbyJS</generator><lastBuildDate>Tue, 02 Nov 2021 06:52:04 GMT</lastBuildDate><item><title><![CDATA[About Us]]></title><description><![CDATA[ The TinoIOT (Internet Of Things) Club’s primary objective revolves around the introduction and promotion of engineering and collaboration.  Our mission…]]></description><link>https://tinoiot.com/blogs/about-us/</link><guid isPermaLink="false">https://tinoiot.com/blogs/about-us/</guid><pubDate>Wed, 18 Aug 2021 00:00:00 GMT</pubDate><content:encoded>&lt;img src=&quot;/static/cb58475fb36cea4bba85db52207c51a0/2244e/featured_img.jpg&quot;/&gt;&lt;h2&gt;Our Objective&lt;/h2&gt;
&lt;p&gt;The TinoIOT (Internet Of Things) Club’s primary objective revolves around the introduction and promotion of engineering and collaboration.  &lt;/p&gt;
&lt;h2&gt;Club Mission&lt;/h2&gt;
&lt;p&gt;Our mission is to provide each club member with the necessary knowledge to find their individual passions in the world of IoT. An IoT device, by definition, is an electronic device that can transfer data over a network without human interaction. Many of our common household appliances such as smart TVs, watches, and voice assistants are all constantly transmitting vital data in the background, and keeping their users reliably and consistently informed. Although IoT is all around us, many of us have never seen a network interface, or touched the hardware beneath the sleek exterior of these devices. TinoIOT serves as an enabling gateway that promotes free exploration and creation of IoT devices to  students. Club members develop customizable IoT devices for applications of their choosing through instruction from both a detailed curriculum and informative project posts on our website.  &lt;/p&gt;
&lt;h2&gt;The TinoIOT Experience&lt;/h2&gt;
&lt;p&gt;Along the way, members gain valuable hardware, software, and electrical knowledge that will allow them to pursue their own projects in the future. TinoIOT focuses on the exploration of many exciting technologies such as Computer-Aided-Design Software (CAD) that will allow students to design and 3D print custom enclosures and devices, full System on Chip(SoC) devices, microcontrollers, and home electronics. Members use cloud networking, databases, and machine learning, to fully connect the hardware and software aspects. By introducing these concepts, we hope to foster members’ growth in the IoT field, and provide a start in mitigating common issues and annoyances in our homes &amp;#x26; communities.  &lt;/p&gt;
&lt;h2&gt;Officer Team&lt;/h2&gt;
&lt;p&gt;Founded by Ethan and Sohom in 2019, the TinoIOT Officer Team now consists of 7 dedicated individuals who have a variety of experiences in the IOT world. The team provides club members with a foundation of IOT, relevant curriculum, and specific project posts to guide them along their journey in creating projects.     &lt;/p&gt;
&lt;style&gt;
table.m-auto:first-of-type{margin-top:20px!important}table h3,table p,table span{margin:0!important}table.officers h3,table.officers p,table.officers span{font-size:84%}table{border-collapse:separate;border-spacing:min(2vw,20px) 10px}table.presidents .gatsby-resp-image-background-image,table.presidents .gatsby-resp-image-wrapper,table.presidents img{width:min(23.5vw,222px)!important;height:calc(min(23.5vw,222px) * 1.25)!important}table.presidents img{object-fit:cover}table.presidents .gatsby-resp-image-background-image{background-size:cover;background-position:center}table.officers .gatsby-resp-image-background-image,table.officers .gatsby-resp-image-wrapper,table.officers img{width:min(18vw,140px)!important;height:calc(min(18vw,140px) * 1.25)!important}table.officers h3{max-width:calc(min(18vw,140px) - 10px)!important;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}table.officers img{object-fit:cover}table.officers .gatsby-resp-image-background-image{background-size:cover;background-position:center;padding-bottom:0!important}@media only screen and (max-width:870px){table{border-spacing:10px 5px}table.presidents .gatsby-resp-image-background-image,table.presidents .gatsby-resp-image-wrapper,table.presidents img{width:calc((100vw - 90px)/ 2)!important;height:calc(calc((100vw - 90px)/ 2) * 1.25)!important}table.officers{border-spacing:9px 5px}table.officers .gatsby-resp-image-background-image,table.officers .gatsby-resp-image-wrapper,table.officers img{width:calc((100vw - 100px)/ 3)!important;height:calc(calc((100vw - 100px)/ 3) * 1.25)!important}table.officers h3{max-width:calc(calc((100vw - 100px)/ 3) - 10px)!important;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}}    
&lt;/style&gt;
&lt;table class=&quot;m-auto unset-width presidents&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;&lt;th align=&quot;center&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 420px; &quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link&quot; href=&quot;/static/540ee4c07b72f8c0e031e04f5c0b5ea4/d10fb/nandu%20upscaled.png&quot; style=&quot;display: block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom: 132.51533742331287%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAbCAYAAAB836/YAAAACXBIWXMAAAsTAAALEwEAmpwYAAAGm0lEQVRIxz2VaXBV5RnHj4EawCVGQMdmHEZQXFhSwmZIIeEGEsyekHuTe3L39dx9v8m92QiQICodlCIqFFsjCFYtTKeKWqBDDQUcqzN1xuliRYvWD+2HLk6xjP76nBOmH5455577nt/7f5//8zxHKQ7sJBkbwOMMY+/z4rJ75T6E064RC+dJxovkMqMkYgXjPqxlcDvC+D1xIqGcsSbgS2LpdtDV2YOiA+ORfoFEDJDXFRJwAJsaIOBNoPmTFPt3GMCwlsUt61yOIFogaQD1TXyeGOatDjo7elH6s9tIyUOvK0ookDJ2dtpDhoqgL0E0mCGfHmaoME4uPWJspva68LpD0yeIFQWeNtarvV6U4eIuEtG8qNNEUVSAEfkzKC/oSkLyLIYm0IA/JUoSuJxRPHKKHrNN/g8Qi+QMIU6bhrXHgzJUmCAdH8Dv1vBJBL1huQYx1bewfFUdlavrqKquZ0lVDQvvX8HipWuo39yBanXTp7oE6pe8h1B7vEYo8UieeDhrqAtILuKhFMuWVzNjdjlzbr2dOWVzmVexkIp7l3D34uXcseB+yu9YwNJlqwkGEsTldHqaDA9cERT9R0JMSUseo+LgxtotlNx4C7Nuvo2ZpbO5uXw+t942l7Kycm6fO5/SObfwndKbUJQSWpq6xbCd0xVwPZSgOKkb89jEU8YON84pp2TmDGbPmsM9d86jq3oJ6fYNjNhaGFEb6F2/jPvuLKNEUahcsZZC/3bj/Wxq2DBR0d2NhXPsFmBLswWlpFSUzaLqvkX0d23kQLCTk8NBfrEry9t7h3l9IsHhaAcPfFdUz6+QGh0mJco8wnH0BVF0h3T7x7f/gHpTC8qMUm4qm0dzdRWpzk1ktzayP6ryykiE4yMxnoo5mXC3Y6p8kBtkrcPmJyRVoBvjluZQ4gIr5MZ4Zv8kdlVsl6MsqLgbU9VD1FQupa5qGc1rlnB8e5xHtV7aatfRKlErz2fNmk1bq9noHt0Lv5iqZJNDjEgtPrv/RTKJAjeUzGTlg/dirV2Fr6GGor2LwOa1PO5u5glPE/6marY7m/E1ruOuikVGTU7DJLxxlHxqhJHBcUaHJyjmR7lL8lK5sIKCuQGPaRUZtYNUVyNFAT2jtTPsaGPc9giZtvXUVdcSjaSN/OntF5Q2VfQ+HRSn9J6MWB10r1zKhocWk+ow8eOEmdeKbvJtG3jO38YraQunxqO8d6DIPlG7w9ZmdJZfKiUoA0ITP5S8WK7nMR4ZINzdg3vFPXSvWUpgy3oOJ61Mpvvwb1zJ3sBWjqR6+VGsh7d3xTgUMvN0zCbqNDFEk1aNikIB6oMhIi7pxZ2RjrGtraKtchEO08OMqc3EWmrxbaoh0dHA7qDKUO8Whrrr2efrYpvfTSCYlFaNSD+nxe20XjZpIuJSSM4f1tKE7T4cmzZiN32fAUsr/uZN7NJ8nDt2hHdePsqwR2VAbWWH5iERSkr7TU8ovZ41XWFUijokN3rosy8SyqKJW2pjI8FGExmBFnvaOJSN83wxz26flYLDSlLeCwjM5479H2iYkkoMGoUdNmZaiLAcPyrQnsYm2qpXYxNo1tLCHk3luf4Qoy4z0V6VlJSYbsQ0MGYMX31yKzosER0wpoVN9RtQzScKH2mmY/X3aF+3Bmv9ejLmFsZcFsacXUwE7ETCaaNl9ZQF5EQGRx8OMTEjdH3i6m7Z+3y4xDm1qRXNtA5tcw3OurUMmRt5MmjmkLh8MCn5i+aMytDLTRcUvf59UfTviZ4Dlw6USd2nurFYnFg3bmC7OLrX1842WzMHE1aO9Ts4VnByJOslF8sZqUnFCwZ4+vsjplgtbhx2AVk9mLtsRrNbTHWEGh5mj9Te0Zyb51N9HB1wcmLQzYlRHy9JbR54/FF+8vq7ZHLbZDBHDEOMHFplbJs7VfpkWozte4nJ07/jh2PD7Oyp4+lgBy9mRFHawU/zNk4WXPys6GIysZWXXz3Jxb/DGx9+yZOHX8XtCtMjXz6ls9ViwA7Kbme/gDc/u8aZj//F0SPHmJwo8ELeKy1o5YW4tKEc+TWZOj8/fpSpT/7DuctXmfrLN1z4Kxz/5fsURvegJAcf48QHX3BGQG/8/p+89ad/89afr3Lmc4H/4R+cev8yp37zIW/++gNOX/iIsx/9jfOy8YXPvpW4xkWJ859c5eIVmLr8Ncrpj7/iV59+zdk/fsU5Aem7Gld5/o4snpKXp0TBhS/hksRFub905RrvXvmG967Hbz//lkuf/pfzAvwfAl3Fc5bNovsAAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcset=&quot;/static/540ee4c07b72f8c0e031e04f5c0b5ea4/94563/nandu%20upscaled.webp 163w,
/static/540ee4c07b72f8c0e031e04f5c0b5ea4/647a8/nandu%20upscaled.webp 325w,
/static/540ee4c07b72f8c0e031e04f5c0b5ea4/ce09e/nandu%20upscaled.webp 420w&quot; sizes=&quot;(max-width: 420px) 100vw, 420px&quot; type=&quot;image/webp&quot;&gt;
          &lt;source srcset=&quot;/static/540ee4c07b72f8c0e031e04f5c0b5ea4/222b7/nandu%20upscaled.png 163w,
/static/540ee4c07b72f8c0e031e04f5c0b5ea4/ff46a/nandu%20upscaled.png 325w,
/static/540ee4c07b72f8c0e031e04f5c0b5ea4/d10fb/nandu%20upscaled.png 420w&quot; sizes=&quot;(max-width: 420px) 100vw, 420px&quot; type=&quot;image/png&quot;&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/540ee4c07b72f8c0e031e04f5c0b5ea4/d10fb/nandu%20upscaled.png&quot; alt=&quot;Shrinandan Narayanan&quot; title=&quot;Shrinandan Narayanan&quot; loading=&quot;lazy&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;&gt;
        &lt;/picture&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/th&gt;&lt;th align=&quot;center&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 380px; &quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link&quot; href=&quot;/static/95a8218fd8307580df8c220e17fdaa43/0246a/krisha%20chokshi.jpg&quot; style=&quot;display: block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom: 103.06748466257669%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAVABQDASIAAhEBAxEB/8QAGQABAAIDAAAAAAAAAAAAAAAAAAMEAQIF/8QAFQEBAQAAAAAAAAAAAAAAAAAAAgP/2gAMAwEAAhADEAAAAaGJN5PnLxGQTpXDj//EABsQAAICAwEAAAAAAAAAAAAAAAECABEDEiEx/9oACAEBAAEFAtnUZ1InYoFWpyFdYFqeS5//xAAYEQACAwAAAAAAAAAAAAAAAAABEBEhMf/aAAgBAwEBPwGKQxf/xAAWEQADAAAAAAAAAAAAAAAAAAAAEBH/2gAIAQIBAT8BK//EABsQAAEFAQEAAAAAAAAAAAAAAAEAAhARITFx/9oACAEBAAY/AtCG9go2KbSx+J3k/wD/xAAdEAEAAwEAAgMAAAAAAAAAAAABABExIUFRYZGh/9oACAEBAAE/Iedf5Vlh6pdepXy+ohVeVjFpgDuS/WSy2pzrvX7MqBmJFrb1Z//aAAwDAQACAAMAAAAQJxi//8QAGBEBAAMBAAAAAAAAAAAAAAAAAQAQESH/2gAIAQMBAT8QA7YmOM4r/8QAFxEBAQEBAAAAAAAAAAAAAAAAAREAMf/aAAgBAgEBPxAY0NOG903/xAAeEAEAAwACAgMAAAAAAAAAAAABABEhMZFBUWFxof/aAAgBAQABPxAW2GoaejJXS2K9T4g4IL6tLShUOTd/CIeYIUaZiRQIIBYp9kOzvUpwgi8jw0E6iJ7Fq+Z//9k=&apos;); background-size: cover; display: block;&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcset=&quot;/static/95a8218fd8307580df8c220e17fdaa43/94563/krisha%20chokshi.webp 163w,
/static/95a8218fd8307580df8c220e17fdaa43/647a8/krisha%20chokshi.webp 325w,
/static/95a8218fd8307580df8c220e17fdaa43/1cdb2/krisha%20chokshi.webp 380w&quot; sizes=&quot;(max-width: 380px) 100vw, 380px&quot; type=&quot;image/webp&quot;&gt;
          &lt;source srcset=&quot;/static/95a8218fd8307580df8c220e17fdaa43/d2f63/krisha%20chokshi.jpg 163w,
/static/95a8218fd8307580df8c220e17fdaa43/c989d/krisha%20chokshi.jpg 325w,
/static/95a8218fd8307580df8c220e17fdaa43/0246a/krisha%20chokshi.jpg 380w&quot; sizes=&quot;(max-width: 380px) 100vw, 380px&quot; type=&quot;image/jpeg&quot;&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/95a8218fd8307580df8c220e17fdaa43/0246a/krisha%20chokshi.jpg&quot; alt=&quot;Krisha Chokshi&quot; title=&quot;Krisha Chokshi&quot; loading=&quot;lazy&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;&gt;
        &lt;/picture&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/th&gt;&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;td align=&quot;center&quot;&gt;&lt;h3&gt;Shrinandan Narayanan&lt;/h3&gt;&lt;span&gt;Co-President&lt;br&gt;&lt;/span&gt;&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;&lt;h3&gt;Krisha Chokshi&lt;/h3&gt;&lt;span&gt;Co-President&lt;br&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table class=&quot;m-auto unset-width officers&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;&lt;th align=&quot;center&quot;&gt;&lt;img src=&quot;&quot; alt=&quot;Max Liu&quot;&gt;&lt;/th&gt;&lt;th align=&quot;center&quot;&gt;&lt;img src=&quot;./maybawl.jpeg&quot; alt=&quot;Ryan Hsieh&quot;&gt;&lt;/th&gt;&lt;th align=&quot;center&quot;&gt;&lt;img src=&quot;./nandu upscaled.png&quot; alt=&quot;Sungmin B&quot;&gt;&lt;/th&gt;&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;td align=&quot;center&quot;&gt;&lt;h3&gt;Max Liu &lt;/h3&gt;&lt;span&gt;Treasurer&lt;/span&gt;&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;&lt;h3&gt;Ryan Hsieh&lt;/h3&gt;&lt;span&gt;Secretary&lt;/span&gt;&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;&lt;h3&gt;Sungmin Baik&lt;/h3&gt;&lt;span&gt;Public Relations&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table class=&quot;m-auto unset-width officers&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;&lt;th align=&quot;center&quot;&gt;&lt;img src=&quot;&quot; alt=&quot;Ishan Juneja&quot;&gt;&lt;/th&gt;&lt;th align=&quot;center&quot;&gt;&lt;img src=&quot;&quot; alt=&quot;Arnav Deshpande&quot;&gt;&lt;/th&gt;&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;td align=&quot;center&quot;&gt;&lt;h3&gt;Ishan Juneja&lt;/h3&gt;&lt;span&gt;Student Mentor&lt;/span&gt;&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;&lt;h3&gt;Arnav Deshpande&lt;/h3&gt;&lt;span&gt;Student Mentor&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2&gt;Final Notes&lt;/h2&gt;
&lt;p&gt;We hope everyone will find something enjoyable about our club. Feel free to email us with any questions at &lt;a href=&quot;mailto:CupertinoIoT@gmail.com&quot;&gt;CupertinoIoT@gmail.com&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Want to join our Slack group for additional help? Please fill out our membership form &lt;a href=&quot;https://forms.gle/xEBPEHXUjCCnfQpm7&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Take care, &lt;/br&gt;
TinoIoT Exec Team  &lt;/p&gt;</content:encoded></item><item><title><![CDATA[Ring Door Bell Clone Part 1]]></title><description><![CDATA[ In this project we will be using the ESP32-CAM to create a Ring Door Bell type device. This small microcontroller…]]></description><link>https://tinoiot.com/tutorials/ring-door-bell-clone-p1/</link><guid isPermaLink="false">https://tinoiot.com/tutorials/ring-door-bell-clone-p1/</guid><pubDate>Sat, 13 Feb 2021 00:00:00 GMT</pubDate><content:encoded>&lt;img src=&quot;/static/66f0b8f3773a833485ef8158cc588a80/497c6/slightly-better-esp32-ish-3-.png&quot;/&gt;&lt;h1&gt;Introduction&lt;/h1&gt;
&lt;p&gt;In this project we will be using the ESP32-CAM to create a Ring Door Bell type device. This small microcontroller has multiple capabilities, including:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Camera Capability&lt;/li&gt;
&lt;li&gt;Wifi&lt;/li&gt;
&lt;li&gt;Bluetooth&lt;/li&gt;
&lt;li&gt;General Purpose Input Output (GPIO)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These features make it ideal for many applications, as it can interface with sensors and other hardware, and also communicate over Wifi or Bluetooth. During this project, we will be taking advantage of all of these features to create a Ring Door Bell device with this functionality:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Detect motion&lt;/li&gt;
&lt;li&gt;Stream video&lt;/li&gt;
&lt;li&gt;Notify user&lt;/li&gt;
&lt;li&gt;Save images for later&lt;/li&gt;
&lt;li&gt;Have a web interface&lt;/li&gt;
&lt;li&gt;Have a case&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;Requesting Parts&lt;/h1&gt;
&lt;p&gt;If you would like to request the ESP32-CAM Microcontroller, please:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fill out the form &lt;a href=&quot;https://docs.google.com/forms/d/e/1FAIpQLScAbV7mz54nFYIpLaKZpQZFn_UysMwr27sUhh9jkwMGNngwtg/viewform&quot;&gt;here&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Select kit option with ESP32-CAM&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If you have a base kit, you can receive just the ESP-32 CAM&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Donate &lt;a href=&quot;https://tracks.activenetwork.com/CPTHS/iot-kit-donation&quot;&gt;here &lt;/a&gt;if you can!&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;Board Overview&lt;/h1&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 225px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/9bcc56e67bcfa3bfab21df3d420a2278/3684f/espfront-and-back.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 100%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD+0lEQVQ4y52VaUxcVRTH+V6/8EH91kbT4IeilEWFoVP2pS3LsAwIto5SGLahbCmpC8TEsEaaipDCMIAxRMqSKCGdUgqUpdQBwYIlUoJBlgGmDFGJyg4/3xvyyiL9oCc579zc++7//e85/3ueFUfYzs4O/8fEfVbi47CLtrKywvj4uMXHnowxNjbGzOwsCyYTi2Yzv/3xO8vLy5iXzBiNswLaPsDt7W2kuLGxYQFsbm7G2tqa4ydOEBwaQqgyAi8fbwKDg/D288VVLkcmP4PfeR/s7O2Ymp627LN6Hv2WlhZsXrPh+CuvooyKQlt1k8AQJQGKUE47OJKRmUZSUrwlpqQkMTdv3AVcX19nWkCfm5tjZmaGyclJtra26Ozs5KzbWZxdXan6uppHIwZCI6IJDHTHx0dObl4u+QW5dHW1Mjzcz99//bkLaBbyUVFRQVlZGcXFxZSXl7OwsGABPGVri8ObTpTcLKHP0E2kUsF3xd58mujEyVP2ODnL6O7pwDDQi+mpaRdQKoLIShyLUTS9Xs/rb9hx0saG7JyPGPzxe5QR4XyW7k9WsgJ1QgLpGWn0C2A/PR5kcfHp0TncA7yDu4c7L778EgFBQYyMDhOpUlN4o4RSrY5vm5v45lat8CED9zpamV+Y22O43zc3Ny0L9fX1vHDsGDYCw7yCND78OAs3Lx8io6OIvvQuzjIZtsIJ5O7unHZ0YOKXiX8zlKQj2sTEBFezrpKfn8fYeBfVX1VSqdNRWVWJtlJLVU01uuoqdDU1wpyO1bXVowGlI/f19REXH0dsfDzKd1TEJsQLYzWqD2JISEzmk+xsNFdScPf0QClodGlpaQ9QYia6dOS2trtERL1HapIS7efhyD08yMxM4tq1FPJysyn5opDrNwpxfMteyLULs7MzB6t82PT621xSqUhQX+R6QSpJmnh+GOhgcKiT3gd6HhqE+LALDw9XQhSezEvCFh8m4X4ajUaL/sQo2ujoCMrIUC6qBJaZWWg0anp69XR136btXjOdPXcZetSPi8vb+PnKdu+zBNjU1ERRURF1dXXU1tZaFhoaGghUKEjLSBeqGoVa/T6G/nZ6HrRyv1tPZ/cdyspLhTvtSkCAGwv7GYp5E31tbc3iEmBwWDiJGg3e/v6CkGN4Mj7I458HGBjq5X5PG6VleaSmXSYk2I0ls+noHEqyaWxsxNPXj4BgBZ7+Fzgj6C2/MIeCohxKviygpLSIcm0x54Mu4ODkwNTUrwerLLkkm/b2dkEu0SQkXyEuUYM6MQVVTCyqywIjQSa+587h5eeHzM0NRVjYQdk8r2OLnUh0sUeKKRHZbwlxY2Pz2fzq6uqzHmppsIeBJLD/+huQ3v8HZu/wVjNybwIAAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source
              srcset=&quot;/static/9bcc56e67bcfa3bfab21df3d420a2278/94563/espfront-and-back.webp 163w,
/static/9bcc56e67bcfa3bfab21df3d420a2278/d7e55/espfront-and-back.webp 225w&quot;
              sizes=&quot;(max-width: 225px) 100vw, 225px&quot;
              type=&quot;image/webp&quot;
            /&gt;
          &lt;source
            srcset=&quot;/static/9bcc56e67bcfa3bfab21df3d420a2278/222b7/espfront-and-back.png 163w,
/static/9bcc56e67bcfa3bfab21df3d420a2278/3684f/espfront-and-back.png 225w&quot;
            sizes=&quot;(max-width: 225px) 100vw, 225px&quot;
            type=&quot;image/png&quot;
          /&gt;
          &lt;img
            class=&quot;gatsby-resp-image-image&quot;
            src=&quot;/static/9bcc56e67bcfa3bfab21df3d420a2278/3684f/espfront-and-back.png&quot;
            alt=&quot;espfront and back&quot;
            title=&quot;espfront and back&quot;
            loading=&quot;lazy&quot;
            style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
          /&gt;
        &lt;/picture&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Looking at the front and back of the board, we can see multiple features. On the front of the board, we can see the camera at the center. This camera is connected to the board with a thin ribbon cable, so be careful with the microcontroller. Youre camera might have a piece of tape to protect the lens which you can remove. Underneath the camera is a metal square. This square is a microSD card slot that can be used to save images to or other data. On the bottom left, there is a white square. This is a small LED that can be used to illuminate the subject of the camera. It is very bright, so don’t look directly into it from a close distance.&lt;/p&gt;
&lt;p&gt;On the backside of the board, you can see the main chip in the silver rectangle. The gold snake like path is an antenna band. If you need to, it is possible to extend the range of Wifi by connecting an antenna to the white circle on the bottom right side of the chip, as this is an antenna port. On the top left side of the board, look carefully for a button. It is directly to the left of the yellow square. This is the reset/program button. We will be using it to let the microcontroller know if it is in programming mode or not.&lt;/p&gt;
&lt;h1&gt;Programming the Board&lt;/h1&gt;
&lt;p&gt;You may have noticed that the board does not have a USB port on it. To program it, we need a special device called an FTDI programmer. This device converts USB signals into a form of data the microcontroller can understand.&lt;/p&gt;
&lt;p&gt;To connect the FTDI programmer, connect it to your microcontroller according to this wiring diagram using the parts in your kit. Pay attention to the arrow. This connects IO0 to GND. This wire is used to put the device into programming mode. I will be calling this “the jumper wire”&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/f5100127c3531a7878870774affde3c6/2bef9/esp32-cam-prog-1024x470.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 46.012269938650306%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAIAAAC9o5sfAAAACXBIWXMAAAsTAAALEwEAmpwYAAABdklEQVQoz41RS0sCURQeaBMt+jMtg9pWVJuCIAJp0aY/ELjKCLSFUC0Ce2ibUrN8NIVRYZBhswuaaRWOaOO8nBkfc8V5T3fSkZAWfRy+c+Dc736ccxD7B9av+D8QhwzDqjfsdtsGALLVbMGwRanTbDEsy7OswNd0VTV13TJNy4LksCPuWpE4/pLPY4XXQu5JEoUWkG1dBzxXpiiK5xhRbCvKH87dP0iSjIRPDvZ2b2MJkuRZDqgi0GWVeC6cL68dL62GFzxn8yvZzR2WYQiCEEVR07SeuFShrk5D6VDwHs3SklDm6tVSVWCrmeD+xtDo2PDINIJsI8jDViCD3gT8fq/X6/P5euLPIplNXeTScTR+WSG/hBKtSJKhdN7uHiNTi4eTc0cTs+HxmZhnvcZy0BYAAIXOwmDCMCyZTGWu0UQ0KksNuML+YLphVHiuSFOqpv09M03TOI5/EMQ7jstw5y6crmnCZLtFH+6puo/cAl5iwKHfHcA3yybahwcaWs4AAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source
              srcset=&quot;/static/f5100127c3531a7878870774affde3c6/94563/esp32-cam-prog-1024x470.webp 163w,
/static/f5100127c3531a7878870774affde3c6/647a8/esp32-cam-prog-1024x470.webp 325w,
/static/f5100127c3531a7878870774affde3c6/c1dc5/esp32-cam-prog-1024x470.webp 650w,
/static/f5100127c3531a7878870774affde3c6/1e975/esp32-cam-prog-1024x470.webp 975w,
/static/f5100127c3531a7878870774affde3c6/a9a89/esp32-cam-prog-1024x470.webp 1024w&quot;
              sizes=&quot;(max-width: 650px) 100vw, 650px&quot;
              type=&quot;image/webp&quot;
            /&gt;
          &lt;source
            srcset=&quot;/static/f5100127c3531a7878870774affde3c6/222b7/esp32-cam-prog-1024x470.png 163w,
/static/f5100127c3531a7878870774affde3c6/ff46a/esp32-cam-prog-1024x470.png 325w,
/static/f5100127c3531a7878870774affde3c6/a6d36/esp32-cam-prog-1024x470.png 650w,
/static/f5100127c3531a7878870774affde3c6/e548f/esp32-cam-prog-1024x470.png 975w,
/static/f5100127c3531a7878870774affde3c6/2bef9/esp32-cam-prog-1024x470.png 1024w&quot;
            sizes=&quot;(max-width: 650px) 100vw, 650px&quot;
            type=&quot;image/png&quot;
          /&gt;
          &lt;img
            class=&quot;gatsby-resp-image-image&quot;
            src=&quot;/static/f5100127c3531a7878870774affde3c6/a6d36/esp32-cam-prog-1024x470.png&quot;
            alt=&quot;esp32 cam prog 1024x470&quot;
            title=&quot;esp32 cam prog 1024x470&quot;
            loading=&quot;lazy&quot;
            style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
          /&gt;
        &lt;/picture&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Next, download the Arduino IDE here and follow these tutorials to set it up depending on your system (Windows here, Mac/Linux here)&lt;/p&gt;
&lt;p&gt;Then, select the ESP32-CAM Thinker Module and COM port through the Tools menu. Open the example code at “ File &gt; Examples &gt; ESP32 &gt; Camera &gt; Camera Web Server.” Change the SSID and password fields (leave the quotes in). Add ”//” in front of CAMERA_MODEL_WROVER_KIT and remove the ”//” in front of CAMERA_MODEL_AI_THINKER  and save the file. To push the example code to the device, follow these instructions:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Connect FTDI Programmer as shown previously&lt;/li&gt;
&lt;li&gt;Connect GND to IO0 (The jumper wire)&lt;/li&gt;
&lt;li&gt;Press reset button under board&lt;/li&gt;
&lt;li&gt;Push code from Arduino IDE&lt;/li&gt;
&lt;li&gt;Disconnect GND and IO0&lt;/li&gt;
&lt;li&gt;Press reset button under board&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Now, open the serial monitor through the “Tools” menu and wait until a URL with an IP address appears. Make sure your computer is connected to the same network that you programmed the ESP32-CAM to connect to, and open the URL in your web browser. You can now start the camera stream and see the video displayed by your device. Try different resolutions and adjust the settings. There may be some issues with lag in the video depending on the quality of your network connection and other factors.&lt;/p&gt;
&lt;h1&gt;ESP32-CAM Code Explanation&lt;/h1&gt;
&lt;p&gt;Let’s run through the example code so you know how it works.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;c&quot;&gt;&lt;pre class=&quot;language-c&quot;&gt;&lt;code class=&quot;language-c&quot;&gt;&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;esp_camera.h&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&amp;lt;WiFi.h&gt;&lt;/span&gt;&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;//&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// WARNING!!! Make sure that you have either selected ESP32 Wrover Module,&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;//            or another board which has PSRAM enabled&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;//&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// Select camera model&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;//define CAMERA_MODEL_WROVER_KIT&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;//#define CAMERA_MODEL_ESP_EYE&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;//#define CAMERA_MODEL_M5STACK_PSRAM&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;//#define CAMERA_MODEL_M5STACK_WIDE&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;define&lt;/span&gt; &lt;span class=&quot;token macro-name&quot;&gt;CAMERA_MODEL_AI_THINKER&lt;/span&gt;&lt;/span&gt;

&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;camera_pins.h&quot;&lt;/span&gt;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;char&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; ssid &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;****&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;char&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; password &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;******&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;startCameraServer&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Lines 1-2 start by including files and libraries that the code needs to use. These store a bunch of code in the background so you have to do less work.&lt;/p&gt;
&lt;p&gt;Lines 9-14 tell the compiler what type of board we’re using. In our club, we use the AI Thinker model, so we uncommented that line. The // comments out lines. It tells the compiler to ignore that line.&lt;/p&gt;
&lt;p&gt;On the next few lines, we tell the microcontroller what our Wifi information is, and then start the Camera Server that runs on the ESP32-CAM.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;c&quot;&gt;&lt;pre class=&quot;language-c&quot;&gt;&lt;code class=&quot;language-c&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;setup&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  Serial&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;begin&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;115200&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  Serial&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;setDebugOutput&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;true&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  Serial&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token class-name&quot;&gt;camera_config_t&lt;/span&gt; config&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  config&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ledc_channel &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; LEDC_CHANNEL_0&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  config&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ledc_timer &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; LEDC_TIMER_0&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  config&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;pin_d0 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; Y2_GPIO_NUM&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  config&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;pin_d1 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; Y3_GPIO_NUM&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  config&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;pin_d2 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; Y4_GPIO_NUM&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  config&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;pin_d3 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; Y5_GPIO_NUM&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  config&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;pin_d4 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; Y6_GPIO_NUM&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  config&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;pin_d5 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; Y7_GPIO_NUM&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  config&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;pin_d6 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; Y8_GPIO_NUM&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  config&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;pin_d7 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; Y9_GPIO_NUM&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  config&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;pin_xclk &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; XCLK_GPIO_NUM&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  config&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;pin_pclk &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; PCLK_GPIO_NUM&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  config&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;pin_vsync &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; VSYNC_GPIO_NUM&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  config&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;pin_href &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; HREF_GPIO_NUM&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  config&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;pin_sscb_sda &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; SIOD_GPIO_NUM&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  config&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;pin_sscb_scl &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; SIOC_GPIO_NUM&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  config&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;pin_pwdn &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; PWDN_GPIO_NUM&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  config&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;pin_reset &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; RESET_GPIO_NUM&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  config&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;xclk_freq_hz &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;20000000&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  config&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;pixel_format &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; PIXFORMAT_JPEG&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;On lines 2-4, we are setting up the serial monitor. This is the way the ESP talks to the Arduino IDE’s serial monitor. Serial is the name of the method used to communicate with the ESP and computer. 115200 is some information about the speed of the serial connection.&lt;/p&gt;
&lt;p&gt;On lines 6-26, we’re letting the microcontroller know what ports to use to connect to the camera. This is so the microcontroller can read camera data. We also set up some camera format and speed options.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;c&quot;&gt;&lt;pre class=&quot;language-c&quot;&gt;&lt;code class=&quot;language-c&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;//init with high specs to pre-allocate larger buffers&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;psramFound&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    config&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;frame_size &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; FRAMESIZE_UXGA&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    config&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;jpeg_quality &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    config&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;fb_count &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    config&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;frame_size &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; FRAMESIZE_SVGA&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    config&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;jpeg_quality &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;12&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    config&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;fb_count &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token expression&quot;&gt;&lt;span class=&quot;token function&quot;&gt;defined&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;CAMERA_MODEL_ESP_EYE&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;pinMode&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;13&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; INPUT_PULLUP&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;pinMode&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;14&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; INPUT_PULLUP&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;endif&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;In this part, we set up some information about the camera size and streaming mode. On Lines 12-15, we check what type of microcontroller we’re using and set up a different mode. We can disregard this.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;c&quot;&gt;&lt;pre class=&quot;language-c&quot;&gt;&lt;code class=&quot;language-c&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;// camera init&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;esp_err_t&lt;/span&gt; err &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;esp_camera_init&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;config&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;err &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; ESP_OK&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    Serial&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Camera init failed with error 0x%x&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; err&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

  &lt;span class=&quot;token class-name&quot;&gt;sensor_t&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; s &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;esp_camera_sensor_get&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token comment&quot;&gt;//initial sensors are flipped vertically and colors are a bit saturated&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;s&lt;span class=&quot;token operator&quot;&gt;-&gt;&lt;/span&gt;id&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;PID &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; OV3660_PID&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    s&lt;span class=&quot;token operator&quot;&gt;-&gt;&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;set_vflip&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;s&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token comment&quot;&gt;//flip it back&lt;/span&gt;
    s&lt;span class=&quot;token operator&quot;&gt;-&gt;&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;set_brightness&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;s&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token comment&quot;&gt;//up the blightness just a bit&lt;/span&gt;
    s&lt;span class=&quot;token operator&quot;&gt;-&gt;&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;set_saturation&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;s&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token comment&quot;&gt;//lower the saturation&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
  &lt;span class=&quot;token comment&quot;&gt;//drop down frame size for higher initial frame rate&lt;/span&gt;
  s&lt;span class=&quot;token operator&quot;&gt;-&gt;&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;set_framesize&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;s&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; FRAMESIZE_QVGA&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token expression&quot;&gt;&lt;span class=&quot;token function&quot;&gt;defined&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;CAMERA_MODEL_M5STACK_WIDE&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
  s&lt;span class=&quot;token operator&quot;&gt;-&gt;&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;set_vflip&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;s&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  s&lt;span class=&quot;token operator&quot;&gt;-&gt;&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;set_hmirror&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;s&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;endif&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;On lines 2-6, we make sure that we were able to start the camera successfully. We then adjust the image, as by default it is flipped and colors aren’t that great on lines 8 to 16. Finally, we check the camera type and modify the camera flip options if it we’re using a certain type of camera.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;c&quot;&gt;&lt;pre class=&quot;language-c&quot;&gt;&lt;code class=&quot;language-c&quot;&gt;WiFi&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;begin&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;ssid&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; password&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token keyword&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;WiFi&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;status&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; WL_CONNECTED&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;delay&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;500&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    Serial&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;.&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
  Serial&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  Serial&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;WiFi connected&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token function&quot;&gt;startCameraServer&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  Serial&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Camera Ready! Use &apos;http://&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  Serial&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;WiFi&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;localIP&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  Serial&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;&apos; to connect&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Here, we’re almost ready. We connect to Wifi. Lines 3-8 just wait until we connect to wifi. Next, we start the camera server and print the IP Address information.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;c&quot;&gt;&lt;pre class=&quot;language-c&quot;&gt;&lt;code class=&quot;language-c&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;loop&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token comment&quot;&gt;// put your main code here, to run repeatedly:&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;delay&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;10000&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;In this final part of the code, we can add any code that we want to run.&lt;/p&gt;
&lt;h1&gt;Next Steps&lt;/h1&gt;
&lt;p&gt;In our next blog post, we will be working on receiving camera information with Python. We will also be working on some facial detection applications with python. As always, if you have any questions feel free to email cupertinoiot@gmail.com.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[First Meeting of Second Semester]]></title><description><![CDATA[Hi everyone! Make sure to join our meeting today at 12pm with meet.tinoiot.com to learn about what projects we will…]]></description><link>https://tinoiot.com/blogs/first-meeting-of-second-semester/</link><guid isPermaLink="false">https://tinoiot.com/blogs/first-meeting-of-second-semester/</guid><pubDate>Tue, 12 Jan 2021 00:00:00 GMT</pubDate><content:encoded>&lt;img src=&quot;/static/0d1a5715b0c84155a3956acd81f49c2a/497c6/tino-1-.png&quot;/&gt;&lt;p&gt;Hi everyone!&lt;/p&gt;
&lt;p&gt;Make sure to join our meeting today at 12pm with &lt;a href=&quot;http://meet.tinoiot.com/&quot;&gt;meet.tinoiot.com&lt;/a&gt; to learn about what projects we will be doing this semester. We will also do a quick review of first semester concepts and run a little PIR motion sensor demo. We hope to see you there.&lt;/p&gt;
&lt;h3&gt;Update on kits…&lt;/h3&gt;
&lt;p&gt;We are still working on assembling the kits and expect a message to schedule pickup times soon!&lt;/p&gt;
&lt;p&gt;Best,&lt;/p&gt;
&lt;p&gt;TinoIoT Officers&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Introduction to Electronics]]></title><description><![CDATA[ In this meeting we introduced electronic concepts such as voltage, amperage, resistance, power, and Ohm’s law. We also went through…]]></description><link>https://tinoiot.com/meetings/20-meeting-two-intro-electronics/</link><guid isPermaLink="false">https://tinoiot.com/meetings/20-meeting-two-intro-electronics/</guid><pubDate>Wed, 07 Oct 2020 00:00:00 GMT</pubDate><content:encoded>&lt;img src=&quot;/static/db3d4108b9bf50234080b2089cc1b87b/497c6/introduction-to-electronics.png&quot;/&gt;&lt;h2&gt;A Short Brief&lt;/h2&gt;
&lt;p&gt;In this meeting we introduced electronic concepts such as voltage,
amperage, resistance, power, and Ohm’s law. We also went through a
guided lab to figure out rules related to resistors and learned about
different electrical components used with IOT (Internet of Things) devices
and other electrical systems. The electronics knowledge we taught will be
necessary to stay safe, protect your electronics, and design efficient circuits
when working with IOT Applications.  &lt;/p&gt;
&lt;p&gt;Feel free to follow along with the video below or go at your own pace!&lt;/p&gt;
&lt;div class=&quot;yt-wrapper&quot;&gt;
    &lt;iframe width=&quot;380&quot; height=&quot;200&quot; 
    src=&quot;https://www.youtube-nocookie.com/embed/kxhL1KFAiI8&quot; 
    frameborder=&quot;0&quot; 
    allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen=&quot;&quot; style=&quot;
        margin: 0;
        padding: 0;&quot;&gt;
    &lt;/iframe&gt;
    &lt;span&gt;
        &lt;a href=&quot;https://docs.google.com/presentation/d/1qADGK5nrVuRGqh8h-Z-jNa1jtZR4lFKCGADE2uGhOks/edit?usp=sharing&quot;
         target=&quot;_blank&quot; rel=&quot;noreferrer noopener&quot;&gt;&lt;p&gt;Slides:&lt;br/&gt; Introduction to Electronics&lt;br/&gt;
        (10/07/20)&amp;nbsp;&lt;i class=&quot;fas fa-external-link-alt&quot;&gt;&lt;/i&gt;&lt;/p&gt;&lt;/a&gt;
    &lt;/span&gt;
&lt;/div&gt;
&lt;h2&gt;What is Electricity?&lt;/h2&gt;
&lt;h4&gt;Conductors vs Insulators&lt;/h4&gt;
&lt;p&gt;Conductors allow electricity to pass within, meaning that free electrons can move between atoms. They have different resistances to the flow of electrons depending on the type of conductors - superconductors have no resistance. Metals are generally really good conductors. &lt;/p&gt;
&lt;p&gt;Insulators don’t allow electricity to pass through, meaning that they resist the movement of electrons between atoms. The reason why lightning travels through air is that if the electrons are strong enough / have enough energy they can change insulators to conductors. Rubbers are generally good insulators. &lt;/p&gt;
&lt;h4&gt;Charge&lt;/h4&gt;
&lt;p&gt;You can measure the flow/amounts of electrons with charge. The SI Unit of measurement for charge is a Coulomb which contains 6.24 x 10^18 electrons. Charge is the byproduct of chemical reactions in batteries, heat from nuclear sources or steam, or spinning wind turbine blades. These three examples are similar because they all lead to the movement of electrons, causing them to be charged.  &lt;/p&gt;
&lt;h4&gt;Voltage&lt;/h4&gt;
&lt;p&gt;Voltage is the stored up energy between two points within a circuit. Its measured in Volts &amp;#x26; defined as the amount of potential that leads 1 Joule of energy per Coulomb. This can be thought of through the height of water in a tank - the higher the water level, the more work each unit of water can do. Similarly a higher voltage would mean that each unit of charge has the ability to do more work. &lt;/p&gt;
&lt;h4&gt;Amperage&lt;/h4&gt;
&lt;p&gt;Amperage is the amount of charge in a single unit of time. It is defined as 1 Coulomb per second and measured in amps. A way to think about this is the speed of water flow. For example, a high speed of water which is the same pressure of low speed water transfers the same amount of energy, but in a faster time. Similarly, a higher current does the same amount of work as a lower current at the same voltage, but in a much faster time. This could be a potential storage drainer though. &lt;/p&gt;
&lt;h4&gt;Resistance&lt;/h4&gt;
&lt;p&gt;The resistance to the flow of electricity is measured in Ohms &amp;#x26; is defined to be the resistance that 1 voltage =&gt; 1 amp of current. Lesser resistance means a smoother flow, and higher resistance limits the flow. &lt;/p&gt;
&lt;h4&gt;Ohm’s Law&lt;/h4&gt;
&lt;p&gt;Ohm’s law states that V = IR, V being voltage in volts, I being the current in amps, and R being the resistance in Ohms. This equation describes the relation of current, voltage, and resistance in conductivity in almost all electrically conductive objects (objects that don’t adhere to this law are known as non-ohmic materials, such as semiconductors)&lt;/p&gt;
&lt;h4&gt;Circuits&lt;/h4&gt;
&lt;p&gt;Circuits are full loops that allow the flow of electrons and electricity to be transferred from one place to another. We explored this with our online simulator that showed you how to create circuits. Open circuits (a gap somewhere within your loop) prevent your flow &amp;#x26; stop it somewhere, and closed circuits allow the flow. &lt;/p&gt;
&lt;h4&gt;Example Problem: Which resistor do we need?&lt;/h4&gt;
&lt;p&gt;Ohm’s law is very useful when putting together electronics and staying safe. Let’s say you have a 9 volt battery. The recommended current for an LED (Light Emitting Diode) is 18 milliAmps (mA) or .018 Amps. What resistor should the circuit use? &lt;/p&gt;
&lt;p&gt;Answer: &lt;/p&gt;
&lt;p&gt;Using V=IR, we find that R = 500 Ohms. Using a 500 Ohm resistor in our circuit will prevent too much current from entering the LED and damaging it.&lt;/p&gt;
&lt;h2&gt;Types of Electrical Components&lt;/h2&gt;
&lt;h4&gt;Wires&lt;/h4&gt;
&lt;p&gt;Wires conduct electricity, and connect together the different electrical components in a circuit, to make sure the energy flows throughout the entire system. The higher the amperage, the bigger the wire needs to be, because all wires have resistance, which will convert the electron flow into heat. &lt;/p&gt;
&lt;h4&gt;Switches/Buttons&lt;/h4&gt;
&lt;p&gt;Switches open and close a circuit, and can turn off the flow of electricity. There are two types of switches: momentary and latching. A momentary switch is like a button press, and will release if you let go. Latching switches stay in the position they move to, like a light switch. Within switches, there are different ways they can operate (single pull, single throw) &lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; &quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 54.601226993865026%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAACgElEQVQozz2T2VPaUBTG8//P2AcX6JvaF4W2VhbLEoiAiCwRcAGBJMgOIqKISxHaXw9h2syc+c7y3bPlXsUwDfb2XIRDIXx+P5oWJZFIEAwEOTj4QSwWx+f1EgqEyGayqGqYs3SasKoSCAQIh1Wep1Pmizmz2Qzl/f2ddrtDr9ej01nhw3hso2VaWPW6+Lti9xndj2g2Gkyen2kLt98f0Ov2mM8X/PuU8dOUyfSVl7cZi99/BH/xKvr7xwIxeZvNJf5Gpzdk9jG3OY/Pr9zdj3l4nNhJuoN7aoaJ1WihGNYtF8UCplmXziYYgnoui2FZjJ8m1BttGTVNoXjB6GFsy9V1iVwug3XbZPryQummSrl0TfmmgmLWm0S1ODcVg8HwnopU0qLHVM1bBndDwTonyRTlikl/MBS546ZmSpIK9WaH0WjExVVZ9pqjUrNQmq02DZEltlotWm1B2WlzqYsssd3t2r7Wf19b9tpbxYR/Xa6SOsuSPS+g6Pkiafl7SyxL6/p5USRPvniFYRh29WxO5+T0jEq1JpNUZfxLkqcp8oVLLMsklc4QiagEQ2GUpBBPkydyYEVIJk+Jx2P2mNelMgnBRDxOLJ6geHEpnAKRqMbxsWaPWSqVbI6maWhyxZSQ3CO/z8cSU+ksP4MhvF6P2BF0/ZyIFpO7Fsbj9UuCjIyWJio79smZ5e7z+TxqRMPr8XBw6JGEaoTt7R3C4kxncviPAuzs7qDKIV3XbfKX3V0OPT57NcuE7q/f5DHsSdEoqVTKLuZ27bPvcqNsbDpYX99kY3OLrS0Hti36Ep1OJ5sOJ2trn1Zx0R3Oz7jc3/FIgUBIlW6jHErCvX03vqMgfwGQp+6jtHUvSQAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source
              srcset=&quot;/static/7ae79270258fe27be5b1501d7f889542/94563/image12.webp 163w,
/static/7ae79270258fe27be5b1501d7f889542/647a8/image12.webp 325w,
/static/7ae79270258fe27be5b1501d7f889542/c1dc5/image12.webp 650w,
/static/7ae79270258fe27be5b1501d7f889542/ca172/image12.webp 772w&quot;
              sizes=&quot;(max-width: 650px) 100vw, 650px&quot;
              type=&quot;image/webp&quot;
            /&gt;
          &lt;source
            srcset=&quot;/static/7ae79270258fe27be5b1501d7f889542/222b7/image12.png 163w,
/static/7ae79270258fe27be5b1501d7f889542/ff46a/image12.png 325w,
/static/7ae79270258fe27be5b1501d7f889542/a6d36/image12.png 650w,
/static/7ae79270258fe27be5b1501d7f889542/940c5/image12.png 772w&quot;
            sizes=&quot;(max-width: 650px) 100vw, 650px&quot;
            type=&quot;image/png&quot;
          /&gt;
          &lt;img
            class=&quot;gatsby-resp-image-image&quot;
            src=&quot;/static/7ae79270258fe27be5b1501d7f889542/a6d36/image12.png&quot;
            alt=&quot;switches configuration&quot;
            title=&quot;switches configuration&quot;
            loading=&quot;lazy&quot;
            style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
          /&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;Voltage Sources&lt;/h4&gt;
&lt;p&gt;You need a voltage source in a circuit to push electrons through wires. Most common are batteries. Different voltage and different maximum current output. Measured in Amps per hour. Stacking more batteries will increase the voltage. Putting batteries next to each other will increase the current.&lt;/p&gt;
&lt;h4&gt;Resistor&lt;/h4&gt;
&lt;p&gt;Resistors provide resistance to the flow of electricity. Made of poor conductors such as carbon, provide different levels of heat resistance. Band code will show how much resistance each resistor will have. Measured in ohms.&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 272px; &quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 83.43558282208589%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAARCAYAAADdRIy+AAAACXBIWXMAAAsTAAALEwEAmpwYAAAEfklEQVQ4yz2UC0xVdRzHz2oTH6wtKxo1ra3nlkstwcdArnjXVk7dNGu24qmkYolprXyFwzQEBHxc8AF0SR7XyxsdBBe4ct8v4N7LBR9AmSCloCByxaZ++neozvbb9/v7fn//c85vO98j3bs3zn+Xf9zP0NAQIyMjDA8Py5rNZaVR14DDbsGgb4bHcPPmLYbF3Ljfz+jI6P/nHz58hDQx8YDBwUEsVitmsxmdTkdjYwMtej0uu5XNqZvIytmL7vx3ZOz+HLvDhk749fX1GI1G9GLO4XAwNjYm31S6PzEhk9HRUcbHx2W8K+r27dsM9F+nTn8Bp8tC31UXppYGBgb6ZX/s7l155s6dO/j9k1s+evQYyWQy4RRP6OvtobvLJ7gdk9GAy+nAaDBgNhjxuj1YzDZ5A6vFIs9bLWY62ttFtdHmcsrnOr2dSAmJW3lv5SoWLY0gNDwc5YoVzA0JEX04yz94n7fmz2OpUsmSZQrmvDOfhWJm9dq1zAsNZWFYmNy/u3gxby9YwKo1a5D2r17FwUXz2Rr8LDFBz/DNK7NJeOE5NgUHyTwu6Gm2vRRM0ssvEve84LOD2RU6l22zgokNmsmON1/nqzdeI0n0e5WRYuUVcxgMCeRBRCBD4YGgmMpI2AzGwmfwWDFN1v6KmMb9yKf4Qxkka1fDZvJQMZ2bYYFMKAPxiyL8Cfo/noNUnhdCbeFMvC0B2Gunc7V1Cm1102ivD+DyxSlYhdbVHIBPF4DjQiDdLVOpK5jFJf1UbMK7bpW4ZnqS3wV26V9FWpmygYhDcShPx6PIjCLyVByKo1EojkWz7JTQsmKIzI0jUhXDMqEvV8Wz5Nt1RObEE5H1Kcrj0USmrmdp1no+Ov4l0p6oKg6s96DaeIvUz7oFDpEe3UtGzK+ydjj6MtkbbnA0/gZpUVfIiu9n55pfyN44SGrUJdJjetm1zkDyhy7SE11IRw7kkH+kmMqCBvIy1GhUWtRZalGFaE5oyc/4iZITpRQfK6EgTU3NqVoqciupzK2i4FABpdmlqParOJtZRGVeFdLPqj00luzD05SBrbmKaz1ddNgNdDrM/HbFi8PUTI/PRU9XJ6ZKFZ1V+2grP4in4nuazmzHXZ5CR1kKXVXJ2MrTkNJ3J3Dmh1iqVFtoVOfyp92Os6aSjvO1DIgP2aTV0NPcRK++lZrTP1KamYAqOZayE1+gztiMOm0LJ1NiKRZ6XnoSkt5gxekWb+XrodPjxeNw4rKKNIhE2FsN6FuaaWtz4nWYRG4v0mKwY7S4sDo8GK3tmO3tuDq6cLT5sDndSN3d3XjcHSJWRmx2GwYReKOIo9Vqpr7ZhOrrg+QnZ5OUXErKgZMilheFZxE/hlZMJqMcwX/6XhHdvr5epA63m6amJvLy8igsVJOfny+wEHVBPqcLNRyO30l2YjKfJOawfcchamuqZb+kuJiioiI0Gg11dXV4vV58Ph9S4dkiyioq0Gi1aM5pJ/FfrhWYlp5OWmYG2ZlpZB/NorqmdtIrK5+s8nIqq6s5py2jVHOOvwGrZ8zxYbWJtwAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source
              srcset=&quot;/static/faebdc0990770ae4451f3ab4ff502849/94563/image6.webp 163w,
/static/faebdc0990770ae4451f3ab4ff502849/542bb/image6.webp 272w&quot;
              sizes=&quot;(max-width: 272px) 100vw, 272px&quot;
              type=&quot;image/webp&quot;
            /&gt;
          &lt;source
            srcset=&quot;/static/faebdc0990770ae4451f3ab4ff502849/222b7/image6.png 163w,
/static/faebdc0990770ae4451f3ab4ff502849/2aae8/image6.png 272w&quot;
            sizes=&quot;(max-width: 272px) 100vw, 272px&quot;
            type=&quot;image/png&quot;
          /&gt;
          &lt;img
            class=&quot;gatsby-resp-image-image&quot;
            src=&quot;/static/faebdc0990770ae4451f3ab4ff502849/2aae8/image6.png&quot;
            alt=&quot;resistors chart&quot;
            title=&quot;resistors chart&quot;
            loading=&quot;lazy&quot;
            style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
          /&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;Variable Resistors / Potentiometers&lt;/h4&gt;
&lt;p&gt;Variable resistor: used in volume control, or controlling a light. Works by having a wiper rotate along a resistor strip; the more distance between the wiper and the voltage source, the more resistance there will be.&lt;/p&gt;
&lt;h4&gt;Adding Resistors&lt;/h4&gt;
&lt;p&gt;Resistors connected in a series (in a line) vs parallel (electricity flows through at the same time)&lt;/p&gt;
&lt;p&gt;Please watch our meeting &lt;a href=&quot;https://youtu.be/kxhL1KFAiI8?t=1116&quot;&gt;recording&lt;/a&gt; (starting from 18:36 to 28:56)
to view some example resistor problems, and see how to use them in an actual circuit!&lt;/p&gt;
&lt;h4&gt;Resistor Formulas&lt;/h4&gt;
&lt;p&gt;Total resistance in series: Sum of individual resistances&lt;/p&gt;
&lt;p&gt;Total resistance in parallel: add all the reciprocals of resistors, then take the reciprocal of that value.&lt;/p&gt;
&lt;h4&gt;Capacitors&lt;/h4&gt;
&lt;p&gt;Capacitors temporarily store a charge on them. The amount of capacitance they have is measured using the formula q=CV, where q is the amount of charge they can store, C is the capacitance and V is the voltage.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 302px; &quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 55.21472392638037%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAACTklEQVQoz22TTWgTURDHcxHx7sFDTpr2IlbRSFusim2hCKVWD+JNoYIKzUEUKlg/2tJSU6gHPw4SEDyIBIsX0YN4EqQXQUuk+EWTSFNMsrtv337v283f2bcxacEHw+7OvPm9/8zOS4BWtVrF2loRpVIJQRBELjQajdg2vzeNPM1nHAvDUFr0noici4sPMNA/hOPH+qDrTG4MA7+dRIfEJtCgxCapFd+8JPDW5DRSqU4cTh+EafAtG/6XJJWGVEmDlJGtfi3i22q5rXDq7iySySR6utOwXR+ho8IsvISwNFny+vu3KMxP4vvDe+DFX1vgmsox2DeBrs5LYJoZA2em57FndwpHj/QS0EX11WWs3NiJylKGFAAvhnqwsCOBx9sS+HTnugTxlY8IlAoYt3Hu9By6OsagKXoMnJvNYv++AzgzMgxBPSrmzuLD2Hb8eHpelvRm/AKeDXYjd6gDhdwjCEPFcv8u/M5egWJ4GD15G+m9F8EZj4H5/BJGR07hamZcnq7+XEb59QxY6QsEKTRUBSEp5xsVaLU/8E0dn7PXsP4uD255GB6YwIneDGzLiYGe62CjUobr2HFfGIPphdA0FUL4sGwz/hlktmPBJTizbeimBdt2cH/hOaZuPoHniRgYUJLBNdroNBtdg6lr1JMaxQRMUhQt4RPc5FIAo5hWr8mWcGqBwdX22AjhUf0qfM+VTqbWYVkGges0j4GExAcL8nNZicGZjEcXQWea/G4BI5BJjkhpNHYqne7YFoEVeQPawBj+T6VSr7aAJlUYzeFfLt0IKNCXKrMAAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source
              srcset=&quot;/static/48528674efb30c7c71ae20edb1e577d9/94563/image4.webp 163w,
/static/48528674efb30c7c71ae20edb1e577d9/7cc02/image4.webp 302w&quot;
              sizes=&quot;(max-width: 302px) 100vw, 302px&quot;
              type=&quot;image/webp&quot;
            /&gt;
          &lt;source
            srcset=&quot;/static/48528674efb30c7c71ae20edb1e577d9/222b7/image4.png 163w,
/static/48528674efb30c7c71ae20edb1e577d9/5f1d2/image4.png 302w&quot;
            sizes=&quot;(max-width: 302px) 100vw, 302px&quot;
            type=&quot;image/png&quot;
          /&gt;
          &lt;img
            class=&quot;gatsby-resp-image-image&quot;
            src=&quot;/static/48528674efb30c7c71ae20edb1e577d9/5f1d2/image4.png&quot;
            alt=&quot;capacitor images&quot;
            title=&quot;capacitor images&quot;
            loading=&quot;lazy&quot;
            style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
          /&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/th&gt;
&lt;th&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 541px; &quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 107.36196319018406%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAVCAYAAABG1c6oAAAACXBIWXMAAAsTAAALEwEAmpwYAAAB1UlEQVQ4y51U227aUBD0/782QBIlpWoRSpw8I4F4L/QBhECQgriIO+J+vxmmnk22cSIS5XCktX3s1XhmZ/dYxb9PCIfD+HZxgdCvn7i5DSL4/RZ39zaSySRCoRDs+zs8Pti4vLxCNBqFz+dD8Iebe30Fvz/ghh+/k3/AZfFyPB4xn8+x3+/hOI58OBwO8C7Hed3vtlts3PAuzbf4QMDlcolcLod8Po9qtfoC4kji+2A+49Q3y/uHXq8nwPo33glqEhYBOp0Oms0mEokEisUi+v2+vNu6shT0FJuTDJX6brdDvV7HbDZ7rpO7Z02NASeTiQC1222JVquFRqOB0WgkdVIpXwZcLBb/gSi7VqsJ4Hg8/tSYDwEpa7PZgExt20Y6nRYgthFlG0ter9cYDoeYTqcIBAKIRCJixmAwOA/Q25wEXq1Wb5rVWDIZUh5rxhbink57W8aIIaUWCgWpXaVSkWnJZrPC9ixTtA/JqFwug657gYwZUiIdLpVKiMfjwoyGsAxnATKZLGmG9p6y9rL8MiAnIpPJSN04MaxhKpWSRlfpxrPM5qbDPG3U4XPmWAAplXWjw7FYDN1uV04bAussGwGqJIJQsjruZWh0HqoJuvRZT2XT+AeTPFRcaEB4qAAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source
              srcset=&quot;/static/26844accaf884f39238fcdc74b067f63/94563/image2.webp 163w,
/static/26844accaf884f39238fcdc74b067f63/647a8/image2.webp 325w,
/static/26844accaf884f39238fcdc74b067f63/fd5d3/image2.webp 541w&quot;
              sizes=&quot;(max-width: 541px) 100vw, 541px&quot;
              type=&quot;image/webp&quot;
            /&gt;
          &lt;source
            srcset=&quot;/static/26844accaf884f39238fcdc74b067f63/222b7/image2.png 163w,
/static/26844accaf884f39238fcdc74b067f63/ff46a/image2.png 325w,
/static/26844accaf884f39238fcdc74b067f63/9d576/image2.png 541w&quot;
            sizes=&quot;(max-width: 541px) 100vw, 541px&quot;
            type=&quot;image/png&quot;
          /&gt;
          &lt;img
            class=&quot;gatsby-resp-image-image&quot;
            src=&quot;/static/26844accaf884f39238fcdc74b067f63/9d576/image2.png&quot;
            alt=&quot;capacitor symbols&quot;
            title=&quot;capacitor symbols&quot;
            loading=&quot;lazy&quot;
            style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
          /&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h4&gt;Diodes / LEDs&lt;/h4&gt;
&lt;p&gt;Diodes only allow electricity to flow in 1 direction. They also create a nearly constant voltage drop. LED’s (Light Emitting Diodes) are diodes that produce light. &lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; &quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 74.23312883435584%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACF0lEQVQ4y5WTT0jTYRjHn/fd5uYMmY5oWW047OdcdJgeYhsIQagQi0KcBTG1lIQaCBZa4qGGhEVQBEHgoegSEV06RH8OXaIi2KEOQXjpWNChg84J9ull+0Umuq3Dly/P83ufL9/v+3teERH+gVrHySDS5i/VesO5jfU6bNL0OJAnaWTtCvJjCjW0v9SPOF30exsJaGepVlUFtSrzMQspziA/59Fr15H8MCPNTaz6oxDr4dueBHHl3crpekGbUyHk+yi6MIes3sD1eYzFUBgaOlgKJWBXgufuYC2CuszRNvTH+8jyPYSbdCwt8DVs3OlWioEY+LvI6wDOypHLcXWdRd/AIuemoXvqF55XL/HPH+GTrwsCSQpWEqIpvnjCNNqzajNBpcru2qOPmB2F3EiByaPQl1hG/K089QRh9i68fQeZC+SVj/pKDpXtsDPymol+Mzu2yvmhImlzZQ3tWQbdwnsrxoeBQZ75tjNjztZXjuwo8e6mHGO9MJ1ZIZte4WIG9sUfcsgrTJjvpw2GDS4rRahSZJFyZId0cjhW4OpZeHANFnKwo/kO41LHY4emx+HkthHLm0ThyoJ/f842fYkDe19wvPcNVsst0ztBi9pJxD4TNzhY20uxF1uSBicN+g1SuNS44W5779RWQhWengSNyBlc+pThLG6ZM0KWHU2VWNUuaO+jcemUSYOMGY5Uc1XN4R+4/0eohN9wBp/ypRyfPQAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source
              srcset=&quot;/static/c158681b5498a70ec75945810217d1eb/94563/image9.webp 163w,
/static/c158681b5498a70ec75945810217d1eb/647a8/image9.webp 325w,
/static/c158681b5498a70ec75945810217d1eb/c1dc5/image9.webp 650w,
/static/c158681b5498a70ec75945810217d1eb/10735/image9.webp 897w&quot;
              sizes=&quot;(max-width: 650px) 100vw, 650px&quot;
              type=&quot;image/webp&quot;
            /&gt;
          &lt;source
            srcset=&quot;/static/c158681b5498a70ec75945810217d1eb/222b7/image9.png 163w,
/static/c158681b5498a70ec75945810217d1eb/ff46a/image9.png 325w,
/static/c158681b5498a70ec75945810217d1eb/a6d36/image9.png 650w,
/static/c158681b5498a70ec75945810217d1eb/3a737/image9.png 897w&quot;
            sizes=&quot;(max-width: 650px) 100vw, 650px&quot;
            type=&quot;image/png&quot;
          /&gt;
          &lt;img
            class=&quot;gatsby-resp-image-image&quot;
            src=&quot;/static/c158681b5498a70ec75945810217d1eb/a6d36/image9.png&quot;
            alt=&quot;light emitting diodes (LED)&quot;
            title=&quot;light emitting diodes (LED)&quot;
            loading=&quot;lazy&quot;
            style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
          /&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/th&gt;
&lt;th&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 540px; &quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 46.012269938650306%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAYAAAAywQxIAAAACXBIWXMAAAsTAAALEwEAmpwYAAABdUlEQVQoz4VSvc4BURC9rUYpaFU8gGfwBB5Dttlsq9iHoFOhQUg2odlugyWhEbtBiN/41yAER2Zk5fsiYZKT3Mycmcw5cwV+RCqVwnw+5/dgMPioPx4PhhOi1+uhWCyiUqnAMAxuohxhOBwiFArB7XYjFoshnU5jOp3Ctm3mNZtNaJqGUqkEXdexXC4hxuMxqtUqGo0GTNNEvV5/gxoCgQCEEIhGo0gkEmi328ynOvGpj1Cr1bDb7SB+SU4mkxiNRvymzX6FuN1uuFwu/3A+n7nY7XaRy+VQKBRQLpdZ5ul0wvV6/eih3P1+h9jv9+zLYrF4Yzab8VBVVVmuy+VCOBxGPB4HWbRer9kvB6vVig93PB4hDocDe0F+EcgP8qfT6UCSJB7m8Xjg8/kQiUTYK8c3AvUQv9/vvyTTJrThX9AWm80GsizD7/cjGAzC6/VCURTOU93hkprJZILtdvsa+M3gVquFbDaLfD6PTCYDy7K+HoT+4xMysmvnykevMQAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source
              srcset=&quot;/static/33ee64b1194dd524951c8fb06aba6e12/94563/image5.webp 163w,
/static/33ee64b1194dd524951c8fb06aba6e12/647a8/image5.webp 325w,
/static/33ee64b1194dd524951c8fb06aba6e12/9e625/image5.webp 540w&quot;
              sizes=&quot;(max-width: 540px) 100vw, 540px&quot;
              type=&quot;image/webp&quot;
            /&gt;
          &lt;source
            srcset=&quot;/static/33ee64b1194dd524951c8fb06aba6e12/222b7/image5.png 163w,
/static/33ee64b1194dd524951c8fb06aba6e12/ff46a/image5.png 325w,
/static/33ee64b1194dd524951c8fb06aba6e12/07484/image5.png 540w&quot;
            sizes=&quot;(max-width: 540px) 100vw, 540px&quot;
            type=&quot;image/png&quot;
          /&gt;
          &lt;img
            class=&quot;gatsby-resp-image-image&quot;
            src=&quot;/static/33ee64b1194dd524951c8fb06aba6e12/07484/image5.png&quot;
            alt=&quot;diodes&quot;
            title=&quot;diodes&quot;
            loading=&quot;lazy&quot;
            style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
          /&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h4&gt;Transistors&lt;/h4&gt;
&lt;p&gt;Transistors are used as switches for electrical components. In a transistor, there are 3 connections, Source/Collector, Gate/Base, and Drain/Emitter. A voltage is applied to the source. If another lower voltage than the source is provided to the gate, the voltage applied at the source will be able to flow through to the drain. This means that transistors can be used to control higher currents / voltages. For example, transistors can be used to allow a device that uses 3.3 volt logic to control devices with 5 volt logic.&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; &quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 57.05521472392638%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAABrklEQVQoz41S20pCURA9HxBdCCo1Mw0iCPqBiH4h6CF6qaCoHnupp1566Rci+oGCiCjznnq8XzDUEi8ZVGjSRdCUVM7R1T6HTnq0iwOzZ5g9s/as2UOhDanVatzJ+9VqlbeVSgVmyyVWVpextr74fU/9BdKsDMPwd7F4DFPTk5DI+iEflkChksLrdbQCCoWNvtBRPacKg1kDuWoQyhEFxifGMCDtw+bWRh2wBYQUCTEh/vyaQfDGj1PNIUz0GWbnZiBXyKBQDqGntwujYyqk0ylQXF2dlribQjGPaOIaTp8FJtsFaLceRlpN/HPs7G6js7uDB1pYmsfxyRGKxQIHWBOBlCslpDP3CEV8sDi0MFrVxOphcxtBu7TEGsgjIZKTwv7BHm4iYVE9Jfxc7j2Lu4coPAErD2Sx64jqiWph9xjJA368vD21zFQYCcMyvKXK5Q/Ek2F4CZDNRbpwGGC26WB16hAIOnH/eIsSyWkUDpQrZlmW+KxoEyguEI54YSW07ISW74pG4u4auXz2R5Bmbd4OnvJjKkl+0MNTYllGRKURqHEjfpOvGbJtd/OffAKkuRnYH/smlQAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source
              srcset=&quot;/static/55511db7249073b4db68ed281eece741/94563/image8.webp 163w,
/static/55511db7249073b4db68ed281eece741/647a8/image8.webp 325w,
/static/55511db7249073b4db68ed281eece741/c1dc5/image8.webp 650w,
/static/55511db7249073b4db68ed281eece741/a70f5/image8.webp 945w&quot;
              sizes=&quot;(max-width: 650px) 100vw, 650px&quot;
              type=&quot;image/webp&quot;
            /&gt;
          &lt;source
            srcset=&quot;/static/55511db7249073b4db68ed281eece741/222b7/image8.png 163w,
/static/55511db7249073b4db68ed281eece741/ff46a/image8.png 325w,
/static/55511db7249073b4db68ed281eece741/a6d36/image8.png 650w,
/static/55511db7249073b4db68ed281eece741/40601/image8.png 945w&quot;
            sizes=&quot;(max-width: 650px) 100vw, 650px&quot;
            type=&quot;image/png&quot;
          /&gt;
          &lt;img
            class=&quot;gatsby-resp-image-image&quot;
            src=&quot;/static/55511db7249073b4db68ed281eece741/a6d36/image8.png&quot;
            alt=&quot;a transistor&quot;
            title=&quot;a transistor&quot;
            loading=&quot;lazy&quot;
            style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
          /&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;Integrated Circuits&lt;/h4&gt;
&lt;p&gt;Integrated circuits are a way of combining multiple electrical components into one, compact piece. Integrated circuits vary in size and complexity and have many different functions&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 500px; &quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 100%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAADMElEQVQ4y6WUi0/TVxTH+38sOhXQgY9JNEisgtGsgBS0gFgegwICTgZkmiVsLtkW44wa3dRoCBojlVcfAi0VBUTFOB+ANjozJwERwWxqt5YFNgstHy+/WigoCPEkJ/fxu/nc7zm/c66MWdjIyMgbF3NGxtbeb6Mmmw3IO3e73bhcLmkcdd9vsverGT3sGV0uD+BdZ737sqkhnrXL/Tbkz7+eY7I08N0PB2hqvja273YLhb4Qr0shTYL8Y3dwueUGe/b9wpbU7axaG0mIXIFCmcRPB4/x0va3R+EEiGsiZHDwP263Wfn52Ck0ObuIVmUQHZfJ5sRs4VnCtxETn86nK8JQxsYzMDAwDvTaaLJ/e/CQktMVfFG4m9iELDaqNMSpt5OUXiB5fHIuEUo1K0PC8Q8IYvGyYDYlJPPipW08h52PeyirrGZH4bco4zRExn6OamsO6rQCUjK+EmOhUKNBHh7FJ4uD8QsIRB62Xij/kkMnTmGoa8Le/y+yjo5O8gqK+CxqC+sU8SI3EdLt6rR8CZSYmocieivLV8pZ4B9I0NJglKpEir7fS3FpFUbLJRqu3uBhRxf/v3IiO1tWxfyAZYSu2YBiYyKpmTtJ0hRKOVodFoH/wiUs8FtEqDycjNx89h8p5mSZkZr6ZmosTbRb79Pyayud3T2en9Lb+4ys7HwiY9QkJOVKapYuD2Xux34CFkRUjIqvd//I0RItWr2ZCqMFQ40FY00dFfpqzOcbud1u5fkLmwf4yjnE3XsP0GTuEHlZwkdz5rEiZDUp6dnsO3yc4jM6tDoTZbpaAapDW66nVERVWq7j5q1W+vqeiQpxjXfKgCiN7qd9dD3uJic3j7yd3whIpQTR117AaKrHUG2mvNLAaW0F+nMm2u9asb2pu8mtKZWN0+mkv99B95MnGMwNAlSPqb6RWstFocosVOm42NjM7388kmrtXZ3lfTQk4PDwMHa7nZ6ep7Rcv4nlQpOkRC+UXWm5Tm9vn3Tp1KBxl3m7ZGhoCIfDISW44dIV2u5YRTvZxvp4OsiEkH0PS0od/SKswRmpmdxlYzn0fSBnCprKZLNRMR1ogsIPhfjaa52IUCGIRU8PAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source
              srcset=&quot;/static/bcc71b8b96730d9bec95a899828925a2/94563/image3.webp 163w,
/static/bcc71b8b96730d9bec95a899828925a2/647a8/image3.webp 325w,
/static/bcc71b8b96730d9bec95a899828925a2/b0a15/image3.webp 500w&quot;
              sizes=&quot;(max-width: 500px) 100vw, 500px&quot;
              type=&quot;image/webp&quot;
            /&gt;
          &lt;source
            srcset=&quot;/static/bcc71b8b96730d9bec95a899828925a2/222b7/image3.png 163w,
/static/bcc71b8b96730d9bec95a899828925a2/ff46a/image3.png 325w,
/static/bcc71b8b96730d9bec95a899828925a2/0b533/image3.png 500w&quot;
            sizes=&quot;(max-width: 500px) 100vw, 500px&quot;
            type=&quot;image/png&quot;
          /&gt;
          &lt;img
            class=&quot;gatsby-resp-image-image&quot;
            src=&quot;/static/bcc71b8b96730d9bec95a899828925a2/0b533/image3.png&quot;
            alt=&quot;an integrated circuit&quot;
            title=&quot;an integrated circuit&quot;
            loading=&quot;lazy&quot;
            style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
          /&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/th&gt;
&lt;th&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 300px; &quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 50.920245398773%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAYAAAC0VX7mAAAACXBIWXMAAAsTAAALEwEAmpwYAAACV0lEQVQoz22S30tTcRjGz2X1P2RBILFidCFRq0XTNlkTms4xN7cuNDNCQajMDCpN07Yo1mZgCBKTCkxFYrvJi6IINbxpCv7MhmX+qqWu6diPT+ecNTPogRfOeb/v8/B+n+8jpFIp0gXJZILOzg7OV1ayuraKhGQyyd+ZdEkIh8N0d3fLJSESiRCNRhGkAYkkYWMjislswqDP532/T1RLkBDPEonEP2J+v5/q6mpsNhvNzc34fD7y8vJwOp0IGbEMrNZi9Bo1V+suMR9e3OpnxGKxGFqtlpqaGtxuN3a7HYVCIYsPDw8jSEOhrwssLC7zLfKde4/d6M8UkK08TNnNBl59Gae330+b5yG/xCtJCAaDxONxPB4POTk5eL1e5ubm5DNhfnaa1lsNGC0l6C84yDUYMVgtaAoNKJSHUJ7SYTSZaLp+hZkP72TS+vo6Y6OjhEIhJiYm2NzclPuSNUJgoIuSc6c5YchFZdKyLzub3fv3YqutRVts5cBBJdfE73a3kyfeGzLR1XoXQRBQq1Ty/7goOjQ0lN4wnojRMfgUa4uDi6IvJTX1HD2uori8gvLL9RgKCzCLvra03+blyAuZdN/lYteOnZRazJK5GIuK0Om08qZCxvS3YwOY685yxFxG7jENGoMei8NCVUsFz950Mb8YzLyOnIofK0usrf6UW42NTWTtySIQCIivnEpuxWZw8jWOtiry79jRPSilqd/F7NJUWki8SXJbdLajp6cPtfokfX296RxKlfgjGloe59Hkc0ZWPm4R/hduqZdZZPbTZ6anZtgQU/AbMatxMj8/EYsAAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source
              srcset=&quot;/static/2e13ae0a64e2c74a552cd8702939053a/94563/image1.webp 163w,
/static/2e13ae0a64e2c74a552cd8702939053a/c85cb/image1.webp 300w&quot;
              sizes=&quot;(max-width: 300px) 100vw, 300px&quot;
              type=&quot;image/webp&quot;
            /&gt;
          &lt;source
            srcset=&quot;/static/2e13ae0a64e2c74a552cd8702939053a/222b7/image1.png 163w,
/static/2e13ae0a64e2c74a552cd8702939053a/5a46d/image1.png 300w&quot;
            sizes=&quot;(max-width: 300px) 100vw, 300px&quot;
            type=&quot;image/png&quot;
          /&gt;
          &lt;img
            class=&quot;gatsby-resp-image-image&quot;
            src=&quot;/static/2e13ae0a64e2c74a552cd8702939053a/5a46d/image1.png&quot;
            alt=&quot;another integrated circuit&quot;
            title=&quot;another integrated circuit&quot;
            loading=&quot;lazy&quot;
            style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
          /&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h4&gt;How can we express circuits?&lt;/h4&gt;
&lt;p&gt;We can express circuit diagrams using symbols. These symbols make it easier for other people to replicate circuits or figure out how they work. There are many different diagram styles and standards, but many of the most basic components will be very similar on all circuit diagrams. &lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 427px; &quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 103.06748466257669%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAVCAYAAABG1c6oAAAACXBIWXMAAAsTAAALEwEAmpwYAAAB2klEQVQ4y5WUWY7DIBBEuf8N8pdz+AC5QhJn3/fF2feOXksdYQbPZJAQ2DRFV1G0m8/ncj6fZTabyWQykd1uJ7TX6yXW/PloNJJqtSrj8Vi22+0n3uJcv9+X4/Eoi8VCAQ+Hw2fRgGx8Pp/S6/Wk1WpJs9mUTqcjg8EgF+8k0vyMwn+n00kPB9xfs3XXbrdls9kImXa7XaViwUXA+/0+CqYZchoaQhcdAQ+p+puQhFjo1mo1uVwuuVh3v9/lG9r2DcByuRT2kUjIxnHL0ETs6XSaCyiibFnFDnectl6vlS6jAcU6jcyQqRDw8XjIN802wSJJEvXfarWS2+2Wp4xRAUVsOp6kYw9G08k2wKhSqeiIM35cCiaFKjfWaDTUsIxmYEb/4gDPsiyavdrmv5QBx1qFGg6HQ6XMqQSy4bdLQRYeA3LwlhlzT4/F6/WqekCXuR8QAqIpVuNSiMcdOUBOCdMPX0qoE6CxPQrItYegMTD7NkfETP8pDuiIfWzEMkUZkl2apvq6eM/1el2LCv+QzfETa3Ah6GEFN6YjDUYYGvvgQQ4nns6aFgcrqn/VxG+a+tAKgs2LiqfNcYLVxJCFK5VKUi6XlS4vgxdDvQuD7Ru7oBVUmfOqfKu9ASo+Yrl+hmE/AAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source
              srcset=&quot;/static/945b10dee45ddb35b0acd24f7dc9aa65/94563/image11.webp 163w,
/static/945b10dee45ddb35b0acd24f7dc9aa65/647a8/image11.webp 325w,
/static/945b10dee45ddb35b0acd24f7dc9aa65/b957b/image11.webp 427w&quot;
              sizes=&quot;(max-width: 427px) 100vw, 427px&quot;
              type=&quot;image/webp&quot;
            /&gt;
          &lt;source
            srcset=&quot;/static/945b10dee45ddb35b0acd24f7dc9aa65/222b7/image11.png 163w,
/static/945b10dee45ddb35b0acd24f7dc9aa65/ff46a/image11.png 325w,
/static/945b10dee45ddb35b0acd24f7dc9aa65/a7c74/image11.png 427w&quot;
            sizes=&quot;(max-width: 427px) 100vw, 427px&quot;
            type=&quot;image/png&quot;
          /&gt;
          &lt;img
            class=&quot;gatsby-resp-image-image&quot;
            src=&quot;/static/945b10dee45ddb35b0acd24f7dc9aa65/a7c74/image11.png&quot;
            alt=&quot;example symbols for components&quot;
            title=&quot;example symbols for components&quot;
            loading=&quot;lazy&quot;
            style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
          /&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/th&gt;
&lt;th&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; &quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 68.09815950920245%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAOCAYAAAAvxDzwAAAACXBIWXMAAAsTAAALEwEAmpwYAAABsElEQVQ4y4WTjU7DMAyE8/6vyAQCTXRdtyZts/5vxp+LK0AgIllN4svd2UnD/X4X4vF4yLquFn+NZVm+fX/mYowS+r6X2+0mOWdp29a+l8tF5nk20DRNMk6jNE1jOATBjeO4YxgYYi/UdS3DMEjbtdIokAMcHpUIMsaqh1JK0nWdkfaKh2DWfFVVOt8qxFzgEFYJlCkfEIcRWj7JYky2Pp1KqbQCL5Mco1ehojhJQPHl+VmeDgfBLSOlaIoIHI9HawOBg5w7JT1ZnsAA4kVRWAsC5VXnszlkznh7fTUQgYi3wfOQX69XWyOCy4MaYgRvLoReKg4AEuRoi18ejlJqpHh/V2y2PMRgaIkR0otOy4t11JuaTBEX/oT8Jp28LEtbQ1DrGYTc2E7YKAkO50UVU7OXQx5yMBxAxJ0P/WCVIUI/95IBAwLMnG+MtV7KdtNgKNUfPlhwvudkOyGHAPF1AnrJU/Hb9R4S5NjHnWO9moDSX0FZPB1/n19/UwjP5XnDzotkJW21TUH+GTji6fhv5kIQsk//WG9vNEvwB/pb+E3Sp689ZA5xzjfDLcuquK0lH+7XQVN6y9JDAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source
              srcset=&quot;/static/ddcd0c5c29704d22068b0c9e18a74942/94563/image7.webp 163w,
/static/ddcd0c5c29704d22068b0c9e18a74942/647a8/image7.webp 325w,
/static/ddcd0c5c29704d22068b0c9e18a74942/c1dc5/image7.webp 650w,
/static/ddcd0c5c29704d22068b0c9e18a74942/093df/image7.webp 762w&quot;
              sizes=&quot;(max-width: 650px) 100vw, 650px&quot;
              type=&quot;image/webp&quot;
            /&gt;
          &lt;source
            srcset=&quot;/static/ddcd0c5c29704d22068b0c9e18a74942/222b7/image7.png 163w,
/static/ddcd0c5c29704d22068b0c9e18a74942/ff46a/image7.png 325w,
/static/ddcd0c5c29704d22068b0c9e18a74942/a6d36/image7.png 650w,
/static/ddcd0c5c29704d22068b0c9e18a74942/a016c/image7.png 762w&quot;
            sizes=&quot;(max-width: 650px) 100vw, 650px&quot;
            type=&quot;image/png&quot;
          /&gt;
          &lt;img
            class=&quot;gatsby-resp-image-image&quot;
            src=&quot;/static/ddcd0c5c29704d22068b0c9e18a74942/a6d36/image7.png&quot;
            alt=&quot;a full diagram&quot;
            title=&quot;a full diagram&quot;
            loading=&quot;lazy&quot;
            style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
          /&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h4&gt;Breadboards&lt;/h4&gt;
&lt;p&gt;Breadboards make it easy to prototype with electrical components. Many electrical components work directly with breadboards and they allow you to easily connect components and build circuits.without soldering or complex wiring.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; &quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 90.18404907975462%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAASCAYAAABb0P4QAAAACXBIWXMAAAsTAAALEwEAmpwYAAACpElEQVQ4y42UCXPaMBSE/f9/UCcMSQng2/J9gbniYMJRFxpCChjM9mEIAcK09Qz4IYlvdvVW4nB8drvd/uuzLgogyzMcR0/j+/dpzdXDnU+e1/kuxypNkPYsJK/pAbr7N5TbXag61Mv3OYb9AJ2Ghmcm4slVMHibIf8PKHe9YPk+xUtsIvI1NHwDgachsQjsqeilwwP0L/ZPCjfrJcaDCHHHRDdSCSYhcE04BDMNGQFfQ1MT0J6MkO1wsdfn0ELher1AMmwi8qRCVSdy0SK7BuNhmSZsk0HTJNg1Hp5YR3vUxxq3odw2W2HetuGFDCxw0HBJXWCg3XQIJMEyeKpdNAMThk6/H6uIbRXxdIjlDaUccTEfJ5g4GoKWCxY6CB0Foa8TUIdrSwST0Gk5hX1FEdBUeDzpPKJBF7/zSyj3EZFpEmFKykyPQbQZPFOErimF3cCV4TkCAXUYNGbRnMdXEDMB3XGMxTY/U1gEGtgS9HWUYEx2fFK6hypCFUyVybaG0JOprlHN4Dv7RvFw6g/oKVWEvRBvRyh3Ljc/2k9JpU5/KosSZP4RNnW5sd8CQwQjwL72HZX2tA6zUiKldQxeImw2q+tgH6C/hjFGlgIzsFFl1AitVgACl/bZFeHbNVLM4FrUeVNAqFco/PefwK/QHLOXGH2KikSdvaMMKvwDxUgs1IYeQZ0qfWQYShlNyuxqubi0fA3d72n63EWi8tBdHWWhDlV4gK4KcClODY+axL6h17IuY3N+23xRStDZoIcJWVMJUhYq0OXvYPI9TOUO6fgZuAr4yfL1mTwdyXyDYctGnzrshwYYu4etlrCgy+KWEO76+rkFzbYZ2e+gy0poBXVst9vjfP7FFTf58YrhaIZ0Or952E9KNxl+TmLk+SfsfO3Huj8Vk0GYjmQ/rAAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source
              srcset=&quot;/static/eb15d783f4dc43d7ecd8773d5a75448e/94563/image10.webp 163w,
/static/eb15d783f4dc43d7ecd8773d5a75448e/647a8/image10.webp 325w,
/static/eb15d783f4dc43d7ecd8773d5a75448e/c1dc5/image10.webp 650w,
/static/eb15d783f4dc43d7ecd8773d5a75448e/1e975/image10.webp 975w,
/static/eb15d783f4dc43d7ecd8773d5a75448e/92f8c/image10.webp 1200w&quot;
              sizes=&quot;(max-width: 650px) 100vw, 650px&quot;
              type=&quot;image/webp&quot;
            /&gt;
          &lt;source
            srcset=&quot;/static/eb15d783f4dc43d7ecd8773d5a75448e/222b7/image10.png 163w,
/static/eb15d783f4dc43d7ecd8773d5a75448e/ff46a/image10.png 325w,
/static/eb15d783f4dc43d7ecd8773d5a75448e/a6d36/image10.png 650w,
/static/eb15d783f4dc43d7ecd8773d5a75448e/e548f/image10.png 975w,
/static/eb15d783f4dc43d7ecd8773d5a75448e/c1b63/image10.png 1200w&quot;
            sizes=&quot;(max-width: 650px) 100vw, 650px&quot;
            type=&quot;image/png&quot;
          /&gt;
          &lt;img
            class=&quot;gatsby-resp-image-image&quot;
            src=&quot;/static/eb15d783f4dc43d7ecd8773d5a75448e/a6d36/image10.png&quot;
            alt=&quot;breadboard&quot;
            title=&quot;breadboard&quot;
            loading=&quot;lazy&quot;
            style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
          /&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/th&gt;
&lt;th&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 480px; &quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 66.87116564417178%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAYAAACpUE5eAAAACXBIWXMAAAsTAAALEwEAmpwYAAADgUlEQVQ4yyXS20/adxzGcf6c3bXpbNOsa1xvltg1tXWotWuaeaoM1oJ4QAGxioIgR0EQERD8KYIc5OApVG112FG3uaXWzC5t1sPNdrt1blfv/bZePHffvPJ8vnkkiZgPv2sQj3OAuZCFzTWBwpKd+KSVGVkzucgYu24lL4se/vg+yclhkr+fi/l1mZPXhfd5VeQvMX++zCIpF7VsBEbYc3aRmdCRiJjJpbzsrccIDKrxGmRElNcwddRRLm/war/Ab5Uk7w5E/CjFPy+yIiiib1c4eVNEslscIuGoJWvW8bO/i2ceFccZN0d7ab57ssLubp61dAC3Vc/D8ibblTKanq/JCBMclzO82RE4+SnFu8MEJ8+XkGwWozzMaREcUmZ9dirLHtL9t0gprnIY6OftVoTXzx7w4nCLwycFfnhcQC77Epm8DVW3krvy28wFTPwiFvh9P4MkO2dlOe4hPysjbLyKEArQ0HSNU6dPU//xh1ik1ZS0tzgWsYNvC6wU5inlZ8V3NnR997h583PqrteQ38jyzeNNJIuhUbKCjcy8h+VwO5GRGkw6BV+13qD60kVOnT3H+XNnWU35WS8I9Nj8mMOLhBfmKOYEcokAKcHFQaVAZX8bST5uZznpFFvayc5PsLYgIycMk455mfGa6FK2IRfxfNyFwTSKZSqIPRRmaCqKxj2DKxYnkxXYKc3zaC2KZC80zKO5Mbayk+yWZimtRBE8BmwtdRgbP8OilhH1j7C65EWl0SJVDaEcDzImwo5QBMt0GIM3RD41TT45hWRVELcXHKASMvI05xMnpMfcdgVdcy3yS1V0nPmAAWkNhaiNFRE1aFVIb7dyXdZLm3GSHnuAYYeDmN8g7tiFxOEcIxL1iSe7ONoWKNoVjDRdZLDhE+61NCCvv4yyugrFhTP4tQpKGT/hySG6VDJaZR20dGowGvuYcvQwNNApgmoprvt3CUxayOQWSS76CDp6mdA2o22rZ8aoJmbqpq/pMu2fXmBc3Uph0c1C2IplVIN7XC9utB+vXccXjbVI5o1NlHx32J5WsD7TRzxo/h+fDVoZ1d7BY1BQcPWLzXtJi38b8dxnyqnHb3+PTPwHWvrRa+Rcqf4ISdrWwna4k72Ymh8TGp4m+9ic7iRi1zBmGyfsGybg0pP0DbLl07Nj7SYVMIon9hNwanGI7V3mXtpbbtB4vop/AbUQxieZK9hWAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source
              srcset=&quot;/static/cada11acb95942d4f1ddafa9e6cbe9ef/94563/image13.webp 163w,
/static/cada11acb95942d4f1ddafa9e6cbe9ef/647a8/image13.webp 325w,
/static/cada11acb95942d4f1ddafa9e6cbe9ef/d3be9/image13.webp 480w&quot;
              sizes=&quot;(max-width: 480px) 100vw, 480px&quot;
              type=&quot;image/webp&quot;
            /&gt;
          &lt;source
            srcset=&quot;/static/cada11acb95942d4f1ddafa9e6cbe9ef/222b7/image13.png 163w,
/static/cada11acb95942d4f1ddafa9e6cbe9ef/ff46a/image13.png 325w,
/static/cada11acb95942d4f1ddafa9e6cbe9ef/e85cb/image13.png 480w&quot;
            sizes=&quot;(max-width: 480px) 100vw, 480px&quot;
            type=&quot;image/png&quot;
          /&gt;
          &lt;img
            class=&quot;gatsby-resp-image-image&quot;
            src=&quot;/static/cada11acb95942d4f1ddafa9e6cbe9ef/e85cb/image13.png&quot;
            alt=&quot;wired breadboard&quot;
            title=&quot;wired breadboard&quot;
            loading=&quot;lazy&quot;
            style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
          /&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2&gt;Summary&lt;/h2&gt;
&lt;p&gt;We know we just went over a lot of information but, trust us, it will all be important later on! In the next few meetings, we will be exploring applying these electrical knowledge to create actual IoT devices… stay tuned!&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Control LED Lights]]></title><description><![CDATA[ This tutorial will walk you through how to build your own RGB lights that can be controlled from the internet!…]]></description><link>https://tinoiot.com/tutorials/esp8266-control-led-lights/</link><guid isPermaLink="false">https://tinoiot.com/tutorials/esp8266-control-led-lights/</guid><pubDate>Tue, 06 Oct 2020 00:00:00 GMT</pubDate><content:encoded>&lt;img src=&quot;/static/6e78f69515f2f05181d38afea546bb73/2244e/rgb-cover-image-2.jpg&quot;/&gt;&lt;h2&gt;What you will need:&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;5mm LEDs&lt;/li&gt;
&lt;li&gt;220 Ohm Resistor&lt;/li&gt;
&lt;li&gt;2 Jump Wires&lt;/li&gt;
&lt;li&gt;Node MCU/ESP8266&lt;/li&gt;
&lt;li&gt;A Breadboard&lt;/li&gt;
&lt;li&gt;Arduino IDE&lt;/li&gt;
&lt;li&gt;A &lt;a href=&quot;https://thingspeak.com/&quot;&gt;ThingSpeak Account&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Project Background&lt;/h2&gt;
&lt;p&gt;This tutorial will walk you through how to build your own RGB lights that can be controlled from the internet! Through this project, you will learn the basics of electronics, hardware, and software by setting up your own light module and writing code to interact with ThingSpeak to control your light.&lt;/p&gt;
&lt;h2&gt;Setting up the LED Module&lt;/h2&gt;
&lt;p&gt;To set up the LED Module, we first place the NodeMCU on the breadboard by placing the port side of the Node facing outwards and firmly pressing the Node into the breadboard. &lt;strong&gt;Make sure the NodeMCU is completely inside the breadboard or else the module may not be powered properly.&lt;/strong&gt; &lt;/p&gt;
&lt;p&gt;Following this, add a jumper wire from the GND pin on the Node to the ”-” column on the breadboard. Following this, insert the longer side of the LED prong (Anode) into the same ”-” column where you placed the jump wire. Place the shorter side of the LED (Cathode) prong into another column in the breadboard. &lt;/p&gt;
&lt;p&gt;Place a second jumper wire from the D7 pin on the Node to the same row as the shorter prong of the LED. Finally, place your resistor between both jump wires and the corresponding prong on the LED. The resistor is used to control the flow of current to LED. &lt;/p&gt;
&lt;p&gt;Your board should look like this when you are done.&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/22dcdf8fa78770fef7d8fd3023f1cc23/6d28f/meeting-3-afterwards-copy.jpg&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 166.25766871165646%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAhABQDASIAAhEBAxEB/8QAGQABAQADAQAAAAAAAAAAAAAAAAQBAwUC/8QAFgEBAQEAAAAAAAAAAAAAAAAAAAEC/9oADAMBAAIQAxAAAAHRTqozeYpVhy+seUJJrwjB/8QAHxAAAwACAAcAAAAAAAAAAAAAAQIDBBEAEBIUISM0/9oACAEBAAEFAsaKUn28OKIBTHOsZKEtUe2XxyJ6qHVA7AU8IW23P//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQMBAT8BX//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQIBAT8BX//EACAQAAICAQMFAAAAAAAAAAAAAAABAhExAxBxEiFBYZH/2gAIAQEABj8CuV5PP0aWBv2JUkiXI+TJIpN0Q6JO6sffbS42/8QAHxAAAgICAQUAAAAAAAAAAAAAASEAETFBEFFhcbHB/9oACAEBAAE/ISh5EYwi1jCqKcRwLIy6UDUsyxm93yECwAt5lAB3KDXRajsytDrBhiDY3wM+f2eP/9oADAMBAAIAAwAAABBLCz/8L//EABcRAAMBAAAAAAAAAAAAAAAAAAABQRD/2gAIAQMBAT8QgyD3/8QAGBEBAAMBAAAAAAAAAAAAAAAAARARIEH/2gAIAQIBAT8QVuO4/8QAHxABAAICAgIDAAAAAAAAAAAAAQARITFBcVFhEIGx/9oACAEBAAE/EMOQ9Uqh8SgDNL4591Mm9RtsdwECjcDgjJTqHyFwUBlw6m2GoKiu7DDHB5jKaZ2udESNuyrfUKs5Ox9DeX9jCrNq3cOO/gyT/9k=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source
              srcset=&quot;/static/22dcdf8fa78770fef7d8fd3023f1cc23/94563/meeting-3-afterwards-copy.webp 163w,
/static/22dcdf8fa78770fef7d8fd3023f1cc23/647a8/meeting-3-afterwards-copy.webp 325w,
/static/22dcdf8fa78770fef7d8fd3023f1cc23/c1dc5/meeting-3-afterwards-copy.webp 650w,
/static/22dcdf8fa78770fef7d8fd3023f1cc23/1e975/meeting-3-afterwards-copy.webp 975w,
/static/22dcdf8fa78770fef7d8fd3023f1cc23/063bf/meeting-3-afterwards-copy.webp 1300w,
/static/22dcdf8fa78770fef7d8fd3023f1cc23/df8c7/meeting-3-afterwards-copy.webp 2130w&quot;
              sizes=&quot;(max-width: 650px) 100vw, 650px&quot;
              type=&quot;image/webp&quot;
            /&gt;
          &lt;source
            srcset=&quot;/static/22dcdf8fa78770fef7d8fd3023f1cc23/d2f63/meeting-3-afterwards-copy.jpg 163w,
/static/22dcdf8fa78770fef7d8fd3023f1cc23/c989d/meeting-3-afterwards-copy.jpg 325w,
/static/22dcdf8fa78770fef7d8fd3023f1cc23/6aca1/meeting-3-afterwards-copy.jpg 650w,
/static/22dcdf8fa78770fef7d8fd3023f1cc23/7c09c/meeting-3-afterwards-copy.jpg 975w,
/static/22dcdf8fa78770fef7d8fd3023f1cc23/01ab0/meeting-3-afterwards-copy.jpg 1300w,
/static/22dcdf8fa78770fef7d8fd3023f1cc23/6d28f/meeting-3-afterwards-copy.jpg 2130w&quot;
            sizes=&quot;(max-width: 650px) 100vw, 650px&quot;
            type=&quot;image/jpeg&quot;
          /&gt;
          &lt;img
            class=&quot;gatsby-resp-image-image&quot;
            src=&quot;/static/22dcdf8fa78770fef7d8fd3023f1cc23/6aca1/meeting-3-afterwards-copy.jpg&quot;
            alt=&quot;breadboard&quot;
            title=&quot;breadboard&quot;
            loading=&quot;lazy&quot;
            style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
          /&gt;
        &lt;/picture&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;Connecting to ThingSpeak&lt;/h2&gt;
&lt;p&gt;Before you begin, make sure you create a ThingSpeak account first. &lt;/p&gt;
&lt;p&gt;Steps:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Create a channel&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;In the “My Channels” page click on “New Channel”&lt;/li&gt;
&lt;li&gt;Enter a name and brief description for your channel&lt;/li&gt;
&lt;li&gt;Enable Field 1 by checking the checkbox and provide a name (The field corresponds to the led on your module)&lt;/li&gt;
&lt;li&gt;Click “Save Channel”&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Modify Channel Sharing Settings&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;After creating your channel, go the “Sharing” tab and enable “Share Channel With Everyone”&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Copy Channel ID&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Head to the “Channel Settings” tab and copy the “Channel ID” (you will need to input this ID in your code)&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Once you have completed your steps, you are ready to move on! Check out our more detailed &lt;a href=&quot;https://tinoiot.com/tutorials/thingspeak-with-esp-mc/&quot;&gt;ESP ThingSpeak tutorial&lt;/a&gt; to learn more. &lt;/p&gt;
&lt;h2&gt;Controlling the LED&lt;/h2&gt;
&lt;p&gt;Open your Arduino IDE and ensure that you have the &lt;em&gt;ESP8266&lt;/em&gt; and &lt;em&gt;ThingSpeak&lt;/em&gt; libraries installed.&lt;/p&gt;
&lt;p&gt;In your file, add the code below. To connect to the internet you must first acquire your &lt;strong&gt;SSID and password of your wifi-router&lt;/strong&gt;. In addition, paste the “Channel ID” you copied earlier into the “channel” variable. &lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;cpp&quot;&gt;&lt;pre class=&quot;language-cpp&quot;&gt;&lt;code class=&quot;language-cpp&quot;&gt;&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;ThingSpeak.h&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&amp;lt;ESP8266WiFi.h&gt;&lt;/span&gt;&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// Replace your wifi credentials here&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// ssid: your wifi name&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// password: your wifi password&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;char&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; ssid     &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;YourWiFiName&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;char&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; password &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;YourWiFiPassword&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// Replace with your own ThingSpeak Account Channel ID&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;unsigned&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;long&lt;/span&gt; channel &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;11111&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// 1 is a channel field. You don&apos;t need to change if you are following&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// this tutorial. You can modify it according to your application&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;unsigned&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; led &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

WiFiClient  client&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;


&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;setup&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  Serial&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;begin&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;115200&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;delay&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  
  &lt;span class=&quot;token function&quot;&gt;pinMode&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;D7&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; OUTPUT&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token comment&quot;&gt;// We start by connecting to a WiFi network&lt;/span&gt;
 
  Serial&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  Serial&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  Serial&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Connecting to &quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  Serial&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;ssid&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  
  WiFi&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;begin&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;ssid&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; password&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  
  &lt;span class=&quot;token keyword&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;WiFi&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;status&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; WL_CONNECTED&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;delay&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;500&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    Serial&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;.&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
 
  Serial&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  Serial&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;WiFi connected&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;  
  Serial&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;IP address: &quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  Serial&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;WiFi&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;localIP&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  Serial&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Netmask: &quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  Serial&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;WiFi&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;subnetMask&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  Serial&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Gateway: &quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  Serial&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;WiFi&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;gatewayIP&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  ThingSpeak&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;begin&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;client&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;loop&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
 
  &lt;span class=&quot;token comment&quot;&gt;// get the last data of the fields&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; led_1 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; ThingSpeak&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;readFloatField&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;channel&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; led&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  
  &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;led_1 &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;digitalWrite&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;D7&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    Serial&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;D1 is On..!&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;led_1 &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;digitalWrite&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;D7&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    Serial&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;D1 is Off..!&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    
  Serial&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;led_1&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;delay&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;5000&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;After this is complete, connect your NodeMCU with a micro-usb cable to your laptop and upload the code by pressing Cmd/Ctrl + U. While it is uploading, click on &lt;em&gt;Tools&lt;/em&gt; &gt; &lt;em&gt;Serial Monitor&lt;/em&gt; to view log updates (such as connecting to Wifi and LED status). &lt;/p&gt;
&lt;p&gt;Following this, head back to your ThingSpeak channel, click on “API Keys” tab and copy the “Write to Channel Feed” API link. Paste the link in the browser and you should be all set! From this page, in the edit the url periodically, changing the “field1=” attribute to between 0 and 1 (this is to toggle the LED on and off). As you do this, you should see your LED turning on and off (there will be a delay) as well as status updates in the Serial Monitor Log. &lt;/p&gt;
&lt;p&gt;After a couple of changes to the “field1” value, you should see some data in your chart! The data represents the time the LED status changed and the status it was changed to. &lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 458px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/224abdbefb509ed8ed02353a84b24203/f7a31/screen-shot-2020-10-06-at-11.44.52-pm.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 68.71165644171779%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAOCAYAAAAvxDzwAAAACXBIWXMAAAsTAAALEwEAmpwYAAACQklEQVQ4y51T2U4UQRSdX1PAKCFEfNNHEz/GDVxeeDH+BgxgIML4pA8aZYAZcHZn69l6qaW7j+cW3SMaNcY7ubnVtZx7zqmawoPXR7i7eYD7rw5x5+UbXHu4hYVH21lu/ZKX89e55/aLPaxs7GJ5fQerz/ewxrOLj7dRuLe5jzUuSl19tosFbl7k4SUu3nhS/CllPs/l9SJuPi26eot1ZWMHS5wvhMpAaYNQaVeNMbBMxe/x1MeE6erMv1yzFoapOZ6nlmoRBCEK+EOYOEaj66HjTVFr99HqDpGmKf4WWmsUZJPrrBRUu42o2UTw+Qv0YADT6SA6PkaSxEj5E3aSMc/o0Riq14OZTt05iSiKfjBMkwTq/JwAZfhvD6FrdahKFVG5DDscImHDfJ9EPJtBX1wgnhCwUnFzSgCDSCNhx4QfptFwAOH7D1DlEwdosu5Sc1CJhPJUtYrY85wS+kHfFQrt3hgRF/VohIisIrKcHpUQfPyE8ISgzRZiAriL4tiQmXwbXlJ4dgbV7VJyBige5h1jemHFk3odfqkEdXrq/IvZ6GrYzjekVOM8y9bFkjlDt0nkspOmLDF4un9A0HfwydT6PsS1hLcuFyj2KErUjSZC2qNbZN3vIxUFOcMoDDFgZ0UZIk17I4y+1uDRAuvenKUtBgMyCdjc2hh66CGg/OFgCC2M5VJzhtLVCoMr0oSVzcZdb4Z2f4KY4MJ0Lp82ifcJCblbzgH/KwicEDCVzADdw5ZH/S+pfzdPUJfZ3zEIAnwH16UIKRHu08cAAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source
              srcset=&quot;/static/224abdbefb509ed8ed02353a84b24203/94563/screen-shot-2020-10-06-at-11.44.52-pm.webp 163w,
/static/224abdbefb509ed8ed02353a84b24203/647a8/screen-shot-2020-10-06-at-11.44.52-pm.webp 325w,
/static/224abdbefb509ed8ed02353a84b24203/c763a/screen-shot-2020-10-06-at-11.44.52-pm.webp 458w&quot;
              sizes=&quot;(max-width: 458px) 100vw, 458px&quot;
              type=&quot;image/webp&quot;
            /&gt;
          &lt;source
            srcset=&quot;/static/224abdbefb509ed8ed02353a84b24203/222b7/screen-shot-2020-10-06-at-11.44.52-pm.png 163w,
/static/224abdbefb509ed8ed02353a84b24203/ff46a/screen-shot-2020-10-06-at-11.44.52-pm.png 325w,
/static/224abdbefb509ed8ed02353a84b24203/f7a31/screen-shot-2020-10-06-at-11.44.52-pm.png 458w&quot;
            sizes=&quot;(max-width: 458px) 100vw, 458px&quot;
            type=&quot;image/png&quot;
          /&gt;
          &lt;img
            class=&quot;gatsby-resp-image-image&quot;
            src=&quot;/static/224abdbefb509ed8ed02353a84b24203/f7a31/screen-shot-2020-10-06-at-11.44.52-pm.png&quot;
            alt=&quot;data&quot;
            title=&quot;data&quot;
            loading=&quot;lazy&quot;
            style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
          /&gt;
        &lt;/picture&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Congratulations on creating your own LED light module and controlling it using ThingSpeak!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Challenge:&lt;/strong&gt; Create a software UI that allows you to toggle the status of the LED switch using the ThingSpeak API. This can be as simple as creating an on/off button using html which makes a GET request to the ThingSpeak API or as complicated as you would like! &lt;/p&gt;
&lt;p&gt;Send us a message on Slack if you need help and make sure to &lt;a href=&quot;join.tinoiot.com&quot;&gt;join.tinoiot.com&lt;/a&gt; to join our groups : )&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Our Links]]></title><description><![CDATA[ Make sure you are using your student account (we won’t allow-in any other!) Right click on the link above ->…]]></description><link>https://tinoiot.com/blogs/our-links/</link><guid isPermaLink="false">https://tinoiot.com/blogs/our-links/</guid><pubDate>Mon, 05 Oct 2020 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;&lt;a href=&quot;https://meet.tinoiot.com&quot;&gt;Meeting link&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Make sure you are using your student account (we won’t allow-in any other!) Right click on the link above -&gt; Copy link address to save &lt;/p&gt;
&lt;h1&gt;&lt;a href=&quot;https://join.tinoiot.com&quot;&gt;Membership Form&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Use this form to join our official communication channels!&lt;/p&gt;
&lt;h1&gt;&lt;a href=&quot;https://slides.tinoiot.com&quot;&gt;Past Curriculum Slides&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Revisit some of our old lessons to learn the fundamentals of software, hardware, and electric engineering!&lt;/p&gt;
&lt;h1&gt;&lt;a href=&quot;https://www.youtube.com/channel/UCDJZ2mN6C9Nzq2hO9pDAtxw&quot;&gt;Past Meeting Recordings&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;You can use this (or our meeting debriefs) to catch up on our lessons on IoT fundamentals. We will also post tutorial highlights on there to get you started on your own IoT adventures. &lt;/p&gt;
&lt;h1&gt;&lt;a href=&quot;https://parts.tinoiot.com&quot;&gt;Parts Request Form&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Looking for sensors, MCs, boards, wires, and more? Perhaps we have some. Fill out the form to get in contact with us : )&lt;/p&gt;
&lt;h1&gt;&lt;a href=&quot;https://hello.tinoiot.com&quot;&gt;Introduction Slides&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Quickly learn about what we do in the form of 8 slides!&lt;/p&gt;
&lt;h1&gt;&lt;a href=&quot;https://links.tinoiot.com&quot;&gt;Short Link To This Page&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Feel free to share this with your friends and introduce them to IoT in a quick way&lt;/p&gt;
&lt;p&gt;-&lt;/p&gt;
&lt;p&gt;As always, feel free to message us with any questions regarding IoT.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Common Questions]]></title><description><![CDATA[Hi everyone! Below is a list of commonly asked questions (along with answers) during the first meeting today. Feel free…]]></description><link>https://tinoiot.com/blogs/questions-and-answers/</link><guid isPermaLink="false">https://tinoiot.com/blogs/questions-and-answers/</guid><pubDate>Thu, 24 Sep 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hi everyone! Below is a list of commonly asked questions (along with answers) during the first meeting today. Feel free to DM us for more specific questions :)&lt;/p&gt;
&lt;h2&gt;How do we get components for projects?&lt;/h2&gt;
&lt;p&gt;Components, as of now, can’t be lent out by us because of restrictions on in-person meetings. In short, it would be fastest to purchase from an online store if you want to get started right away (we always provide links to recommended retailers). &lt;/p&gt;
&lt;h2&gt;How much would these components cost?&lt;/h2&gt;
&lt;p&gt;The good thing about IoT is that it has a very very low barrier to entry. It cost less than 50 dollars to build our prototype doorbell camera. The most expensive component—the microcontroller—can be reused endless times for other projects. After the initial purchase of a microcontroller + breadboard kit, a typical project would cost around 10 dollars. &lt;/p&gt;
&lt;h2&gt;Would I be able to publish my own projects on &lt;a href=&quot;https://tinoiot.com&quot;&gt;tinoiot.com&lt;/a&gt;?&lt;/h2&gt;
&lt;p&gt;Yes… eventually. We are currently in the process of setting up a submission form and all posts will have to follow strict guidelines (and have to go through the mandatory review process).&lt;/p&gt;
&lt;h2&gt;When are the meetings?&lt;/h2&gt;
&lt;p&gt;Our meetings will be at 12pm, on Wednesdays. Please make sure to use your school email when joining our Zoom call at &lt;a href=&quot;https://meet.tinoiot.com&quot;&gt;meet.tinoiot.com&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;How do I become a member? Are there requirements?&lt;/h2&gt;
&lt;p&gt;TinoIoT does not have requirements nor fees, visit &lt;a href=&quot;https://join.tinoiot.com&quot;&gt;join.tinoiot.com&lt;/a&gt; to get started!&lt;/p&gt;
&lt;h2&gt;What if I can’t make the meetings on Wednesday?&lt;/h2&gt;
&lt;p&gt;It would be best if you can make the bi-weekly meetings so you can ask questions and get more information / personalized help. However, we will be posting our slides on our website along with commentaries to help everyone stay on track with their projects. &lt;/p&gt;
&lt;h2&gt;Are the slides posted?&lt;/h2&gt;
&lt;p&gt;Of course! How could we not make another tiny link. Visit &lt;a href=&quot;https://slides.tinoiot.com&quot;&gt;slides.tinoiot.com&lt;/a&gt; to view ALL of our slides. They will be posted and updated to that site every meeting.&lt;/p&gt;
&lt;h2&gt;Do I have to follow the curriculum / projects?&lt;/h2&gt;
&lt;p&gt;Nope. You are always welcome to start your own projects and you could always message us for any help. Our officers have a wide range of capabilities, feel free to ask about anything!&lt;/p&gt;
&lt;p&gt;Make sure to &lt;a href=&quot;https://join.tinoiot.com&quot;&gt;join.tinoiot.com&lt;/a&gt; to get future announcements.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Air Quality Sensor]]></title><description><![CDATA[ With ongoing fires, air pollution, and many harmful impurities in the air, it’s important to understand how the data you…]]></description><link>https://tinoiot.com/tutorials/esp32-aq-sensor/</link><guid isPermaLink="false">https://tinoiot.com/tutorials/esp32-aq-sensor/</guid><pubDate>Sun, 20 Sep 2020 00:00:00 GMT</pubDate><content:encoded>&lt;img src=&quot;/static/62158abbadaddbcc3e985a9eb83a3433/2244e/pms2.jpg&quot;/&gt;&lt;h2&gt;What you will need:&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://m.banggood.com/PMS5003-PM2_5-Air-Particle-Dust-Sensor-Laser-Digital-Output-Module-High-Precision-Air-Haze-Detection-Smart-Home-Device-p-1553818.html?akmClientCountry=America&amp;#x26;rmmds=orderdetail&quot;&gt;PMS5003 (pm2.5 sensor)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.amazon.com/KeeYees-Internet-Development-Wireless-Compatible/dp/B07HF44GBT/ref=sr_1_3?crid=1N2U8UI66A7U4&amp;#x26;dchild=1&amp;#x26;keywords=nodemcu+esp8266&amp;#x26;qid=1598505040&amp;#x26;s=electronics&amp;#x26;sprefix=nodemc%2Celectronics%2C228&amp;#x26;sr=1-3&quot;&gt;Esp8266 (nodemcu)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Arduino IDE&lt;/li&gt;
&lt;li&gt;Breadboard and cables&lt;/li&gt;
&lt;li&gt;ThingSpeak Account&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Project Background&lt;/h2&gt;
&lt;p&gt;With ongoing fires, air pollution, and many harmful impurities in the air, it’s important to understand how the data you see from air quality maps come to be. This project guides you through how to set up your own iot project to measure pm2.5 (particulate matters), which is a significant factor in calculating aqi (air quality index).&lt;/p&gt;
&lt;p&gt;This New York Department of Health article goes more in depth of the health hazards if you are interested: &lt;a href=&quot;https://www.health.ny.gov/environmental/indoors/air/pmq_a.htm#:~:text=Particles%20in%20the%20PM2.5%20size%20range%20are%20able%20to,nose%20and%20shortness%20of%20breath&quot;&gt;https://www.health.ny.gov/environmental/indoors/air/pmq_a.htm&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This monitoring project is made achievable via pms5003 sensor using light scattering principle, and that coupled with the esp over thingspeak allows for you to access the data from the pms over the internet.&lt;/p&gt;
&lt;h2&gt;Setting everything up / wiring&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;This step applies if your purchase came with a connector. If it doesn’t, go to the next step titled wiring from pms to esp.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The wiring for this module to its connector is as follows:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;From Right to Left:
Pin 1 Vcc:  To Power supply (5V)
Pin 2 GND:  To gnd (negative power)
Pin 3 SET:  To SET, a TTL input signal
Pin 4 RXD:  To RXD, serial receiving
Pin 5 TXD:  To TXD, serial sending
Pin 6 RST:  To RST, which is reset signal&lt;/p&gt;
&lt;p&gt;Be careful not to plug these in backwards.&lt;/p&gt;
&lt;p&gt;The descriptions on the sensor saying ttl@3.3V simply indicates that any voltage applied that is below 3.3V will not work/run. That is why, in the next step, we have to connect to 5V on the esp.&lt;/p&gt;
&lt;p&gt;If you skipped here without a connector, just follow the following steps, but use 4 male to male dupont cables directly from the black and red connector strip into the breadboard tie points (or breadholes, as we unironically call them) that match to each pin of the esp. 2 indents on the white connector should match up to the rails in the PMS’s sensor port. If you need to brush up on some breadboard how-to’s, refer to this post here. Remember - each connector and each pin should match to their respective destinations!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The wiring from the pms5003 sensor to the esp8266 is as follows:&lt;/strong&gt;
pms  esp
Pin 1 Vcc:  To Vin Pin (5V)
Pin 2 GND:  To gnd
Pin 3 TXD:  To TXD (tx)
Pin 4 RXD:  To RXD (rx)&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/46c90ffc60da60475ca074af15c9774d/8fdfc/wiring-diagram.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 46.012269938650306%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAIAAAC9o5sfAAAACXBIWXMAAC4jAAAuIwF4pT92AAAB0ElEQVQoz2P4jwv8+/vn+cO/Tx//f/vq/9vX/9+8BJGvnv//8h4s+w9IMODU+/vH3/t3fn78fPnMmbPHjl2/cP7q+XMXDh+6euzQzdt3fv38CdL879/f/39+g4z68/vvv3+///799ffv958/f//4+v/9u5MnTkTHROZkp1ZWFPgH+EVER7t7epeWlLx69RKk+ca9e0XbTuZsv1S79/T2TRvKsjPy42OqSoq2bl7//+/vNatW2duaT+lvLM5PCQ7yT89Id/fwmDxlItjh/xiOX75qMeegTvcep3kHV82aXm9jlKgmN39Cz9rpE///+rF1y2YLU4OUhAhfL9e0hJDqihwvb7/s7Mw3b16BbD526arVpB3GbVus+rbOnDuvKC05Myp8Un9325QJLz6/efHs+fx58yb09VSUlbY110/s6yyvrpw5a9aXL59Bmg+evaDRuEqlarVq9ZLV6zcChb58//H71687T17cefkY7Ly/335++fLt08cvH378/Hb7+d0Hz55BnX3r7r2aWUvr5qyqmTb/zJnTQNE/f/4AyRdvPpy+cfXcLRA6f/v6+TvXL9y5fvHujZPXLj1/+RqqGRIv2CPr9x8o+oVAf37/+fcPqh4AHdao8J3NAOcAAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source
              srcset=&quot;/static/46c90ffc60da60475ca074af15c9774d/94563/wiring-diagram.webp 163w,
/static/46c90ffc60da60475ca074af15c9774d/647a8/wiring-diagram.webp 325w,
/static/46c90ffc60da60475ca074af15c9774d/c1dc5/wiring-diagram.webp 650w,
/static/46c90ffc60da60475ca074af15c9774d/1e975/wiring-diagram.webp 975w,
/static/46c90ffc60da60475ca074af15c9774d/063bf/wiring-diagram.webp 1300w,
/static/46c90ffc60da60475ca074af15c9774d/e393f/wiring-diagram.webp 1725w&quot;
              sizes=&quot;(max-width: 650px) 100vw, 650px&quot;
              type=&quot;image/webp&quot;
            /&gt;
          &lt;source
            srcset=&quot;/static/46c90ffc60da60475ca074af15c9774d/222b7/wiring-diagram.png 163w,
/static/46c90ffc60da60475ca074af15c9774d/ff46a/wiring-diagram.png 325w,
/static/46c90ffc60da60475ca074af15c9774d/a6d36/wiring-diagram.png 650w,
/static/46c90ffc60da60475ca074af15c9774d/e548f/wiring-diagram.png 975w,
/static/46c90ffc60da60475ca074af15c9774d/3c492/wiring-diagram.png 1300w,
/static/46c90ffc60da60475ca074af15c9774d/8fdfc/wiring-diagram.png 1725w&quot;
            sizes=&quot;(max-width: 650px) 100vw, 650px&quot;
            type=&quot;image/png&quot;
          /&gt;
          &lt;img
            class=&quot;gatsby-resp-image-image&quot;
            src=&quot;/static/46c90ffc60da60475ca074af15c9774d/a6d36/wiring-diagram.png&quot;
            alt=&quot;Wiring Diagram&quot;
            title=&quot;Wiring Diagram&quot;
            loading=&quot;lazy&quot;
            style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
          /&gt;
        &lt;/picture&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;You may have realized by this point that wiring is pretty intuitive for the most part - everything just matches up to their names, or their name meanings.&lt;/p&gt;
&lt;h2&gt;Getting Thingspeak up and Running&lt;/h2&gt;
&lt;p&gt;Please get a thingspeak account set up. Then, please reference this article, &lt;a href=&quot;https://tinoiot.com/tutorials/esp32-thingspeak-wm/&quot;&gt;Sending Sensor Data to ThingSpeak&lt;/a&gt;, to get some preliminary information on how to send live air sensor data and visualize/analyze said data via http and mqtt. However, instead of a BME280, it’ll be your pms5003 - focus on the setup as well as learning how to send live data, then come back here for a specific walkthrough. You could try &lt;a href=&quot;https://tinoiot.com/tutorials/thingspeak-with-esp-mc#sending-data-to-thing-speak&quot;&gt;this&lt;/a&gt; particular section of the Thingspeak walkthrough just to see some cool stuff happen - and to also test if you have all the wifi shenanigans done correctly.&lt;/p&gt;
&lt;p&gt;We will be using it to monitor the particulate levels sensed. Create a channel (you can name it air quality system or anything you’d like), and keep track of the url under “white a channel feed” and set it under the correct server name. Again, all is shown in the above linked article if you’re confused.&lt;/p&gt;
&lt;p&gt;Use the following code:&lt;/p&gt;
&lt;p&gt;The setup loop takes care of making sure wifi is all set up properly. We will be graphing the values in ug/m3, with the x axis being time, or rather just timestamps.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;c&quot;&gt;&lt;pre class=&quot;language-c&quot;&gt;&lt;code class=&quot;language-c&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;// import statements allow for different types of sensors or controllers to be used&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&amp;lt;ESP8266WiFi.h&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&amp;lt;Arduino.h&gt;&lt;/span&gt;&lt;/span&gt;

&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;define&lt;/span&gt; &lt;span class=&quot;token macro-name&quot;&gt;LENG&lt;/span&gt; &lt;span class=&quot;token expression&quot;&gt;&lt;span class=&quot;token number&quot;&gt;31&lt;/span&gt;   &lt;/span&gt;&lt;span class=&quot;token comment&quot;&gt;// 0x42 + 31 bytes equal to 32 bytes&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;unsigned&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;char&lt;/span&gt; buf&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;LENG&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// these declarations are used to track the values to then plot into thingspeak. upon initalization they&apos;ll be set to 0 as a baseline.&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; PM01Value &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; PM2_5Value &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; PM10Value &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// allow for data to be sent to your computer via wifi&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;char&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;ssid &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;YOUR_WIFI_NAME&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;char&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;password &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;YOUR_WIFI_PASSWORD&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

String serverName &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;https://api.thingspeak.com/update?api_key=YOUR_WRITE_KEY&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
WiFiClient client&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;unsigned&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;long&lt;/span&gt; lastTime &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;unsigned&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;long&lt;/span&gt; timerDelay &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;60000&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// the setup loop&apos;s purpose is just to ensure connectivity and that your wifi is working&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;setup&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    Serial&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;begin&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;9600&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

    WiFi&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;begin&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;ssid&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; password&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    Serial&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Connecting&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;WiFi&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;status&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; WL_CONNECTED&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token function&quot;&gt;delay&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;500&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        Serial&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;.&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    Serial&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    Serial&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Connected to WiFi network with IP Address: &quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    Serial&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;WiFi&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;localIP&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;loop&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;// starts to read when it gets data from buffer&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;Serial&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;find&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0x42&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        Serial&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;readBytes&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;buf&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; LENG&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

        &lt;span class=&quot;token comment&quot;&gt;// reads the sensor value in this loop and uses previous variable to keep track of it&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;buf&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0x4d&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;checkValue&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;buf&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; LENG&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                PM01Value &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;transmitPM01&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;buf&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// count PM1.0 value of the air detector module&lt;/span&gt;
                PM2_5Value &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;transmitPM2_5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;buf&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// count PM2.5 value of the air detector module&lt;/span&gt;
                PM10Value &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;transmitPM10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;buf&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// count PM10 value of the air detector module&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// prints out the values read from the sensor out to your computer&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;unsigned&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;long&lt;/span&gt; OledTimer &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;millis&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;millis&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; OledTimer &lt;span class=&quot;token operator&quot;&gt;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1000&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        OledTimer &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;millis&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

        Serial&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;PM1.0: &quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        Serial&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;PM01Value&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        Serial&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;  ug/m3&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

        Serial&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;PM2.5: &quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        Serial&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;PM2_5Value&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        Serial&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;  ug/m3&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

        Serial&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;PM10 : &quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        Serial&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;PM10Value&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        Serial&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;  ug/m3&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        Serial&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

        &lt;span class=&quot;token comment&quot;&gt;// if able to send data over to thingspeak, it will do so here, and allow it to be displayed. You can look at ts api for clarification as needed&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;client&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;connect&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;server&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;80&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            String postStr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; apiKey&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            postStr &lt;span class=&quot;token operator&quot;&gt;+=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;&amp;amp;field1=&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            postStr &lt;span class=&quot;token operator&quot;&gt;+=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;PM01Value&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            postStr &lt;span class=&quot;token operator&quot;&gt;+=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;&amp;amp;field2=&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            postStr &lt;span class=&quot;token operator&quot;&gt;+=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;PM2_5Value&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            postStr &lt;span class=&quot;token operator&quot;&gt;+=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;&amp;amp;field3=&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            postStr &lt;span class=&quot;token operator&quot;&gt;+=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;PM10Value&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            postStr &lt;span class=&quot;token operator&quot;&gt;+=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;\r\n\r\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

            client&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;POST /update HTTP/1.1\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            client&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Host: api.thingspeak.com\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            client&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Connection: close\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            client&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;X-THINGSPEAKAPIKEY: &quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; apiKey &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            client&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Content-Type: application/x-www-form-urlencoded\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            client&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Content-Length: &quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            client&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;postStr&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;length&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            client&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\n\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            client&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;postStr&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
        client&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;stop&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;char&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;checkValue&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;unsigned&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;char&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;thebuf&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;char&lt;/span&gt; leng&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;char&lt;/span&gt; receiveflag &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; receiveSum &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;leng &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        receiveSum &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; receiveSum &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; thebuf&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    receiveSum &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; receiveSum &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0x42&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

    &lt;span class=&quot;token comment&quot;&gt;// check the serial data&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;receiveSum &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;thebuf&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;leng &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; thebuf&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;leng &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        receiveSum &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        receiveflag &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; receiveflag&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;transmitPM01&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;unsigned&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;char&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;thebuf&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; PM01Val&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    PM01Val &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;thebuf&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; thebuf&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// count PM1.0 value of the air detector module&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; PM01Val&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// transmit PM Value to PC&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;transmitPM2_5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;unsigned&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;char&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;thebuf&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; PM2_5Val&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    PM2_5Val &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;thebuf&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; thebuf&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// count PM2.5 value of the air detector module&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; PM2_5Val&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// transmit PM Value to PC&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;transmitPM10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;unsigned&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;char&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;thebuf&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; PM10Val&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    PM10Val &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;thebuf&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; thebuf&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// count PM10 value of the air detector module&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; PM10Val&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;In a few minutes, you should now see 3 live data plots graphing pm1, 2.5, and 10! Congrats!&lt;/p&gt;
&lt;!-- end of article --&gt;</content:encoded></item><item><title><![CDATA[All About IoT]]></title><description><![CDATA[ IoT, internet of things, refers to the billions of physical devices that are connected to each other via the internet…]]></description><link>https://tinoiot.com/blogs/all-about-iot/</link><guid isPermaLink="false">https://tinoiot.com/blogs/all-about-iot/</guid><pubDate>Sat, 22 Aug 2020 00:00:00 GMT</pubDate><content:encoded>&lt;img src=&quot;/static/de4b985ca18c5c8357a44de463aedd88/497c6/featuredImage.png&quot;/&gt;&lt;h2&gt;What is IoT?&lt;/h2&gt;
&lt;p&gt;IoT, internet of things, refers to the billions of physical devices that are connected to each other via the internet and sharing data and other information. Thanks to the arrival of affordable computer chips and the commonality of wireless networks, it is more simple than ever to turn anything into a part of the IoT. By connecting these devices together, adding sensors and writing software to read and manipulate data, these devices are now becoming smarter than ever and are adding an aspect of digital intelligence to our daily lives. &lt;/p&gt;
&lt;h2&gt;Examples of IoT&lt;/h2&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/34f42ec88129d21f773f8d5a228f72bf/ddced/alexa.jpg&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 66.87116564417178%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAANABQDASIAAhEBAxEB/8QAGAAAAwEBAAAAAAAAAAAAAAAAAAMEAQL/xAAWAQEBAQAAAAAAAAAAAAAAAAAAAQL/2gAMAwEAAhADEAAAAZutlyYJK//EABsQAAIDAAMAAAAAAAAAAAAAAAIDAAESERMh/9oACAEBAAEFAltLXezXMsaXD8Kf/8QAFREBAQAAAAAAAAAAAAAAAAAAERD/2gAIAQMBAT8BCf/EABURAQEAAAAAAAAAAAAAAAAAAAEQ/9oACAECAQE/ASf/xAAaEAACAgMAAAAAAAAAAAAAAAAAEQEQIVFh/9oACAEBAAY/AhJV3ZOa/8QAGhABAQEBAAMAAAAAAAAAAAAAAREAIRCBof/aAAgBAQABPyEQ7bypfWewK+Z70wC4CameP//aAAwDAQACAAMAAAAQdA//xAAWEQEBAQAAAAAAAAAAAAAAAAABEEH/2gAIAQMBAT8QUQdn/8QAFhEBAQEAAAAAAAAAAAAAAAAAAREQ/9oACAECAQE/EDa5/8QAHBABAAMBAQADAAAAAAAAAAAAAQARITFBUXGR/9oACAEBAAE/EBlawsmuDY9VpwNP3HUuvyws4qpZr7UrKF6w51/Z/9k=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source
              srcset=&quot;/static/34f42ec88129d21f773f8d5a228f72bf/94563/alexa.webp 163w,
/static/34f42ec88129d21f773f8d5a228f72bf/647a8/alexa.webp 325w,
/static/34f42ec88129d21f773f8d5a228f72bf/c1dc5/alexa.webp 650w,
/static/34f42ec88129d21f773f8d5a228f72bf/1e975/alexa.webp 975w,
/static/34f42ec88129d21f773f8d5a228f72bf/abb12/alexa.webp 1100w&quot;
              sizes=&quot;(max-width: 650px) 100vw, 650px&quot;
              type=&quot;image/webp&quot;
            /&gt;
          &lt;source
            srcset=&quot;/static/34f42ec88129d21f773f8d5a228f72bf/d2f63/alexa.jpg 163w,
/static/34f42ec88129d21f773f8d5a228f72bf/c989d/alexa.jpg 325w,
/static/34f42ec88129d21f773f8d5a228f72bf/6aca1/alexa.jpg 650w,
/static/34f42ec88129d21f773f8d5a228f72bf/7c09c/alexa.jpg 975w,
/static/34f42ec88129d21f773f8d5a228f72bf/ddced/alexa.jpg 1100w&quot;
            sizes=&quot;(max-width: 650px) 100vw, 650px&quot;
            type=&quot;image/jpeg&quot;
          /&gt;
          &lt;img
            class=&quot;gatsby-resp-image-image&quot;
            src=&quot;/static/34f42ec88129d21f773f8d5a228f72bf/6aca1/alexa.jpg&quot;
            alt=&quot;Amazon Alexa&quot;
            title=&quot;Amazon Alexa&quot;
            loading=&quot;lazy&quot;
            style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
          /&gt;
        &lt;/picture&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;As IoT continues to grow, its products are becoming more prevalent than ever in a society. One of the most popular IoT implementations is smart homes. Smart Home appliances are one of the most affordable and valuable IoT products on the market as the devices communicate with one another to create a smooth flow of data transmission. Some of the most common appliances are Amazon Alexa, Nest thermostat, and much more! Other common examples of IoT include smartwatches, temperature sensors, GPS trackers, and smart doorbells. &lt;/p&gt;
&lt;h2&gt;Why IoT Matters&lt;/h2&gt;
&lt;p&gt;In IoT, devices are connected to the internet where they are equipped with the capabilities to collect, send, and receive data. From a consumer point of view, IoT devices increase the efficiency of tasks and are able to perform them autonomously. &lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/8c939abcf2aaf5d0b971e707a9b75a03/eea4a/doorbell.jpg&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 38.65030674846626%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAIABQDASIAAhEBAxEB/8QAFwABAAMAAAAAAAAAAAAAAAAAAAIEBf/EABQBAQAAAAAAAAAAAAAAAAAAAAD/2gAMAwEAAhADEAAAAdasEAf/xAAYEAEBAQEBAAAAAAAAAAAAAAACAQMAEf/aAAgBAQABBQL1KEqdpHdP/8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAwEBPwE//8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAgEBPwE//8QAGxAAAQUBAQAAAAAAAAAAAAAAAQACERIhAzH/2gAIAQEABj8CnW+4h0Ni6uhEgvhf/8QAGRABAQEBAQEAAAAAAAAAAAAAAREAMVFx/9oACAEBAAE/IUk3mEXnPhfmCQUgc5v/2gAMAwEAAgADAAAAEHPv/8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAwEBPxA//8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAgEBPxA//8QAGhABAQADAQEAAAAAAAAAAAAAAREAITGBsf/aAAgBAQABPxAmZYYNZBfphc4q7Rtg7lseKY057c//2Q==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source
              srcset=&quot;/static/8c939abcf2aaf5d0b971e707a9b75a03/94563/doorbell.webp 163w,
/static/8c939abcf2aaf5d0b971e707a9b75a03/647a8/doorbell.webp 325w,
/static/8c939abcf2aaf5d0b971e707a9b75a03/c1dc5/doorbell.webp 650w,
/static/8c939abcf2aaf5d0b971e707a9b75a03/1e975/doorbell.webp 975w,
/static/8c939abcf2aaf5d0b971e707a9b75a03/af3f0/doorbell.webp 1280w&quot;
              sizes=&quot;(max-width: 650px) 100vw, 650px&quot;
              type=&quot;image/webp&quot;
            /&gt;
          &lt;source
            srcset=&quot;/static/8c939abcf2aaf5d0b971e707a9b75a03/d2f63/doorbell.jpg 163w,
/static/8c939abcf2aaf5d0b971e707a9b75a03/c989d/doorbell.jpg 325w,
/static/8c939abcf2aaf5d0b971e707a9b75a03/6aca1/doorbell.jpg 650w,
/static/8c939abcf2aaf5d0b971e707a9b75a03/7c09c/doorbell.jpg 975w,
/static/8c939abcf2aaf5d0b971e707a9b75a03/eea4a/doorbell.jpg 1280w&quot;
            sizes=&quot;(max-width: 650px) 100vw, 650px&quot;
            type=&quot;image/jpeg&quot;
          /&gt;
          &lt;img
            class=&quot;gatsby-resp-image-image&quot;
            src=&quot;/static/8c939abcf2aaf5d0b971e707a9b75a03/6aca1/doorbell.jpg&quot;
            alt=&quot;Smart Doorbell&quot;
            title=&quot;Smart Doorbell&quot;
            loading=&quot;lazy&quot;
            style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
          /&gt;
        &lt;/picture&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Let’s take a &lt;strong&gt;smart&lt;/strong&gt; doorbell for example. Smart doorbells allow you to monitor the activity near the front of your house, be it a guest, mail package, or even a thief. By replacing the peephole on common doors, smart doorbells are able to act on its own and notify users when activity is noticed outside their front door by streaming video to the user’s mobile devices. Not only does this alleviate the burden of checking your front door but also ensures the user’s safety by enabling them to view and communicate to those outside their home. &lt;/p&gt;
&lt;p&gt;To be rendered as “smart”, a device doesn’t need to have a powerful brain of its own, all it requires is to be &lt;em&gt;connected&lt;/em&gt; to a more powerful machine. A connection is the principle of the IoT. &lt;/p&gt;
&lt;p&gt;In the Internet of Things, a connection is used for 2 primary purposes:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;To collect and send data&lt;/li&gt;
&lt;li&gt;To receive and act on data&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;All of these fundamentals are vital to building a rudimentary IoT device. &lt;/p&gt;
&lt;h2&gt;Collecting and Sending Information&lt;/h2&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/cab45786403de3acd70627ff73043457/4b190/motionSensor.jpg&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 74.84662576687117%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAGQAAAgMBAAAAAAAAAAAAAAAAAAMBAgQF/8QAFQEBAQAAAAAAAAAAAAAAAAAAAAH/2gAMAwEAAhADEAAAAe2htU0Ei//EABkQAAIDAQAAAAAAAAAAAAAAAAECAAMTEf/aAAgBAQABBQJnCzbjS2vRVpAM/8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAwEBPwE//8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAgEBPwE//8QAGhAAAQUBAAAAAAAAAAAAAAAAAQAQESExQf/aAAgBAQAGPwKzqvGjvCpJkt//xAAcEAABBAMBAAAAAAAAAAAAAAABABEhQRAxUWH/2gAIAQEAAT8haxJoOqBEX8wCkE8E841esf/aAAwDAQACAAMAAAAQpw//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAEDAQE/ED//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAECAQE/ED//xAAcEAEBAAICAwAAAAAAAAAAAAABEQBRIUEQMXH/2gAIAQEAAT8QXKLc/MaxcCGItXT8z3iZPUHL3hYQiAh2G/H/2Q==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source
              srcset=&quot;/static/cab45786403de3acd70627ff73043457/94563/motionSensor.webp 163w,
/static/cab45786403de3acd70627ff73043457/647a8/motionSensor.webp 325w,
/static/cab45786403de3acd70627ff73043457/c1dc5/motionSensor.webp 650w,
/static/cab45786403de3acd70627ff73043457/d00b9/motionSensor.webp 800w&quot;
              sizes=&quot;(max-width: 650px) 100vw, 650px&quot;
              type=&quot;image/webp&quot;
            /&gt;
          &lt;source
            srcset=&quot;/static/cab45786403de3acd70627ff73043457/d2f63/motionSensor.jpg 163w,
/static/cab45786403de3acd70627ff73043457/c989d/motionSensor.jpg 325w,
/static/cab45786403de3acd70627ff73043457/6aca1/motionSensor.jpg 650w,
/static/cab45786403de3acd70627ff73043457/4b190/motionSensor.jpg 800w&quot;
            sizes=&quot;(max-width: 650px) 100vw, 650px&quot;
            type=&quot;image/jpeg&quot;
          /&gt;
          &lt;img
            class=&quot;gatsby-resp-image-image&quot;
            src=&quot;/static/cab45786403de3acd70627ff73043457/6aca1/motionSensor.jpg&quot;
            alt=&quot;Motion Sensor&quot;
            title=&quot;Motion Sensor&quot;
            loading=&quot;lazy&quot;
            style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
          /&gt;
        &lt;/picture&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;The collection of data is performed through the use of sensors. Sensors are distributed in various forms: motion sensors, pressure sensors, temperature sensors, air quality sensors, and so on. When connected to the internet, these senors are automatically able to collect the data we need and upon request, send the data over the internet to servers or to other IoT devices. &lt;/p&gt;
&lt;h2&gt;Receiving and Responding to Information&lt;/h2&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/a6fc06eff5fdd82a5c535c17ffcb8595/29177/printer.jpg&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 66.87116564417178%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAANABQDASIAAhEBAxEB/8QAGAAAAgMAAAAAAAAAAAAAAAAAAAUCAwT/xAAVAQEBAAAAAAAAAAAAAAAAAAAAAf/aAAwDAQACEAMQAAABbZbpisYkv//EABkQAAIDAQAAAAAAAAAAAAAAAAECAAMRMf/aAAgBAQABBQLY5sLMjlhXk7Cig//EABURAQEAAAAAAAAAAAAAAAAAAAAR/9oACAEDAQE/AVf/xAAVEQEBAAAAAAAAAAAAAAAAAAAAEf/aAAgBAgEBPwFH/8QAHBAAAgEFAQAAAAAAAAAAAAAAAAERAhIxMlHB/9oACAEBAAY/AiLUl0fiN6iDB//EABsQAAIDAAMAAAAAAAAAAAAAAAEhABExUXGh/9oACAEBAAE/IdIXBbhJG/Jc2hHCEqzswsSyGKG25//aAAwDAQACAAMAAAAQ19//xAAWEQEBAQAAAAAAAAAAAAAAAAABERD/2gAIAQMBAT8QGNx//8QAFREBAQAAAAAAAAAAAAAAAAAAERD/2gAIAQIBAT8QGP/EABsQAQEAAgMBAAAAAAAAAAAAAAERACFBUXEx/9oACAEBAAE/EGNh9Ew6bMob3HHuPiKSeEOMXc50K+sx8kAaZ9xDsdOzc//Z&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source
              srcset=&quot;/static/a6fc06eff5fdd82a5c535c17ffcb8595/94563/printer.webp 163w,
/static/a6fc06eff5fdd82a5c535c17ffcb8595/647a8/printer.webp 325w,
/static/a6fc06eff5fdd82a5c535c17ffcb8595/c1dc5/printer.webp 650w,
/static/a6fc06eff5fdd82a5c535c17ffcb8595/71afc/printer.webp 749w&quot;
              sizes=&quot;(max-width: 650px) 100vw, 650px&quot;
              type=&quot;image/webp&quot;
            /&gt;
          &lt;source
            srcset=&quot;/static/a6fc06eff5fdd82a5c535c17ffcb8595/d2f63/printer.jpg 163w,
/static/a6fc06eff5fdd82a5c535c17ffcb8595/c989d/printer.jpg 325w,
/static/a6fc06eff5fdd82a5c535c17ffcb8595/6aca1/printer.jpg 650w,
/static/a6fc06eff5fdd82a5c535c17ffcb8595/29177/printer.jpg 749w&quot;
            sizes=&quot;(max-width: 650px) 100vw, 650px&quot;
            type=&quot;image/jpeg&quot;
          /&gt;
          &lt;img
            class=&quot;gatsby-resp-image-image&quot;
            src=&quot;/static/a6fc06eff5fdd82a5c535c17ffcb8595/6aca1/printer.jpg&quot;
            alt=&quot;Printer&quot;
            title=&quot;Printer&quot;
            loading=&quot;lazy&quot;
            style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
          /&gt;
        &lt;/picture&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Upon receiving information from sensors, the information is either kept static for analytical/display purposes or is manipulated to derive further information. &lt;/p&gt;
&lt;p&gt;In our day to day lives, we are often blind to the occurrences of data manipulation. For example, your printer receives a document sent by your laptop/mobile device and prints it out. Your car key, when “unlock” is pressed, sends a signal to your car which unlocks the door.&lt;/p&gt;
&lt;h2&gt;What’s Next?&lt;/h2&gt;
&lt;p&gt;The potential of the IoT is endless and as Bruce Schneier says, &lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“The internet is no longer a web that we connect to. Instead, it’s a computerized, networked, and interconnected world that we live in. This is the future, and what we’re calling the Internet of Things.”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;If you are interested in learning more about the IoT and building IoT projects of your own, you’ve come to the right place!  &lt;strong&gt;Stay tuned to our blogs as we will be posting more articles and tutorials on how you can kickstart your journey into the Internet of Things.&lt;/strong&gt;&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Sending Sensor Data to ThingSpeak (esp32)]]></title><description><![CDATA[ This project is meant to give you a practical example of what you can do with IoT skills. We will…]]></description><link>https://tinoiot.com/tutorials/thingspeak-with-esp-mc/</link><guid isPermaLink="false">https://tinoiot.com/tutorials/thingspeak-with-esp-mc/</guid><pubDate>Sat, 22 Aug 2020 00:00:00 GMT</pubDate><content:encoded>&lt;img src=&quot;/static/94ca67d6860306e7484202df2a48c0ff/2244e/mainpic.jpg&quot;/&gt;&lt;h2&gt;What you will need:&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.adafruit.com/product/2652&quot;&gt;Adafruit BME280&lt;/a&gt; - You could use any sensor you want, you’ll just have to figure out how to interface with it on your own.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.adafruit.com/product/3591&quot;&gt;Adafruit HUZZAH32 – ESP32 Feather Board&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Multicolored-Breadboard-Dupont-Jumper-Wires/dp/B073X7P6N2&quot;&gt;Jumper Wires&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.amazon.com/DEYUE-breadboard-Set-Prototype-Board/dp/B07LFD4LT6/ref=sr_1_3?crid=1MRAUMDALD43Z&amp;#x26;dchild=1&amp;#x26;keywords=breadboard&amp;#x26;qid=1598139934&amp;#x26;s=electronics&amp;#x26;sprefix=bread%2Celectronics%2C213&amp;#x26;sr=1-3&quot;&gt;Bread board&lt;/a&gt; - Recommended for keeping things organized but not necessary.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.arduino.cc/en/main/software&quot;&gt;Arduino IDE&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;A few Arduino Libraries for connecting to the internet and simplifying using the bme280 (We will get to these later)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://thingspeak.com/&quot;&gt;ThingSpeak Account&lt;/a&gt; - It’s free for up to 4 channels, which is plenty.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Project Overview&lt;/h2&gt;
&lt;p&gt;This project is meant to give you a practical example of what you can do with IoT skills. We will be using the esp32 huzzah feather board as our microcontroller because it has the esp32 chip that can connect to the internet. We will use this connectivity to send an HTTP GET request to ThingSpeak periodically so we can chart the temperature where ever we decide to place our device.&lt;/p&gt;
&lt;h2&gt;Setting up our Board&lt;/h2&gt;
&lt;p&gt;Install the Arduino ide on your computer by following the instructions &lt;a href=&quot;https://www.arduino.cc/en/main/software&quot;&gt;here&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;Download the proper USB driver for your system &lt;a href=&quot;https://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Next, we need to install the esp32 board in the Arduino ide. Run your ide and navigate to the preferences window. Enter &lt;code class=&quot;language-text&quot;&gt;https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_dev_index.json&lt;/code&gt; in the &lt;em&gt;Additional Board Manager URLs&lt;/em&gt; field. Then open the board manager (Tools &gt; Board &gt; Board Manager) and search for &lt;em&gt;esp32&lt;/em&gt;. Now Install &lt;em&gt;esp32&lt;/em&gt;. Then open your boards again and select Board &gt; ESP32 Arduino &gt; Adafruit ESP32 Feather. To verify that you have everything set up correctly, you can run the following program to your board: &lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;c&quot;&gt;&lt;pre class=&quot;language-c&quot;&gt;&lt;code class=&quot;language-c&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;// Code that runs once at the beginning&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;setup&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;pinMode&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;13&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; OUTPUT&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Sets the digital pin 13 as output&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;


&lt;span class=&quot;token comment&quot;&gt;// Code that runs repeatedly after setup&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;loop&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;digitalWrite&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;13&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; HIGH&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Set the digital pin 13 on&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;delay&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1000&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Wait 1000 ms&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;digitalWrite&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;13&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; LOW&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Set the digital pin 13 off&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;delay&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1000&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;If everything is good, you should see a red light blink on the board.&lt;/p&gt;
&lt;h2&gt;Installing Libraries&lt;/h2&gt;
&lt;p&gt;Now we are going to install libraries to make it easier for us to interface with the bme280 and connect to the internet.&lt;/p&gt;
&lt;p&gt;Go to Tools &gt; Library Manager, type in &lt;em&gt;Adafruit BME280 Library&lt;/em&gt;, and install it. It will prompt you to install other dependency libraries. Select &lt;em&gt;Install All&lt;/em&gt;.&lt;/p&gt;
&lt;h2&gt;Wiring&lt;/h2&gt;
&lt;p&gt;Connect the following pins with jumper wires (&lt;strong&gt;esp32&lt;/strong&gt; to &lt;strong&gt;bme280&lt;/strong&gt;):
&lt;strong&gt;3V&lt;/strong&gt; to &lt;strong&gt;VIN&lt;/strong&gt;
&lt;strong&gt;GND&lt;/strong&gt; to &lt;strong&gt;GND&lt;/strong&gt;
&lt;strong&gt;SCL&lt;/strong&gt; to &lt;strong&gt;SCK&lt;/strong&gt;
&lt;strong&gt;SDA&lt;/strong&gt; to &lt;strong&gt;SDI&lt;/strong&gt;
You can test if everything is wired correctly by running Adafruits example. It can be found at File &gt; Examples &gt; Adafruit BME280 Library &gt; bme280test. Because we are using I2C with the default pins, we don’t have to modify anything in the example code. Run it and then open the Serial Monitor (Tools &gt;  Serial Monitor). You should see readings every second for each of the sensors that look something like this:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;Temperature = 24.93 *C
Pressure = 1004.25 hPa
Approx. Altitude = 75.19 m
Humidity = 47.32 %&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2&gt;Setting up ThingsSpeak&lt;/h2&gt;
&lt;p&gt;First, create a ThingsSpeak account &lt;a href=&quot;https://thingspeak.com/&quot;&gt;here&lt;/a&gt;. Then go to the channels tab and click &lt;em&gt;Create New&lt;/em&gt;. Name the channel something like BME280 or Sensor Test, whatever you want. Check the boxes for four fields, and enter the names Temperature, Pressure, Altitude, Humidity. Ignore the rest of the text inputs and click &lt;em&gt;Save Channel&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Now that we have our channel set up, go to the &lt;em&gt;API Keys&lt;/em&gt; tab. Take note of the URL under &lt;em&gt;Write a Channel Feed&lt;/em&gt;. It should look something like &lt;code class=&quot;language-text&quot;&gt;https://api.thingspeak.com/update?api_key=&amp;lt;YOUR KEY&gt;&amp;amp;field1=0&lt;/code&gt;. Your key is the most important part and is what will allow you to get to your thing speak channel.&lt;/p&gt;
&lt;h2&gt;Sending Data to Thing Speak&lt;/h2&gt;
&lt;p&gt;Now let’s try sending some data to each of our channels four fields. Try out this code. &lt;strong&gt;Make sure to replace “ssid” with your wifi name, “password” with your wifi password, and the “serverName” with your own from ThingSpeak.&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;c&quot;&gt;&lt;pre class=&quot;language-c&quot;&gt;&lt;code class=&quot;language-c&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;// Import nessesary libraries&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&amp;lt;WiFi.h&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&amp;lt;HTTPClient.h&gt;&lt;/span&gt;&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// Set our wifi name and password&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;char&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; ssid &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;YOUR_WIFI_NAME&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;char&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; password &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;YOUR_WIFI_PASSWORD&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// Your thingspeak channel url with api_key query&lt;/span&gt;
String serverName &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;https://api.thingspeak.com/update?api_key=YOUR_WRITE_KEY&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// Assign some variables to allow us read and send data every minute&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;unsigned&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;long&lt;/span&gt; lastTime &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;unsigned&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;long&lt;/span&gt; timerDelay &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;60000&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;


&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;setup&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  Serial&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;begin&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;9600&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Opens up the serial port with a baudrate of 9600 bits per second&lt;/span&gt;


  WiFi&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;begin&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;ssid&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; password&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Attempt to connect to wifi with our password&lt;/span&gt;
  Serial&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Connecting&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Print our status to the serial monitor&lt;/span&gt;
  &lt;span class=&quot;token comment&quot;&gt;// Wait for wifi to connect&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;while&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;WiFi&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;status&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; WL_CONNECTED&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;delay&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;500&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    Serial&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;.&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
  Serial&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  Serial&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Connected to WiFi network with IP Address: &quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  Serial&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;WiFi&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;localIP&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;


&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;loop&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;millis&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; lastTime&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; timerDelay&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Check if its been a minute&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;WiFi&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;status&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; WL_CONNECTED&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Check to make sure wifi is still connected&lt;/span&gt;
      &lt;span class=&quot;token function&quot;&gt;sendData&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Call the sendData function defined below&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
      Serial&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;WiFi Disconnected&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    lastTime &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;millis&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;


&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;sendData&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;double&lt;/span&gt; temp&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;double&lt;/span&gt; pres&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;double&lt;/span&gt; alt&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;double&lt;/span&gt; hum&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  HTTPClient http&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Initialize our HTTP client&lt;/span&gt;


  String url &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; serverName &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;&amp;amp;field1=&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; temp &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;&amp;amp;field2=&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; pres &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;&amp;amp;field3=&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; alt &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;&amp;amp;field4=&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; hum&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Define our entire url&lt;/span&gt;
      
  http&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;begin&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;url&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;c_str&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Initialize our HTTP request&lt;/span&gt;
      
  &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; httpResponseCode &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; http&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;GET&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Send HTTP request&lt;/span&gt;
      
  &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;httpResponseCode &lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Check for good HTTP status code&lt;/span&gt;
    Serial&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;HTTP Response code: &quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    Serial&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;httpResponseCode&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    Serial&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Error code: &quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    Serial&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;httpResponseCode&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
  http&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;end&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;First we define your home wifi credentials, &lt;code class=&quot;language-text&quot;&gt;ssid&lt;/code&gt; and &lt;code class=&quot;language-text&quot;&gt;password&lt;/code&gt;. We &lt;code class=&quot;language-text&quot;&gt;begin&lt;/code&gt; our connection and wait.&lt;/li&gt;
&lt;li&gt;Every minute we call the &lt;code class=&quot;language-text&quot;&gt;sendData(1, 2, 3, 4);&lt;/code&gt; function. In the function we take the paramaters and add them to our &lt;code class=&quot;language-text&quot;&gt;url&lt;/code&gt; query string.&lt;/li&gt;
&lt;li&gt;Finaly we send the &lt;code class=&quot;language-text&quot;&gt;GET&lt;/code&gt; request and &lt;code class=&quot;language-text&quot;&gt;print&lt;/code&gt; to the serial that we sucseded.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Again check the serial monitor to see if you connected to wifi and when the data is sent. It will take 60 seconds to send first and then send again every 60. You should see the points show up on your charts.&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/802d6eefa2b8fbdb0465b92f3b99b2e4/7e881/ts2.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 66.25766871165644%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAYAAACpUE5eAAAACXBIWXMAABYlAAAWJQFJUiTwAAACB0lEQVQ4y2VTyW7UQBD1XxIi4MKuCHJAkbhw5RMgIBF2sUic+ABCGEg0ggMXDsAkEQIREmBs4603P15VtycJWHpT1VWvPFXVz9nlp29xamWE+eVVHLm2iqPXo51ffokTN9fUfvg2xaedQnknb42Yf4E58uYS99iNNRwnd/HBBrK8alE0RvHrT4OvezmmVYecZ4H4xjpFXsd42Vp8/10qpC6vE5f1mTEW6AP4E6330fb9LB5CYNjzmHiC4CMO8OScTcsatm7Qty0CMVhF08Aboy+07LCqY94z/h+XsNYis87BOg+TbMuOdUSJkeBTdwNmuYHr4jqk1hEZ+8ShR8bQsfiYTsfpBeEfnrCUKw6tjdzsy88S23slPu/kisluQRux+aPQWN1ZduOwxdzWbskbJ5e5ScpPkr/NfHb1+XssPRlj4d46zt55jdMrr3COduH+OhYfbmj8I4s2+aKlx2NcejTG+btvcOb2SCH+BcrlInHl2TvukPP7wJvklLKHoqp1b6HvFc7v71B8F+I6qqZTyMknrl5K2zLokwRCkovYJAvZndyy4/K7Lkqsn0lrnyc1npxMpGCbJBGRQ8Lgz2TjDsvGH+ANMnLSYdBRvBbISE1n0FmnMZNeJuOG1KnKTPhE3Rpdk6zNyeoYy2SUnmPKaGK9j4UiFf1n52ZaDIkzQL8e2R852iHtX+2g0KzG4zaKAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source
              srcset=&quot;/static/802d6eefa2b8fbdb0465b92f3b99b2e4/94563/ts2.webp 163w,
/static/802d6eefa2b8fbdb0465b92f3b99b2e4/647a8/ts2.webp 325w,
/static/802d6eefa2b8fbdb0465b92f3b99b2e4/c1dc5/ts2.webp 650w,
/static/802d6eefa2b8fbdb0465b92f3b99b2e4/1e975/ts2.webp 975w,
/static/802d6eefa2b8fbdb0465b92f3b99b2e4/063bf/ts2.webp 1300w,
/static/802d6eefa2b8fbdb0465b92f3b99b2e4/74c35/ts2.webp 1521w&quot;
              sizes=&quot;(max-width: 650px) 100vw, 650px&quot;
              type=&quot;image/webp&quot;
            /&gt;
          &lt;source
            srcset=&quot;/static/802d6eefa2b8fbdb0465b92f3b99b2e4/222b7/ts2.png 163w,
/static/802d6eefa2b8fbdb0465b92f3b99b2e4/ff46a/ts2.png 325w,
/static/802d6eefa2b8fbdb0465b92f3b99b2e4/a6d36/ts2.png 650w,
/static/802d6eefa2b8fbdb0465b92f3b99b2e4/e548f/ts2.png 975w,
/static/802d6eefa2b8fbdb0465b92f3b99b2e4/3c492/ts2.png 1300w,
/static/802d6eefa2b8fbdb0465b92f3b99b2e4/7e881/ts2.png 1521w&quot;
            sizes=&quot;(max-width: 650px) 100vw, 650px&quot;
            type=&quot;image/png&quot;
          /&gt;
          &lt;img
            class=&quot;gatsby-resp-image-image&quot;
            src=&quot;/static/802d6eefa2b8fbdb0465b92f3b99b2e4/a6d36/ts2.png&quot;
            alt=&quot;What it should look like after 2 minutes&quot;
            title=&quot;What it should look like after 2 minutes&quot;
            loading=&quot;lazy&quot;
            style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
          /&gt;
        &lt;/picture&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Right now we are just adding the values 1, 2, 3, and 4 to the charts repeatedly. Let’s try to get our live sensor data in there now.&lt;/p&gt;
&lt;h2&gt;Sending Live Data to ThingSpeak&lt;/h2&gt;
&lt;p&gt;Now we are going to combine everything to finaly get our data from the sensor then send it to our ThingSpeak channel. You will probobly want to clear your channel before you start getting real data. To clear it go to Channel Settings and click Clear Channel at the bottom of the page.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;c&quot;&gt;&lt;pre class=&quot;language-c&quot;&gt;&lt;code class=&quot;language-c&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;// Import nessisary libraries&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&amp;lt;WiFi.h&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&amp;lt;HTTPClient.h&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&amp;lt;Wire.h&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&amp;lt;SPI.h&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&amp;lt;Adafruit_Sensor.h&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&amp;lt;Adafruit_BME280.h&gt;&lt;/span&gt;&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// Set our sealevel pressure&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;define&lt;/span&gt; &lt;span class=&quot;token macro-name&quot;&gt;SEALEVELPRESSURE_HPA&lt;/span&gt; &lt;span class=&quot;token expression&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1013.25&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;


&lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;char&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; ssid &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;YOUR_WIFI_NAME&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;char&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; password &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;YOUR_WIFI_PASSWORD&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;


String serverName &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;https://api.thingspeak.com/update?api_key=FL36D2MOEQ9HTM86&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;


&lt;span class=&quot;token keyword&quot;&gt;unsigned&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;long&lt;/span&gt; lastTime &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;unsigned&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;long&lt;/span&gt; timerDelay &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;60000&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

Initialize the bme280 object
Adafruit_BME280 bme&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;


&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;setup&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  Serial&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;begin&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;115200&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 


  &lt;span class=&quot;token function&quot;&gt;initBme280&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Initialize the bme280&lt;/span&gt;


  WiFi&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;begin&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;ssid&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; password&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  Serial&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Connecting&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;while&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;WiFi&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;status&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; WL_CONNECTED&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;delay&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;500&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    Serial&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;.&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
  Serial&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  Serial&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Connected to WiFi network with IP Address: &quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  Serial&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;WiFi&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;localIP&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;


&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;loop&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;millis&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; lastTime&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; timerDelay&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;WiFi&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;status&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; WL_CONNECTED&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Read data from our bme280 object and pass it to our sendData function &lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;sendData&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;bme&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;readTemperature&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; bme&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;readPressure&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100.0F&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; bme&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;readAltitude&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;SEALEVELPRESSURE_HPA&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; bme&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;readHumidity&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
      Serial&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;WiFi Disconnected&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    lastTime &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;millis&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;


&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;sendData&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;double&lt;/span&gt; temp&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;double&lt;/span&gt; pres&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;double&lt;/span&gt; alt&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;double&lt;/span&gt; hum&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    HTTPClient http&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;


    String url &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; serverName &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;&amp;amp;field1=&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; temp &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;&amp;amp;field2=&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; pres &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;&amp;amp;field3=&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; alt &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;&amp;amp;field4=&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; hum&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
      
    http&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;begin&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;url&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;c_str&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
      
    &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; httpResponseCode &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; http&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;GET&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
      
    &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;httpResponseCode &lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
      Serial&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;HTTP Response code: &quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
      Serial&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;httpResponseCode&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
      Serial&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Error code: &quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
      Serial&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;httpResponseCode&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    http&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;end&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;


&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;initBme280&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;unsigned&lt;/span&gt; status&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    
  status &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; bme&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;begin&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;  
  &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;status&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
      Serial&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Could not find a valid BME280 sensor, check wiring, address, sensor ID!&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
      Serial&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;SensorID was: 0x&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; Serial&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;bme&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;sensorID&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
      Serial&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;        ID of 0xFF probably means a bad address, a BMP 180 or BMP 085\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
      Serial&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;   ID of 0x56-0x58 represents a BMP 280,\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
      Serial&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;        ID of 0x60 represents a BME 280.\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
      Serial&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;        ID of 0x61 represents a BME 680.\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
      &lt;span class=&quot;token keyword&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;delay&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
  Serial&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;BME280 Initialized&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  Serial&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;First we initialize the &lt;code class=&quot;language-text&quot;&gt;bme&lt;/code&gt; object and call the &lt;code class=&quot;language-text&quot;&gt;initBme280()&lt;/code&gt; function to ensure that we have the sensor connected correctly.&lt;/li&gt;
&lt;li&gt;We then pass &lt;code class=&quot;language-text&quot;&gt;bme.readTemperature()&lt;/code&gt;, &lt;code class=&quot;language-text&quot;&gt;bme.readPressure()&lt;/code&gt;, &lt;code class=&quot;language-text&quot;&gt;bme.readAltitude(SEALEVELPRESSURE_HPA)&lt;/code&gt;,  and &lt;code class=&quot;language-text&quot;&gt;bme.readHumidity()&lt;/code&gt; into our &lt;code class=&quot;language-text&quot;&gt;sendData()&lt;/code&gt; function from before.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Congrats! You should now have live data once a minute. If you ever want to change that time, simply change the &lt;em&gt;timerDelay&lt;/em&gt; to the number of millis you want it to wait.&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/02f70a092bfe8b8f30a93812c16d1db0/6bfbb/tsfinal.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 66.25766871165644%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAYAAACpUE5eAAAACXBIWXMAABYlAAAWJQFJUiTwAAACGElEQVQ4y31T22oUQRCdT/WCQsDEVQOCvvjkVxgCJiaCgpBfcLM3Nfiqa4II4mYl7u5c+zrHUzUza/DWUFPd1adOd02dTrafT7C5P8S1nde4+uSXXd/pY+PpAFc4/3KRYzpb4eZuH7f2hhpTHDHib+weqz148RZJCAFArea9R1aUWI86IjiHGOmJq+m7UZYVilXa4mq1wPwkLyqEFii0wVqEokBIU4Qs07UQilXGwnFdM9nnOdxiodi6y+WhyTIr4AiMVQVPkkhAFBK5kZzakomleQkruOUSviwbEhJ7uQDXnnmJDxGuMjBppieU1sExJnHrPH9DWJccY61xQ0wgW1FZWOthWLrkOym5uew/RnTyaQqqI/47aq+45OTzd7w5m6P/YYb+xxmOp+eNp40+navPjUNaWoxP55icCvabxjvsYDrDkHPhSh69OsHDl+9w52CM2/sjbO4N0Hs2wl3K6T7jW5x//ZHjbJ7i3uFYpdE7mGh8ixLqMW/7cKJ7j4/eS8m/De+6etuS8ZeSuXaGLvyRnqSUTUXtWUrA0QtEvF2t6AtYdq9ryqowumfmczVpmJhdLOFyYtmspGCHnW3EK9oSSYj+IiUjd7osG9GsyCWIdEQqxInUZB2M0YeRdGBpub4Atl+koDEReQhrQv0jsmbFYkWW8694PTSEporEtU+rM9nUJJqKlSd3JftL5LHFBRG/s3pj4foJtb7QFel3ligAAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source
              srcset=&quot;/static/02f70a092bfe8b8f30a93812c16d1db0/94563/tsfinal.webp 163w,
/static/02f70a092bfe8b8f30a93812c16d1db0/647a8/tsfinal.webp 325w,
/static/02f70a092bfe8b8f30a93812c16d1db0/c1dc5/tsfinal.webp 650w,
/static/02f70a092bfe8b8f30a93812c16d1db0/1e975/tsfinal.webp 975w,
/static/02f70a092bfe8b8f30a93812c16d1db0/063bf/tsfinal.webp 1300w,
/static/02f70a092bfe8b8f30a93812c16d1db0/7a774/tsfinal.webp 1514w&quot;
              sizes=&quot;(max-width: 650px) 100vw, 650px&quot;
              type=&quot;image/webp&quot;
            /&gt;
          &lt;source
            srcset=&quot;/static/02f70a092bfe8b8f30a93812c16d1db0/222b7/tsfinal.png 163w,
/static/02f70a092bfe8b8f30a93812c16d1db0/ff46a/tsfinal.png 325w,
/static/02f70a092bfe8b8f30a93812c16d1db0/a6d36/tsfinal.png 650w,
/static/02f70a092bfe8b8f30a93812c16d1db0/e548f/tsfinal.png 975w,
/static/02f70a092bfe8b8f30a93812c16d1db0/3c492/tsfinal.png 1300w,
/static/02f70a092bfe8b8f30a93812c16d1db0/6bfbb/tsfinal.png 1514w&quot;
            sizes=&quot;(max-width: 650px) 100vw, 650px&quot;
            type=&quot;image/png&quot;
          /&gt;
          &lt;img
            class=&quot;gatsby-resp-image-image&quot;
            src=&quot;/static/02f70a092bfe8b8f30a93812c16d1db0/a6d36/tsfinal.png&quot;
            alt=&quot;What it should look like when you are done&quot;
            title=&quot;What it should look like when you are done&quot;
            loading=&quot;lazy&quot;
            style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
          /&gt;
        &lt;/picture&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;Whats next?&lt;/h2&gt;
&lt;p&gt;Hopefully, from this, you have learned enough to be able to figure out how to send any kind of data you want to ThingSpeak so you could explore some more on your own.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;There are some other kinds of visualizations that ThingSpeak has available for your data that you could check out.&lt;/li&gt;
&lt;li&gt;Make your channel public and share it with your friends.&lt;/li&gt;
&lt;li&gt;Try reading data from ThingSpeak using GET requests, as shown in the API Keys tab.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;You could also want to add something to catch if the network goes down and then keep trying to reconnect so that you don’t ever have to restart your device.&lt;/p&gt;
&lt;!-- end of article --&gt;
&lt;/li&gt;
&lt;/ul&gt;</content:encoded></item><item><title><![CDATA[Sending Sensor Data to ThingSpeak (RasPi)]]></title><description><![CDATA[ This project is meant to give you a practical example of what you can do with IoT skills. We will…]]></description><link>https://tinoiot.com/tutorials/thingspeak-bme280-raspberry-pi/</link><guid isPermaLink="false">https://tinoiot.com/tutorials/thingspeak-bme280-raspberry-pi/</guid><pubDate>Wed, 12 Aug 2020 00:00:00 GMT</pubDate><content:encoded>&lt;img src=&quot;/static/d5ed5fc19cba131423df880b4947e723/2244e/mainpic.jpg&quot;/&gt;&lt;h2&gt;What you will need:&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.adafruit.com/product/2652&quot;&gt;Adafruit BME280&lt;/a&gt; - You could use any sensor you want, you’ll just have to figure out how to interface with it on your own.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.adafruit.com/product/4295?src=raspberrypi&quot;&gt;Raspberry Pi (RasPi)&lt;/a&gt; - I’ll be using a 4B, but you should be able to use any model you want with wifi.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Multicolored-Breadboard-Dupont-Jumper-Wires/dp/B073X7P6N2&quot;&gt;Jumper Wires&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;A few python modules for simplifying using the bme280 (We will get to this later)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://thingspeak.com/&quot;&gt;ThingSpeak Account&lt;/a&gt; - It’s free for up to 4 channels, which is plenty.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Project Overview&lt;/h2&gt;
&lt;p&gt;This project is meant to give you a practical example of what you can do with IoT skills. We will be using the RasPi because it has a wifi chip and GPIO (General Purpose Input Output pins). We will use this connectivity to send an HTTP GET request to ThingSpeak periodically so we can chart the temperature wherever we decide to place our device.&lt;/p&gt;
&lt;h2&gt;Setting up our RasPi&lt;/h2&gt;
&lt;p&gt;Make sure you have python3 and pip set up first.&lt;/p&gt;
&lt;p&gt;Next, we have to enable I2C on our RasPi. I2C is a common protocol for sending data. In your shell, run &lt;code class=&quot;language-text&quot;&gt;sudo raspi-config&lt;/code&gt; in the shell. Then select &lt;code class=&quot;language-text&quot;&gt;Interfacing Options&lt;/code&gt; &gt; &lt;code class=&quot;language-text&quot;&gt;I2C&lt;/code&gt; &gt; &lt;code class=&quot;language-text&quot;&gt;yes&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Now we are going to install some python modules. In your shell run &lt;code class=&quot;language-text&quot;&gt;pip3 install RPI.GPIO&lt;/code&gt; then &lt;code class=&quot;language-text&quot;&gt;pip3 install adafruit-blinka&lt;/code&gt; then &lt;code class=&quot;language-text&quot;&gt;pip3 install requests&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Wiring&lt;/h2&gt;
&lt;p&gt;Connect the following pins with jumper wires (&lt;strong&gt;RasPi&lt;/strong&gt; to &lt;strong&gt;bme280&lt;/strong&gt;):
&lt;strong&gt;3V&lt;/strong&gt; to &lt;strong&gt;VIN&lt;/strong&gt;
&lt;strong&gt;3V&lt;/strong&gt; to &lt;strong&gt;CS&lt;/strong&gt;
&lt;strong&gt;GND&lt;/strong&gt; to &lt;strong&gt;GND&lt;/strong&gt;
&lt;strong&gt;SCL&lt;/strong&gt; to &lt;strong&gt;SCK&lt;/strong&gt;
&lt;strong&gt;SDA&lt;/strong&gt; to &lt;strong&gt;SDI&lt;/strong&gt;
&lt;em&gt;If your not sure, &lt;a href=&quot;https://pinout.xyz/pinout/pin5_gpio3&quot;&gt;here&lt;/a&gt; is the pinout for most RasPis.&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;Reading the BME280&lt;/h2&gt;
&lt;p&gt;Let’s verify that we have everything wired and set up correctly by attempting a read. Try out the following code:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;python&quot;&gt;&lt;pre class=&quot;language-python&quot;&gt;&lt;code class=&quot;language-python&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;# Import necessary modules&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; board&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; busio&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; adafruit_bme280

i2c &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; busio&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;I2C&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;board&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;SCL&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; board&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;SDA&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

bme280 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; adafruit_bme280&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Adafruit_BME280_I2C&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;i2c&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
bme280&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;sea_level_pressure &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1013.4&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;# Printing out our temp, humity, pressure, and altitude data by refencing our bme280 object.&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\nTemperature: %0.1f C&quot;&lt;/span&gt;  &lt;span class=&quot;token operator&quot;&gt;%&lt;/span&gt; bme280&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;temperature&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Humidity: %0.1f %%&quot;&lt;/span&gt;  &lt;span class=&quot;token operator&quot;&gt;%&lt;/span&gt; bme280&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;humidity&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Pressure: %0.1f hPa&quot;&lt;/span&gt;  &lt;span class=&quot;token operator&quot;&gt;%&lt;/span&gt; bme280&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;pressure&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Altitude = %0.2f meters&quot;&lt;/span&gt;  &lt;span class=&quot;token operator&quot;&gt;%&lt;/span&gt; bme280&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;altitude&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;First, we created an &lt;code class=&quot;language-text&quot;&gt;i2c&lt;/code&gt; object that we can reference by passing in our &lt;code class=&quot;language-text&quot;&gt;board.SCL&lt;/code&gt; and &lt;code class=&quot;language-text&quot;&gt;board.SDA&lt;/code&gt; pins.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The we created a &lt;code class=&quot;language-text&quot;&gt;bme2280&lt;/code&gt; object by passing in our &lt;code class=&quot;language-text&quot;&gt;i2c&lt;/code&gt; object. We reference this object to get readings from our sensor.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The &lt;code class=&quot;language-text&quot;&gt;sea_level_pressure&lt;/code&gt; of the &lt;code class=&quot;language-text&quot;&gt;bme280&lt;/code&gt; is defined for my location. Depending on where you are this might be different&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Finally we &lt;code class=&quot;language-text&quot;&gt;print&lt;/code&gt; our data by referencing our &lt;code class=&quot;language-text&quot;&gt;bme280&lt;/code&gt;. Don’t worry if you don’t understand the &lt;code class=&quot;language-text&quot;&gt;%0.1f&lt;/code&gt;. It’s just a way to &lt;a href=&quot;https://www.python-course.eu/python3_formatted_output.php&quot;&gt;format strings&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;When you run the code, you should see something like this in the shell:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;Temperature: 23.1 C
Humidity: 80.9 %
Pressure: 1004.9 hPa
Altitude = 70.90 meters&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2&gt;Setting up ThingsSpeak&lt;/h2&gt;
&lt;p&gt;First, create a ThingsSpeak account &lt;a href=&quot;https://thingspeak.com/&quot;&gt;here&lt;/a&gt;. Then go to the channels tab and click &lt;em&gt;Create New&lt;/em&gt;. Name the channel something like BME280 or Sensor Test, whatever you want. Check the boxes for four fields, and enter the names Temperature, Pressure, Altitude, Humidity. Ignore the rest of the text inputs and click &lt;em&gt;Save Channel&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Now that we have our channel set up, go to the &lt;em&gt;API Keys&lt;/em&gt; tab. Take note of the URL under &lt;em&gt;Write a Channel Feed&lt;/em&gt;. It should look something like &lt;code class=&quot;language-text&quot;&gt;https://api.thingspeak.com/update?api_key=&amp;lt;YOUR KEY&gt;&amp;amp;field1=0&lt;/code&gt;. Your key is the most important part and is what will allow you to get to your thing speak channel.&lt;/p&gt;
&lt;h2&gt;Sending Data to Thing Speak&lt;/h2&gt;
&lt;p&gt;Now let’s try sending some data to each of our channels four fields. Try out this code. &lt;strong&gt;Make sure to replace “YOUR_WRITE_KEY” with your own from ThingSpeak.&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;python&quot;&gt;&lt;pre class=&quot;language-python&quot;&gt;&lt;code class=&quot;language-python&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;# Import the request module&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; requests

queries &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;api_key&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;YOUR_WRITE_KEY&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
               &lt;span class=&quot;token string&quot;&gt;&quot;field1&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
               &lt;span class=&quot;token string&quot;&gt;&quot;field2&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 
               &lt;span class=&quot;token string&quot;&gt;&quot;field3&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
               &lt;span class=&quot;token string&quot;&gt;&quot;field4&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
r &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; requests&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;get&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;https://api.thingspeak.com/update&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; params&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;queries&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;status_code &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; requests&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;codes&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ok&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Data Received!&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Error Code: &quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;status_code&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;First, we create a dictionary object, &lt;code class=&quot;language-text&quot;&gt;queries&lt;/code&gt;. This is a cleaner way to add the queries at the end of our URL. For example the key-value pair &lt;code class=&quot;language-text&quot;&gt;&quot;api_key&quot;: &quot;YOUR_WRITE_KEY&quot;&lt;/code&gt; would add &lt;code class=&quot;language-text&quot;&gt;?api_key=YOUR_WRITE_KEY&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;We then pass the &lt;code class=&quot;language-text&quot;&gt;queries&lt;/code&gt; dictionary, and the beginning of the ThingSpeak URL to our &lt;a href=&quot;https://requests.readthedocs.io/en/master/&quot;&gt;requests&lt;/a&gt; modules GET request. An HTTP GET request is a way for us to communicate over the internet.&lt;/li&gt;
&lt;li&gt;The result of the request is assigned to the object &lt;code class=&quot;language-text&quot;&gt;r&lt;/code&gt;. We then check if the &lt;code class=&quot;language-text&quot;&gt;status_code&lt;/code&gt; is ok, meaning that our data was successfully received by ThingSpeak. If the status is not ok, we report the error. Here is a &lt;a href=&quot;https://en.wikipedia.org/wiki/List_of_HTTP_status_codes&quot;&gt;list of status codes&lt;/a&gt; if you want to learn more.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;When you run this, you should see one point of data in each of the four fields on ThingSpeak and &lt;code class=&quot;language-text&quot;&gt;Data Received!&lt;/code&gt; in your shell.&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/73b4ff80f100c4a4e115b159f8be4d58/a8a6f/onepts.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 66.25766871165644%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAYAAACpUE5eAAAACXBIWXMAABYlAAAWJQFJUiTwAAAB1ElEQVQ4y3VT2U4VQRDtHzUi8YUEkCXB5dH4FS4kbBL0RT9B0btBcn2WPbxcuJrI7NM93ceq6p5JE6CTk+quOlNLz2m1tjfC/FYfT97vY+Zdi++Y/bCPuY0eHr39hvNpiuOrGzxd/yHcxxSfifjsZ7z4dABljIG1Ds45FGWFf0mGutZyZr8xDVmLpmkELfcmzZFkBRqKCZegtYbKi0pIgCda+ogtgxcna8GFePli9g6XCyquZEKAq7i2YrC+K99hRsW7WICNuDyt0jwyH/gj6jQrShRVLXuG7ka2Ml7sT7JcbOfTlJBHfXBZHtHKdVA7D/M4LlwH9eviDw7PpugdXQn6x8ESRifXtJ8gLbWAzwenU/z8PYm4EwzIDgnj8ynU6y9jvPp8iKWdIRa3+5jf7Ild/jjEc5IBy+Tyb4az60R8L4m7uD3AAvkXtnp4tjPA6u4IK4Q3X8c88u3WndH3THTPyI2hMc0dqkrz0l9se+lhb8JZRzpMslJ8JuZG55p/CuswFqcLMmn1xcnbhHlZdX7hMDeceQiRjbWN/6EhkJNsqrqWf++CeFthe/H7G+AmUn4pTSjO0qGOFT+X+DWYMDInMjnprKq6Dv0zvc2VmK49l3L9B4ee04pXNAyoAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source
              srcset=&quot;/static/73b4ff80f100c4a4e115b159f8be4d58/94563/onepts.webp 163w,
/static/73b4ff80f100c4a4e115b159f8be4d58/647a8/onepts.webp 325w,
/static/73b4ff80f100c4a4e115b159f8be4d58/c1dc5/onepts.webp 650w,
/static/73b4ff80f100c4a4e115b159f8be4d58/1e975/onepts.webp 975w,
/static/73b4ff80f100c4a4e115b159f8be4d58/063bf/onepts.webp 1300w,
/static/73b4ff80f100c4a4e115b159f8be4d58/dde0f/onepts.webp 1516w&quot;
              sizes=&quot;(max-width: 650px) 100vw, 650px&quot;
              type=&quot;image/webp&quot;
            /&gt;
          &lt;source
            srcset=&quot;/static/73b4ff80f100c4a4e115b159f8be4d58/222b7/onepts.png 163w,
/static/73b4ff80f100c4a4e115b159f8be4d58/ff46a/onepts.png 325w,
/static/73b4ff80f100c4a4e115b159f8be4d58/a6d36/onepts.png 650w,
/static/73b4ff80f100c4a4e115b159f8be4d58/e548f/onepts.png 975w,
/static/73b4ff80f100c4a4e115b159f8be4d58/3c492/onepts.png 1300w,
/static/73b4ff80f100c4a4e115b159f8be4d58/a8a6f/onepts.png 1516w&quot;
            sizes=&quot;(max-width: 650px) 100vw, 650px&quot;
            type=&quot;image/png&quot;
          /&gt;
          &lt;img
            class=&quot;gatsby-resp-image-image&quot;
            src=&quot;/static/73b4ff80f100c4a4e115b159f8be4d58/a6d36/onepts.png&quot;
            alt=&quot;What your channel should look like&quot;
            title=&quot;What your channel should look like&quot;
            loading=&quot;lazy&quot;
            style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
          /&gt;
        &lt;/picture&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Right now we are just adding the values 1, 2, 3, and 4 to the chart. Let’s try to get our live sensor data in there now.&lt;/p&gt;
&lt;h2&gt;Sending Live Data to ThingSpeak&lt;/h2&gt;
&lt;p&gt;Now we will combine everything to finally get our data from the sensor and then send it to our ThingSpeak channel. You will probably want to clear your channel before you start getting real data. To clear it, go to Channel Settings and click Clear Channel at the bottom of the page. We are also using the python scheduler module, which will allow us to set an interval for polling data.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;python&quot;&gt;&lt;pre class=&quot;language-python&quot;&gt;&lt;code class=&quot;language-python&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;# Import necessary modules&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; board&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; busio&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; adafruit_bme280
&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; requests
&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; sched&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; time

&lt;span class=&quot;token comment&quot;&gt;# Set up I2C and bme280 objects&lt;/span&gt;
i2c &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; busio&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;I2C&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;board&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;SCL&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; board&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;SDA&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
bme280 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; adafruit_bme280&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Adafruit_BME280_I2C&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;i2c&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
bme280&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;sea_level_pressure &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1013.4&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;# Create our scheduler to run every n seconds&lt;/span&gt;
s &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; sched&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;scheduler&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;time&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;time&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; time&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;sleep&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
interval &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;60&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;# Definition to read sensor data and send it to ThingSpeak&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;read_and_send&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;sc&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 
	&lt;span class=&quot;token comment&quot;&gt;# Read bme280 and set the query string&lt;/span&gt;
    queries &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;api_key&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;YOUR_WRITE_KEY&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
               &lt;span class=&quot;token string&quot;&gt;&quot;field1&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;round&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;bme280&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;temperature&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
               &lt;span class=&quot;token string&quot;&gt;&quot;field2&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;round&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;bme280&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;pressure&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 
               &lt;span class=&quot;token string&quot;&gt;&quot;field3&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;round&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;bme280&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;altitude&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
               &lt;span class=&quot;token string&quot;&gt;&quot;field4&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;round&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;bme280&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;humidity&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;# Send the request to ThingSpeak&lt;/span&gt;
    r &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; requests&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;get&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;https://api.thingspeak.com/update&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; params&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;queries&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;# Verify that ThingSpeak recived our data&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;status_code &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; requests&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;codes&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ok&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Data Recived!&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Error Code: &quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;r&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;status_code&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;# Re-add this definition to run again in n seconds    &lt;/span&gt;
    s&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;enter&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;interval&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; read_and_send&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;sc&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;# Add our read_and_send task to the scheduler and run it.&lt;/span&gt;
s&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;enter&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;interval&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; read_and_send&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;s&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
s&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;run&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;We use the &lt;a href=&quot;%5Bhttps://docs.python.org/3/library/sched.html%5D(https://docs.python.org/3/library/sched.html)&quot;&gt;sched module&lt;/a&gt; to easily repeat every n seconds. If you ever want to change that time, simply change the &lt;code class=&quot;language-text&quot;&gt;interval&lt;/code&gt; to the number of seconds you want it to wait.&lt;/p&gt;
&lt;p&gt;Congrats! You should now have live data once a minute. &lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/95e92d142f2a8911c648913e43e75838/93582/endts.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 66.25766871165644%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAYAAACpUE5eAAAACXBIWXMAABYlAAAWJQFJUiTwAAACO0lEQVQ4y4WSWU9UQRCF71/GBWMgUVwSfTDx1R+gorjhDBqi8ckHhMAwgiH4QJjFYfZ9+vZ6j6f6jpiQiJ3Urepbp6u7ur/k0ccDLL/exfW1XSw8+4aFp1vRX1vdxo2XO7j6fBs/m0NUuhMsv9rF0psSrvBfrsu1i9QuvtjB3fUSEiAAyIDpGBJra3FxZCFEi0Or6FwW4Ly/IPRIxtMU6UzBtNtIq1Xodgem24UPGUQePRc65zDTFrrfx+zwB3SzCX12BjuZMG7BzWaw1LCgYpDv5JWCGwzg2i1YLhBz0ylClsWCKtXSC9xwCMtijocwtRpct5fPjUHiWExOobWB8WyZlooNhlC9PqxKmQ/xlFJYTiE6w8rKemjHmOsNdUZrucMM/x7ZX58FXD7yfPL1uIlPh3UUShW836uguF+NcYHxh3IVRcadcYrBTEfd5kEN68wVStWolTUb9KL9zHzy5MsRHm58j09+i/jcXN3C7bd7cX6/sI+V9X2ctEao96d4UCxHu/OuhKW1bdoOVhjfK5SpLePx5qG0/L/hL2nZX7iegGQ0Ufkl93pI63XYOT5p44zzXzCjcXwMYyxGRMyTUzOeELMOdLWGlCSo01PoRoMavrLmK0sxdXwMy5e1wiATbjg6RyaEnENt+cLEQx0d5QySAkcOhYKIk3AY2IpPuTNPKU1ZQYALJRauAnGJyNAywYYsykIXsaGn3lLndf4/kU/snrtE8+E8FpFnPvzhcH4SKZzNNdFLTrqi9jeyWc3x9La/HgAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source
              srcset=&quot;/static/95e92d142f2a8911c648913e43e75838/94563/endts.webp 163w,
/static/95e92d142f2a8911c648913e43e75838/647a8/endts.webp 325w,
/static/95e92d142f2a8911c648913e43e75838/c1dc5/endts.webp 650w,
/static/95e92d142f2a8911c648913e43e75838/1e975/endts.webp 975w,
/static/95e92d142f2a8911c648913e43e75838/063bf/endts.webp 1300w,
/static/95e92d142f2a8911c648913e43e75838/bc816/endts.webp 1524w&quot;
              sizes=&quot;(max-width: 650px) 100vw, 650px&quot;
              type=&quot;image/webp&quot;
            /&gt;
          &lt;source
            srcset=&quot;/static/95e92d142f2a8911c648913e43e75838/222b7/endts.png 163w,
/static/95e92d142f2a8911c648913e43e75838/ff46a/endts.png 325w,
/static/95e92d142f2a8911c648913e43e75838/a6d36/endts.png 650w,
/static/95e92d142f2a8911c648913e43e75838/e548f/endts.png 975w,
/static/95e92d142f2a8911c648913e43e75838/3c492/endts.png 1300w,
/static/95e92d142f2a8911c648913e43e75838/93582/endts.png 1524w&quot;
            sizes=&quot;(max-width: 650px) 100vw, 650px&quot;
            type=&quot;image/png&quot;
          /&gt;
          &lt;img
            class=&quot;gatsby-resp-image-image&quot;
            src=&quot;/static/95e92d142f2a8911c648913e43e75838/a6d36/endts.png&quot;
            alt=&quot;What it should look like when you are done&quot;
            title=&quot;What it should look like when you are done&quot;
            loading=&quot;lazy&quot;
            style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
          /&gt;
        &lt;/picture&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;Whats next?&lt;/h2&gt;
&lt;p&gt;Hopefully, from this, you have learned enough to figure out how to send any kind of data you want to ThingSpeak so you could explore some more on your own.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;There are some other kinds of visualizations that ThingSpeak has available for your data that you could check out.&lt;/li&gt;
&lt;li&gt;Make your channel public and share it with your friends.&lt;/li&gt;
&lt;li&gt;Try reading data from ThingSpeak using GET requests, as shown in the API Keys tab.&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- end of article --&gt;</content:encoded></item></channel></rss>