{"id":52295,"date":"2026-11-01T10:50:53","date_gmt":"2026-11-01T10:50:53","guid":{"rendered":"http:\/\/siratek.net\/index.php\/tutorials\/mini-weather-station\/"},"modified":"2026-11-01T10:50:53","modified_gmt":"2026-11-01T10:50:53","slug":"mini-weather-station","status":"publish","type":"siratek_tutorial","link":"https:\/\/siratek.net\/index.php\/tutorials\/mini-weather-station\/","title":{"rendered":"Project, a Mini Weather Station"},"content":{"rendered":"<body><p><\/p>\n<h2>What you will build<\/h2>\n<p>A small screen showing temperature, humidity and air pressure, with a three-hour pressure trend that tells you whether the weather is turning.<\/p>\n<p>Two sensors and a display, which does not sound like much. What makes it a project rather than three tutorials stacked together is that the three devices <strong>share one I2C bus and one small Arduino<\/strong>, and making that work teaches the things every multi-sensor build needs: address clashes, memory pressure, and the fact that one of your three parts is 3.3 V and the others are not.<\/p>\n<h2>Before you begin<\/h2>\n<h3>Parts<\/h3>\n<table>\n<thead>\n<tr>\n<th>Part<\/th>\n<th>Siratek product<\/th>\n<th>Its own tutorial<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Arduino Uno<\/td>\n<td>2219<\/td>\n<td><em>Getting Started with Arduino Uno<\/em><\/td>\n<\/tr>\n<tr>\n<td>BMP280 pressure sensor<\/td>\n<td>2910<\/td>\n<td><em>Pressure and Altitude with a BMP280<\/em><\/td>\n<\/tr>\n<tr>\n<td>DHT11 temperature and humidity<\/td>\n<td>2837<\/td>\n<td><em>Read Temperature and Humidity with DHT11<\/em><\/td>\n<\/tr>\n<tr>\n<td>0.96 inch OLED display<\/td>\n<td>2459<\/td>\n<td><em>A 0.96 inch OLED Display<\/em><\/td>\n<\/tr>\n<tr>\n<td>Breadboard and jumper wires<\/td>\n<td><\/td>\n<td><em>Using a Breadboard<\/em><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>A <strong>logic level converter<\/strong>, Siratek 8440, is strongly recommended. See below.<\/p>\n<h3>Three things to settle before wiring<\/h3>\n<p><strong>The BMP280 is 3.3 V only.<\/strong> It has no regulator and no level shifter, so its <code>VCC<\/code> goes to the Uno\u2019s <code>3.3V<\/code> pin. The OLED has a regulator and takes 5 V. Two devices on one bus wanting different supplies is the first real integration problem in this library, and <em>Mixing 3.3 V and 5 V Safely<\/em> is the page that addresses it.<\/p>\n<p>For a bench build, powering the BMP280 from <code>3.3V<\/code> and sharing the bus works, and is out of specification for the reasons that page explains. For something you will keep, put a level converter between the Uno and the BMP280.<\/p>\n<p><strong>The addresses do not clash, and you should confirm it anyway.<\/strong> The OLED answers at 0x3C and the BMP280 at 0x76. Run the bus scanner before building anything; thirty seconds now saves an hour later.<\/p>\n<p><strong>The DHT11 is not on the bus at all.<\/strong> It has its own one-wire protocol and takes a digital pin of its own. Only two of the three devices share <code>A4<\/code> and <code>A5<\/code>.<\/p>\n<h3>The memory problem, which decides the design<\/h3>\n<p>This project is the first in the library that genuinely runs out of RAM on an Uno, and it is worth understanding before you write anything.<\/p>\n<table>\n<thead>\n<tr>\n<th>Consumer<\/th>\n<th>Approximate RAM<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Adafruit SSD1306 screen buffer<\/td>\n<td>1024 bytes<\/td>\n<\/tr>\n<tr>\n<td>Adafruit BMP280 and Unified Sensor<\/td>\n<td>a couple of hundred<\/td>\n<\/tr>\n<tr>\n<td>DHT library<\/td>\n<td>modest<\/td>\n<\/tr>\n<tr>\n<td>Everything else in your sketch<\/td>\n<td>what is left of 2048<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>So <strong>the display alone takes half the board\u2019s memory<\/strong> before your variables exist. Add the three-hour history the trend needs and it gets tight.<\/p>\n<p>Three habits make it fit, and all three appear in the sketch below:<\/p>\n<ul>\n<li><strong>Wrap every fixed string in <code>F()<\/code><\/strong>, which keeps it in program memory.<\/li>\n<li><strong>Store the pressure history as <code>int<\/code>, not <code>float<\/code>.<\/strong> Tenths of a hectopascal in a 16-bit integer is accurate enough and halves the array.<\/li>\n<li><strong>Sample every ten minutes, not every second.<\/strong> Eighteen samples cover three hours; 10,800 would not fit and would tell you nothing more.<\/li>\n<\/ul>\n<p>If the IDE warns about low memory, take it seriously here. It is the one project in this library where that warning is routinely the actual cause of trouble.<\/p>\n<h2>How it works<\/h2>\n<p>The sketch has three jobs running at different rates, and none of them may block the others:<\/p>\n<table>\n<thead>\n<tr>\n<th>Job<\/th>\n<th>How often<\/th>\n<th>Why<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Read the DHT11<\/td>\n<td>Every 2 seconds<\/td>\n<td>Its minimum interval<\/td>\n<\/tr>\n<tr>\n<td>Read the BMP280<\/td>\n<td>Every 2 seconds<\/td>\n<td>Fast; no reason to wait<\/td>\n<\/tr>\n<tr>\n<td>Redraw the screen<\/td>\n<td>Every 2 seconds<\/td>\n<td>Matches the readings<\/td>\n<\/tr>\n<tr>\n<td>Record a pressure sample<\/td>\n<td>Every 10 minutes<\/td>\n<td>Eighteen of them is three hours<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>All four run from the <code>millis()<\/code> pattern. There is no <code>delay()<\/code> anywhere in <code>loop()<\/code>.<\/p>\n<p>The <strong>trend<\/strong> is the difference between the newest sample and the oldest, over three hours. The conventional threshold is 1.5 hPa: more than that falling suggests deteriorating weather, more than that rising suggests it is clearing. Those are meteorological conventions, not something the sensor knows.<\/p>\n<h2>Build it in stages<\/h2>\n<h3>Stage 1: scan the bus<\/h3>\n<p>Before anything else, wire power and the two I2C lines to the OLED and the BMP280, and run the scanner from <em>I2C, Two Wires and Many Devices<\/em>.<\/p>\n<p>You should see <strong>0x3C<\/strong> and <strong>0x76<\/strong>. If you see only one, that device is wired and the other is not. If you see neither, <code>SDA<\/code> and <code>SCL<\/code> are swapped.<\/p>\n<p>Do not proceed until both appear. Everything after this depends on it.<\/p>\n<h3>Stage 2: the display alone<\/h3>\n<p>Get \u201cSiratek\u201d onto the screen with the OLED tutorial\u2019s example. That proves the display, the libraries and the memory situation in one step.<\/p>\n<p>Note the memory figure the IDE reports. You will watch it fall as the project grows.<\/p>\n<h3>Stage 3: one sensor at a time<\/h3>\n<p>Add the BMP280 and print pressure to the serial monitor. Then add the DHT11 and print temperature and humidity. Serial first, screen second: a reading that is wrong is much easier to see as a number than as part of a layout.<\/p>\n<h3>Stage 4: put it together<\/h3>\n<p>The complete sketch below.<\/p>\n<h2>Pin reference<\/h2>\n<table>\n<thead>\n<tr>\n<th>Device<\/th>\n<th>Pin<\/th>\n<th>Connect to<\/th>\n<th>Notes<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>OLED<\/td>\n<td><code>GND<\/code><\/td>\n<td>Uno <code>GND<\/code><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>OLED<\/td>\n<td><code>VDD<\/code><\/td>\n<td>Uno <code>5V<\/code><\/td>\n<td>It has a regulator<\/td>\n<\/tr>\n<tr>\n<td>OLED<\/td>\n<td><code>SCK<\/code><\/td>\n<td>Uno <code>A5<\/code><\/td>\n<td>I2C clock, despite the name<\/td>\n<\/tr>\n<tr>\n<td>OLED<\/td>\n<td><code>SDA<\/code><\/td>\n<td>Uno <code>A4<\/code><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>BMP280<\/td>\n<td><code>GND<\/code><\/td>\n<td>Uno <code>GND<\/code><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>BMP280<\/td>\n<td><code>VCC<\/code><\/td>\n<td>Uno <strong><code>3.3V<\/code><\/strong><\/td>\n<td><strong>Never 5 V<\/strong><\/td>\n<\/tr>\n<tr>\n<td>BMP280<\/td>\n<td><code>SCL<\/code><\/td>\n<td>Uno <code>A5<\/code><\/td>\n<td>Shared bus<\/td>\n<\/tr>\n<tr>\n<td>BMP280<\/td>\n<td><code>SDA<\/code><\/td>\n<td>Uno <code>A4<\/code><\/td>\n<td>Shared bus<\/td>\n<\/tr>\n<tr>\n<td>DHT11<\/td>\n<td><code>+<\/code><\/td>\n<td>Uno <code>5V<\/code><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>DHT11<\/td>\n<td><code>OUT<\/code><\/td>\n<td>Uno <code>D2<\/code><\/td>\n<td>Not on the bus<\/td>\n<\/tr>\n<tr>\n<td>DHT11<\/td>\n<td><code>-<\/code><\/td>\n<td>Uno <code>GND<\/code><\/td>\n<td><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<figure class=\"siratek-tutorial-figure\"><img decoding=\"async\" src=\"http:\/\/siratek.net\/wp-content\/uploads\/2026\/11\/mini-weather-station-wiring.svg\" alt=\"A weather station with a BMP280 and an OLED sharing the I2C bus, a DHT11 on its own pin, and the BMP280 powered from 3.3 volts while the display takes 5\" loading=\"lazy\"><figcaption>Two devices on one bus at different supply voltages, and a third that is not on the bus at all.<\/figcaption><\/figure>\n<h2>The complete sketch<\/h2>\n<pre><code>\/\/ Siratek: a mini weather station.\n\/\/ BMP280 and OLED share the I2C bus; the DHT11 has its own pin.\n\n#include &lt;Wire.h&gt;\n#include &lt;Adafruit_GFX.h&gt;\n#include &lt;Adafruit_SSD1306.h&gt;\n#include &lt;Adafruit_BMP280.h&gt;\n#include &lt;DHT.h&gt;\n\nAdafruit_SSD1306 display(128, 64, &amp;Wire, -1);\nAdafruit_BMP280 bmp;\nDHT dht(2, DHT11);\n\n\/\/ Eighteen samples at ten minutes is three hours.\nconst int HISTORY = 18;\nint pressureTenths[HISTORY];      \/\/ hPa x 10, as int to save RAM\nint samples = 0;\n\nconst unsigned long READ_EVERY   = 2000;\nconst unsigned long SAMPLE_EVERY = 600000UL;\n\nunsigned long lastRead = 0;\nunsigned long lastSample = 0;\n\nfloat temperature = NAN;\nfloat humidity = NAN;\nfloat pressure = NAN;\n\nvoid setup() {\n  Serial.begin(9600);\n\n  if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {\n    Serial.println(F(\"no display at 0x3C\"));\n    for (;;) { delay(100); }\n  }\n  display.clearDisplay();\n  display.setTextColor(SSD1306_WHITE);\n  display.setTextSize(1);\n  display.setCursor(0, 0);\n  display.println(F(\"Siratek\"));\n  display.println(F(\"starting...\"));\n  display.display();\n\n  if (!bmp.begin(0x76)) {\n    Serial.println(F(\"no BMP280 at 0x76: check VCC is on 3.3V\"));\n  }\n\n  dht.begin();\n\n  lastRead = millis() - READ_EVERY;\n  lastSample = millis() - SAMPLE_EVERY;\n}\n\nvoid takeReadings() {\n  float t = dht.readTemperature();\n  float h = dht.readHumidity();\n\n  \/\/ Keep the last good value rather than displaying nan.\n  if (!isnan(t)) temperature = t;\n  if (!isnan(h)) humidity = h;\n\n  pressure = bmp.readPressure() \/ 100.0F;\n}\n\nvoid recordSample() {\n  for (int i = HISTORY - 1; i &gt; 0; i--) {\n    pressureTenths[i] = pressureTenths[i - 1];\n  }\n  pressureTenths[0] = (int) (pressure * 10.0F);\n\n  if (samples &lt; HISTORY) {\n    samples++;\n  }\n}\n\n\/\/ Returns the three-hour change in hPa, or NAN while still collecting.\nfloat trend() {\n  if (samples &lt; HISTORY) {\n    return NAN;\n  }\n  return (pressureTenths[0] - pressureTenths[HISTORY - 1]) \/ 10.0F;\n}\n\nvoid draw() {\n  display.clearDisplay();\n\n  display.setTextSize(1);\n  display.setCursor(0, 0);\n  display.print(F(\"Siratek\"));\n\n  display.setTextSize(2);\n  display.setCursor(0, 14);\n  if (isnan(temperature)) {\n    display.print(F(\"--\"));\n  } else {\n    display.print(temperature, 1);\n  }\n  display.setTextSize(1);\n  display.print(F(\" C\"));\n\n  display.setTextSize(1);\n  display.setCursor(0, 36);\n  display.print(F(\"humidity  \"));\n  if (isnan(humidity)) {\n    display.print(F(\"--\"));\n  } else {\n    display.print(humidity, 0);\n  }\n  display.print(F(\" %\"));\n\n  display.setCursor(0, 46);\n  display.print(F(\"pressure  \"));\n  display.print(pressure, 1);\n\n  display.setCursor(0, 56);\n  float change = trend();\n  if (isnan(change)) {\n    display.print(F(\"collecting history\"));\n  } else if (change &lt; -1.5) {\n    display.print(F(\"falling: unsettled\"));\n  } else if (change &gt; 1.5) {\n    display.print(F(\"rising: clearing\"));\n  } else {\n    display.print(F(\"steady\"));\n  }\n\n  display.display();\n}\n\nvoid loop() {\n  if (millis() - lastRead &gt;= READ_EVERY) {\n    lastRead = millis();\n    takeReadings();\n    draw();\n  }\n\n  if (millis() - lastSample &gt;= SAMPLE_EVERY) {\n    lastSample = millis();\n    recordSample();\n\n    Serial.print(F(\"sample \"));\n    Serial.print(samples);\n    Serial.print(F(\"\/\"));\n    Serial.print(HISTORY);\n    Serial.print(F(\"  \"));\n    Serial.println(pressure, 1);\n  }\n}<\/code><\/pre>\n<h3>Three decisions worth explaining<\/h3>\n<p><strong>Last good values are kept.<\/strong> A DHT11 read fails occasionally, and a screen showing <code>nan<\/code> looks broken. Keeping the previous reading and only replacing it on success means a momentary failure is invisible, which is correct for a display that updates every two seconds.<\/p>\n<p><strong><code>clearDisplay()<\/code> is used freely.<\/strong> That is the opposite of the advice in the LCD tutorial, and right for the reason given there: on an OLED it clears a RAM buffer, and the screen only changes when <code>display()<\/code> is called, so there is no flicker.<\/p>\n<p><strong>The trend says \u201ccollecting history\u201d for three hours.<\/strong> A project that silently shows \u201csteady\u201d before it has any data is lying. Saying what it is doing costs one branch.<\/p>\n<h2>Testing it<\/h2>\n<table>\n<thead>\n<tr>\n<th>Try this<\/th>\n<th>It should<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Breathe gently near the DHT11<\/td>\n<td>Humidity climbs several percent, then falls back<\/td>\n<\/tr>\n<tr>\n<td>Hold the BMP280 and lift it a metre<\/td>\n<td>Pressure falls by about 0.1 hPa<\/td>\n<\/tr>\n<tr>\n<td>Disconnect the DHT11<\/td>\n<td>Temperature freezes at its last value, everything else carries on<\/td>\n<\/tr>\n<tr>\n<td>Leave it three hours<\/td>\n<td>The trend line changes from \u201ccollecting history\u201d<\/td>\n<\/tr>\n<tr>\n<td>Check the IDE\u2019s memory report<\/td>\n<td>Comfortably above 200 bytes free<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>The third is the one worth doing deliberately. Pulling a wire and watching the rest of the project continue is how you find out whether you built something robust or something brittle.<\/p>\n<h2>Making it yours<\/h2>\n<ul>\n<li><strong>Log it.<\/strong> Add the SD card module and write a line every ten minutes alongside the sample. The data logger project does exactly this, and a month of pressure plotted in a spreadsheet is genuinely interesting.<\/li>\n<li><strong>A real timestamp.<\/strong> The DS3231 gives each reading a date and time rather than an elapsed count.<\/li>\n<li><strong>Swap the DHT11 for a DHT22.<\/strong> One word in the constructor, and you get a tenth of a degree instead of whole numbers. <em>DHT22, Better Accuracy Than the DHT11<\/em> covers it.<\/li>\n<li><strong>Move it to an ESP32.<\/strong> Everything becomes 3.3 V so the level question disappears, the memory pressure vanishes, and the MQTT project puts the readings on your phone.<\/li>\n<\/ul>\n<p>That last one is the honest upgrade path. This project fits on an Uno, and only just.<\/p>\n<h2>Troubleshooting<\/h2>\n<table>\n<thead>\n<tr>\n<th>Symptom<\/th>\n<th>Likely cause<\/th>\n<th>Check or fix<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Scanner finds nothing<\/td>\n<td><code>SDA<\/code> and <code>SCL<\/code> swapped<\/td>\n<td><code>SDA<\/code> is <code>A4<\/code>, <code>SCL<\/code> is <code>A5<\/code><\/td>\n<\/tr>\n<tr>\n<td>Scanner finds only 0x3C<\/td>\n<td>BMP280 not powered<\/td>\n<td>Check <code>VCC<\/code> is on <code>3.3V<\/code><\/td>\n<\/tr>\n<tr>\n<td>BMP280 dead after working<\/td>\n<td>5 V applied to it<\/td>\n<td>That board is 3.3 V only<\/td>\n<\/tr>\n<tr>\n<td>Display blank<\/td>\n<td><code>display()<\/code> not called, or wrong address<\/td>\n<td>Both are in <code>setup()<\/code><\/td>\n<\/tr>\n<tr>\n<td>Garbled display, random resets<\/td>\n<td>Out of RAM<\/td>\n<td><code>F()<\/code> on every string; keep history small<\/td>\n<\/tr>\n<tr>\n<td>Temperature shows <code>--<\/code><\/td>\n<td>DHT11 read failing<\/td>\n<td>Check the 2 second interval and the wiring<\/td>\n<\/tr>\n<tr>\n<td>Pressure reads 0<\/td>\n<td>BMP280 not found<\/td>\n<td>Look at the startup message<\/td>\n<\/tr>\n<tr>\n<td>Trend never appears<\/td>\n<td>Fewer than 18 samples yet<\/td>\n<td>Three hours at ten minutes each<\/td>\n<\/tr>\n<tr>\n<td>Readings freeze<\/td>\n<td>A <code>delay()<\/code> in <code>loop()<\/code><\/td>\n<td>Everything is on <code>millis()<\/code><\/td>\n<\/tr>\n<tr>\n<td>Works alone, fails together<\/td>\n<td>Address clash or supply<\/td>\n<td>Scan with both connected<\/td>\n<\/tr>\n<tr>\n<td>Temperature reads a degree or two high<\/td>\n<td>Self-heating, and the board nearby<\/td>\n<td>Mount the DHT11 away from the Uno<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>Sources and attribution<\/h2>\n<p>All text, wiring guidance and code in this project are original Siratek work.<\/p>\n<ul>\n<li>Component behaviour is as described in <em>Pressure and Altitude with a BMP280<\/em>, <em>Read Temperature and Humidity with DHT11<\/em> and <em>A 0.96 inch OLED Display<\/em>, including the BMP280\u2019s 3.3 V supply limit, the DHT11\u2019s two-second interval and the display\u2019s 1024-byte RAM buffer.<\/li>\n<li>The three-hour window and the 1.5 hPa threshold are conventional meteorological practice rather than properties of the sensor.<\/li>\n<\/ul>\n<p>No third-party tutorial text, diagrams, photographs or code has been reproduced here.<\/p>\n<p><\/p>\n<\/body>","protected":false},"excerpt":{"rendered":"<p>A small screen showing temperature, humidity and air pressure, with a three-hour pressure trend that tells you whether the weather is turning.<\/p>\n","protected":false},"featured_media":0,"template":"","siratek_tutorial_level":[],"class_list":["post-52295","siratek_tutorial","type-siratek_tutorial","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Project, a Mini Weather Station - siratek<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"http:\/\/siratek.net\/index.php\/tutorials\/mini-weather-station\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Project, a Mini Weather Station - siratek\" \/>\n<meta property=\"og:description\" content=\"A small screen showing temperature, humidity and air pressure, with a three-hour pressure trend that tells you whether the weather is turning.\" \/>\n<meta property=\"og:url\" content=\"http:\/\/siratek.net\/index.php\/tutorials\/mini-weather-station\/\" \/>\n<meta property=\"og:site_name\" content=\"siratek\" \/>\n<meta property=\"og:image\" content=\"http:\/\/siratek.net\/wp-content\/uploads\/2026\/11\/mini-weather-station-wiring.svg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"http:\\\/\\\/siratek.net\\\/index.php\\\/tutorials\\\/mini-weather-station\\\/\",\"url\":\"http:\\\/\\\/siratek.net\\\/index.php\\\/tutorials\\\/mini-weather-station\\\/\",\"name\":\"Project, a Mini Weather Station - siratek\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/siratek.net\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"http:\\\/\\\/siratek.net\\\/index.php\\\/tutorials\\\/mini-weather-station\\\/#primaryimage\"},\"image\":{\"@id\":\"http:\\\/\\\/siratek.net\\\/index.php\\\/tutorials\\\/mini-weather-station\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/siratek.net\\\/wp-content\\\/uploads\\\/2026\\\/11\\\/mini-weather-station-wiring.svg\",\"datePublished\":\"2026-11-01T10:50:53+00:00\",\"breadcrumb\":{\"@id\":\"http:\\\/\\\/siratek.net\\\/index.php\\\/tutorials\\\/mini-weather-station\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"http:\\\/\\\/siratek.net\\\/index.php\\\/tutorials\\\/mini-weather-station\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"http:\\\/\\\/siratek.net\\\/index.php\\\/tutorials\\\/mini-weather-station\\\/#primaryimage\",\"url\":\"https:\\\/\\\/siratek.net\\\/wp-content\\\/uploads\\\/2026\\\/11\\\/mini-weather-station-wiring.svg\",\"contentUrl\":\"https:\\\/\\\/siratek.net\\\/wp-content\\\/uploads\\\/2026\\\/11\\\/mini-weather-station-wiring.svg\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"http:\\\/\\\/siratek.net\\\/index.php\\\/tutorials\\\/mini-weather-station\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/siratek.net\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Tutorials\",\"item\":\"https:\\\/\\\/siratek.net\\\/index.php\\\/tutorials\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Project, a Mini Weather Station\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/siratek.net\\\/#website\",\"url\":\"https:\\\/\\\/siratek.net\\\/\",\"name\":\"siratek\",\"description\":\"Your Best Electronic Retail Shop\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/siratek.net\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Project, a Mini Weather Station - siratek","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"http:\/\/siratek.net\/index.php\/tutorials\/mini-weather-station\/","og_locale":"en_US","og_type":"article","og_title":"Project, a Mini Weather Station - siratek","og_description":"A small screen showing temperature, humidity and air pressure, with a three-hour pressure trend that tells you whether the weather is turning.","og_url":"http:\/\/siratek.net\/index.php\/tutorials\/mini-weather-station\/","og_site_name":"siratek","og_image":[{"url":"http:\/\/siratek.net\/wp-content\/uploads\/2026\/11\/mini-weather-station-wiring.svg","type":"","width":"","height":""}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"http:\/\/siratek.net\/index.php\/tutorials\/mini-weather-station\/","url":"http:\/\/siratek.net\/index.php\/tutorials\/mini-weather-station\/","name":"Project, a Mini Weather Station - siratek","isPartOf":{"@id":"https:\/\/siratek.net\/#website"},"primaryImageOfPage":{"@id":"http:\/\/siratek.net\/index.php\/tutorials\/mini-weather-station\/#primaryimage"},"image":{"@id":"http:\/\/siratek.net\/index.php\/tutorials\/mini-weather-station\/#primaryimage"},"thumbnailUrl":"http:\/\/siratek.net\/wp-content\/uploads\/2026\/11\/mini-weather-station-wiring.svg","datePublished":"2026-11-01T10:50:53+00:00","breadcrumb":{"@id":"http:\/\/siratek.net\/index.php\/tutorials\/mini-weather-station\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["http:\/\/siratek.net\/index.php\/tutorials\/mini-weather-station\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"http:\/\/siratek.net\/index.php\/tutorials\/mini-weather-station\/#primaryimage","url":"https:\/\/siratek.net\/wp-content\/uploads\/2026\/11\/mini-weather-station-wiring.svg","contentUrl":"https:\/\/siratek.net\/wp-content\/uploads\/2026\/11\/mini-weather-station-wiring.svg"},{"@type":"BreadcrumbList","@id":"http:\/\/siratek.net\/index.php\/tutorials\/mini-weather-station\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/siratek.net\/"},{"@type":"ListItem","position":2,"name":"Tutorials","item":"https:\/\/siratek.net\/index.php\/tutorials\/"},{"@type":"ListItem","position":3,"name":"Project, a Mini Weather Station"}]},{"@type":"WebSite","@id":"https:\/\/siratek.net\/#website","url":"https:\/\/siratek.net\/","name":"siratek","description":"Your Best Electronic Retail Shop","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/siratek.net\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}},"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/siratek.net\/index.php\/wp-json\/wp\/v2\/siratek_tutorial\/52295","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/siratek.net\/index.php\/wp-json\/wp\/v2\/siratek_tutorial"}],"about":[{"href":"https:\/\/siratek.net\/index.php\/wp-json\/wp\/v2\/types\/siratek_tutorial"}],"version-history":[{"count":0,"href":"https:\/\/siratek.net\/index.php\/wp-json\/wp\/v2\/siratek_tutorial\/52295\/revisions"}],"wp:attachment":[{"href":"https:\/\/siratek.net\/index.php\/wp-json\/wp\/v2\/media?parent=52295"}],"wp:term":[{"taxonomy":"siratek_tutorial_level","embeddable":true,"href":"https:\/\/siratek.net\/index.php\/wp-json\/wp\/v2\/siratek_tutorial_level?post=52295"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}