Pohodlnost nadevše! Programovatelný pokojový termostat s webovým rozhraním.

Nedávno jsem publikoval článek o termostatu, který je možné nastavovat přes webové rozhraní. Nyní se dostávám k tomu, že jsem termostat začal dělat znovu, ale na výkonnějším hardwaru. S tím je spojeno i to, že termostat umožňuje mnohem více funkcí. Více se dočtete v následujícím článku.

 

 

Po ne zcela úspěšném pokusu termostatu s mikrokontrolérem Atmel, se má práce ubírala zcela jiným směrem. Byl použit vývojový kit STM32F4 Discovery s mikrokontrolérem STM32F407VG. Důvodem použití tohoto mikrokontroléru je především jeho rychlost, velikost paměti a hardwarová implementace spousty komunikačních rozhraní a periferií. Nejvíce záleželo na MAC vrstvě, kterou má mikrokontrolér implementovanou. Tím se celé zařízení zjednodušuje.

Pro jednoduchost testování a realizace první verze termostatu byla připojena základovou desku pro vývojový kit a LCD TFT displej. Blokové schéma celého zařízení včetně rozšiřujících desek je na obrázku 1. Ve schématu je i vyznačeno, které části jsou realizovány z vývojových desek a které jsou externě připojeny. Navíc hardwarové prvky, které nejsou v mé práci využity a vývojový kit je obsahuje, v blokovém schématu uvedeny nejsou.
blok_stm

Obr. 1: DiscoveryBlokové schéma termostatu realizovaného s vývojovým kitem STM32F4

Blokové schéma na obrázku 1 není nijak složité a to především díky tomu, že mikrokontrolér obsahuje spoustu hardwarových periferií uvnitř a také je hodně realizováno pomocí softwaru v mikrokontroléru. Celý program v mikrokontroléru je založen na real-time operačním systému FreeRTOS, který řeší základní funkce jako např. práci s procesy a vlákny. Vybrané procesy jsou popsány níže. Jako jedno vlákno běží webový server, který je realizován pomocí souboru knihoven LwIP stack.

Pro další periferie, jako jsou teplotní čidla, obvod hodin, bluetooth moduly a displej bylo nutné napsat separátní knihovny, které komunikují s vybranými zařízeními pomocí protokolů a sběrnic popsaných v úvodu.

Popis procesů

Funkčnost celého zařízení je rozdělena na několik základních částí, které jsou od sebe odděleny a vykonávají se nezávisle na sobě. Jen jejich výstup může být používán i v dalších částech. Tyto části jsou vykonávány v takzvaných procesech. Každý proces má svoji prioritu a vyhrazenou paměť. Procesy jsou vykonávány v různém pořadí a vytvářejí dojem multitaskingu. Kromě procesů jsou ještě složitější části programu, které jsou vykonávány ve vláknech. Ty mohou běžet zároveň s jednotlivými procesy. Funkce jednotlivých procesů jsou popsány v následujících kapitolách. Komunikace mezi procesy probíhá v celém programu pomocí globálních proměnných.

Proces blikání LED

Prvním nejjednodušším procesem je blikání LED diody. Jedná se o jednoduchou změnu stavu portu, na kterém je LED dioda. Proces slouží pro kontrolu funkčnosti celého zařízení. Vykonávání procesu se děje každých 250 ms. Blikání LED je vidět pouze na vývojovém kitu a v hotovém zařízení již LED není připojena.

Proces měření teploty

Každé 2 s se provádí proces čtení teploty z teplotního čidla a uložení teploty do proměnné. Zároveň se čtou hodnoty z vlhkostního čidla.

Proces porovnávání teplot

V tomto procesu se porovnávají naměřené a nastavené teploty a spíná se relé podle nastaveného režimu. Záleží jestli se jedná o týdenní program a také podle kterého pokoje se má relé spínat.

Naměřené teplota musí být o 0,5 °C vyšší než nastavená, aby se relé sepnulo. Při rozepnutí to funguje stejně.

Proces se vykonává každých 400 ms.

Proces kontrola času

Pro zjišťování data a času je potřeba v pravidelných intervalech číst data z obvodu DS1307 po sběrnici I2C . To má za úkol tento proces, který se vykonává každou sekundu a ukládá datum i čas do globální proměnné.

Proces vypisování na displeji

Dalším důležitým procesem je vypisování na displeji. Každých 300 ms se na displeji vykreslují všechny prvky včetně data, času, teploty a vlhkosti. Kromě vypisování má proces ještě za úkol snížit jas displeje po několika vteřinách a obsluhovat dotykovou plochu displeje.

Proces komunikace s bluetooth

V tomto procesu se komunikuje s bluetooth moduly a přijímají se data obsahující naměřenou teplotu. Proces se provádí každé 2 s.

Proces generování výstupních souborů

Posledním procesem je generování výstupních souborů pro webové stránky. Tento proces má urychlit komunikaci webového prohlížeče s webovým serverem. Server totiž není schopný soubor vygenerovat a poslat v dostatečně nízkém čase a prohlížeč mezitím vyhodnotí server jako nedostupný. Proto proces vygeneruje všechny webové stránky do paměti mikrokontroléru a server po vyžádání webové stránky pouze přečte z paměti data a pošle je prohlížeči. Webové stránky jsou obnovovány v paměti každých 300 ms.

Způsoby ovládání termostatu

Aktuální verze termostatu umožňuje celkem tři způsoby nastavení teploty a získávání informací o teplotách, datu a času. Všechny tři způsoby nejsou úplně tradiční k ovládání termostatu, ale v dnešní době se stávají stále více běžnější a dostávají se i mezi uživatele, kteří využívají techniku méně. Prvním způsobem je nastavení z webového prohlížeče počítače, tabletu nebo mobilního telefonu. Jedná se o klasickou webovou stránku. Druhý způsob je za použití dotykového LCD TFT displeje, kde je možné provádět základní úkony s termostatem. A třetím způsobem je aplikace napsaná pro operační systém Android, který je v některých mobilních telefonech a tabletech.

Webová stránka

Základním rozhraním pro nastavení teplot v jednotlivých pokojích a zobrazení naměřených teplot je webová stránka. Na tu se dostaneme zadáním IP adresy webového serveru do webového prohlížeče, která je defaultně nastavena na 10.10.10.5, ale je možné ji kdykoliv změnit na stránce s nastavením. Webový server obsahuje pouze několik stránek, které jsou potřeba k ovládání celého zařízení.
login

Obr. 2: Přihlašovací stránka

První stránkou, která se objeví po zadání IP adresy je přihlašovací okno (obr. 1). Je potřeba zadat heslo, které je nastaveno na 1234, ale je možné ho v nastavení kdykoliv změnit. Po přihlášení se objeví stránka s přehledem (obr. 3), na kterou je možné se dostat zadáním adresy /pokoje.html. Vlevo je zobrazena naměřená a nastavená teplota v aktuálním pokoji a vlhkost naměřená termostatem, vpravo pak přehled naměřených a nastavených teplot ve všech pokojích. Navíc je napravo umístěn formulář, kterým je možné teploty nastavovat. Také je možné zvolit, který pokoj bude aktuální, což znamená, podle kterého pokoje se bude vytápět. Nalevo je ještě zobrazen čas, kdy byly data vygenerovány, aby jsme měli jistotu, že jsou data aktuální. Pod datem a časem je zobrazena ikona ohně, která indikuje zda v tomto čase je sepnuté relé pro ovládání kotle.
pokoje

Obr. 3: Stránka s přehledem teplot

Další stránka, kterou můžeme najít pod adresou /program.html, je týdenní program (obr. 4). Je možné si navolit teplotu, den v týdnu a čas od kdy a do kdy má být zvolená teplota aktuální. Toto můžeme přidávat do tabulky celkem 20x. Důležité je, že týdenní program je vždy aktuální pouze na aktuální pokoj. Na stránce týdenního programu je také možné zvolit jestli vytápět podle zvoleného programu nebo jen manuálním režimem na stránce s pokoji. Manuální režim se také nastaví automaticky vždy, když bude na stránce s pokoji nastavena ručně teplota.
program

Obr. 4: Stránka s týdenním programem

Na adrese /nastaveni.html je stránka s nastavením celého termostatu (obr. 5). Toto je jediná možnost, kde můžeme měnit veškerá nastavení. Ostatní způsoby ovládání termostatu neumožňují měnit všechna nastavení. Na stránce s nastavením je možné měnit bezpečnostní heslo, IP adresu zařízení, síťovou bránu, názvy pokojů, datum, čas a další možnosti.
nastaveni

Obr. 5: Stránka s nastavením

Důležitými stránkami především pro mobilní aplikaci a aplikaci pro sběr dat jsou stránky /teploty.json a /set_teploty.json. Obě stránky vrací stejné data, kterými jsou všechny teploty a pokoje v JSON formátu (obr. 6). Na obě stránky je možné se dostat pouze se správným heslem a to se přenáší GET parametrem pass. Stránka s předponou set zpracovává ještě parametr json, ve kterém je možné předat nastavení teploty pro jeden pokoj. JSON pro nastavení musí vypadat takto: [{id:1,n:20.5}], kde id je identifikační číslo pokoje a n je hodnota teploty, kterou chceme nastavit.
json

Obr. 6: Stránka s daty ve formátu JSON

Poslední stránkou, se kterou se můžeme setkat je chybové hlášení, že požadovaná stránka neexistuje. A to nastane v případě, když požadujeme jinou stránku než je napsané v předchozích odstavcích.

Grafické rozhraní na displeji

V případě, že nechceme zapínat počítač a přesto potřebujeme nastavit teplotu nebo jen zjistit aktuální teplotu, postačí nám připojený dotykový TFT LCD displej. V hlavním zobrazení můžete vidět jen aktuální teplotu, naměřenou vlhkost, nastavenou teplotu, několik dotykových tlačítek, datum a čas. Displej umožňuje nastavení teploty tlačítky plus a mínus. Teplota je okamžitě akceptována.

Displej je možné přepnout do rozšířeného zobrazení, které zobrazí několik pokojů s naměřenými teplotami.

Navíc je možné na displeji nastavit heslo pro přístup a jas.

Aplikace pro Android

Poslední možností jak si nastavit teploty termostatu a zobrazit naměřené teploty je pomocí aplikace v chytrém mobilním telefonu s operačním systémem Android. V případě, že je aplikace správně nastavená (adresa k JSON stránce a heslo), poté se po spuštění zobrazí seznam pokojů s naměřenými a nastavenými teplotami podle obrázku 7 vlevo. Vždy první teplota je naměřená a druhá nastavená. Navíc před názvem aktivního pokoje se zobrazí šipka. Pro změnu nastavené teploty stačí kliknout na řádek s určitým záznamem a objeví se dialogové okno (obr. 7 vpravo), ve kterém je možné zapsat do textového pole teplotu a potvrdit tlačítkem OK. Poté se odešle nastavený údaj do termostatu a zároveň se nastaví zvolený pokoj jako aktuální. Po nastavení se v aplikaci obnoví seznam pokojů i s teplotami. Seznam je možné aktualizovat i ručně, kliknutím na menu a položku obnovit.

V menu je možné ještě otevřít nastavení, ve kterém můžeme měnit adresu JSON souboru a heslo.

android_apk android_apk1

Obr. 7: Aplikace pro Android

Poděkování

Děkuji Doc. Ing. Pavlovi Šteffanovi, Ph. D. za metodickou pomoc, připomínky, cenné rady při zpracování práce a zakoupení potřebných modulů a Ing. Ladislavu Macháňovi za příkladnou pomoc v laboratoři.

Dále děkuji firmám STMicroelectronics, Spezial electronic, ConnectBlue a Conrad za pomoc při výběru součástek a materiální i technickou podporu.

Závěr

Na závěr bych rád dodal, že celá práce byla vytvořena jako diplomová práce na VUT v Brně Fakultě elektrotechniky a komunikačních technologií. Celé zařízení je plně funkční a informuje o teplotě a vlhkosti v místnosti. Tyto data ještě posílá na webový server, kde jsou ukládána do databáze a poté webovou stránkou zobrazována v grafech. Zařízení umožňuje připojení teplotních senzorů přes bluetooth.

Fotografie

Komentovat

Vaše e-mailová adresa nebude zveřejněna. Povinná pole jsou označena *

*

*