WebNet Climatic – Regulátor prostředí s ethernetem z Arduina

Důvodem stavby regulátoru byl požadavek na sestavení zařízení, které bude monitorovat vnitřní a venkovní teplotu a na základě těchto dvou teplot bude přepínat stav “klimatizace, ventilace, vypnuto”. V místnosti jsou instalována elektronická zařízení, pro které je potřeba zajistit dostatečné chlazení. V místnosti je umístěna přenosná klimatizace s výdechem mimo místnost a 3x výkonný ventilátor, který odvádí teplý vzduch. Pro zajištění optimální vnitřní teploty, by stačila i jen pouze zapnutá klimatizační jednotka, ale takový provoz by byl neekonomický. Protože pokud je venkovní teplota dostatečně nízká pro chlazení, je zbytečné ochlazovat ohřátý prostor nákladně klimatizační jednotkou, když stačí prostor pouze vyvětrat. K dalším požadavkům patřila možnost zadávání parametrů pomocí webové stránky se zabezpečeným přístupem pomocí hesla, odesílání alarmů pomocí e-mailu, zobrazování aktuálního stavu na LCD i webové stránce a zasílání dat pro zobrazení v grafu.

 

Strana článku  …  1/3
————————————————————————————————

LCD_zobrazeniRegulátor jsem sestavil z Arduina MEGA s procesorem ATmega 1280 (v současné verzi 1.2.0 je obsazeno 83% flash), shield TFT LCD 2.4″ s řadičem ILI9341 v paralelním 8bit módu, Ethernet shieldu Wiznet5100 a relay modulu. Veškeré shieldy jsem nakoupil za směšné ceny na www.banggood.com, což je obdoba asi známějšího www.dx.com nebo nakoupíte na e-Bay. Díky složení ze shieldů tak není třeba vyrábět PCB a ušetříte tak nějaký čas a hlavně peníze. Jedinou nevýhodou levných shieldů je občasná potřeba drobných úprav pro své potřeby nebo potřeba dohledání vhodných knihoven pro jejich obsluhu. Občasným problémem může být i použití verze MEGA, protože ne všechny knihovny obsahují jeho podporu, ale bohužel UNO má pro tento projekt málo flash. Také bych doporučil pořídit verzi MEGA s podpůrným procesorem ATmega16U2 místo levnější verze osazené pouze převodníkem USB-SERIAL. Ideální volbou pro případná další rozšíření je pak verze Arduino MEGA 2560 se zmíněným podpůrným procesorem.

Použity jsou pak následující podpůrné knihovny:
Webduino – podpora webu a zabezpečeného přístupu https://github.com/sirleech/Webduino
EEPROMAnything.h – práce s EEPROM pro bytové konstanty
http://playground.arduino.cc/Code/EEPROMWriteAnything
EepromUtil – práce s EEPROM pro textové konstanty http://playground.arduino.cc/Code/EepromUtil
OneWire – základní podpora sběrnice http://www.pjrc.com/teensy/td_libs_OneWire.html
DallasTemperature – podpora čidel https://github.com/milesburton/Arduino-Temperature-Control-Library
Adafruit GFX AS – modifi version – upravená grafická knihovna
CZ Adafruit TFT – upravená verze podpory LCD TFT pro MEGA verzi
Upravené knihovny najdete na konci článku, funkční s verzí MEGA.

Systém v současné verzi v.1.2.0 podporuje následující funkce:

  • měření vnitřní a venkovní teploty pomocí digitálních čidel DS18B20
  • spínání dvou výstupních relé klimatizace/ventilace
  • automatické přepínání stavů “klimatizace/ventilace/vypnuto”
  • zobrazování aktuálního stavu na barevném LCD TFT 2.4″
  • zobrazování aktuálního stavu na webové stránce
  • automatický i manuální režim spínání
  • zasílání informačních a alarmových e-mailů
  • nastavování hodnot pomocí webové stránky s chráněným přístupem
  • zasílání aktuálního stavu do cloudové služby ThingSpeak.com k vyhodnocení
  • internetové připojení s pevnou IP i přidělovanou z DHCP (včetně release)
  • zobrazování chybových hlášení při selhání některé funkce

Na následujících fotkách jsou mnou použité komponenty a následně si popíšeme doporučené úpravy, které by měli přispět k lepšímu fungování.

Pro měření teploty jsem zvolil známá digitální čidla DS18B20 komunikojící po OneWire sběrnici. Čidla lze koupit opět na E-Bay naříklad v tomto kovovém a snad i vodotěsném provedení. Rozlišení je možné programově nastavovat od 9 do 12bitů. Zde je uveden vykopírovaný přehled vlastnosti z datasheetu:

 Unique 1-Wire® Interface Requires Only One Port Pin for Communication
 Each Device has a Unique 64-Bit Serial Code Stored in an On-Board ROM
 Multidrop Capability Simplifies Distributed Temperature-Sensing Applications
 Requires No External Components
 Can Be Powered from Data Line; Power Supply Range is 3.0V to 5.5V
 Measures Temperatures from -55°C to +125°C (-67°F to +257°F)
 ±0.5°C Accuracy from -10°C to +85°C  Thermometer Resolution is User Selectable from 9 to 12 Bits
 Converts Temperature to 12-Bit Digital Word in 750ms (Max)

Pokud shrnu základní přednosti jde o napájení v rozmezí 3 až 5.5V, dobrá přesnost, provádění převodu teploty na pozadí a pak komunikace na jediném vodiči plus napájení. Na jednu sběrnici je možné připojit více čidel a rozlišovat je podle jejich sériového čísla. Tuto funkci ale naopak nepoužijeme, protože by bylo třeba zjišťovat, které čidlo je které. Místo toho je v tomto případě lepší vytvořit dvě sběrnice po připojeném jediném čidle. Při jeho výměně není třeba se starat, jaké je jeho SN. Zapojení je opět jednoduché, stačí připojit napájení na 5V, mezi 5V a digitální výstup připojit odpor 4K7 a poslední drát Ground na GND. Toto zapojení se provede na každém čidle samostatně. Vnitřní čidlo je připojeno na pin číslo 22 a venkovní čidlo na pin 23.

Zapojení čidla DS18B20 a odporu 4K7 potřebného ke správné funkci.

Zapojení čidla DS18B20 a odporu 4K7 potřebného ke správné funkci.

Nyní se zaměřím na provedené úpravy shildů i samotného Arduino Mega, ale lze tuto úpravu použít i u dalších modelů. První úprava se tedy týká výměny LDO (lineárního regulátoru) za pulzní regulátor. To vede k zvětšení možného zatížení větve 5V při externím napájení a především snížení zahřívání a to velice razantně, no a v neposlední řadě vám tak dojde ke snížení celkové spotřeby. Jen se smutné, že tyto kvalitní prvky se u nás prodávají skoro za stejnou cenu co stojí celá Arduino deska.

Náhrada regulátoru na Arduino MEGA

Náhrada regulátoru na Arduino MEGA

Na obrázku je použit regulátor s označením OKI-78SR-5/1.5-W36-C, dalším vhodným obvodem je pak i například tento s označením TSR1-2450 TRACOPOWER. Vyměna není složitá, stačí odpájet původní LDO regulátor a na plošky za pomoci drátku naletovat vývody nového obvodu. Pořadí pinů původního obvodu je následující: 1-GND, 2-OUT, 3-IN, pořadí nového obvodu je poněkud jiné, protože jsou navrženy jako náhrady obvodu 78xx a je následující 1-IN, 2-GND, 3-OUT.

Druhou úpravou je pak vyvedení RESET pinu Ethernet shieldu klonu na digitální pin na základní desce. K této úpravě mě vedlo zjištění, že při prvním zapnutí se ne vždy povedlo obvod WizNet nahodit a naběhl až po dalším resetu a je jedno zda hardwerovém tak softwerovém. Tímto způsobem je obvod z resetu vyveden až následně pomocí programu.

Úprava ethernet shieldu

Úprava ethernet shieldu

Úpravu provedete následovně. Poslední pin označený modrou šipkou je třeba odstřihnout, aby se nepropojovat se základní deskou. Pomocí kousku vodiče jej nově propojíme s prvním pinem desky označený zelenou šipkou. Poslední krok je odvrtání prokovu označeného červenou šipkou. Ideální je vrtáček o velikosti 0.8mm. Toto odvrtání je důležité, protože reset je vyveden i na ICSP konektor, pomocí kterého je u verze MEGA provádí komunikace se shieldem.

Strana 1 z 3123

______________________________________________________________________________________

______________________________________________________________________________________