středa 26. října 2016

Měření spotřeby vody a elektřiny s Arduino Nano

Měření aktuální spotřeby vody a elektřiny přináší rozšířené možnosti, jak sledovat chod domácnosti. Využití možnosti nabízených v podobě Arduino a modulů periférií je velmi vhodnou možností, která přináší potřebnou flexibilitu v návrhu i v realizaci. 
V současné době ve zkušebním provozu provozuji sestavu podle následujícího zapojení.
Schéma zapojení
V dvouminutových intervalech Arduino Nano odesílá prostřednictvím WiFi modulu ESP8266 naměřené hodnoty do ThingSpeak.com, kde je možno nameřené hodnoty graficky zobrazit a provádět nad nimi další analýzy.


Vedle toho sestava využívá RTC modul s obvodem DS1307. Kupodivu u něj nepoužívám hodnoty pro zjištění reálného času (ten je mimochodem na tomto typu velmi nepřesný), ale modul DS1307 kromě realného času poskytuje 56 bytů RAM paměti zálohovaných vloženou baterií. Tato pamět se dobře hodí pro ukládání aktuálních hodnot sensorů, aby zůstaly zachovány i po odpojení senzoru od zdroje napájení. Zdrojem napájení je 12V spínaný zdroj, který mám zabudovaný na DIN liště vedle elektroměru.

sobota 22. října 2016

Arduino: #define versus const String

Při programování Arduina si dejte pozor jakým způsobem deklarujete konstanty. Vzhledem k omezeným zdrojům na pro proměnné (Arduino Nano: Maximum is 2,048 bytes) je potřeba s tímto místem zacházet velmi šetrně. Místo pro programový kód na tom bývá lépe (Arduino Nano: Maximum is 30,720 bytes).

Pokud tedy v programovém kódu použijete pro definici konstanty konstrukci:

const String CONST_DEVICENAME = "Adruino Nano";


bude zařízení s řetězcem pracovat jako s proměnnou a řetězec umístí do lokace pro proměnné, tudíž ubere byty s těch cenných 2kB,

Pokud použijete #define, pak se konstanta zahrne do programového kódu a ušetříte cenné místo pro proměnné:

#define CONST_DEVICENAME "Adruino Nano"