Jak nainstalovat integraci Drátek eInk do Home Assistantu
Průvodce instalací integrace Drátek eInk do Home Assistantu pomocí obchodu HACS.
Fotoelektrický snímač otáček je vstupní modul pro Arduino. Tento snímač je původně používaný v tiskárnách od firmy Hewlett Packard, kde slouží pro detekci polohy tiskové hlavy. Uvnitř snímače najdeme optickou bránu, která díky dvěma snímačům dokáže detekovat nejen průchod předmětu, ale i směr průchodu.
Součástí balení je kromě senzoru i nerezové kolečko, které slouží jako otočný čtený element. Je ale nutné ho správně upevnit s ohledem na průchod senzorem. Pro napájení je možné použít 3,3 nebo 5 Voltů z Arduina.
Pro úspěšné propojení senzoru proudu a Arduino desky propojíme celkem 4 vodiče. Připojíme „+“ na 5V Arduina, „-„ na GND, O1 na pin D2 a O2 na pin D3. Pro datové piny je nutné použít piny, které umí funkci přerušení (anglicky interrupt), kdy u Arduino UNO jsou to piny D2 a D3. Více informací najdete zde https://www.arduino.cc/reference/en/language/functions/external-interrupts/attachinterrupt/.
Ukázkový kód obsahuje na svém začátku nastavení čísel propojovacích pinů a vytvoření proměnných pro běh programu.
Ve funkci setup zahájíme komunikaci po sériové lince a poté nastavíme oba datové piny jako vstupní. V posledním kroku nastavíme přerušovací piny tak, aby každý reagoval na správnou změnu a zavolal příslušnou funkci.
Nekonečná smyčka loop v prvním kroku vždy nahraje poslední přečtený stavu pinu O1 do proměnné předchozí stav a poté porovná starou hodnotu a aktuální pozici. Pokud došlo ke změně pozice, vypíšeme novou pozici po sériové lince a uložíme si aktuální pozici jako starou hodnotu, aby nedocházelo k tištění pozice každý běh smyčky.
Funkce nactiO1 je zavolána vždy při přerušení pinu O2. V této funkci načteme stav pinu O1 a poté kontrolujeme, jestli nedošlo ke změně stavu oproti předchozí uložené hodnotě. Pokud ke změně došlo, tak podle stavu pinu O2 buď přičteme nebo odečteme jedničku z proměnné pozice.
Funkce nactiO2 je zavolána vždy při přerušení pinu O1. V této funkci pouze načteme stav pinu O2 do proměnné.
// Fotoelektrický snímač otáček HP
// navody.dratek.cz
// nastavení čísel propojovacích pinů
#define pinO1 2
#define pinO2 3
// proměnné pro běh programu
int pozice = 0;
int predchoziStav = LOW;
int staraHodnota = 0;
int stavO1 = LOW;
int stavO2 = LOW;
void setup() {
// zahájení komunikace po sériové lince
Serial.begin(9600);
// nastavení vstupních pinů
pinMode(pinO1, INPUT);
pinMode(pinO2, INPUT);
// nastavení přerušovacích rutin pro oba piny
attachInterrupt(digitalPinToInterrupt(pinO1), nactiO2, FALLING);
attachInterrupt(digitalPinToInterrupt(pinO2), nactiO1, CHANGE);
}
void loop() {
// uložení stavu pinu 01 jako předchozí hodnoty
predchoziStav = stavO1;
// porovnání staré hodnoty a aktuální pozice,
// pokud se liší, vytiskneme aktuální pozici
if (pozice != staraHodnota) {
Serial.println(pozice, DEC);
// uložení aktuální pozice do proměnné,
// aby docházelo k tištění pouze při změně
staraHodnota = pozice;
}
}
void nactiO1() {
// načtení stavu pinu O1
stavO1 = digitalRead(pinO1);
// kontrola stavu oproti předchozímu měření
if ((predchoziStav == LOW) & (stavO1 == HIGH)) {
// pokud došlo ke změně, tak podle stavu O2
// přičteme nebo odečteme pozici
if (stavO2 == LOW) {
pozice--;
}
else {
pozice++;
}
}
}
void nactiO2() {
// načtení stavu pinu O2 do proměnné
stavO2 = digitalRead(pinO2);
}
Po nahrání ukázkového kódu do Arduino desky s připojeným snímačem otáček si můžete vyzkoušet pohyb předmětu z jedné či druhé strany snímače a dostanete například tento výsledek:
-3 -2 -1 0 -1 -2 -3
Fotoelektrický snímač otáček je zajímavá ukázka, jak lze snímat otáčky včetně informace o směru pomocí jednoduché kombinace dvou snímačů. Uvedený ukázkový program slouží hlavně pro otestování samotného senzoru, protože například následná kalibrace v zařízení či měření rychlosti už záleží na umístění a provedení otočného elementu. Tento snímač pak lze použít v různých zařízeních, kde potřebujeme snímat otáčky pomocí foto elementů bez ovlivňování samotného zařízení.
Seznam použitých komponent:
https://dratek.cz/arduino/7763-seeeduino-v4.2-arduino-uno-kompatibilni.html
https://dratek.cz/arduino/1296-fotoelektricky-snimac-otacek-hewlett-packard.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