{"id":189962,"date":"2026-03-19T14:15:12","date_gmt":"2026-03-19T14:15:12","guid":{"rendered":"https:\/\/randomnerdtutorials.com\/?p=189962"},"modified":"2026-03-19T16:04:07","modified_gmt":"2026-03-19T16:04:07","slug":"esp32-temperature-tm1637-display","status":"publish","type":"post","link":"https:\/\/randomnerdtutorials.com\/esp32-temperature-tm1637-display\/","title":{"rendered":"ESP32: Temperature on TM1637 7-Segment Display (WeatherAPI)"},"content":{"rendered":"\n<p>In this project, we&#8217;ll display the current temperature for your city (or any city of your choice) on the TM1637 7-segment display. To get the temperature, we&#8217;ll make HTTP requests with the ESP32 to the WeatherAPI (no sensor needed).<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img data-recalc-dims=\"1\" fetchpriority=\"high\" decoding=\"async\" width=\"1200\" height=\"675\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2026\/02\/ESP32-Temperature-Display-TM1637.jpg?resize=1200%2C675&#038;quality=100&#038;strip=all&#038;ssl=1\" alt=\"ESP32: Display Temperature on TM1637 7-Segment Display (WeatherAPI)\" class=\"wp-image-189971\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2026\/02\/ESP32-Temperature-Display-TM1637.jpg?w=1920&amp;quality=100&amp;strip=all&amp;ssl=1 1920w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2026\/02\/ESP32-Temperature-Display-TM1637.jpg?resize=300%2C169&amp;quality=100&amp;strip=all&amp;ssl=1 300w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2026\/02\/ESP32-Temperature-Display-TM1637.jpg?resize=1024%2C576&amp;quality=100&amp;strip=all&amp;ssl=1 1024w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2026\/02\/ESP32-Temperature-Display-TM1637.jpg?resize=768%2C432&amp;quality=100&amp;strip=all&amp;ssl=1 768w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2026\/02\/ESP32-Temperature-Display-TM1637.jpg?resize=1536%2C864&amp;quality=100&amp;strip=all&amp;ssl=1 1536w\" sizes=\"(max-width: 1200px) 100vw, 1200px\" \/><\/figure><\/div>\n\n\n<p>This is a great project to put into practice how to make HTTP requests with the ESP32 and use the TM1637 7-segment display. For in-depth tutorials about these subjects, check the following articles:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/randomnerdtutorials.com\/esp32-tm1637-4-digit-7-segment-display-arduino\/\">ESP32 with TM1637 4-Digit LED 7-Segment Display (Arduino IDE)<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/randomnerdtutorials.com\/esp32-http-post-ifttt-thingspeak-arduino\/\">ESP32 HTTP POST with Arduino IDE (ThingSpeak and IFTTT.com)<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/randomnerdtutorials.com\/esp32-http-get-open-weather-map-thingspeak-arduino\/\">ESP32 HTTP GET with Arduino IDE (OpenWeatherMap.org and ThingSpeak)<\/a><\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Prerequisites<\/h2>\n\n\n\n<p>Before proceeding, make sure you have the Arduino IDE installed and the ESP32 boards. Follow the next tutorial if you haven&#8217;t already:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/randomnerdtutorials.com\/installing-esp32-arduino-ide-2-0\/\" title=\"\">Installing ESP32 Board in Arduino IDE 2 (Windows, Mac OS X, Linux)<\/a><\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Project Overview<\/h2>\n\n\n\n<p>In this project, we\u2019ll display the current temperature for your city on the TM1637 4-Digit 7-Segment display. We\u2019ll get the temperature from the&nbsp;<a href=\"https:\/\/www.weatherapi.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">Weather API<\/a>.<\/p>\n\n\n\n<p>Here\u2019s a quick overview of the steps we need to follow to create this project:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Initialize the display and set its brightness;<\/li>\n\n\n\n<li>Initialize Wi-Fi and connect the ESP32 to your local network so that it can get data from the internet.<\/li>\n\n\n\n<li>Make a request to the WeatherAPI to get temperature for your choosen location.<\/li>\n\n\n\n<li>Show the temperature in the display (alternate between temperature in Celsius and in Fahrenheit degrees).<\/li>\n\n\n\n<li>Every hour, make a new request to the WeatherAPI to get more recent data.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">TM1637 4-Digit LED 7-Segment Display<\/h3>\n\n\n\n<p>The <a href=\"https:\/\/makeradvisor.com\/tools\/tm1637-4-digit-7-segment-display\/\" target=\"_blank\" rel=\"noopener\" title=\"\">TM1637 4-Digit LED 7-Segment display<\/a> is a display module that combines four 7-segment digits in a single display that can be controlled via the TM1637 driver. The particular module we&#8217;re using here has four digits separated by a colon between the second and third digits. This layout is ideal for creating a digital clock, with the hour on one side of the colon and the minutes on the other.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img data-recalc-dims=\"1\" decoding=\"async\" width=\"750\" height=\"422\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2026\/01\/TM1637-Display.jpg?resize=750%2C422&#038;quality=100&#038;strip=all&#038;ssl=1\" alt=\"TM1637 4-Digit 7-Segment Display\" class=\"wp-image-187306\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2026\/01\/TM1637-Display.jpg?w=750&amp;quality=100&amp;strip=all&amp;ssl=1 750w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2026\/01\/TM1637-Display.jpg?resize=300%2C169&amp;quality=100&amp;strip=all&amp;ssl=1 300w\" sizes=\"(max-width: 750px) 100vw, 750px\" \/><\/figure><\/div>\n\n\n<h3 class=\"wp-block-heading\">Weather API<\/h3>\n\n\n\n<p>In this project, we&#8217;ll display the current temperature for your city on the display. We&#8217;ll get the temperature from the <a href=\"https:\/\/www.weatherapi.com\/\" target=\"_blank\" rel=\"noopener\" title=\"\">Weather API<\/a>.<\/p>\n\n\n\n<p>This API is free and provides useful information about the weather in almost any location in the world.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img data-recalc-dims=\"1\" decoding=\"async\" width=\"350\" height=\"108\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2024\/07\/weather-forecaster.jpg?resize=350%2C108&#038;quality=100&#038;strip=all&#038;ssl=1\" alt=\"Weather forecaster example\" class=\"wp-image-159901\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2024\/07\/weather-forecaster.jpg?w=350&amp;quality=100&amp;strip=all&amp;ssl=1 350w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2024\/07\/weather-forecaster.jpg?resize=300%2C93&amp;quality=100&amp;strip=all&amp;ssl=1 300w\" sizes=\"(max-width: 350px) 100vw, 350px\" \/><\/figure><\/div>\n\n\n<p>We\u2019ll get the temperature for your location and display it on the 7-segment display module.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Getting Your API Key<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Go to the Weather API website: <a href=\"https:\/\/www.weatherapi.com\/\" target=\"_blank\" rel=\"noopener\" title=\"\">weatherapi.com\/<\/a><\/li>\n\n\n\n<li>Signup to create an account.<\/li>\n\n\n\n<li>After verifying your account, login into your account.<\/li>\n\n\n\n<li>On your dashboard at <a href=\"https:\/\/www.weatherapi.com\/my\/\" target=\"_blank\" rel=\"noopener\" title=\"\">weatherapi.com\/my\/<\/a> , you\u2019ll find your API key (even though it says the trial will end, you can continue using your API key freely).<\/li>\n<\/ol>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"884\" height=\"247\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2024\/07\/weather-api-key.png?resize=884%2C247&#038;quality=100&#038;strip=all&#038;ssl=1\" alt=\"Weather API Key\" class=\"wp-image-159899\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2024\/07\/weather-api-key.png?w=884&amp;quality=100&amp;strip=all&amp;ssl=1 884w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2024\/07\/weather-api-key.png?resize=300%2C84&amp;quality=100&amp;strip=all&amp;ssl=1 300w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2024\/07\/weather-api-key.png?resize=768%2C215&amp;quality=100&amp;strip=all&amp;ssl=1 768w\" sizes=\"(max-width: 884px) 100vw, 884px\" \/><\/figure><\/div>\n\n\n<p>Copy the API key to a safe place because you\u2019ll need it later.<\/p>\n\n\n\n<p>To pull information on the weather in your chosen location, enter the following URL in your web browser, but insert your location and API key in the right places:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">https:\/\/api.weatherapi.com\/v1\/current.json?q=<strong>YOUR_LOCATION<\/strong>+&amp;key=<strong>YOUR_API_KEY<\/strong>'<\/pre>\n\n\n\n<p>For example, in my case:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>https:&#47;&#47;api.weatherapi.com\/v1\/current.json?q=Oporto+&amp;key=d1578a064b07453c917164350240106'<\/code><\/pre>\n\n\n\n<p>Copy your URL and paste it into your browser, and the API will return information corresponding to your local weather. For example:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted language-c\">{<br>  \"location\": {<br>    \"name\": \"Oporto\",<br>    \"region\": \"Porto\",<br>    \"country\": \"Portugal\",<br>    \"lat\": 41.15,<br>    \"lon\": -8.62,<br>    \"tz_id\": \"Europe\/Lisbon\",<br>    \"localtime_epoch\": 1719843562,<br>    \"localtime\": \"2024-07-01 15:19\"<br>  },<br>  \"current\": {<br>    \"last_updated_epoch\": 1719843300,<br>    \"last_updated\": \"2024-07-01 15:15\",<br>    \"temp_c\": 22.3,<br>    \"temp_f\": 72.1,<br>    \"is_day\": 1,<br>    \"condition\": {<br>      \"text\": \"Sunny\",<br>      \"icon\": \"\/\/cdn.weatherapi.com\/weather\/64x64\/day\/113.png\",<br>      \"code\": 1000<br>    },<br>    \"wind_mph\": 10.5,<br>    \"wind_kph\": 16.9,<br>    \"wind_degree\": 310,<br>    \"wind_dir\": \"NW\",<br>    \"pressure_mb\": 1021,<br>    \"pressure_in\": 30.15,<br>    \"precip_mm\": 0,<br>    \"precip_in\": 0,<br>    \"humidity\": 69,<br>    \"cloud\": 0,<br>    \"feelslike_c\": 24.7,<br>    \"feelslike_f\": 76.4,<br>    \"windchill_c\": 21.9,<br>    \"windchill_f\": 71.5,<br>    \"heatindex_c\": 24.6,<br>    \"heatindex_f\": 76.2,<br>    \"dewpoint_c\": 15,<br>    \"dewpoint_f\": 58.9,<br>    \"vis_km\": 10,<br>    \"vis_miles\": 6,<br>    \"uv\": 6,<br>    \"gust_mph\": 15.4,<br>    \"gust_kph\": 24.7<br>  }<br>}<\/pre>\n\n\n\n<p>From this JSON, we can easily get the temperature for your location, either in Celsius or Fahrenheit: <span class=\"rnthl rntliteral\">temp_c<\/span> and <span class=\"rnthl rntliteral\">temp_f<\/span>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Parts Required<\/h2>\n\n\n\n<p>For this project, you need the following parts:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"750\" height=\"422\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2026\/02\/TM1637-Display-Parts-Required-Clock.jpg?resize=750%2C422&#038;quality=100&#038;strip=all&#038;ssl=1\" alt=\"TM1637 Display Parts Required Digital Clock\" class=\"wp-image-189820\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2026\/02\/TM1637-Display-Parts-Required-Clock.jpg?w=750&amp;quality=100&amp;strip=all&amp;ssl=1 750w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2026\/02\/TM1637-Display-Parts-Required-Clock.jpg?resize=300%2C169&amp;quality=100&amp;strip=all&amp;ssl=1 300w\" sizes=\"(max-width: 750px) 100vw, 750px\" \/><\/figure><\/div>\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/makeradvisor.com\/tools\/esp32-dev-board-wi-fi-bluetooth\/\" target=\"_blank\" rel=\"noopener\" title=\"\">ESP32 board <\/a>&#8211; any model of your choice<\/li>\n\n\n\n<li><a href=\"https:\/\/makeradvisor.com\/tools\/tm1637-4-digit-7-segment-display\/\" target=\"_blank\" rel=\"noopener\" title=\"\">TM1637 4-Digit 7-Segment Display<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/makeradvisor.com\/tools\/jumper-wires-kit-120-pieces\/\" target=\"_blank\" rel=\"noopener\" title=\"\">Jumper Wires<\/a><\/li>\n<\/ul>\n\n\n<p>You can use the preceding links or go directly to <a href=\"https:\/\/makeradvisor.com\/tools\/?utm_source=rnt&utm_medium=post&utm_campaign=post\" target=\"_blank\">MakerAdvisor.com\/tools<\/a> to find all the parts for your projects at the best price!<\/p><p style=\"text-align:center;\"><a href=\"https:\/\/makeradvisor.com\/tools\/?utm_source=rnt&utm_medium=post&utm_campaign=post\" target=\"_blank\"><img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2017\/10\/header-200.png?w=1200&#038;quality=100&#038;strip=all&#038;ssl=1\"><\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"TM1637-wiring\">Wiring the TM1637 4-Digit 7-Segment Display to the ESP32<\/h2>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"750\" height=\"422\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2026\/01\/TM1637-Display-pins.jpg?resize=750%2C422&#038;quality=100&#038;strip=all&#038;ssl=1\" alt=\"TM1637 Display Module Pins CLK DIO VCC GND\" class=\"wp-image-187430\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2026\/01\/TM1637-Display-pins.jpg?w=750&amp;quality=100&amp;strip=all&amp;ssl=1 750w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2026\/01\/TM1637-Display-pins.jpg?resize=300%2C169&amp;quality=100&amp;strip=all&amp;ssl=1 300w\" sizes=\"(max-width: 750px) 100vw, 750px\" \/><\/figure><\/div>\n\n\n<p>Wiring the display to the ESP32 is quite simple, as it only requires two digital pins: <strong>CLK <\/strong>and <strong>DI\/O<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>TM1637 Display<\/strong><\/td><td><strong>ESP32<\/strong><\/td><\/tr><tr><td>CLK<\/td><td>Any digital pin (for example: <span class=\"rnthl rntclblue\">GPIO 19<\/span>)*<\/td><\/tr><tr><td>DIO<\/td><td>Any digital pin (for example: <span class=\"rnthl rntclgreen\">GPIO 18<\/span>)*<\/td><\/tr><tr><td>VCC<\/td><td><span class=\"rnthl rntcred\">VIN<\/span><\/td><\/tr><tr><td>GND<\/td><td><span class=\"rnthl rntcblack\">GND<\/span><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>* you can use any other suitable GPIOs. Check the ESP32 Pinout Guide:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/randomnerdtutorials.com\/esp32-pinout-reference-gpios\/\">ESP32 Pinout Reference: Which GPIO pins should you use?<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/randomnerdtutorials.com\/esp32-s3-devkitc-pinout-guide\/\">ESP32-S3 DevKitC Pinout Reference Guide: GPIOs Explained<\/a><\/li>\n<\/ul>\n\n\n\n<p>We&#8217;ll connect the CLK pin to <span class=\"rnthl rntclblue\">GPIO 19<\/span>, and the DIO pin to <span class=\"rnthl rntclgreen\">GPIO 18<\/span>, but you can use a different combination of pins.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"900\" height=\"713\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2026\/01\/ESP32-TM1637_wiring.png?resize=900%2C713&#038;quality=100&#038;strip=all&#038;ssl=1\" alt=\"TM1637 Display - Wiring to the ESP32\" class=\"wp-image-187083\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2026\/01\/ESP32-TM1637_wiring.png?w=900&amp;quality=100&amp;strip=all&amp;ssl=1 900w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2026\/01\/ESP32-TM1637_wiring.png?resize=300%2C238&amp;quality=100&amp;strip=all&amp;ssl=1 300w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2026\/01\/ESP32-TM1637_wiring.png?resize=768%2C608&amp;quality=100&amp;strip=all&amp;ssl=1 768w\" sizes=\"(max-width: 900px) 100vw, 900px\" \/><\/figure><\/div>\n\n\n<h2 class=\"wp-block-heading\" id=\"TM1637-library\">Installing Libraries<\/h2>\n\n\n\n<p>For this project, you need to instal the <a href=\"https:\/\/github.com\/avishorp\/TM1637\" target=\"_blank\" rel=\"noopener\" title=\"\">TM1637 library by avishorp<\/a> to interface with the TM1637 display, and the <a href=\"https:\/\/github.com\/bblanchon\/ArduinoJson\" target=\"_blank\" rel=\"noopener\" title=\"\">ArduinoJSON library from bblanchon<\/a> to handle the JSON data that is returned by the API.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Installing the TM1637 Library<\/h3>\n\n\n\n<p>There are several libraries to interface the TM1637 display with the ESP32. We&#8217;ll use the <strong><a href=\"https:\/\/github.com\/avishorp\/TM1637\" target=\"_blank\" rel=\"noopener\" title=\"\">TM1637.h library by avishorp<\/a><\/strong> (even though it hasn&#8217;t been updated for several years, it still works well, and it&#8217;s very easy to use).<\/p>\n\n\n\n<p>You can install the library via the Arduino IDE Library Manager. Search for <strong>TM1637 <\/strong>and install the library by avishorp.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"718\" height=\"586\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2026\/01\/Install-TM1637-library-Arduino-IDE.png?resize=718%2C586&#038;quality=100&#038;strip=all&#038;ssl=1\" alt=\"Install TM1637 Library in Arduino IDE\" class=\"wp-image-187084\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2026\/01\/Install-TM1637-library-Arduino-IDE.png?w=718&amp;quality=100&amp;strip=all&amp;ssl=1 718w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2026\/01\/Install-TM1637-library-Arduino-IDE.png?resize=300%2C245&amp;quality=100&amp;strip=all&amp;ssl=1 300w\" sizes=\"(max-width: 718px) 100vw, 718px\" \/><\/figure><\/div>\n\n\n<h3 class=\"wp-block-heading\">Installing Libraries<\/h3>\n\n\n\n<p>For this example, you also need to install the <strong><a href=\"https:\/\/github.com\/bblanchon\/ArduinoJson\" target=\"_blank\" rel=\"noopener\" title=\"\">ArduinoJSON library by bblanchon<\/a><\/strong>. You can install it in the Arduino Library Manager.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"666\" height=\"586\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2026\/01\/Install-ArduinoJSON-library.jpg?resize=666%2C586&#038;quality=100&#038;strip=all&#038;ssl=1\" alt=\"Install ArduinoJSON library Arduino IDE\" class=\"wp-image-187148\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2026\/01\/Install-ArduinoJSON-library.jpg?w=666&amp;quality=100&amp;strip=all&amp;ssl=1 666w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2026\/01\/Install-ArduinoJSON-library.jpg?resize=300%2C264&amp;quality=100&amp;strip=all&amp;ssl=1 300w\" sizes=\"(max-width: 666px) 100vw, 666px\" \/><\/figure><\/div>\n\n\n<h2 class=\"wp-block-heading\">Code &#8211; ESP32 with TM1637: Temperature Display<\/h2>\n\n\n\n<p>You can upload the following code to your board. You need to:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Insert your SSID and password;<\/li>\n\n\n\n<li>Insert your WeatherAPI API key;<\/li>\n\n\n\n<li>Insert the city where you want to get the temperature for.<\/li>\n<\/ul>\n\n\n<pre style=\"max-height: 40em; margin-bottom: 20px;\"><code class=\"language-c\">\/*\n  Rui Santos &amp; Sara Santos - Random Nerd Tutorials\n  Complete project details at https:\/\/RandomNerdTutorials.com\/esp32-tm1637-4-digit-7-segment-display-arduino\/\n  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files.\n  The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n*\/\n#include &lt;WiFi.h&gt;\n#include &lt;HTTPClient.h&gt;\n#include &lt;ArduinoJson.h&gt;\n#include &lt;TM1637Display.h&gt;\n\n\/\/ Wi-Fi credentials\nconst char* ssid = &quot;REPLACE_WITH_YOUR_SSID&quot;;\nconst char* password = &quot;REPLACE_WITH_YOUR_PASSWORD&quot;;\n\nconst char* api_key = &quot;REPLACE_WITH_YOUR_WeatherAPI_API_Key&quot;;\nconst char* location = &quot;Oporto&quot;;  \/\/ &quot;q&quot; Parameter documentation for location: https:\/\/www.weatherapi.com\/docs\/#intro-request\n\n\/\/ Request URL\nString url = &quot;https:\/\/api.weatherapi.com\/v1\/current.json?q=&quot; + String(location) + &quot;&amp;key=&quot; + String(api_key);\n\n\/\/ TM1637 pins\n#define CLK 19\n#define DIO 18\n\nTM1637Display display(CLK, DIO);\n\n\/\/ Create the \u00b0C Symbol\nconst uint8_t Celsius[] = {\n  SEG_A | SEG_B | SEG_F | SEG_G,  \/\/ Circle\n  SEG_A | SEG_D | SEG_E | SEG_F   \/\/ C\n};\n\n\/\/ Create the \u00b0F Symbol\nconst uint8_t Fahrenheit[] = {\n  SEG_A | SEG_B | SEG_F | SEG_G,  \/\/ Circle\n  SEG_F | SEG_E | SEG_A | SEG_G   \/\/ F\n};\n\n\/\/ Global variables for temperatures and timers\nfloat currentTempC = 9999;  \/\/ Initial error value\nfloat currentTempF = 9999;  \/\/ Initial error value\nunsigned long lastFetchTime = 0;\nconst unsigned long fetchInterval = 3600000UL;  \/\/ 1 hour in milliseconds\n\n\/\/ Init Wifi\nvoid initWiFi() {\n  WiFi.begin(ssid, password);\n  while (WiFi.status() != WL_CONNECTED) {\n    delay(1000);\n    Serial.println(&quot;Connecting to WiFi..&quot;);\n  }\n  Serial.println(&quot;Connection successful&quot;);\n  Serial.print(&quot;IP address: &quot;);\n  Serial.println(WiFi.localIP());\n}\n\nbool updateTemperatures() {\n  HTTPClient http;\n  http.begin(url);\n\n  int httpCode = http.GET();\n\n  if (httpCode == HTTP_CODE_OK) {  \/\/ Check for 200 specifically\n    String payload = http.getString();\n    Serial.print(payload);\n\n    \/\/ Parse JSON\n    StaticJsonDocument&lt;1024&gt; doc; \/\/ Adjust size if needed based on response\n    DeserializationError error = deserializeJson(doc, payload);\n\n    if (error) {\n      Serial.print(&quot;JSON parsing failed: &quot;);\n      Serial.println(error.c_str());\n      http.end();\n      return false;\n    }\n\n    \/\/ Get both temperatures\n    currentTempC = doc[&quot;current&quot;][&quot;temp_c&quot;];\n    currentTempF = doc[&quot;current&quot;][&quot;temp_f&quot;];\n    http.end();\n    return true;\n  } else {\n    Serial.print(&quot;Error during request: &quot;);\n    Serial.println(httpCode);\n    http.end();\n    return false;\n  }\n}\n\nvoid setup() {\n  Serial.begin(115200);\n  delay(1000); \/\/ Give time for Serial to initialize\n\n  \/\/ Connect to Wi-Fi\n  initWiFi();\n\n  display.setBrightness(7);  \/\/ Set the display brightness (0-7)\n\n  \/\/ Initial fetch\n  if (updateTemperatures()) {\n    lastFetchTime = millis();\n  }\n}\n\nvoid loop() {\n  \/\/ Check if it's time to fetch new data\n  if (millis() - lastFetchTime &gt;= fetchInterval) {\n    if (updateTemperatures()) {\n      lastFetchTime = millis();\n    } else {\n      \/\/ If failed, try again next loop \n      Serial.println(&quot;Fetch failed, keeping old values.&quot;);\n    }\n  }\n\n  \/\/ Show Celsius\n  Serial.print(&quot;Temperature in Celsius: &quot;);\n  Serial.println(currentTempC, 2);\n  \n  int roundedTempC = round(currentTempC);\n  display.showNumberDec(roundedTempC, false, 2, 0);\n  display.setSegments(Celsius, 2, 2);\n\n  delay(5000);\n\n  \/\/ Show Fahrenheit\n  Serial.print(&quot;Temperature in Fahrenheit: &quot;);\n  Serial.println(currentTempF, 2);\n\n  int roundedTempF = round(currentTempF);\n  display.showNumberDec(roundedTempF, false, 2, 0);\n  display.setSegments(Fahrenheit, 2, 2);\n\n  delay(5000);\n}\n<\/code><\/pre>\n\t<p style=\"text-align:center\"><a class=\"rntwhite\" href=\"https:\/\/github.com\/RuiSantosdotme\/Random-Nerd-Tutorials\/raw\/master\/Projects\/ESP32\/ESP32_TM1637_Temperature_Display.ino\" target=\"_blank\">View raw code<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">How Does the Code Work?<\/h3>\n\n\n\n<p>Let&#8217;s take a quick look at the relevant parts of the code for this tutorial.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Including Libraries<\/h4>\n\n\n\n<p>We start by including the required libraries.<\/p>\n\n\n\n<pre class=\"wp-block-code language-c\"><code>#include &lt;WiFi.h&gt;\n#include &lt;HTTPClient.h&gt;\n#include &lt;ArduinoJson.h&gt;\n#include &lt;TM1637Display.h&gt;<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Network Credentials<\/h4>\n\n\n\n<p>Insert your network credentials in the following lines.<\/p>\n\n\n\n<pre class=\"wp-block-code language-c\"><code>\/\/ Replace with your network credentials\nconst char* ssid     = \"REPLACE_WITH_YOUR_SSID\";\nconst char* password = \"REPLACE_WITH_YOUR_PASSWORD\";<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Weather API<\/h4>\n\n\n\n<p>Insert your WeatherAPI key and the location you want to get data for.<\/p>\n\n\n\n<pre class=\"wp-block-code language-c\"><code>const char* api_key = \"REPLACE_WITH_YOUR_API_KEY\";\nconst char* location = \"REPLACE_WITH_YOUR_LOCATION\";<\/code><\/pre>\n\n\n\n<p>This is the request URL that will return the weather data.<\/p>\n\n\n\n<pre class=\"wp-block-code language-c\"><code>String url = \"https:\/\/api.weatherapi.com\/v1\/current.json?q=\" + String(location) + \"&amp;key=\" + String(api_key);<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">TM1637 Display<\/h4>\n\n\n\n<p>Set the pins that are controlling the display and initialize an instance of the display called <span class=\"rnthl rntliteral\">display<\/span>.<\/p>\n\n\n\n<pre class=\"wp-block-code language-c\"><code>\/\/ TM1637 pins\n#define CLK 19\n#define DIO 18\n\nTM1637Display display(CLK, DIO);<\/code><\/pre>\n\n\n\n<p>Create an array with the required segments to create the \u00baC and \u00baF symbols.<\/p>\n\n\n\n<pre class=\"wp-block-code language-c\"><code>\/\/ Create the \u00b0C Symbol\nconst uint8_t Celsius&#091;] = {\n  SEG_A | SEG_B | SEG_F | SEG_G,  \/\/ Circle\n  SEG_A | SEG_D | SEG_E | SEG_F   \/\/ C\n};\n\n\/\/ Create the \u00b0F Symbol\nconst uint8_t Fahrenheit&#091;] = {\n  SEG_A | SEG_B | SEG_F | SEG_G,  \/\/ Circle\n  SEG_F | SEG_E | SEG_A | SEG_G   \/\/ F\n};<\/code><\/pre>\n\n\n\n<p>The <span class=\"rnthl rntliteral\">SEG_A<\/span>, <span class=\"rnthl rntliteral\">SEG_B<\/span>, and so on are references to their specific bytes (these are defined in the library <em>.h<\/em> file). To learn more about how to turn on\/off specific segments, <a href=\"https:\/\/randomnerdtutorials.com\/esp32-tm1637-4-digit-7-segment-display-arduino\/\" title=\"\">check this tutorial about the TM1637<\/a>.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Global variables<\/h4>\n\n\n\n<p>Create global variables to store the temperature in Celsius and Fahrenheit.<\/p>\n\n\n\n<pre class=\"wp-block-code language-c\"><code>float currentTempC = 9999;  \/\/ Initial error value\nfloat currentTempF = 9999;  \/\/ Initial error value<\/code><\/pre>\n\n\n\n<p>And auxiliar variables to count the time to make a request to the API every hour.<\/p>\n\n\n\n<pre class=\"wp-block-code language-c\"><code>unsigned long lastFetchTime = 0;\nconst unsigned long fetchInterval = 3600000UL;  \/\/ 1 hour in milliseconds<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Initialize Wi-Fi<\/h4>\n\n\n\n<p>The <span class=\"rnthl rntliteral\">initWiFi()<\/span> function will initialize Wi-Fi and connect to your network using the inserted credentials.<\/p>\n\n\n\n<pre class=\"wp-block-code language-c\"><code>\/\/ Init Wifi\nvoid initWiFi() {\n  WiFi.begin(ssid, password);\n  while (WiFi.status() != WL_CONNECTED) {\n    delay(1000);\n    Serial.println(\"Connecting to WiFi..\");\n  }\n  Serial.println(\"Connection successful\");\n  Serial.print(\"IP address: \");\n  Serial.println(WiFi.localIP());\n}<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Get\/Update the Temperatures<\/h4>\n\n\n\n<p>The <span class=\"rnthl rntliteral\">updateTemperatures()<\/span> function makes a request to the WeatherAPI request URL.<\/p>\n\n\n\n<p>The request returns a bunch of weather data as we&#8217;ve seen previously. We print all data to the Serial Monitor.<\/p>\n\n\n\n<pre class=\"wp-block-code language-c\"><code>bool updateTemperatures() {\nHTTPClient http;\nhttp.begin(url);\n\nint httpCode = http.GET();\n\nif (httpCode == HTTP_CODE_OK) {  \/\/ Check for 200 specifically\n  String payload = http.getString();\n  Serial.print(payload);<\/code><\/pre>\n\n\n\n<p>Then, we only save the data we&#8217;re interested in. In this case, the temperature in Celsius and Fahrenheit. We save them in the <span class=\"rnthl rntliteral\">currentTempC<\/span> and <span class=\"rnthl rntliteral\">currentTempF<\/span> variables.<\/p>\n\n\n\n<pre class=\"wp-block-code language-c\"><code>currentTempC = doc&#091;\"current\"]&#091;\"temp_c\"];\ncurrentTempF = doc&#091;\"current\"]&#091;\"temp_f\"];<\/code><\/pre>\n\n\n\n<p>If everything goes well with the request, the function returns <span class=\"rnthl rntliteral\">true<\/span>. Otherwise, it returns <span class=\"rnthl rntliteral\">false<\/span>.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">setup()<\/h4>\n\n\n\n<p>In the <span class=\"rnthl rntliteral\">setup()<\/span>, we initialize the Serial Monitor, connect to Wi-Fi, and set the display brightness.<\/p>\n\n\n\n<pre class=\"wp-block-code language-c\"><code>void setup() {\n  Serial.begin(115200);\n  delay(1000); \/\/ Give time for Serial to initialize\n\n  \/\/ Connect to Wi-Fi\n  initWiFi();\n\n  display.setBrightness(7);  \/\/ Set the display brightness (0-7)<\/code><\/pre>\n\n\n\n<p>Then, we make our first request to the API to get the current temperatures when the code first runs. From that time on, we also start counting the time to check later in the <span class=\"rnthl rntliteral\">loop()<\/span> if it&#8217;s time to make another request.<\/p>\n\n\n\n<pre class=\"wp-block-code language-c\"><code>\/\/ Initial fetch\nif (updateTemperatures()) {\n  lastFetchTime = millis();\n}<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">loop()<\/h4>\n\n\n\n<p>In the <span class=\"rnthl rntliteral\">loop()<\/span>, we&#8217;re constantly checking when it&#8217;s time to get new values.<\/p>\n\n\n\n<pre class=\"wp-block-code language-c\"><code>\/\/ Check if it's time to fetch new data\nif (millis() - lastFetchTime &gt;= fetchInterval) {\n  if (updateTemperatures()) {\n    lastFetchTime = millis();\n  } else {\n    \/\/ If failed, try again next loop \n    Serial.println(\"Fetch failed, keeping old values.\");\n  }\n}<\/code><\/pre>\n\n\n\n<p>Then, in the display, we&#8217;re alternating between showing the temperature in Celsius and in Fahrenheit every five seconds.<\/p>\n\n\n\n<pre class=\"wp-block-code language-c\"><code>\/\/ Show Celsius\nSerial.print(\"Temperature in Celsius: \");\nSerial.println(currentTempC, 2);\n  \nint roundedTempC = round(currentTempC);\ndisplay.showNumberDec(roundedTempC, false, 2, 0);\ndisplay.setSegments(Celsius, 2, 2);\n\ndelay(5000);\n\n\/\/ Show Fahrenheit\nSerial.print(\"Temperature in Fahrenheit: \");\nSerial.println(currentTempF, 2);\n\nint roundedTempF = round(currentTempF);\ndisplay.showNumberDec(roundedTempF, false, 2, 0);\ndisplay.setSegments(Fahrenheit, 2, 2);\n\ndelay(5000);<\/code><\/pre>\n\n\n\n<p>Since the temperature values come as float variables, we need to convert them to integers. To do that, we use the <span class=\"rnthl rntliteral\">round()<\/span> function to round the number. For example:<\/p>\n\n\n\n<pre class=\"wp-block-code language-c\"><code>int roundedTempC = round(currentTempC);<\/code><\/pre>\n\n\n\n<p>We call the <span class=\"rnthl rntliteral\">showNumberDec()<\/span> function to display the values.<\/p>\n\n\n\n<pre class=\"wp-block-code language-c\"><code>display.showNumberDec(roundedTempC, false, 2, 0);<\/code><\/pre>\n\n\n\n<p>Finally, call the <span class=\"rnthl rntliteral\">setSegments()<\/span> function to display the \u00baC and \u00baF Units.<\/p>\n\n\n\n<pre class=\"wp-block-code language-c\"><code>display.setSegments(Celsius, 2, 2);<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Demonstration<\/h2>\n\n\n\n<p>Upload the code to your ESP32 board. Don&#8217;t forget to insert your SSID and password in the code, as well as the API key, and your location.<\/p>\n\n\n\n<p>You should get a successful message on the Serial Monitor.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"666\" height=\"347\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2026\/01\/Display-Temperature-from-API-Serial-Monitor-Arduino-IDE.png?resize=666%2C347&#038;quality=100&#038;strip=all&#038;ssl=1\" alt=\"Get Temperature from API - ESP32 - Serial Monitor\" class=\"wp-image-187317\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2026\/01\/Display-Temperature-from-API-Serial-Monitor-Arduino-IDE.png?w=666&amp;quality=100&amp;strip=all&amp;ssl=1 666w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2026\/01\/Display-Temperature-from-API-Serial-Monitor-Arduino-IDE.png?resize=300%2C156&amp;quality=100&amp;strip=all&amp;ssl=1 300w\" sizes=\"(max-width: 666px) 100vw, 666px\" \/><\/figure><\/div>\n\n\n<p>And the temperature in Celsius and Fahrenheit degrees will show up alternating on the display.<\/p>\n\n\n\n<div class=\"wp-block-jetpack-tiled-gallery aligncenter is-style-rectangular\"><div class=\"\"><div class=\"tiled-gallery__gallery\"><div class=\"tiled-gallery__row\"><div class=\"tiled-gallery__col\" style=\"flex-basis:50.00000%\"><figure class=\"tiled-gallery__item\"><img decoding=\"async\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2026\/01\/ESP32-TM1637-Display-Temperature-Celsius.jpg?strip=info&#038;w=600&#038;ssl=1 600w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2026\/01\/ESP32-TM1637-Display-Temperature-Celsius.jpg?strip=info&#038;w=750&#038;ssl=1 750w\" alt=\"ESP32 with TM1637 Display - Show temperature in Celsius\" data-height=\"422\" data-id=\"187319\" data-link=\"https:\/\/randomnerdtutorials.com\/?attachment_id=187319#main\" data-url=\"https:\/\/randomnerdtutorials.com\/wp-content\/uploads\/2026\/01\/ESP32-TM1637-Display-Temperature-Celsius.jpg\" data-width=\"750\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2026\/01\/ESP32-TM1637-Display-Temperature-Celsius.jpg?ssl=1\" data-amp-layout=\"responsive\"\/><\/figure><\/div><div class=\"tiled-gallery__col\" style=\"flex-basis:50.00000%\"><figure class=\"tiled-gallery__item\"><img decoding=\"async\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2026\/01\/ESP32-TM1637-Display-Temperature-Fahrenheit.jpg?strip=info&#038;w=600&#038;ssl=1 600w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2026\/01\/ESP32-TM1637-Display-Temperature-Fahrenheit.jpg?strip=info&#038;w=750&#038;ssl=1 750w\" alt=\"ESP32 with TM1637 Display - Show temperature in Fahrenheit\" data-height=\"422\" data-id=\"187320\" data-link=\"https:\/\/randomnerdtutorials.com\/?attachment_id=187320#main\" data-url=\"https:\/\/randomnerdtutorials.com\/wp-content\/uploads\/2026\/01\/ESP32-TM1637-Display-Temperature-Fahrenheit.jpg\" data-width=\"750\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2026\/01\/ESP32-TM1637-Display-Temperature-Fahrenheit.jpg?ssl=1\" data-amp-layout=\"responsive\"\/><\/figure><\/div><\/div><\/div><\/div><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Wrapping Up<\/h2>\n\n\n\n<p>In this tutorial, you learned how to create a temperature display with the ESP32 and the TM1637 display. We got the data about temperature from the WeatherAPI. That API provides lots of information about the weather in your choosen location. You can easily adjust this project to display more data from the API.<\/p>\n\n\n\n<p>We have similar tutorials that you may also like:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/randomnerdtutorials.com\/esp32-esp8266-dht-temperature-and-humidity-oled-display\/\">ESP32\/ESP8266: DHT Temperature and Humidity Readings in OLED Display<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/randomnerdtutorials.com\/esp32-tft-lvgl-weather-station\/\">ESP32 TFT with LVGL: Weather Station (Description, Temperature, Humidity)<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/randomnerdtutorials.com\/esp32-bme680-web-server-arduino\/\">ESP32 Web Server with BME680 \u2013 Weather Station (Arduino IDE)<\/a><\/li>\n<\/ul>\n\n\n\n<p>Finally, if you&#8217;d like to learn and build more with the ESP32, check out our resources:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/randomnerdtutorials.com\/learn-esp32-with-arduino-ide\/\"><strong>Learn ESP32 with Arduino IDE (eBook)<\/strong><\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/randomnerdtutorials.com\/build-web-servers-esp32-esp8266-ebook\/\" title=\"\">Build Web Servers with ESP32 and ESP8266 eBook<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/randomnerdtutorials.com\/smart-home-ebook\/\" title=\"\">SMART HOME with Raspberry Pi, ESP32, and ESP8266<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/randomnerdtutorials.com\/projects-esp32\/\">All our ESP32 Projects and Guides<\/a><\/li>\n<\/ul>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In this project, we&#8217;ll display the current temperature for your city (or any city of your choice) on the TM1637 7-segment display. To get the temperature, we&#8217;ll make HTTP requests &#8230; <\/p>\n<p class=\"read-more-container\"><a title=\"ESP32: Temperature on TM1637 7-Segment Display (WeatherAPI)\" class=\"read-more button\" href=\"https:\/\/randomnerdtutorials.com\/esp32-temperature-tm1637-display\/#more-189962\" aria-label=\"Read more about ESP32: Temperature on TM1637 7-Segment Display (WeatherAPI)\">CONTINUE READING \u00bb<\/a><\/p>\n","protected":false},"author":5,"featured_media":189971,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[276,281,277,299,264],"tags":[],"class_list":["post-189962","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-esp32","category-esp32-project","category-esp32-arduino-ide","category-0-esp32","category-project"],"aioseo_notices":[],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2026\/02\/ESP32-Temperature-Display-TM1637.jpg?fit=1920%2C1080&quality=100&strip=all&ssl=1","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/randomnerdtutorials.com\/wp-json\/wp\/v2\/posts\/189962","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/randomnerdtutorials.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/randomnerdtutorials.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/randomnerdtutorials.com\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/randomnerdtutorials.com\/wp-json\/wp\/v2\/comments?post=189962"}],"version-history":[{"count":8,"href":"https:\/\/randomnerdtutorials.com\/wp-json\/wp\/v2\/posts\/189962\/revisions"}],"predecessor-version":[{"id":190922,"href":"https:\/\/randomnerdtutorials.com\/wp-json\/wp\/v2\/posts\/189962\/revisions\/190922"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/randomnerdtutorials.com\/wp-json\/wp\/v2\/media\/189971"}],"wp:attachment":[{"href":"https:\/\/randomnerdtutorials.com\/wp-json\/wp\/v2\/media?parent=189962"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/randomnerdtutorials.com\/wp-json\/wp\/v2\/categories?post=189962"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/randomnerdtutorials.com\/wp-json\/wp\/v2\/tags?post=189962"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}