Jak nainstalovat integraci Drátek eInk do Home Assistantu
Průvodce instalací integrace Drátek eInk do Home Assistantu pomocí obchodu HACS.
Tento modul, který lze také najít pod jeho výrobním názvem HX711, obsahuje AD převodník 24-bit s 2 kanály. Konkrétně to je kanál A s volitelným zesílením 128 a 64 a jako druhý kanál B s pevným zesílením 32. Nejčastější využití tohoto modulu s AD převodníkem je pro elektronické váhy, senzory tlaku a podobně. Používá se primárně v můstkovém zapojení (viz schéma zapojení níže), kdy využíváme malých rozdílů v odporech jednotlivých čtyřech pevných a proměnných rezistorů. Já jsem pro testování tedy zvolil tři pevné 100k ohmové rezistory a jeden 100k ohmový potenciometr. Jak je vidět ze zapojení, do první dvojice protilehlých uzlů tedy přivedeme napětí z výstupů modulu E+ a E- a do zbylé protilehlé dvojice připojíme vstupy A+ a A-, případně B+ a B-. Když dosáhneme vyváženého můstku, tedy stejné hodnoty všech čtyřech odporů, dostaneme na výstupu A+ a A- nulového napětí. Pokud se ale náš proměnný odpor začne svou hodnotou lišit, rozváží nám můstek a my můžeme měřit rozdíl na našem připojeném vstupu modulu HX711.
Pro připojení 24b AD převodníku potřebujeme celkem 8 propojovacích vodičů. Na pravé straně modulu připojíme GND na zem, DT na pin 3, SCK na pin 2 a VCC na +5V. Levou stranu modulu pak zapojíme s naším odporovým můstkem dle schématu níže. Zvolené piny DT a SCK můžete samozřejmě vyměnit za jiné volné, je však důležité tuto volbu sesouhlasit s nahrávaným programem.
Níže uvedený ukázkový kód obsahuje na svém začátku nastavení pinů pro připojení modulu a dále definování různých nastavení kanálů a jejich zesílení. Po tomto následuje podprogram setup() s nastavením směru připojených pinů, rychlosti sériové linky a první probuzení modulu se spuštěním prvního měření. V nekonečné smyčce pak vždy vypíšeme po sériové lince výsledek, který získáme zavoláním podprogramu spusteniMereni(kanál se zesílením) a počkáme 0,5 sekundy pro přehledné čtení. Ve zmíněném podprogramu spusteniMereni se pak vždy jako první načte 24-bit výsledek, nastaví se pro další měření zvolený měřící mód a provede konverze výsledku s přepočtem na mikrovolty.
// Arduino AD 24-bit převodník s 2 kanály
// piny pro připojení SCK a DT z modulu
int pSCK = 2;
int pDT = 3;
// definování různých nastavení kanálů a jejich zesílení
#define kanal_A_zesil_128 1
#define kanal_B_zesil_32 2
#define kanal_A_zesil_64 3
void setup()
{
// nastavení pinů modulu jako výstup a vstup
pinMode(pSCK, OUTPUT);
pinMode(pDT, INPUT);
// komunikace přes sériovou linku rychlostí 9600 baud
Serial.begin(9600);
// probuzení modulu z power-down módu
digitalWrite(pSCK, LOW);
// spuštění prvního měření pro nastavení měřícího kanálu
spusteniMereni(kanal_A_zesil_64);
}
void loop()
{
// výpis měření a jeho výsledku
Serial.print("Vysledek mereni: ");
Serial.print(spusteniMereni(kanal_A_zesil_64));
Serial.println(" uV");
// pauza 0.5 s pro přehledné čtení
delay(500);
}
// vytvoření funkce pro měření z nastaveného kanálu
long spusteniMereni(byte mericiMod)
{
byte index;
long vysledekMereni = 0L;
// načtení 24-bit dat z modulu
while(digitalRead(pDT));
for (index = 0; index < 24; index++)
{
digitalWrite(pSCK, HIGH);
vysledekMereni = (vysledekMereni << 1) | digitalRead(pDT);
digitalWrite(pSCK, LOW);
}
// nastavení měřícího módu
for (index = 0; index < mericiMod; index++)
{
digitalWrite(pSCK, HIGH);
digitalWrite(pSCK, LOW);
}
// konverze z 24-bit dvojdoplňkového čísla
// na 32-bit znaménkové číslo
if (vysledekMereni >= 0x800000)
vysledekMereni = vysledekMereni | 0xFF000000L;
// přepočet výsledku na mikrovolty podle zvoleného
// kanálu a zesílení
switch(mericiMod) {
case 1: vysledekMereni = vysledekMereni/128/2; break;
case 2: vysledekMereni = vysledekMereni/32/2; break;
case 3: vysledekMereni = vysledekMereni/64/2; break;
}
return vysledekMereni ;
}
Jako výsledek dostaneme například tento výpis:
Vysledek mereni: -26087 uV Vysledek mereni: -26188 uV Vysledek mereni: -26138 uV Vysledek mereni: -26182 uV Vysledek mereni: -36746 uV Vysledek mereni: -37475 uV
Jak jsem zmínil v úvodu návodu, tento 24-bit AD převodník se využívá hlavně pro speciální účely při měření váhy či tlaku, většinou v kombinaci s připojeným tenzorem. Kanál A měří při zesílení 128 vstupní napětí ±20mV a při zesílení 64 vstupní napětí ±40mV. Při využití kanálu B a jeho pevného zesílení 32 tedy můžeme měřit vstupní napětí v rozsahu ±80mV.
Seznam použitých komponent:
http://dratek.cz/arduino/998-arduino-ad-prevodnik-24-bit-2-kanaly-hx711-1427807780.html
http://dratek.cz/arduino/974-arduino-uno-r3-atmega328p-1424115860.html
https://dratek.cz/arduino/1424-nepajive-kontaktni-pole-zy-170-w.html
http://dratek.cz/arduino-kabelaz-propoje-rozsireni/1063-arduino-vodice-samec-samec-40-kusu.html
Průvodce instalací integrace Drátek eInk do Home Assistantu pomocí obchodu HACS.
Návod, jak jednoduše přidat a nastavit Drátek e-ink displej do Home Assistant