Jak doma nebo v kanceláři jednoduše měřit teplotu. Přesný online teploměr s appkou, upozorněním a historií měření.
- September 27 2022
- ESP32, ESP8266, NodeMCU , Wemos, RTLDuino...
- 12198x Přečteno
Jak doma měřit teplotu. Asi častá otázka lidí v České republice. V tomto velmi detailním návodu vám vysvětlím, z čeho takový teploměr složit, co je potřeba a zveřejním zde i kód, který potřebujete. Výsledkem bude bateriově napájený teploměr a vlhkoměr s přenosem dat na web. Aktuální teplotu můžete mít v aplikaci v telefonu, možnost upozornění a dlouhodobá historie měření. Data se přenáší přes Wi-Fi.
Tento článek je určen úplným začátečníkům. Krok za krokem, jak jednoduše měřit teplotu (a taky vlhkost) v bytě, kanceláři nebo garáži.
OBSAH
Co potřebuju koupit
Jaký program potřebuju do počítače
Složení teploměru ze zakoupených komponent
Data na web, aplikace do telefonu
Programování
Výsledek
Zabezpečení dat
Problémy
Umístění
Kód pro řídící desku
Extra TIP
Co potřebuju koupit
Řídící deska - https://www.laskakit.cz/laskakit-meteo-mini/?variantId=10473
Programátor - https://www.laskakit.cz/laskakit-ch9102-programmer-usb-c--microusb--uart/
Čidlo teploty a vlhkosti - https://www.laskakit.cz/laskakit-sht40-senzor-teploty-a-vlhkosti-vzduchu/
Propojovací kabel (5cm) - https://www.laskakit.cz/--sup--stemma-qt--qwiic-jst-sh-4-pin-kabel-5cm/
Akumulátor (1500mAh) - https://www.laskakit.cz/baterie-li-po-3-7v-1500mah-lipo/
Jaký program potřebuju do počítače
Stáhněte si prosím tento program https://www.arduino.cc/en/software. Pokud máte windows, zvolte variantu Arduino IDE 2.0.0; Windows Win 10 and newer, 64 bits (nebo novější).
Po instalaci Arduino IDE je potřeba nainstalovat knihovny pro řídící desku.
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
Teď upravíme nastavení.
Poté ještě nainstalujeme potřebné knihovny. To jsou knihovny, díky kterým dokážeme jednodušeji pracovat např. s čidly..
Složení teploměru ze zakoupených komponent
Řídící deska - https://www.laskakit.cz/laskakit-meteo-mini/?variantId=10473
Programátor - https://www.laskakit.cz/laskakit-ch9102-programmer-usb-c--microusb--uart/
Čidlo teploty a vlhkosti - https://www.laskakit.cz/laskakit-sht40-senzor-teploty-a-vlhkosti-vzduchu/
Propojovací kabel (5cm) - https://www.laskakit.cz/--sup--stemma-qt--qwiic-jst-sh-4-pin-kabel-5cm/
Akumulátor (1500mAh) - https://www.laskakit.cz/baterie-li-po-3-7v-1500mah-lipo/
Stavba vlastního teploměru je díky stavebnicovému systému velmi jednoduchá. Čidlo teploty a vlhkosti se připojí přes kabel k řídící desce - MeteoMini.
U připojení čidel se nelze splést. Kabel obsahuje konektor, který má zámek. Díky tomu si nezničíte ani desku, ani čidlo.
Tu pak připojíte na zakoupenou baterku. Baterku připojíte ke konektoru s názvem "Battery". Konektor má opět zámek, takže jej nemůžete otočit.
Na desce budete muset udělat dvě jednoduché úpravy a to zapájení dvou mostů - dvou plošek na desce.
První povoluje měření napětí akumulátoru (ADC, tato propojka je na zadní straně desky), druhý pak připojí odpory na komunikační sběrnici (název I2C_PULL-UP na horní straně desky, viz obrázek níže) - těm se říká pull-up rezistory a jsou nutné pro správnou funkci celého zařízení.
Deska se nabíjí přes USB-C konektor z klasického USB-C adaptéru (například z telefonu).
Data na web, aplikace do telefonu
K ukládání teploty a vlhkosti z našeho jednoduchého online teploměru použijeme službu tmep.cz. To je služba, která se stará u ukládání, interpretaci a vizualizaci vašich dat. Navíc kromě hezkého zobrazení grafů umí dlouhodobé zobrazní statistik, upozornění od ČHMÚ, porovnání teplot z předchozího dne aj.
Můžete si nainstalovat i aplikaci do telefonu a nastavit widget. Aktuální teplotu a vlhkost tak budete mít na hlavní straně vašeho menu v telefonu.
Registrace
Moje menu, tady přidáme nové čidlo
Vyplníme formulář
Tím bychom měli nastavené čidlo pro tento jednoduchý Wi-Fi teploměr.
Programování
Programátor připojte k desce, jak je zobrazeno na obrázku výše. Přepínač na programátoru musí být přepnutý do pozice 3V3.
K programování potřebujete řídící desku Meteo Mini a programátor. A také počítač s nainstalovaným programem Arduino IDE.
Otevřete Arduino IDE a vložte tento kód.
Kód pro tento jednoduchý teploměr je ke stažení ZDE.
Vyhledejte tuto část a vyplňte: Název vaší Wi-Fi sítě, heslo a doménu, kterou jste si vytvořili na webu tmep.cz
Vyberte správný port, ke kterému je programátor připojen. Pokud vidíte více portů a nevíte, který je ten správný odpojte USB kabel z programátoru a podívejte se, které porty tam zůstaly. Po opětovném zapojení programátoru zjistíte, který port je nově v seznamu.
Ve zbylé části kódu se pak provádí inicializace desky a čidel, měření, a odeslání dat. Do této části, pokud nechcete experimentovat, nesmíte zasahovat.
Částečné vysvětlení kódu je na konci článku.
Kód pak jednoduše nahrajete pomocí jednoho tlačítka v Arduino IDE.
Pozor, přeložení kódu a nahrávání může trvat i několik minut.
Výsledek
Pokud se vše podařilo, na své doméně tmep.cz uvidíte vaše odeslaná data.
Denní statistiky
Porovnání s předchozím dnem
nebo například denní, měsíční či roční statistiky.
A ještě napětí na baterii
Aplikaci na telefon nainstalujete z https://play.google.com/store/apps/details?id=cz.tmep nebo https://apps.apple.com/cz/app/tmep/id1609846309?l=cs#?platform=iphone
Po otevření aplikace stačí naskenovat QR kód.
Celý koncept tohoto jednoduchého online tepoměru je velmi úsporný a na zmíněný akumulátor 1500 mAh vám poběží celé týdny. V případě nižšího napětí akumulátoru budete ale díky tmep.cz včas informováni e-mailem.
Zabezpečení dat - proti zápisu i čtení
Samozřejmostí musí být i ochrana dat - jak před zápisem, tak i čtením. Samozřejmě, někdo, kdo má venkovní čidlo asi nemusí nutně zaheslovat stránku před čtením - naopak je dobré, když jej sdílí třeba do TMEP mapy.
Naopak byste měli chránit data z vnitřních prostor. Proč? Viz má přednáška z LinuxDays.
A jak je to u TMEP?
Začneme ochranou proti přístupu dat. Statistiky mohou být zobrazeny pouze přihlášenému vlastníkovi.
A ochrana proti zápisu?
Tady máme řekněme 3 úrovně.
První úrovní je unikátní GUID, které uživatel nastaví svému čidlu. Pokud se GUID neshoduje, hodnota se zahodí.
Další je filtrování příchozích dat na základě IP adresy
A poslední je ochrana unikátní doménou. Pokud někdo zná vaši doménu, GUID, bude mít stejnou IP adresu (sdílenou) může teoreticky zapsat falešná data. I na tohle TMEP myslí a přidal tuto funkci.
V nastavení čidla je vygenerována i unikátní doména. Pokud na tuto doménu pošlete svá data (stejné GUID), pak tato náhodou doména slouží pouze pro zápis dat. Pro čtení a vizualizaci se pak používá DOMENA.tmep.cz
Problémy
A když se objeví nějaký problém?
1) zapomněli jste nahrát knihovny pro řídící desku (projděte znovu návod)
2) zapomněli jste nahrát knihovny pro čidla a měření napětí (projděte znovu návod)
3) vypínač na řídící desce. Ten musí být v poloze ON. Pak jsou řídící deska i čidla napájena z připojené baterie.
4) baterie je vybitá. Připojte USB-C nabíječku do desky.
5) špatně vyplněný formulář na tmep.cz (např. guid čidel)
K odhalení chyby může pomoci:
- Výstup ze Serial Monitoru
- Debugovací výstup u TMEP.cz
Formát přijatých dat.
Umístění
Poslední kapitolou je umístění samotného čidla.
Prakticky, aby měřený údaj o teplotě a vlhkosti, byl co nejpřesnější, je nutné dodržet několik základních a všeobecných pravidel.
Čidlo byste neměli umístit do průvahu, k blízkosti topných těles (topení i těch skrytých jako komín) a vyhnout byste se měli také umístění v místnosti, kam přímo dopadá sluníčko. Neumisťujte čidlo přímo na zeď - ta bývá obvykle chladnější než vzduch v místnosti, stačí pár centimetrů od ní.
Esteticky, aby čidlo nerušilo estetický vzhled místnosti, je možné čidlo umístit například do krabičky - 3D tištěnné nebo koupené. Pokud ale nechcete nic kupovat, můžete čidlo a řídící desku s baterií umístit za obraz (se širším rámem) nebo například do týdenního samostatně stojícího kalendáře.
Čidlo s deskou tak neuvidíte, ale budete měřit, přesně. :-)
Jako například zde, kde jsem umístil svůj monitor vzduchu
Kód pro tento jednoduchý teploměr je ke stažení ZDE.
Vysvětlení kódu
Akumulátor připojený k pinu GPIO0, dělící poměr děliče z akumulátoru, inicializace čidla teploty a vlhkosti SHT40
ESP32AnalogRead adcB;
#define ADCBpin 0
#define bDeviderRatio 1.82274 //1.7693877551 // Delic napeti z akumulatoru 1MOhm + 1.3MOhm
Adafruit_SHT4x sht4 = Adafruit_SHT4x();
Vyplníte název vaší Wi-Fi sítě a vyplněnou doménu pro TMEP.cz
/*----------------------------------*/
/* VYPLNTE NAZEV WIFI SITE A HESLO */
const char* ssid = "SSID";
const char* password = "PASSWORD";
/* VASE DOMENA CIDLA NA TMEP.CZ */
String serverName = "http://DOMENA.tmep.cz/index.php?"; // misto Domena vlozte vasi domenu cidla
/*----------------------------------*/
/* NASTAVENI MERENI NAPETI AKUMULATORU */
adcB.attach(ADCBpin);
/*--------------------------------------*/
/* NASTAVENI CIDLA TEPLOTY A VLHKOSTI */
sht4.begin(); // inicializace
sht4.setPrecision(SHT4X_HIGH_PRECISION); // vysoka presnost mreni
sht4.setHeater(SHT4X_NO_HEATER); // bez interniho ohrivace
/*--------------------------------------*/
/* PRIPOJENI K WIFI SITI */
WiFi.begin(ssid, password);
Serial.println("Pripojovani");
while(WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
if(pokus > 20) // Pokud se behem 10s nepripoji, uspi se na 300s = 5min
{
esp_sleep_enable_timer_wakeup(300 * 1000000);
esp_deep_sleep_start();
}
pokus++;
}
/* MERENI NAPETI AKUMULATORU */
float bat_voltage = adcB.readVoltage() * bDeviderRatio;
Serial.print("Napeti akumulatoru = " );
Serial.print(bat_voltage);
Serial.println(" V");
/*--------------------------*/
/* CIDLO TEPLOTY A VLHKOSTI */
sensors_event_t humidity, temp;
sht4.getEvent(&humidity, &temp); // cekani na aktualni data
Serial.print("Teplota: "); Serial.print(temp.temperature); Serial.println(" stC");
Serial.print("Vlhkost: "); Serial.print(humidity.relative_humidity); Serial.println("% rH");
/*--------------------------*/
//GUID pro teplotu "teplota", pro vlhkost "vlhkost", pro napeti v akumulatoru "napeti"(graf), pro vypocet % kapacity akumulatoru "v" (prepocet na %)
String serverPath = serverName + "teplota=" + temp.temperature + "&vlhkost=" + humidity.relative_humidity + "&v=" + bat_voltage;
Extra TIP
Z vnitřního teploměru uděláte venkovní velmi jednoduše.
Potřebujete k tomu kryt - říká se mu radiační štít např. https://www.meteoshop.cz/produkt/tfa-98-1114-02-radiacni-stit-pasivni-maly.
Do něj můžete vložit jak desku, tak i akumulátor a i samotné čidlo.
Pozor byste si měli dát opět na umístění. Radiační štít by měl být ve stínu, aby nebyl ovlivňován sluncem.
Neměl by být ani umístěn nad asfaltem, lepší je trávník. Doporučená vzdálenost je 2m.
Umístění ovlivňuje přesnost měření, ale to neznamená, že to nemůžete dát třeba na fasádu. Pokud čidlo dáte do dostatečné vzdálenosti od fasády, může stále měřit velmi přesně.
Pokud by měl být tento teploměr zcela energeticky nezávislý (tedy bez nutnosti nabíjení z USB-C nabíječky), dokoupit můžete solární panel.
Doporučené parametry panelu jsou:
Jmenovité napětí 6V
Maximální napětí v nezatíženém stavu 8V
Zkratový proud vyšší než 400mA.
Články které jsem už napsal a mohly by se hodit:
Jak jsem si postavil neviditelný monitor vzduchu se 6 paramtery (téměř) ze šuplíkových zásob a jak bych to udělal lépe a hezčí. https://chiptron.cz/articles.php?article_id=314
Radiační štít - co to je, k čemu slouží, jak ho vytisknout nebo vyrobit https://chiptron.cz/news.php?readmore=1006
Venkovní meteostanice s čidlem a solárním panelem za pár stovek https://chiptron.cz/articles.php?article_id=291
Meteostanice s ESP8266, solárním panelem a připojením několika I2C čidel https://chiptron.cz/articles.php?article_id=303