
Moduł jest zrobiony - tak tanio, jak kosztuje. Oczywiście w środku nie ma ESP, a Bekken WBR2 (bezużyteczny), ale na szczęście - na płytce pionowej, którą łatwo wywalić i wstawić Tywe02S = ESP02s w to miejsce.
Płytek Tywe2s mam dużo - więc konwertujemy!
UWAGA NR1 - TEN MODUŁ NIE MA ŻADNEJ IZLOACJI OD 230V !!! ((W PRZECIWIEŃSTWIE DO SONOFF ORYGINAŁÓW)
NIE MA MOWY O UŻYCIU WYPROWADZANIU CZEGOKOLWIEK NA ZEWNĄTRZ (DS18v20 itp sensorów) BO BĘDĄ NA NAPIĘCIU SIECI!
Moduł ma tak prosty układ, jak tylko się da
+3.3v
GND (masa)
GPIO12 = przekaźnik, załączany stanem wysokim
GPIO13 = przycisk (klasycznie, zwierający do masy, czyli "logika odwrócona", wewnętrzny pullup nie jest konieczny bo jest zewnętrzny rezystor)
GPIO4 = LED, aktywny stanem niskim
ALE UWAGA NR2
Mianowicie - wgrywając oprogramowanie GG z builera i ustawiając przekaźnik i przycisk ... dostajemy Bardzo nietypowe zachowanie
Z poziomu aplikacji, jak i chmury - przekaźnik możemy włączyć, możemy wyłączyć, jest super.
Z poziomu fizycznego przycisku w układzie ... NIE MA TAKIEJ OPCJI - nie da się PRZEŁĄCZAĆ stanu przekaźnika.
Potwierdza to też układ (diagnostyka na UART wypuszczana) - każde przyciśnięcie guzika to:
Code: Select all
Relay[0] toggle (duration 0 ms)
Relay[0] turn ON (duration 0 ms)
**** Digital write[0], gpio: 12; value 1
Relay[0] toggle (duration 0 ms)
Relay[0] turn ON (duration 0 ms)
**** Digital write[0], gpio: 12; value 1
Relay[0] toggle (duration 0 ms)
Relay[0] turn ON (duration 0 ms)
**** Digital write[0], gpio: 12; value 1
Relay[0] toggle (duration 0 ms)
Relay[0] turn ON (duration 0 ms)
**** Digital write[0], gpio: 12; value 1
Relay[0] toggle (duration 0 ms)
Relay[0] turn ON (duration 0 ms)
**** Digital write[0], gpio: 12; value 1
Relay[0] toggle (duration 0 ms)
Relay[0] turn ON (duration 0 ms)
**** Digital write[0], gpio: 12; value 1
Relay[0] toggle (duration 0 ms)
Relay[0] turn ON (duration 0 ms)
**** Digital write[0], gpio: 12; value 1Owszem, mogłoby to być po prostu źle skonfigurowane w parametrach przycisku, ale NIE!, jest dobrze: Problem jest czysto SPRZĘTOWY: Chińczyk spierdzielił projekt i montaż
1. przyciśnięcie przycisku sprawdza stan portu GPIO przekaźnika (by nie wnikać, kto i jak go wcześniej wtym stanie ustawił).
2. jeśli stan portu wyjściowego dla przekaźnika jest niski, to przełącz na wysoki.
3. jeśli stan portu wyjściowego jest wysoki, to przełącz na niski.
Taaa tylko że tutaj stan portu jest ZAWSZE NISKI!
Dlaczego?
Bo przekaźnikiem miał sterować mosfet Q1, którego bramkę steruje się napięciem (nie pobiera prądu, w uproszczeniu). Tak jest w oryginalnych sonoffach (i wielu innych modułach).
Ale chińczyk przyoszczędził - i wstawił tu tranzystor NPN! Którego bramka do masy to jak dioda, ze spadkiem ~0.7v. W dodatku - by ten biedny tranzystorek przeżył - musi być "na maksa nasycony" więc chińczyk dał rezystor R5 pomiędzy GPIO a bazę tranzystora = 1R50 czyli 1.5ohma. W efekcie - na porcie GPIO12 napięcie albo wynosi 0v (i przekaźnik nie jest włączony), albo ESP usiłuje z całych sił ustawić stan wysoki - to napięcie wynosi około 0.8v - i od strony programu nadal jest odczytywane jak stan niski...
Zmiana rezystora 1.5ohm na coś większego - powiedzmy 10Kohm - powoduje już "normalne zachowanie" od strony programowej, ale za to tranzystor Q1 grzeje się jak wściekły (bo ma za małe wysterowanie w stosunku do prądu przewodzonego) - obawiam się że długo tego nie przeżyje. Powodem jest to, że zastosowany przekaźnik ciśnie przez tranzystor pogańskie 200mA (!) - a zastosowany zasilacz wprost z sieci - bez izolacji - daje takie-sobie niezbyt stabilizowane 5-6v dla tego przekaźnika (na szczęście - później jeszcze obniżane LDO do 3.3v dla ESP - i tam jest w miarę stabilne).
Tak po prawdzie - to trzeba by ten tranzystor wymienić na jakiegoś mosfeta np 2n7002 - wtedy to ma sens.
EDIT: zmierzyłem charakterystykę - wartość R5 = 1k0 jest optymalna, już tranzystor jest dobrze nasycony, i się nie grzeje, a równocześnie prąd płynący z GPIO esp nie jest za duży.
