pátek 7. května 2021

Efektní rozsvěcení schodiště - část třetí - zapojení, kód pro ESP a NODE-RED

 V první části návodu "Efektní rozsvěcení schodiště - část první chytrá žárovka" jsem popsal jak si vytvořit ovládání žárovky pomocí čidel. 

V druhé části najdete jaké komponenty pro ovládání osvětlení schodiště - jednotlivých stupňů lze použít.


Programování ESP32

 jsem provedl v ARDUINO IDE

Pro co největší univerzálnost ovládání jsem se rozhodl použít posílání parametrů v JSON formátu.

MQTT topic jsem zvolil "domek/schodiste/set/" a jako payload posílám následující data:

 {"smer":1,"rychlost":90,"cas":3000,"intenzita":20,"schody":[0,1,1,0,1,0,1,0,1,0,1,0,1,1,1]}

Vysvětlivky:

smer = směr rozsvěcení - bud 1 (ze spodu)  nebo 2 (ze shora)

rychlost = čas v ms mezi rozsvěcením jednotlivých schodů

cas = doba než dojde k zhasnutí (ve směru ve kterém bylo rozsvíceno)

intenzita = intenzita světla jednotlivých LED pásků (0-255)

schody = pole ve kterém je definováno, které schody se mají rozsvítit - pokud jsou samé 1 rozsvítí se všechny 

Určitě by bylo možné přidat ještě nějaké parametry, ale pro reálné každodenní použití postačují tyto.

Zajímavé části kódu pro ESP:

- definice funkcí pro rozsvícení/zhasnutí daného schodu:

void rozsvit (int schod,int intenzita){ 
  Serial.print("zapinam schod č.: ");
  Serial.println(schod);
  ledcWrite(schod, intenzita);
}


void zhasni (int schod){
  Serial.print("vypínám schod č.: ");
  Serial.println (schod);
 ledcWrite(schod, 0);
}

pro každý schod je potřeba provést inicializace:

ledcAttachPin(schod[1],1);
ledcSetup(1, 5000, 8); // schod, 5 kHz PWM, 8-bit resolution


a callback funkce, která obsluhuje pokud přijde správný topic:

Pro zapojení PWM

 regulátoru je nutné použít piny ESP32, které to umožňují (označeny červeně):


zapojení MOSFETu je následující:

Takže propojení mezi ESP32 a MOSFETy je velmi jednoduché -> propojení jednotlivých PWM pinů ESP a pin MOSFET signál PWM+ (a GND). 

NODE-RED

Takto vypadá definice (pro přehlednost používám SUBFLOW - "schodiste-podminky"):




SUBFLOW - "schodiste-podminky":


v první části dojde k vyhodnocení pohybu z čidel (toto může být provedeno klidně i jinde v rámci NODE-REDu) a podle toho k rozdělení :
v druhé části dojde k vyhodnocení jestli je den/noc a poslání správného PAYLOADu v JSON formátu.



Například pro denní rozsvícení všech schodů ze shora: 

{"smer":1,"rychlost":90,"cas":61000,"intenzita":130,"schody":[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]}

Celý kód pro NODE-RED je tady:



Pokud se Vám článek líbil můžete přispět na další podobné články :)

Žádné komentáře:

Okomentovat