Sdílejte chiptron.cz na sociálních sítích



RSS feeds

Izbový termostat - Arduino + EthernetTisk



Článek mi zaslal Martin Chlebovec ze stránky https://arduino.php5.sk/

Arduino je šikovná embedded platforma, ktorú je možné využiť na rôzne účely a projekty. Napríklad aj pre stavbu izbového termostatu, ktorý si dnes ukážeme. Termostat môže mať rôzne možnosti pre vizualizáciu a konfiguráciu. Jednou z možností je využiť Ethernet modul, shield od Wiznetu a termostatu tak sprístupniť z lokálnej - LAN siete v ktorej sa nachádza. Webové rozhranie, ktorý je vybavený umožňuje vizualizovať nameranú teplotu, ale ponúka aj možnosti konfigurácie všetkých prvkov termostatu - t.j. cieľovej teploty a hysterézy.

Webové rozhranie beží priamo na Arduine v režime webservera. Webserver umožňuje beh niekoľkých na sebe nezávislých HTML stránok, ktoré môžu mať informatívny, alebo aj funkcionálny (backend) charakter. Webserver beží na porte 80 (alebo inom, ktorý chce používateľ využívať) ako HTTP služba.

HTML stránky bežiace na Arduine:
• / - root stránka obsahujúca formulár pre úpravu riadiacich veličín, aktuálny výpis logického výstupu pre relé, cieľovú, nameranú teplotu, hysterézu, uptime zariadenia
• /action.html - spracováva hodnoty z formulára, zapisuje ich do EEPROM pamäte, presmeruje používateľa späť na root stránku
• /get_data.json - distribuuje dáta o aktuálnej teplote, referenčnej teplote a hysteréze tretej strane (počítač, mikrokontróler, vizualizačný systém...) v JSON formáte

Po hardvérovej stránke projekt využíva:
• Arduino Uno
• Ethernet shield Wiznet W5100 / Ethernet modul Wiznet W5200-W5500
• Teplotný senzor DS18B20 na OneWire zbernici
• Relé SRD-5VDC-SL-C slúžiace na spínanie kotla (ACTIVE_LOW relé so spínaním v log. 0)

Elektromagnetické relé SRD-5VDC-SL-C, ktoré je v projekte použité umožňuje spínať až 10A pri 230V - výkon 2300W, teda pre náš projekt je viac než dostačujúce. V prípade spínania jednosmerného obvodu (záťaže) je možné spínať maximálne 300W (10A pri 30V DC). Pre schému zapojenia je kompatibilné i SSR relé OMRON G3MB-202P, ktoré je vhodné iba nízke prúdy a je ho možné použiť iba v striedavých obvodoch. Maximálny spínaný výkon 460W (230V, 2A).

Webové rozhranie pre termostat umožňuje:
• Prehliadať v reálnom čase teplotu zo senzora DS18B20
• Prehliadať v reálnom čase stav relé s dynamickou zmenou výstupu na stránke
• Prehliadať uptime zariadenia
• Modifikovať cieľovú (referenčnú) teplotu v rozsahu 5 až 50°C s 0,25°C krokom
• Modifikovať hysterézu v rozsahu 0 až 10°C s 0,25°C krokom

ZAP/VYP regulácia kotla všeobecne (VIZUALIZÁCIA - neobsahuje ju projekt):


Webové rozhranie je navrhnuté pre prispôsobenie sa väčším i menším obrazovkám. Je reponzívne, podporuje širokouhlé obrazovky s vysokým rozlíšením, ale aj mobilné zariadenia. Rozhranie používa importované CSS štýly Bootstrap frameworku z externého CDN servera, ktorý načíta client-side zariadenie pri otvorení stránky bežiacej na Arduine. Nakoľko je Arduino Uno limitované pamäťou, dokáže spustiť iba stránky s veľkosťou pár kB.

Importovaním CSS štýlov z externého servera umožní znížiť výkonové a pamäťové zaťaženie Arduina, ktoré nemusí mať CSS štýly fyzicky uložené v pamäti a odosielať ich klientovi. Z toho dôvodu je však potrebné, aby mal klient prístup na internet pre stiahnutie Bootstrap štýlov z CDN servera, čo však v štandardnej domácej LAN sieti nie je problém. Programová implementácia (pri Arduine Uno) využíva cca 70% flash pamäte, cca 24kB z dostupných 28kB pre program a 44% RAM pamäte (2kB). Webserver je tak plynulý a má dostatok dostupnej pamäte pre beh webservera.

Statické časti webovej stránky (hlavička a pätička HTML dokumentu, linkovanie Bootstrap CSS, meta tagy, HTTP response hlavička, Content Type, formulár a ďalšie) sú uložené priamo vo flash pamäti Arduina prostredníctvom použitia F() makra, čo dokáže výrazne zredukovať veľkosť používanej RAM pamäte pre obsah generovaný používateľovi. Webserver je tak stabilnejší a zvláda aj multi-pripojenie viacerých zariadení v sieti súčasne.

Video Ethernet izbového termostatu za behu:
https://www.youtube.com/watch?v=2aTrsgrNgZc


Aby ostali nastavené hodnoty zachované aj po výpadku napájania, respektíve power-on cykle, sú uložené do EEPROM pamäte Arduina. Referenčná teplota na offset 10, hysteréza na offset 100. Každá z hodnôt zaberá maximálne 5B v EEPROM pamäti + ukončovací znak. Limit prepisov EEPROM je na úrovni 100-tisíc.

Dáta sa prepisujú iba pri odoslaní HTML formulára, teda pri zmene nastavených riadiacich dát používateľom. V prípade, že zariadenie pri prvom spustení nemá nič uložené na spomenutých EEPROM offsetoch, vykoná sa automatický zápis s predvolenými hodnotami - referencia: 20.25°C, hysteréza 0.25°C

Prostredníctvom meta tagu Refresh vykonáva obnovu celej stránky Arduino každých 10 sekúnd. Do tohto času je potrebné stihnúť zapísať zmenu pre termostat do input polí a odoslať formulár, inak sa input okná resetujú pri obnovení stránky. Dynamický údaj, ktorý sa predovšetkým na stránke mení je aktuálna hodnota výstupu - Zapnutý / Vypnutý a aktuálne nameraná teplota zo senzora DS18B20 na OneWire zbernici..

Projekt izbového termostatu je dostupný zdarma na Githube:
https://github.com/martinius96/termostat-ethernet/, kde je okrem strojových kódov (.hex) možno nájsť aj ďalšie doplnkové technické informácie projektu spolu s jeho schémou zapojenia a webovou stránkou https://martinius96.github.io/termostat-ethernet/, kde sú dostupné vždy aktuálne informácie o aktuálnej verzii, changelog a iné.

Strojové kódy, pod ktorými je projekt dostupný sú skompilované pre cieľovú platformu Arduino Uno a Ethernet shield Wiznet W5100, respektíve Wiznet W5500. Strojové kódy môžu byť nahraté cez nástroj AVRDUDE, ktorý využíva pre nahratie skompilovaného programu aj prostredie Arduino IDE. Pri standalone riešení však vyžaduje spustenie cez konzolu a radu potrebných príkazov pre úspešné nahratie programu - zvolenie dátovej rýchlosti, cieľového COM portu, platformy.

Ako lightweight riešenie je možné použiť nástroj XLoader (pre nahrávanie ako také tiež používa AVRDUDE), ktorý nie je potrebné inštalovať a je ho možné spustil ako plug n’ play uploader. V jednoduchom grafickom rozhraní dokáže nájsť dostupné COM porty z ktorých je možné vybrať si, na ktorom sa Arduino doska nachádza a na základe navoleného firmvéru (.hex) z umiestnenia v počítači ho dokáže na zvolenú - cieľovú platformu nahrať. Po stiahnutí a rozbalení Github archívu projektu je možné vidieť 6 dostupných strojových kódov, ktoré majú príponu (formát) .hex.

Video tutorial pre použitie nástroja XLoader pre projekt Izbový termostat
https://www.youtube.com/watch?v=fAUKYuYNkMo


Strojové kódy sú rozdelené na základe pridelenej IP adresy - staticky (192.168.4.1 / 192.168.1.254 - obe s 24-bit maskou), dynamicky prostredníctvom DHCP servera v sieti, ale taktiež aj podľa použitého Ethernet shieldu. Na výber sú možnosti pre Ethernet Wiznet W5100 alebo W5500 shield / modul. Používateľ môže využiť pre DHCP firmvér aj statické priradenie adresy jeho DHCP službou na routri v LAN sieti.

Strojový kód projektu Izbový termostat je skompilovaný z otestovaného .ino programu a tak je garantovaná jeho funkčnosť na akejkoľvek Arduino Uno doske s Ethernet shieldom, pre ktorý je program skompilovaný. Termostat je určený iba pre interiérové teploty! (nad 0°C), čomu je prispôsobená aj logika systému. Termostatom je možné nahradiť už existujúci izbový termostat, možno dočasne nahradiť termostat v chladničke, udržiavať stálu teplotu v teráriu a podobne.

Výpis aktuálnych údajov, formulár pre zápis cieľovej - referenčnej teploty a hysterézy


Priebeh spracovania zadaných údajov (presmerovanie používateľa):


Ukážkový výstup do Serial (UART) monitoru:
●Používateľ na stránke action.html vykoná zmenu pre termostat (relé prechádza zo stavu VYP do ZAP).
●Logika relé sa vykonáva nezávisle na webovom rozhraní každých 10 sekúnd


JSON output:
●využitie inými mikrokontrolérmi integrovanými do systému, možnosť následne zdieľať po MQTT
●nalinkovanie na iný program pre Inteligentný dom (Domoticz, Home Assistant)


Schéma zapojenia:

Upozornění

Administrátor těchto stránek ani autor článků neručí za správnost a funkčnost zde uvedených materiálů.
Administrátor těchto stránek se zříká jakékoli odpovědnosti za případné ublížení na zdraví či poškození nebo zničení majetku v důsledku elektrického proudu, chybnosti schémat nebo i teoretické výuky. Je zakázané používat zařízení, která jsou v rozporu s právními předpisy ČR či EU.
Předkládané informace a zapojení jsou zveřejněny bez ohledu na případné patenty třetích osob. Nároky na odškodnění na základě změn, chyb nebo vynechání jsou zásadně vyloučeny. Všechny registrované nebo jiné obchodní známky zde použité jsou majetkem jejich vlastníků. Uvedením nejsou zpochybněna z toho vyplývající vlastnická práva.
Nezodpovídáme za pravost předkládaných materiálů třetími osobami a jejich původ.
10,779,202 návštěv