Chytrá WiFi zásuvka Sonoff S26
Chytrá domácnost umožňuje ovládat elektrické spotřebiče na dálku. A přesně to umožní zásuvka Sonoff S26.
Proudový snímač INA219 je vstupní modul, který umožňuje s pomocí Arduina měřit stejnosměrný proud. Tento senzor od firmy Texas Instruments dokáže měřit průchozí stejnosměrný proud o velikosti až 3,2 Ampérů a to v obou směrech, tedy kladný i záporný proud. Co se týká vstupního napětí měřeného obvodu, tak je možné použít až +- 26 Voltů. Měření proudu u tohoto modulu funguje na principu měření úbytku napětí na bočníku, který má zde velikost 0,1 ohmu. Obvod INA219 pak umožňuje měřit napětí a proud v několika módech, které se liší v maximálním napětí a proudu, kdy s nižšími hodnotami obou veličin zlepšujeme rozlišení výsledků. V programu je uvedena ukázka pro nejvyšší rozsahy (označena jako 32V/2A – platí maxima obvodu 26V/3,2A!, rozlišení proudu je 0,8 mA), dále menší proudový rozsah (označení 32V/1A - lepší rozlišení proudu) a jako poslední konfigurace 16V/400mA, která má nejlepší rozlišení pro napětí i proud (0,1 mA). Na modulu se také nachází pájecí plošky označené jako A0 a A1, kterými lze měnit I2C adresu. Po jejich změně tedy můžeme připojit až čtyři snímače INA219 na jednu sběrnici I2C (při zapájení A0 přičteme jedničku k adrese 0x40, s A1 přičteme čtyřku – při zapájení obou plošek tedy dostáváme adresu 0x45).
Pro úspěšné propojení snímače INA219 s Arduinem stačí propojit celkem čtyři vodiče. Propojíme VCC s 3,3 nebo 5 V Arduina, GND se zemí Arduina, SCL s pinem A5 a SDA s pinem A4. Jak již bylo zmíněno, komunikace mezi Arduinem a senzorem probíhá po sběrnici I2C, takže je nutné využít pro datové piny SCL a SDA odpovídající I2C piny na Arduino desce. Zátěž pak zapojíme na svorky Vin+ a Vin- do série v měřeném obvodu, kdy pro správně měření průchozího napětí je nutné zapojit kladný pól na svorku Vin+.
Pro správné přeložení a nahrání uvedeného ukázkového kódu je nutné stáhnout a naimportovat knihovnu INA219, návod jak na to je uveden zde. Ukázkový kód obsahuje na začátku připojení potřebných knihoven, definování adresy senzoru a inicializaci senzoru z knihovny. V podprogramu setup nejprve zahájíme komunikaci po sériové lince, poté zahájíme komunikaci senzoru s Arduinem a následně můžeme nastavit kalibraci, jak bylo zmíněno v úvodu návodu. V nekonečné smyčce loop jako první vytvoříme proměnné pro ukládání všech výsledků měření a následně do nich načteme pomocí knihovny všechny dostupné údaje. Mezi tyto údaje patří vstupní napětí, napětí naměřené na bočníku a průchozí proud. Jako doplněk je zde ještě výpočet napětí na zátěži, které se skládá z naměřeného vstupního napětí a jedné tisíciny napětí na bočníku. V dalším kroku vytiskneme všechny dostupné údaje po sériové lince a po pauze dvou vteřin opakujeme nekonečnou smyčku.
// Senzor proudu INA219 // připojení potřebných knihoven #include <Wire.h> #include <Adafruit_INA219.h> // definování adresy senzoru #define ADDR 0x40 // inicializace senzoru s nastavenou adresou z knihovny Adafruit_INA219 ina219(ADDR); void setup(void) { // komunikace po sériové lince rychlostí 9600 baud Serial.begin(9600); // zahájení komunikace se senzorem INA219 ina219.begin(); // nastavení kalibrace, k dispozici jsou 3 režimy // režim 32V a 2A má největší rozsahy, ale nejmenší přesnost ina219.setCalibration_32V_2A(); // režim 32V a 1A má lepší rozlišení průchozího proudu // ina219.setCalibration_32V_1A(); // režim 16V a 400mA má nejlepší rozlišení proudu i napětí // ina219.setCalibration_16V_400mA(); } void loop(void) { // vytvoření proměnných pro uložení výsledků měření float napetiVstup = 0; float napetiBocnik = 0; float napetiZatez = 0; float proud = 0; // načtení všech dostupných údajů do proměnných napetiVstup = ina219.getBusVoltage_V(); napetiBocnik = ina219.getShuntVoltage_mV(); napetiZatez = napetiVstup + (napetiBocnik / 1000); proud = ina219.getCurrent_mA(); // vytištění všech dostupných údajů po sériové lince Serial.print("Vstupni napeti: "); Serial.print(napetiVstup); Serial.println(" V"); Serial.print("Napeti na bocniku: "); Serial.print(napetiBocnik); Serial.println(" mV"); Serial.print("Napeti zateze: "); Serial.print(napetiZatez); Serial.println(" V"); Serial.print("Pruchozi proud: "); Serial.print(proud); Serial.println(" mA"); Serial.println(""); // pauza před dalším měřením delay(2000); }
Po nahrání programu do Arduino desky s připojeným senzorem INA219 dostaneme například tento výsledek:
Vstupni napeti: 3.28 V Napeti na bocniku: 0.53 mV Napeti zateze: 3.28 V Pruchozi proud: 5.20 mA Vstupni napeti: 3.28 V Napeti na bocniku: 0.56 mV Napeti zateze: 3.28 V Pruchozi proud: 5.10 mA
Proudový snímač INA219 je zajímavý vstupní modul, s kterým můžeme pomocí Arduina měřit stejnosměrný proud v různých obvodech. Velkou výhodou tohoto senzoru je jeho rozlišení 12 bitů, kdy můžeme dokonce přepínat mezi více módy a tím si zpřesnit naměřené výsledky. Tento modul by tedy mohl sloužit například při stavbě vlastního Arduino měřiče stejnosměrného proudu či přímo multimetru.
Seznam použitých komponent:
http://dratek.cz/arduino/1511-original-arduino-uno-rev3-1485165418.html
https://dratek.cz/arduino/1437-ina219-proudovy-snimac-obousmerny-1475566305.html
Chytrá domácnost umožňuje ovládat elektrické spotřebiče na dálku. A přesně to umožní zásuvka Sonoff S26.
e-Paper displeje už jsou dostupné i pro bastlení za rozumné ceny a pro jejich ovládání se hodí tento Driver.