{"componentChunkName":"component---src-templates-blog-post-js","path":"/tutorials/thingspeak-with-esp-mc/","result":{"data":{"site":{"siteMetadata":{"title":"TinoIoT","author":"TinoIoT Officers"}},"markdownRemark":{"id":"f7cee658-ed30-5ff0-850f-184faec260aa","html":"<h2>What you will need:</h2>\n<ul>\n<li><a href=\"https://www.adafruit.com/product/2652\">Adafruit BME280</a> - You could use any sensor you want, you’ll just have to figure out how to interface with it on your own.</li>\n<li><a href=\"https://www.adafruit.com/product/3591\">Adafruit HUZZAH32 – ESP32 Feather Board</a></li>\n<li><a href=\"https://www.amazon.com/Multicolored-Breadboard-Dupont-Jumper-Wires/dp/B073X7P6N2\">Jumper Wires</a></li>\n<li><a href=\"https://www.amazon.com/DEYUE-breadboard-Set-Prototype-Board/dp/B07LFD4LT6/ref=sr_1_3?crid=1MRAUMDALD43Z&#x26;dchild=1&#x26;keywords=breadboard&#x26;qid=1598139934&#x26;s=electronics&#x26;sprefix=bread%2Celectronics%2C213&#x26;sr=1-3\">Bread board</a> - Recommended for keeping things organized but not necessary.</li>\n<li><a href=\"https://www.arduino.cc/en/main/software\">Arduino IDE</a></li>\n<li>A few Arduino Libraries for connecting to the internet and simplifying using the bme280 (We will get to these later)</li>\n<li><a href=\"https://thingspeak.com/\">ThingSpeak Account</a> - It’s free for up to 4 channels, which is plenty.</li>\n</ul>\n<h2>Project Overview</h2>\n<p>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.</p>\n<h2>Setting up our Board</h2>\n<p>Install the Arduino ide on your computer by following the instructions <a href=\"https://www.arduino.cc/en/main/software\">here</a>. </p>\n<p>Download the proper USB driver for your system <a href=\"https://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers\">here</a>.</p>\n<p>Next, we need to install the esp32 board in the Arduino ide. Run your ide and navigate to the preferences window. Enter <code class=\"language-text\">https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_dev_index.json</code> in the <em>Additional Board Manager URLs</em> field. Then open the board manager (Tools > Board > Board Manager) and search for <em>esp32</em>. Now Install <em>esp32</em>. Then open your boards again and select Board > ESP32 Arduino > Adafruit ESP32 Feather. To verify that you have everything set up correctly, you can run the following program to your board: </p>\n<div class=\"gatsby-highlight\" data-language=\"c\"><pre class=\"language-c\"><code class=\"language-c\"><span class=\"token comment\">// Code that runs once at the beginning</span>\n<span class=\"token keyword\">void</span> <span class=\"token function\">setup</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">{</span>\n  <span class=\"token function\">pinMode</span><span class=\"token punctuation\">(</span><span class=\"token number\">13</span><span class=\"token punctuation\">,</span> OUTPUT<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// Sets the digital pin 13 as output</span>\n<span class=\"token punctuation\">}</span>\n\n\n<span class=\"token comment\">// Code that runs repeatedly after setup</span>\n<span class=\"token keyword\">void</span> <span class=\"token function\">loop</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">{</span>\n  <span class=\"token function\">digitalWrite</span><span class=\"token punctuation\">(</span><span class=\"token number\">13</span><span class=\"token punctuation\">,</span> HIGH<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// Set the digital pin 13 on</span>\n  <span class=\"token function\">delay</span><span class=\"token punctuation\">(</span><span class=\"token number\">1000</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// Wait 1000 ms</span>\n  <span class=\"token function\">digitalWrite</span><span class=\"token punctuation\">(</span><span class=\"token number\">13</span><span class=\"token punctuation\">,</span> LOW<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// Set the digital pin 13 off</span>\n  <span class=\"token function\">delay</span><span class=\"token punctuation\">(</span><span class=\"token number\">1000</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>If everything is good, you should see a red light blink on the board.</p>\n<h2>Installing Libraries</h2>\n<p>Now we are going to install libraries to make it easier for us to interface with the bme280 and connect to the internet.</p>\n<p>Go to Tools > Library Manager, type in <em>Adafruit BME280 Library</em>, and install it. It will prompt you to install other dependency libraries. Select <em>Install All</em>.</p>\n<h2>Wiring</h2>\n<p>Connect the following pins with jumper wires (<strong>esp32</strong> to <strong>bme280</strong>):\n<strong>3V</strong> to <strong>VIN</strong>\n<strong>GND</strong> to <strong>GND</strong>\n<strong>SCL</strong> to <strong>SCK</strong>\n<strong>SDA</strong> to <strong>SDI</strong>\nYou can test if everything is wired correctly by running Adafruits example. It can be found at File > Examples > Adafruit BME280 Library > 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 >  Serial Monitor). You should see readings every second for each of the sensors that look something like this:</p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">Temperature = 24.93 *C\nPressure = 1004.25 hPa\nApprox. Altitude = 75.19 m\nHumidity = 47.32 %</code></pre></div>\n<h2>Setting up ThingsSpeak</h2>\n<p>First, create a ThingsSpeak account <a href=\"https://thingspeak.com/\">here</a>. Then go to the channels tab and click <em>Create New</em>. 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 <em>Save Channel</em>.</p>\n<p>Now that we have our channel set up, go to the <em>API Keys</em> tab. Take note of the URL under <em>Write a Channel Feed</em>. It should look something like <code class=\"language-text\">https://api.thingspeak.com/update?api_key=&lt;YOUR KEY>&amp;field1=0</code>. Your key is the most important part and is what will allow you to get to your thing speak channel.</p>\n<h2>Sending Data to Thing Speak</h2>\n<p>Now let’s try sending some data to each of our channels four fields. Try out this code. <strong>Make sure to replace “ssid” with your wifi name, “password” with your wifi password, and the “serverName” with your own from ThingSpeak.</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"c\"><pre class=\"language-c\"><code class=\"language-c\"><span class=\"token comment\">// Import nessesary libraries</span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">include</span> <span class=\"token string\">&lt;WiFi.h></span></span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">include</span> <span class=\"token string\">&lt;HTTPClient.h></span></span>\n\n<span class=\"token comment\">// Set our wifi name and password</span>\n<span class=\"token keyword\">const</span> <span class=\"token keyword\">char</span><span class=\"token operator\">*</span> ssid <span class=\"token operator\">=</span> <span class=\"token string\">\"YOUR_WIFI_NAME\"</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">const</span> <span class=\"token keyword\">char</span><span class=\"token operator\">*</span> password <span class=\"token operator\">=</span> <span class=\"token string\">\"YOUR_WIFI_PASSWORD\"</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token comment\">// Your thingspeak channel url with api_key query</span>\nString serverName <span class=\"token operator\">=</span> <span class=\"token string\">\"https://api.thingspeak.com/update?api_key=YOUR_WRITE_KEY\"</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token comment\">// Assign some variables to allow us read and send data every minute</span>\n<span class=\"token keyword\">unsigned</span> <span class=\"token keyword\">long</span> lastTime <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">unsigned</span> <span class=\"token keyword\">long</span> timerDelay <span class=\"token operator\">=</span> <span class=\"token number\">60000</span><span class=\"token punctuation\">;</span>\n\n\n<span class=\"token keyword\">void</span> <span class=\"token function\">setup</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  Serial<span class=\"token punctuation\">.</span><span class=\"token function\">begin</span><span class=\"token punctuation\">(</span><span class=\"token number\">9600</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// Opens up the serial port with a baudrate of 9600 bits per second</span>\n\n\n  WiFi<span class=\"token punctuation\">.</span><span class=\"token function\">begin</span><span class=\"token punctuation\">(</span>ssid<span class=\"token punctuation\">,</span> password<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// Attempt to connect to wifi with our password</span>\n  Serial<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Connecting\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// Print our status to the serial monitor</span>\n  <span class=\"token comment\">// Wait for wifi to connect</span>\n  <span class=\"token keyword\">while</span><span class=\"token punctuation\">(</span>WiFi<span class=\"token punctuation\">.</span><span class=\"token function\">status</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">!=</span> WL_CONNECTED<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token function\">delay</span><span class=\"token punctuation\">(</span><span class=\"token number\">500</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    Serial<span class=\"token punctuation\">.</span><span class=\"token function\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">\".\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span>\n  Serial<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  Serial<span class=\"token punctuation\">.</span><span class=\"token function\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Connected to WiFi network with IP Address: \"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  Serial<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span>WiFi<span class=\"token punctuation\">.</span><span class=\"token function\">localIP</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span>\n\n\n<span class=\"token keyword\">void</span> <span class=\"token function\">loop</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token function\">millis</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">-</span> lastTime<span class=\"token punctuation\">)</span> <span class=\"token operator\">></span> timerDelay<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span> <span class=\"token comment\">// Check if its been a minute</span>\n    <span class=\"token keyword\">if</span><span class=\"token punctuation\">(</span>WiFi<span class=\"token punctuation\">.</span><span class=\"token function\">status</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token operator\">==</span> WL_CONNECTED<span class=\"token punctuation\">)</span><span class=\"token punctuation\">{</span> <span class=\"token comment\">// Check to make sure wifi is still connected</span>\n      <span class=\"token function\">sendData</span><span class=\"token punctuation\">(</span><span class=\"token number\">1</span><span class=\"token punctuation\">,</span> <span class=\"token number\">2</span><span class=\"token punctuation\">,</span> <span class=\"token number\">3</span><span class=\"token punctuation\">,</span> <span class=\"token number\">4</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// Call the sendData function defined below</span>\n    <span class=\"token punctuation\">}</span>\n    <span class=\"token keyword\">else</span> <span class=\"token punctuation\">{</span>\n      Serial<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"WiFi Disconnected\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    lastTime <span class=\"token operator\">=</span> <span class=\"token function\">millis</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span>\n\n\n<span class=\"token keyword\">void</span> <span class=\"token function\">sendData</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">double</span> temp<span class=\"token punctuation\">,</span> <span class=\"token keyword\">double</span> pres<span class=\"token punctuation\">,</span> <span class=\"token keyword\">double</span> alt<span class=\"token punctuation\">,</span> <span class=\"token keyword\">double</span> hum<span class=\"token punctuation\">)</span><span class=\"token punctuation\">{</span>\n  HTTPClient http<span class=\"token punctuation\">;</span> <span class=\"token comment\">// Initialize our HTTP client</span>\n\n\n  String url <span class=\"token operator\">=</span> serverName <span class=\"token operator\">+</span> <span class=\"token string\">\"&amp;field1=\"</span> <span class=\"token operator\">+</span> temp <span class=\"token operator\">+</span> <span class=\"token string\">\"&amp;field2=\"</span> <span class=\"token operator\">+</span> pres <span class=\"token operator\">+</span> <span class=\"token string\">\"&amp;field3=\"</span> <span class=\"token operator\">+</span> alt <span class=\"token operator\">+</span> <span class=\"token string\">\"&amp;field4=\"</span> <span class=\"token operator\">+</span> hum<span class=\"token punctuation\">;</span> <span class=\"token comment\">// Define our entire url</span>\n      \n  http<span class=\"token punctuation\">.</span><span class=\"token function\">begin</span><span class=\"token punctuation\">(</span>url<span class=\"token punctuation\">.</span><span class=\"token function\">c_str</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// Initialize our HTTP request</span>\n      \n  <span class=\"token keyword\">int</span> httpResponseCode <span class=\"token operator\">=</span> http<span class=\"token punctuation\">.</span><span class=\"token function\">GET</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// Send HTTP request</span>\n      \n  <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>httpResponseCode <span class=\"token operator\">></span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">{</span> <span class=\"token comment\">// Check for good HTTP status code</span>\n    Serial<span class=\"token punctuation\">.</span><span class=\"token function\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"HTTP Response code: \"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    Serial<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span>httpResponseCode<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span><span class=\"token keyword\">else</span><span class=\"token punctuation\">{</span>\n    Serial<span class=\"token punctuation\">.</span><span class=\"token function\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Error code: \"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    Serial<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span>httpResponseCode<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span>\n  http<span class=\"token punctuation\">.</span><span class=\"token function\">end</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<ul>\n<li>First we define your home wifi credentials, <code class=\"language-text\">ssid</code> and <code class=\"language-text\">password</code>. We <code class=\"language-text\">begin</code> our connection and wait.</li>\n<li>Every minute we call the <code class=\"language-text\">sendData(1, 2, 3, 4);</code> function. In the function we take the paramaters and add them to our <code class=\"language-text\">url</code> query string.</li>\n<li>Finaly we send the <code class=\"language-text\">GET</code> request and <code class=\"language-text\">print</code> to the serial that we sucseded.</li>\n</ul>\n<p>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.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/802d6eefa2b8fbdb0465b92f3b99b2e4/7e881/ts2.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 66.25766871165644%; position: relative; bottom: 0; left: 0; background-image: url('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'); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/802d6eefa2b8fbdb0465b92f3b99b2e4/94563/ts2.webp 163w,\n/static/802d6eefa2b8fbdb0465b92f3b99b2e4/647a8/ts2.webp 325w,\n/static/802d6eefa2b8fbdb0465b92f3b99b2e4/c1dc5/ts2.webp 650w,\n/static/802d6eefa2b8fbdb0465b92f3b99b2e4/1e975/ts2.webp 975w,\n/static/802d6eefa2b8fbdb0465b92f3b99b2e4/063bf/ts2.webp 1300w,\n/static/802d6eefa2b8fbdb0465b92f3b99b2e4/74c35/ts2.webp 1521w\"\n              sizes=\"(max-width: 650px) 100vw, 650px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/802d6eefa2b8fbdb0465b92f3b99b2e4/222b7/ts2.png 163w,\n/static/802d6eefa2b8fbdb0465b92f3b99b2e4/ff46a/ts2.png 325w,\n/static/802d6eefa2b8fbdb0465b92f3b99b2e4/a6d36/ts2.png 650w,\n/static/802d6eefa2b8fbdb0465b92f3b99b2e4/e548f/ts2.png 975w,\n/static/802d6eefa2b8fbdb0465b92f3b99b2e4/3c492/ts2.png 1300w,\n/static/802d6eefa2b8fbdb0465b92f3b99b2e4/7e881/ts2.png 1521w\"\n            sizes=\"(max-width: 650px) 100vw, 650px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/802d6eefa2b8fbdb0465b92f3b99b2e4/a6d36/ts2.png\"\n            alt=\"What it should look like after 2 minutes\"\n            title=\"What it should look like after 2 minutes\"\n            loading=\"lazy\"\n            style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n          />\n        </picture>\n  </a>\n    </span></p>\n<p>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.</p>\n<h2>Sending Live Data to ThingSpeak</h2>\n<p>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.</p>\n<div class=\"gatsby-highlight\" data-language=\"c\"><pre class=\"language-c\"><code class=\"language-c\"><span class=\"token comment\">// Import nessisary libraries</span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">include</span> <span class=\"token string\">&lt;WiFi.h></span></span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">include</span> <span class=\"token string\">&lt;HTTPClient.h></span></span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">include</span> <span class=\"token string\">&lt;Wire.h></span></span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">include</span> <span class=\"token string\">&lt;SPI.h></span></span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">include</span> <span class=\"token string\">&lt;Adafruit_Sensor.h></span></span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">include</span> <span class=\"token string\">&lt;Adafruit_BME280.h></span></span>\n\n<span class=\"token comment\">// Set our sealevel pressure</span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">define</span> <span class=\"token macro-name\">SEALEVELPRESSURE_HPA</span> <span class=\"token expression\"><span class=\"token punctuation\">(</span><span class=\"token number\">1013.25</span><span class=\"token punctuation\">)</span></span></span>\n\n\n<span class=\"token keyword\">const</span> <span class=\"token keyword\">char</span><span class=\"token operator\">*</span> ssid <span class=\"token operator\">=</span> <span class=\"token string\">\"YOUR_WIFI_NAME\"</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">const</span> <span class=\"token keyword\">char</span><span class=\"token operator\">*</span> password <span class=\"token operator\">=</span> <span class=\"token string\">\"YOUR_WIFI_PASSWORD\"</span><span class=\"token punctuation\">;</span>\n\n\nString serverName <span class=\"token operator\">=</span> <span class=\"token string\">\"https://api.thingspeak.com/update?api_key=FL36D2MOEQ9HTM86\"</span><span class=\"token punctuation\">;</span>\n\n\n<span class=\"token keyword\">unsigned</span> <span class=\"token keyword\">long</span> lastTime <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">unsigned</span> <span class=\"token keyword\">long</span> timerDelay <span class=\"token operator\">=</span> <span class=\"token number\">60000</span><span class=\"token punctuation\">;</span>\n\nInitialize the bme280 object\nAdafruit_BME280 bme<span class=\"token punctuation\">;</span>\n\n\n<span class=\"token keyword\">void</span> <span class=\"token function\">setup</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  Serial<span class=\"token punctuation\">.</span><span class=\"token function\">begin</span><span class=\"token punctuation\">(</span><span class=\"token number\">115200</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> \n\n\n  <span class=\"token function\">initBme280</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// Initialize the bme280</span>\n\n\n  WiFi<span class=\"token punctuation\">.</span><span class=\"token function\">begin</span><span class=\"token punctuation\">(</span>ssid<span class=\"token punctuation\">,</span> password<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  Serial<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Connecting\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  <span class=\"token keyword\">while</span><span class=\"token punctuation\">(</span>WiFi<span class=\"token punctuation\">.</span><span class=\"token function\">status</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">!=</span> WL_CONNECTED<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token function\">delay</span><span class=\"token punctuation\">(</span><span class=\"token number\">500</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    Serial<span class=\"token punctuation\">.</span><span class=\"token function\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">\".\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span>\n  Serial<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  Serial<span class=\"token punctuation\">.</span><span class=\"token function\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Connected to WiFi network with IP Address: \"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  Serial<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span>WiFi<span class=\"token punctuation\">.</span><span class=\"token function\">localIP</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span>\n\n\n<span class=\"token keyword\">void</span> <span class=\"token function\">loop</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token function\">millis</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">-</span> lastTime<span class=\"token punctuation\">)</span> <span class=\"token operator\">></span> timerDelay<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">if</span><span class=\"token punctuation\">(</span>WiFi<span class=\"token punctuation\">.</span><span class=\"token function\">status</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token operator\">==</span> WL_CONNECTED<span class=\"token punctuation\">)</span><span class=\"token punctuation\">{</span>\n<span class=\"token comment\">// Read data from our bme280 object and pass it to our sendData function </span>\n<span class=\"token function\">sendData</span><span class=\"token punctuation\">(</span>bme<span class=\"token punctuation\">.</span><span class=\"token function\">readTemperature</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> bme<span class=\"token punctuation\">.</span><span class=\"token function\">readPressure</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">/</span> <span class=\"token number\">100.0F</span><span class=\"token punctuation\">,</span> bme<span class=\"token punctuation\">.</span><span class=\"token function\">readAltitude</span><span class=\"token punctuation\">(</span>SEALEVELPRESSURE_HPA<span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> bme<span class=\"token punctuation\">.</span><span class=\"token function\">readHumidity</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    <span class=\"token keyword\">else</span> <span class=\"token punctuation\">{</span>\n      Serial<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"WiFi Disconnected\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    lastTime <span class=\"token operator\">=</span> <span class=\"token function\">millis</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span>\n\n\n<span class=\"token keyword\">void</span> <span class=\"token function\">sendData</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">double</span> temp<span class=\"token punctuation\">,</span> <span class=\"token keyword\">double</span> pres<span class=\"token punctuation\">,</span> <span class=\"token keyword\">double</span> alt<span class=\"token punctuation\">,</span> <span class=\"token keyword\">double</span> hum<span class=\"token punctuation\">)</span><span class=\"token punctuation\">{</span>\n    HTTPClient http<span class=\"token punctuation\">;</span>\n\n\n    String url <span class=\"token operator\">=</span> serverName <span class=\"token operator\">+</span> <span class=\"token string\">\"&amp;field1=\"</span> <span class=\"token operator\">+</span> temp <span class=\"token operator\">+</span> <span class=\"token string\">\"&amp;field2=\"</span> <span class=\"token operator\">+</span> pres <span class=\"token operator\">+</span> <span class=\"token string\">\"&amp;field3=\"</span> <span class=\"token operator\">+</span> alt <span class=\"token operator\">+</span> <span class=\"token string\">\"&amp;field4=\"</span> <span class=\"token operator\">+</span> hum<span class=\"token punctuation\">;</span>\n      \n    http<span class=\"token punctuation\">.</span><span class=\"token function\">begin</span><span class=\"token punctuation\">(</span>url<span class=\"token punctuation\">.</span><span class=\"token function\">c_str</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n      \n    <span class=\"token keyword\">int</span> httpResponseCode <span class=\"token operator\">=</span> http<span class=\"token punctuation\">.</span><span class=\"token function\">GET</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n      \n    <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>httpResponseCode <span class=\"token operator\">></span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">{</span>\n      Serial<span class=\"token punctuation\">.</span><span class=\"token function\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"HTTP Response code: \"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n      Serial<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span>httpResponseCode<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span><span class=\"token keyword\">else</span><span class=\"token punctuation\">{</span>\n      Serial<span class=\"token punctuation\">.</span><span class=\"token function\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Error code: \"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n      Serial<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span>httpResponseCode<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    http<span class=\"token punctuation\">.</span><span class=\"token function\">end</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span>\n\n\n<span class=\"token keyword\">void</span> <span class=\"token function\">initBme280</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">{</span>\n  <span class=\"token keyword\">unsigned</span> status<span class=\"token punctuation\">;</span>\n    \n  status <span class=\"token operator\">=</span> bme<span class=\"token punctuation\">.</span><span class=\"token function\">begin</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>  \n  <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span><span class=\"token operator\">!</span>status<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n      Serial<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Could not find a valid BME280 sensor, check wiring, address, sensor ID!\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n      Serial<span class=\"token punctuation\">.</span><span class=\"token function\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"SensorID was: 0x\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> Serial<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span>bme<span class=\"token punctuation\">.</span><span class=\"token function\">sensorID</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span><span class=\"token number\">16</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n      Serial<span class=\"token punctuation\">.</span><span class=\"token function\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"        ID of 0xFF probably means a bad address, a BMP 180 or BMP 085\\n\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n      Serial<span class=\"token punctuation\">.</span><span class=\"token function\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"   ID of 0x56-0x58 represents a BMP 280,\\n\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n      Serial<span class=\"token punctuation\">.</span><span class=\"token function\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"        ID of 0x60 represents a BME 280.\\n\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n      Serial<span class=\"token punctuation\">.</span><span class=\"token function\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"        ID of 0x61 represents a BME 680.\\n\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n      <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span><span class=\"token number\">1</span><span class=\"token punctuation\">)</span> <span class=\"token function\">delay</span><span class=\"token punctuation\">(</span><span class=\"token number\">10</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span>\n  Serial<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"BME280 Initialized\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  Serial<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<ul>\n<li>First we initialize the <code class=\"language-text\">bme</code> object and call the <code class=\"language-text\">initBme280()</code> function to ensure that we have the sensor connected correctly.</li>\n<li>We then pass <code class=\"language-text\">bme.readTemperature()</code>, <code class=\"language-text\">bme.readPressure()</code>, <code class=\"language-text\">bme.readAltitude(SEALEVELPRESSURE_HPA)</code>,  and <code class=\"language-text\">bme.readHumidity()</code> into our <code class=\"language-text\">sendData()</code> function from before.</li>\n</ul>\n<p>Congrats! You should now have live data once a minute. If you ever want to change that time, simply change the <em>timerDelay</em> to the number of millis you want it to wait.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/02f70a092bfe8b8f30a93812c16d1db0/6bfbb/tsfinal.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 66.25766871165644%; position: relative; bottom: 0; left: 0; background-image: url('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='); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/02f70a092bfe8b8f30a93812c16d1db0/94563/tsfinal.webp 163w,\n/static/02f70a092bfe8b8f30a93812c16d1db0/647a8/tsfinal.webp 325w,\n/static/02f70a092bfe8b8f30a93812c16d1db0/c1dc5/tsfinal.webp 650w,\n/static/02f70a092bfe8b8f30a93812c16d1db0/1e975/tsfinal.webp 975w,\n/static/02f70a092bfe8b8f30a93812c16d1db0/063bf/tsfinal.webp 1300w,\n/static/02f70a092bfe8b8f30a93812c16d1db0/7a774/tsfinal.webp 1514w\"\n              sizes=\"(max-width: 650px) 100vw, 650px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/02f70a092bfe8b8f30a93812c16d1db0/222b7/tsfinal.png 163w,\n/static/02f70a092bfe8b8f30a93812c16d1db0/ff46a/tsfinal.png 325w,\n/static/02f70a092bfe8b8f30a93812c16d1db0/a6d36/tsfinal.png 650w,\n/static/02f70a092bfe8b8f30a93812c16d1db0/e548f/tsfinal.png 975w,\n/static/02f70a092bfe8b8f30a93812c16d1db0/3c492/tsfinal.png 1300w,\n/static/02f70a092bfe8b8f30a93812c16d1db0/6bfbb/tsfinal.png 1514w\"\n            sizes=\"(max-width: 650px) 100vw, 650px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/02f70a092bfe8b8f30a93812c16d1db0/a6d36/tsfinal.png\"\n            alt=\"What it should look like when you are done\"\n            title=\"What it should look like when you are done\"\n            loading=\"lazy\"\n            style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n          />\n        </picture>\n  </a>\n    </span></p>\n<h2>Whats next?</h2>\n<p>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.</p>\n<ul>\n<li>There are some other kinds of visualizations that ThingSpeak has available for your data that you could check out.</li>\n<li>Make your channel public and share it with your friends.</li>\n<li>Try reading data from ThingSpeak using GET requests, as shown in the API Keys tab.</li>\n<li>\n<p>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.</p>\n<!-- end of article -->\n</li>\n</ul>","snippet":" This project is meant to give you a practical example of what you can do with IoT skills. We will…","fields":{"keywords":["wifi","thingspeak","bme","board","data"],"slug":"/tutorials/thingspeak-with-esp-mc/"},"frontmatter":{"title":"Sending Sensor Data to ThingSpeak (esp32)","keywords":["Arduino","BME280","ThingSpeak","Data","ESP32"],"description":"This project gives you a practical example of sending data from your ESP32 IoT device to the ThingSpeak API","author":"William Mincher","date":"August 22, 2020","featuredImage":{"childImageSharp":{"fluid":{"src":"/static/94ca67d6860306e7484202df2a48c0ff/9842e/mainpic.jpg","srcSet":"/static/94ca67d6860306e7484202df2a48c0ff/07ab6/mainpic.jpg 225w,\n/static/94ca67d6860306e7484202df2a48c0ff/32fd5/mainpic.jpg 450w,\n/static/94ca67d6860306e7484202df2a48c0ff/9842e/mainpic.jpg 900w,\n/static/94ca67d6860306e7484202df2a48c0ff/724e2/mainpic.jpg 1350w,\n/static/94ca67d6860306e7484202df2a48c0ff/52258/mainpic.jpg 1800w,\n/static/94ca67d6860306e7484202df2a48c0ff/10a43/mainpic.jpg 4032w","aspectRatio":1.331360946745562,"sizes":"(max-width: 900px) 100vw, 900px","base64":"data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAFwAAAwEAAAAAAAAAAAAAAAAAAAIDBP/EABUBAQEAAAAAAAAAAAAAAAAAAAAB/9oADAMBAAIQAxAAAAHdnq0XED//xAAaEAADAQADAAAAAAAAAAAAAAAAAQIDERIT/9oACAEBAAEFAnvCK2JfaXijzYlwf//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQMBAT8BP//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQIBAT8BP//EAB4QAAIBAwUAAAAAAAAAAAAAAAABERIhMTJRcZGh/9oACAEBAAY/AszwOmNxMt6aukZZ/8QAHBAAAgEFAQAAAAAAAAAAAAAAAREAITFBUWFx/9oACAEBAAE/IRzF1HSFAMCVFZ1EOG2MvNzYnFQYpnpn/9oADAMBAAIAAwAAABDsP//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQMBAT8QP//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQIBAT8QP//EAB0QAQEAAgEFAAAAAAAAAAAAAAERACExQVGRwfD/2gAIAQEAAT8QXqBoPnTGh4iUgwRnG94IQkonGFCW8rDxg/GexHvEYrbbOf/Z","srcWebp":"/static/94ca67d6860306e7484202df2a48c0ff/210c1/mainpic.webp","srcSetWebp":"/static/94ca67d6860306e7484202df2a48c0ff/975bf/mainpic.webp 225w,\n/static/94ca67d6860306e7484202df2a48c0ff/b8a88/mainpic.webp 450w,\n/static/94ca67d6860306e7484202df2a48c0ff/210c1/mainpic.webp 900w,\n/static/94ca67d6860306e7484202df2a48c0ff/5616c/mainpic.webp 1350w,\n/static/94ca67d6860306e7484202df2a48c0ff/685a2/mainpic.webp 1800w,\n/static/94ca67d6860306e7484202df2a48c0ff/9d54b/mainpic.webp 4032w"}}}}}},"pageContext":{"slug":"/tutorials/thingspeak-with-esp-mc/","pinned":false,"previous":{"fields":{"slug":"/tutorials/thingspeak-bme280-raspberry-pi/","pinned":false,"source":"regular"},"snippet":" This project is meant to give you a practical example of what you can do with IoT skills. We will…","frontmatter":{"title":"Sending Sensor Data to ThingSpeak (RasPi)","category":"tutorial","thumbnailText":null,"author":"William Mincher","date":"August 12, 2020","redirect_from":["/pre-prods/bme280-rpi-wm/"],"featuredImage":{"childImageSharp":{"fluid":{"src":"/static/d5ed5fc19cba131423df880b4947e723/2244e/mainpic.jpg","srcSet":"/static/d5ed5fc19cba131423df880b4947e723/86e11/mainpic.jpg 100w,\n/static/d5ed5fc19cba131423df880b4947e723/f836f/mainpic.jpg 200w,\n/static/d5ed5fc19cba131423df880b4947e723/2244e/mainpic.jpg 400w,\n/static/d5ed5fc19cba131423df880b4947e723/4fe8c/mainpic.jpg 600w,\n/static/d5ed5fc19cba131423df880b4947e723/14b42/mainpic.jpg 800w,\n/static/d5ed5fc19cba131423df880b4947e723/10a43/mainpic.jpg 4032w","aspectRatio":1.3333333333333333,"sizes":"(max-width: 400px) 100vw, 400px","base64":"data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAGQAAAgMBAAAAAAAAAAAAAAAAAAQCAwUG/8QAFwEAAwEAAAAAAAAAAAAAAAAAAAECA//aAAwDAQACEAMQAAABZxOhpzpgiI//xAAZEAEBAQEBAQAAAAAAAAAAAAABAgMSERP/2gAIAQEAAQUC80oHQua6OH6OErMkn//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQMBAT8BP//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQIBAT8BP//EABsQAAMAAgMAAAAAAAAAAAAAAAABERIhAlGB/9oACAEBAAY/ArlxXgntxlMstdFrIj//xAAaEAEAAwEBAQAAAAAAAAAAAAABABEhQVGB/9oACAEBAAE/IV4I+ohHaLZQgq+QDZNytuEN3Ues/9oADAMBAAIAAwAAABAM/wD/xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAEDAQE/ED//xAAVEQEBAAAAAAAAAAAAAAAAAAAREP/aAAgBAgEBPxBJ/8QAHBABAQADAAMBAAAAAAAAAAAAAREAITFBYXGB/9oACAEBAAE/EKI2kFBOC8zUo6aad9yjgFrp6cSEkcGlwXESkCXxZiM/YL+5/9k=","srcWebp":"/static/d5ed5fc19cba131423df880b4947e723/1f5c5/mainpic.webp","srcSetWebp":"/static/d5ed5fc19cba131423df880b4947e723/d1f52/mainpic.webp 100w,\n/static/d5ed5fc19cba131423df880b4947e723/61e93/mainpic.webp 200w,\n/static/d5ed5fc19cba131423df880b4947e723/1f5c5/mainpic.webp 400w,\n/static/d5ed5fc19cba131423df880b4947e723/ad85c/mainpic.webp 600w,\n/static/d5ed5fc19cba131423df880b4947e723/58556/mainpic.webp 800w,\n/static/d5ed5fc19cba131423df880b4947e723/9d54b/mainpic.webp 4032w"}}}}},"next":{"fields":{"slug":"/blogs/all-about-iot/","pinned":false,"source":"regular"},"snippet":" IoT, internet of things, refers to the billions of physical devices that are connected to each other via the internet…","frontmatter":{"title":"All About IoT","category":"blog","thumbnailText":null,"author":"Shrinandan Narayanan","date":"August 22, 2020","redirect_from":null,"featuredImage":{"childImageSharp":{"fluid":{"src":"/static/de4b985ca18c5c8357a44de463aedd88/497c6/featuredImage.png","srcSet":"/static/de4b985ca18c5c8357a44de463aedd88/65e33/featuredImage.png 100w,\n/static/de4b985ca18c5c8357a44de463aedd88/69585/featuredImage.png 200w,\n/static/de4b985ca18c5c8357a44de463aedd88/497c6/featuredImage.png 400w,\n/static/de4b985ca18c5c8357a44de463aedd88/2a4de/featuredImage.png 600w,\n/static/de4b985ca18c5c8357a44de463aedd88/ee604/featuredImage.png 800w,\n/static/de4b985ca18c5c8357a44de463aedd88/00519/featuredImage.png 810w","aspectRatio":1.7857142857142858,"sizes":"(max-width: 400px) 100vw, 400px","base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAADA0lEQVQozx2S20/bdRjGv7+efqe2tBtrnCeEgascWg7tKKUCHThaULaEFkgPtHQwKWUdBQpCVRSTZSa6zC1MdqGJ0WmyeEGiZle6mOiF80JjovG/+fiNF+/Fmzx5nvfz5hHK9APM8mNsuUdYit9jXf0JpfILSvU3xOYfiK2/sDf+QX/vXxyNv1G2/kRUn6LWn2ItP0FkTnCUTtCuPUYk7yOM0UPMy0c4Ul+hZx+iZr/GkX+EsfEEJfMt4uqPuBq/43v3V5rqP6PkTxCpb9BWvkMv/YA6+yXuuc84lfoUJfo+Qr2wiWu0gTZ2EzNxC+8bH+JIHknhQ+zJT3DN3MObPsabOsJ++Rht+i7G1G3U5B3MiVt45h+gJu6g9NQQPRVp2F/BFd/H0nUN2+AO2tA+hhSL6CHq0C4vJRs0x/c4e+kdfKM1LJED1JnPOZM/xhjewRooY8QP8C3cR2lfRNg7C9j8BfT+NZ7NH2GEt7F2v8mZSJnzw0VCiQrRqVVenV6jb7LCC0MrOHtXsfivonZWcF88wAit4RxcR3kxjbB1raH1raN2F3FH1nH7F/5PGogtEIykiU6UGL6YJz6RpXekQCiWwj+QwhmucPq1hjRbx9qexRPfRWnNIKwtc5waq3M6cgO7bxK9dQEzXMf6cg7RMk9bMEVXYpnuyet4zl1BtC6jncvi7K/RFNvA0bGA5s/gvFCTh5QQlldyMmEerTOHLyET+1YRz8/yzNzHPJe7jWh+HWfsbfRwDTOwiD4gaTqLaG1ptIEKetcKansaM1LB3ruMEMEioiuPtadIU3IfV6SKrSODGtpECy5hbZvFHm5gxvZomXkLR7iM3pPHG5iX/9vGOyKvjGxxtvoF5qW6RO4r4rlyE9fUIe7xGo7+At7xDTxj16XJBnpfCV8og9G/hDm6g1vqtN6CrMwezdmP8GVlzWI38M5+gB6rSuSOFEZ0VS4SZbCMEihijm/jnNxFH9+X+5LEXMTRKyco3xMsYQvkpcmWrMsmxkhVtiIvcQtYzqf5Dxp6hqu/KpEIAAAAAElFTkSuQmCC","srcWebp":"/static/de4b985ca18c5c8357a44de463aedd88/1f5c5/featuredImage.webp","srcSetWebp":"/static/de4b985ca18c5c8357a44de463aedd88/d1f52/featuredImage.webp 100w,\n/static/de4b985ca18c5c8357a44de463aedd88/61e93/featuredImage.webp 200w,\n/static/de4b985ca18c5c8357a44de463aedd88/1f5c5/featuredImage.webp 400w,\n/static/de4b985ca18c5c8357a44de463aedd88/ad85c/featuredImage.webp 600w,\n/static/de4b985ca18c5c8357a44de463aedd88/58556/featuredImage.webp 800w,\n/static/de4b985ca18c5c8357a44de463aedd88/ed107/featuredImage.webp 810w"}}}}}}},"staticQueryHashes":["2390832784"]}