Elektroda.pl
Elektroda.pl
X
Elektroda.pl
CSICSI
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

ESP8266 i Tasmota - sterowanie przekaźnikiem WiFi krok po kroku

p.kaczmarek2 22 Dec 2020 16:21 3507 15
  • ESP8266 i Tasmota - sterowanie przekaźnikiem WiFi krok po kroku
    Witajcie moi drodzy
    Pokażę tutaj jak można łatwo złożyć z gotowych modułów (ESP8266, zasilacz, przekaźnik) własny sterownik IoT na WiFi. W przykładowej wersji pozwoli on nam przez internet włączać/wyłączać jedno urządzenie. Będzie to tak jakby Sonoff wersja DIY, ze szczegółowym opisem kolejnych kroków. Do projektu użyję gotowego, darmowego firmware Tasmoty dla ESP. Dodatkowo przedstawię też jak można wygodnie sterować urządzeniami Tasmoty z darmowej aplikacji na telefon (bez użycia pośrednika/brokera).
    Temat oczywiście przeznaczony jest dla nieco mniej zaawansowanych użytkowników. Raczej doświadczeni się tu nie dowiedzą wielu rzeczy.

    Wstęp
    Oczywiście samego Sonoffa nie ma raczej sensu robić samodzielnie, bo można go łatwo zakupić. Ale pokazana tutaj metoda jest uniwersalna, pozwala zrobić dowolny sterowany przez WiFi układ. Bardzo dużo można zrobić bez rekompilacji firmware Tasmoty (ten soft pozwala przez stronę ustawić co jest na jakich pinach ESP), a jeszcze więcej możliwości otwiera się gdy jesteśmy gotowi zrobić własną kompilację firmware i znamy trochę języka C.
    W ten sam sposób można też przerzucić dowolne gotowe urządzenie 'smart home' oparte na ESP8266 (np. produkcji Blitzwolfa) na Tasmotę i używać go normalne z softem open source, wolnym od pośrednictwa chmury producenta. Niektórzy mają często różne zarzuty, że producent może np. śledzić i zapisywać działania użytkownika, a proces z tematu wyklucza to ryzyko.

    Użyte moduły
    Do projektu użyłem łatwych do kupienia modułów.
    Przede wszystkim, moduł WiFi, czyli płytka z ESP8266, tutaj ESP8266-01. Kilka zdjęć z aukcji:
    ESP8266 i Tasmota - sterowanie przekaźnikiem WiFi krok po kroku
    ESP8266 i Tasmota - sterowanie przekaźnikiem WiFi krok po kroku
    Wyprowadzenia:
    ESP8266 i Tasmota - sterowanie przekaźnikiem WiFi krok po kroku
    UWAGA: ESP8266 zasilamy z 3.3V. Napięcie 5V go uszkodzi!
    Zasilacz 5V. Im mniejszy tym lepiej, ale musi zapewniać dostateczny prąd dla ESP i dla tego co chcemy podłączyć. Pomiary prądu przy napięciu 5V dla ESP8266-01 i jednego przekaźnika umieszczam na końcu tematu.
    ESP8266 i Tasmota - sterowanie przekaźnikiem WiFi krok po kroku
    Parametry:
    Quote:

    Input voltage AC85 ~ 265v 50 / 60HZ
    Output voltage DC5V
    Operating current 500mA Dimensions
    Volume: LWH 32 * 18 * 13 (mm)

    Zdjęcia:
    ESP8266 i Tasmota - sterowanie przekaźnikiem WiFi krok po kroku
    ESP8266 i Tasmota - sterowanie przekaźnikiem WiFi krok po kroku
    ESP8266 i Tasmota - sterowanie przekaźnikiem WiFi krok po kroku
    Zasilacz powyżej to oczywiście zasilacz impulsowy w topologii flyback, oparty o układ AP8012, po stronie wtórnej widać też TL431 (czyli precyzyjne źródło napięcia referencyjnego), pod dużym kondensatorem łączącym stronę wtórną z pierwotną jest transoptor. Na wyjściu ten zasilacz ma dwa kondensatory elektrolityczne i dławik, tworzące razem filtr, ale na wejściu nie ma żadnego bezpiecznika, więc też taki należy dać luzem. Bezpiecznik dobrałem od starego zasilacza 5V o podobnej mocy.

    Przekaźnik na 5V, SRD-05VDC-SL-C jest bardzo popularny:
    ESP8266 i Tasmota - sterowanie przekaźnikiem WiFi krok po kroku
    Schemat wewnętrzny, wyprowadzenia:
    ESP8266 i Tasmota - sterowanie przekaźnikiem WiFi krok po kroku
    Zdjęcie:
    ESP8266 i Tasmota - sterowanie przekaźnikiem WiFi krok po kroku
    Dodatkowo:
    - jakiś konwerter USB na UART do wgrania wsadu na ESP (lub 'programator' ESP na USB)
    - regulator LDO 3.3V, do zasilanie ESP. Pod ręką miałem MCP1702, regularnie też używam TC1264
    - Tranzystor (do włączania przekaźnika). Użyłem BC547
    - Dioda którą podłącza się równolegle do uzwojenia przekaźnika, może być 1N4148
    - Przycisk
    - Kilka kondensatorów (100nF przed LDO, 100nF za LDO, jakiś elektrolityczny za LDO)
    - gniazdo goldpin 4x2 pod ESP i dodatkowo lepiej też pod zasilacz (by można go łatwo wyjąć)
    - Drobnica (rezystory, zworki)
    Poniżej przedstawię krok po kroku procedurę składania własnego Sonoffa.

    Krok 1 - programowanie ESP8266
    Najpierw trzeba wgrać odpowiedni soft na ESP8266. Można to zrobić dowolną przejściówką USB/UART HW-597:
    ESP8266 i Tasmota - sterowanie przekaźnikiem WiFi krok po kroku
    Ta przejściówka wspiera poziom logiczny 3.3V UART wymagany przez ESP8266; w celu ustawienia go trzeba dać zworkę na piny VCC i 3.3V; jednak zasilić ESP8266 nie możemy z pinu 3.3V tam bo ma za małą wydajność prądową, trzeba podłączyć regulator LDO 3.3V do 5V z USB (też jest wyprowadzone na przejściówce). Dodatkowo potrzebujemy rezystorów 10k na RST i CH\PD. Szczegóły poniżej:
    ESP8266 i Tasmota - sterowanie przekaźnikiem WiFi krok po kroku
    (warto wiedzieć, że np. w przypadku innego modułu z ESP, np. czegoś od Tuyi, może być potrzeba umieszczenia rezystora pull-up na IO0, ale płytka użyta w tym temacie już ten rezystor na sobie ma, dlatego go nie dałem na schemat)
    Połączenia te wykonałem na płytce stykowej:
    ESP8266 i Tasmota - sterowanie przekaźnikiem WiFi krok po kroku ESP8266 i Tasmota - sterowanie przekaźnikiem WiFi krok po kroku
    Najpierw sprawdziłem działanie komend AT. Firmware od AT jest domyślnie wgrany na ten moduł z ESP, ale oczywiście nie będzie działać jeśli go nadpiszemy. Nie trzeba zwierać IO0 by przetestować AT.
    ESP8266 i Tasmota - sterowanie przekaźnikiem WiFi krok po kroku
    Po wysłaniu komendy "AT" moduł odpowiedział "OK", więc komunikacja działa.
    Następnie przyszła pora wgrania wsadu Tasmoty. Do pobrania stąd:
    http://ota.tasmota.com/tasmota/release/
    Po stronie komputera użyłem esptool.py zainstalowanego wraz z paczką wsparcia ESP dla Arduino IDE:
    https://github.com/esp8266/Arduino
    Zainstalowałem ją poprzez Boards Manager.
    Procedura programowania tutaj jest następująca:
    - odłączyć wszystko od zasilania (wyjąć wtyczkę z portu USB)
    - zewrzeć pin GPIO0 do masy
    - podłączyć z powrotem zasilanie
    - odczekać kilka sekund
    - odłączyć GPIO0 od masy
    - uruchomić esptool
    Oczywiście zamiast odcinania zasilania można użyć po prostu pinu RESET, ale wolę tu opisać sposób bez użycia pinu RESET gdyż niektóre gotowe moduły/urządzenia smart np. od Tuya nie mają pinu RESET wyprowadzonego, wiec ten sposób stąd jest uniwersalniejszy.
    Na początek samo sprawdzenie komunikacji - komenda esptool.py chip_id. Powinno poprawnie samo wykryć port COM a potem już moduł ESP, jego MAC, itp.
    ESP8266 i Tasmota - sterowanie przekaźnikiem WiFi krok po kroku
    Jak wszystko jest ok, to można już programować. Komenda esptool.py write_flash 0x0 tasmota.bin (plik .bin umieściłem w tym samym folderze co było esptool).
    ESP8266 i Tasmota - sterowanie przekaźnikiem WiFi krok po kroku
    Od tego momentu ESP ma wgrany flash Tasmoty (i nie będzie już obsługiwać komend AT, flash od AT został nadpisany)

    Krok 2 - konfigurowanie Tasmoty - konfiguracja WiFi
    Po ponownym uruchomieniu modułu (pamiętamy, by odpiąć GPIO0 od masy) powinna ukazać się nam sieć WiFi Tasmoty:
    ESP8266 i Tasmota - sterowanie przekaźnikiem WiFi krok po kroku
    Po podłączeniu się do tej sieci można rozpocząć konfigurację Tasmoty, czyli podać urządzeniu namiary na nasze WiFi. Urządzenie dostępne jest zawsze na IP 192.168.4.1 (oczywiście to tylko tymczasowo, potem dostanie już swoje IP przez DHCP od naszego routera):
    ESP8266 i Tasmota - sterowanie przekaźnikiem WiFi krok po kroku
    Tutaj też ustawiamy nazwę hosta naszego urządzenia (hostname) której możemy używać do jego rozpoznania zamiast adresu IP.
    Zapisujemy zmiany:
    ESP8266 i Tasmota - sterowanie przekaźnikiem WiFi krok po kroku
    W tym momencie sieć WiFi od Tasmoty powinna zniknąć. Natomiast nasz router powinien wykryć nowe urządzenie.
    ESP8266 i Tasmota - sterowanie przekaźnikiem WiFi krok po kroku
    192.168.0.107 to jest IP przypisane ESPowi poprzez DHCP przez nasz router. Te IP jest zmienne, może w przyszłości być inne. Komunikat "lease host name not found" oznacza, że mój router nie wspiera ustawiania nazwy hosta klienta, nie jest to niezbędne, choć mogłoby się przydać jeśli byśmy np. używali skanera IP by określić jakie urządzenia mamy podłączone.

    Krok 3 - konfigurowanie Tasmoty - konfiguracja pinów wyjścia
    Od teraz urządzenie dostępne jest w naszej sieci WiFi pod adresem 192.168.0.107. Można tam określić co jest podłączone do którego pinu ESP i jak jest sterowane:
    ESP8266 i Tasmota - sterowanie przekaźnikiem WiFi krok po kroku
    Otwieramy Configuration:
    ESP8266 i Tasmota - sterowanie przekaźnikiem WiFi krok po kroku
    Potem Configure Module:
    ESP8266 i Tasmota - sterowanie przekaźnikiem WiFi krok po kroku
    W tym miejscu możemy zrobić dwie rzeczy. Można ustawić konkretny rodzaj płytki jaki mamy (ogranicza nam to ilość dostępnych pinów):
    ESP8266 i Tasmota - sterowanie przekaźnikiem WiFi krok po kroku
    Możemy też ustawić rolę konkretnych pinów (a ról jest dużo, wszystko gotowe do użycia):
    ESP8266 i Tasmota - sterowanie przekaźnikiem WiFi krok po kroku
    Możemy ustawić różną ilość przekaźników (po prostu wybiera się im indeks) i Tasmota sama utworzy dla nich przyciski na stronie WWW, fizyczne przyciski z układu też sama z nimi połączy (po indeksie).
    Tak zrobiony układ działa - stan diody LED można zmieniać zarówno przyciskiem jak i przez stronę. Po zmianie stanu diody LED przyciskiem strona sama się po chwili odświeża:
    ESP8266 i Tasmota - sterowanie przekaźnikiem WiFi krok po kroku ESP8266 i Tasmota - sterowanie przekaźnikiem WiFi krok po kroku


    Krok 4 - reszta układu
    To już jest kwestia inwencji twórczej użytkownika. Można samemu wytrawić PCB, można je zlecić płytkarni, można zlutować całość na uniwersalnej płytce wierconej. Układ jest prosty, nie powinno być żadnego problemu. Należy jedynie pamiętać o tym by zachować odpowiedni odstęp między ścieżkami podłączonymi do sieci a resztą układu. W przypadku płytki wierconej warto w ogóle usunąć oczka miedzi między nimi (lekkie naciśnięcie ich grotem lutownicy spowoduje ich odpadnięcie). Warto też użyć gniazd pod moduł zasilacza i ESP8266, by móc w razie czego je wyjąć np. do update firmware (choć można go też wykonać przez WiFi).
    Schemat połączeń:
    ESP8266 i Tasmota - sterowanie przekaźnikiem WiFi krok po kroku
    W zasadzie wszystko jak w Sonoff, warto się też więc z jego schematem zapoznać:
    ESP8266 i Tasmota - sterowanie przekaźnikiem WiFi krok po kroku ESP8266 i Tasmota - sterowanie przekaźnikiem WiFi krok po kroku
    W Sonoff też są dwa napięcia, 5V dla przekaźnika i 3.3V dla ESP. Przekaźnikiem steruje 2N7002.
    Ostateczna konfiguracja Tasmoty:
    ESP8266 i Tasmota - sterowanie przekaźnikiem WiFi krok po kroku
    W trakcie składania:
    ESP8266 i Tasmota - sterowanie przekaźnikiem WiFi krok po kroku
    Prawie gotowe:
    ESP8266 i Tasmota - sterowanie przekaźnikiem WiFi krok po kroku


    Krok 5 - obudowa
    W układzie występują napięcia niebezpieczne dla życia, więc tym bardziej należy pomyśleć o obudowie. Swoją obudowę zaprojektowałem w Blenderze i wydrukowałem z filamentu PLA na drukarce 3D Ender 3 Pro. Projekt obudowy:
    ESP8266 i Tasmota - sterowanie przekaźnikiem WiFi krok po kroku
    ESP8266 i Tasmota - sterowanie przekaźnikiem WiFi krok po kroku
    Składanie:
    ESP8266 i Tasmota - sterowanie przekaźnikiem WiFi krok po kroku
    ESP8266 i Tasmota - sterowanie przekaźnikiem WiFi krok po kroku
    Złożony przekaźnik:
    ESP8266 i Tasmota - sterowanie przekaźnikiem WiFi krok po kroku
    Obudowa składa się z czterech części:
    - podstawa
    - pokrywa
    - dodatkowa osłona terminali śrubowych
    - przycisk (a właściwie to "przedłużka" która wciska przycisk tactile switch)

    Krok 6 - Statyczne IP
    Zostaje jeszcze kwestia adresu IP urządzenia. Domyślnie nadawany jest on dynamicznie przez router poprzez DHCP, czyli może ulec zmianie. Nie zawsze jest to coś co jest przez nas oczekiwane.
    Na szczęście Tasmocie można nadać statyczne IP, czyli takie, które się nie zmienia.
    Wykonuje się to w konsoli Tasmoty:
    ESP8266 i Tasmota - sterowanie przekaźnikiem WiFi krok po kroku
    Wpisujemy tam: IPAddress 192.168.0.50
    W konsoli powinna pojawić się odpowiedź:
    Quote:

    13:19:26 CMD: IPAddress 192.168.0.50
    13:19:26 RSL: stat/tasmota_EC3F8F/RESULT = {"IPAddress1":"192.168.0.50 (192.168.0.107)"}

    Następnie trzeba uruchomić ponownie urządzenie:
    ESP8266 i Tasmota - sterowanie przekaźnikiem WiFi krok po kroku
    Od tego momentu urządzenie będzie mieć ciągle ten adres IP. Gdybyśmy korzystali z MQTT i brokera nie byłoby to potrzebne, ale tutaj pokazuję jak poradzić sobie bez tego.

    Krok 7 - Aplikacja na telefon
    Normalnie trzeba by postawić jeszcze swojego brokera MQTT, czyli takiego pośrednika między naszym telefonem a urządzeniami Tasmoty, ale do pewnego stopnia można to pominąć.
    Są aplikacje które pozwalają bezpośrednio sterować urządzeniami Tasmoty.
    Różnią się one od aplikacji Blitzwolfa, Smart Life, i innych firm przede wszystkim tym, że nie wymagają połączenia z serwerem producenta, czyli też nie śledzą, nie zbierają danych, a my mamy nad wszystkim kontrolę.
    (Chociaż w idealnym scenariuszu to powinniśmy sami skompilować taką aplikację z kodu źródłowego, a nie ściągać np. z Google Play).
    Przykładem takiej aplikacji może być Tasmota Control:
    ESP8266 i Tasmota - sterowanie przekaźnikiem WiFi krok po kroku
    UWAGA: DHCP na routerze nie gwarantuje, że te samo urządzenie dostanie zawsze to samo IP. Jeśli chcemy na dłuższą metę korzystać z tej apki, to musimy skonfigurować to tak, by miało statyczne IP. Inaczej sparujecie apkę z urządzeniem, a potem minie kilka dni (lub miesięcy) i nagle nastąpi zmiana IP urządzenia na inne... alternatywnym rozwiązaniem jest odnoszenie się do urządzenia po jego nazwie hosta. Można jej używać zamiast adresu IP.
    Po uruchomieniu Tasmota Control mamy do wyboru trzy przyciski:
    ESP8266 i Tasmota - sterowanie przekaźnikiem WiFi krok po kroku
    W Configuration dodajemy nowe urządzenie. Sprowadza się to tylko do wpisania jego adresu IP (i portu 80, gdyż komunikacja odbywa się po HTTP). Nic więcej nie potrzeba:
    ESP8266 i Tasmota - sterowanie przekaźnikiem WiFi krok po kroku
    ESP8266 i Tasmota - sterowanie przekaźnikiem WiFi krok po kroku
    ESP8266 i Tasmota - sterowanie przekaźnikiem WiFi krok po kroku
    ESP8266 i Tasmota - sterowanie przekaźnikiem WiFi krok po kroku
    Interfejs jest tu troszkę dziwny, bo najpierw musimy kliknąć "Add", potem dopiero znaleźć dopiero co dodane urządzenie na liście, kliknąć "Edit" i tam w "General" ustawić IP. Ale to wersja beta.
    Od tego momentu w Devices mamy nowe urządzenie:
    ESP8266 i Tasmota - sterowanie przekaźnikiem WiFi krok po kroku
    I możemy nim sterować przez telefon, oczywiście bez pośrednictwa osób trzecich (bez zewnętrznych firm, które mogą o nas gromadzić dane) i bez potrzebny podłączenia się do internetu, wszystko w obrębie naszego jednego WiFi.

    Krok 8 - prezentacja
    Filmik poniżej pokazuje działanie złożonego przekaźniczka, wraz z jego strona WWW do kontroli (tą postawioną na ESP) oraz aplikacją Tasmota Control. Widać jak szybko reaguje przekaźnik na przycisk oraz jak szybko aplikacje pokazują jego nowy stan:

    Warto tu jeszcze zaznaczyć jak to wewnętrznie działa. Aplikacje tutaj na bieżąco muszą odpytywać ESP o jego stan, używają do tego protokołu HTTP, a dokładniej zapytań w stylu:
    http://192.168.0.50/cm?cmnd=Status%200
    To samo można wysłać przez przeglądarkę i zobaczyć co Tasmota odpowie. Odpowiedź Tasmoty:
    ESP8266 i Tasmota - sterowanie przekaźnikiem WiFi krok po kroku
    Ta odpowiedź jest w formacie JSON.
    Tak samo aplikacje sterują przekaźnikiem. Wysyłają komendę poprzez HTTP:
    http://192.168.0.50/cm?cmnd=Power%20TOGGLE
    ESP odpowiada na to:
    {"POWER":"ON"}
    Oczywiście mamy jeszcze MQTT, ale tutaj akurat nie jest on używany.
    Dodatkowo nasuwa się już jeden wniosek - otwarta aplikacja (lub strona internetowa) aktywnie odpytuje ESP o jego stan. To aplikacja nawiązuje połączenie (jako klient) a ESP tylko odpowiada.

    Pomiar napięcia, prądu
    Zmierzyłem też ile prądu pobiera przedstawiony tu układ, osobno z włączonym i wyłączonym przekaźnikiem.
    Pomiar wykonałem na wyjściu zasilacza 5V (czyli straty na nim nie są uwzględnione), czyli przed użytym regulatorem 3.3V MCP1702.
    Na wyjściu jest stabilne 5V, nawet pod obciążeniem:
    ESP8266 i Tasmota - sterowanie przekaźnikiem WiFi krok po kroku
    Następnie zużycie prądu. Z włączonym przekaźnikiem:
    ESP8266 i Tasmota - sterowanie przekaźnikiem WiFi krok po kroku
    Z wyłączonym:
    ESP8266 i Tasmota - sterowanie przekaźnikiem WiFi krok po kroku
    Zużycie prądu trochę się zmienia w zależności od tego czy ESP nadaje. Na zdjęciach powyżej są największe zanotowane pomiary jakie miałem, czasem były też niższe. W trakcie pomiarów ESP był podłączony do mojej sieci WiFi i miałem jego stronę internetową otwartą (czyli ESP na bieżąco się komunikował i musiał nadawać; bo zarówno strona internetowa jak i aplikacja na telefon na bieżąco odpytują ESP o jego stan).
    Zauważyłem, że w momencie gdy ESP nie nadaje wcale to zużycie prądu spada z pokazanego 60mA nawet do 20mA.
    Podsumowując, przy aktywności sieciowej ESP mamy:
    - z włączonym przekaźnikiem aż do 140mA przy 5V, czyli 0.7W (+ straty na zasilaczu)
    - z wyłączonym przekaźnikiem aż do 70mA przy 5V, czyli 0.35W (+ straty na zasilaczu)
    Gdy ESP nie nadaje, to zużycie prądu spada. ESP nie nadaje cały czas, więc pewnie zasadniczo zużywa mniej niż te 0.7W.
    Wyniki moich pomiarów są zgodne z pomiarami dla klasycznego Sonoff które znalazłem w sieci.

    Wskazówka: Jak działa odświeżanie strony Tasmoty?
    Możemy jeszcze podejrzeć jak zrealizowane jest odświeżanie strony WWW urządzenia Tasmoty. W tym celu obejrzymy jej źródło wpisując w przeglądarce:
    view-source:http://192.168.0.50/?
    W ten sposób można obejrzeć kod HTML dowolnej odwiedzanej przez nas strony internetowej.
    Kod strony Tasmoty wygląda tak:
    Code: html
    Log in, to see the code

    Mamy tutaj trzy sekcje. Sam kod HTML strony, styl CSS strony (blok style) oraz kod skryptu Javascript który odpytuje dokładnie co 2345 ms urządzenie Tasmoty o jego stan, tutaj:
    Code: javascript
    Log in, to see the code

    Funkcja 'la' wywołuje sama siebie poprzez setTimeout i regularnie wysyła kolejne zapytania GET poprzez XMLHttpRequest które potem są odbierane w onreadystatechange. Funkcja z onreadystatechange podmienia tylko fragment strony ze stanami przekaźników, nie przeładowuje całej strony.

    Wskazówka: Reset Tasmoty
    Tasmota posiada wbudowaną możliwość zresetowania ESPa do stanu sprzed parowania z WiFi. Uruchamia się ją dłuższym wciśnięciem przycisku określonego jako Button1 (około 40 sekund). Po jej włączeniu ESP znów jest widoczny jako otwarta sieć "tasmota-xxxx".
    Wiąże się z tym jednak pewien problem.
    Jeśli konfigurujemy nasze urządzenie samodzielnie i coś źle ustawimy z przyciskiem (np. damy wersję active-up z rezystorem pull-up), na skutek czego ESP "pomyśli", że ma wciśnięty ciągle przycisk, to po 40 sekundach sam zresetuje się do stanu początkowego.
    Da się jednak to łatwo wyłączyć.
    W konsoli Tasmoty wpisujemy:
    setoption1 1
    oraz
    setoption13 1

    Wskazówka: Piny ESP8266
    Przy podłączaniu elementów do ESP8266 musimy mieć świadomość tego, że ściągnięcie do masy niektórych pinów może zablokować bootowanie układu. Wtedy ESP8266 po prostu się nie włączy i nie będzie obecny w sieci WiFi.
    Problem jest o tyle większy, że wszystko będzie działać jeśli podłączymy coś do tych pinów już w trakcie działania ESP (np. podczas zabaw na płytce stykowej). Kłopoty zaczną się dopiero gdy odłączymy i ponownie podłączymy zasilanie.
    Poniżej lista pinów ESP8266-01 na które trzeba uważać:
    - GPIO0 (stan niski przy bootowaniu powoduje włączenie trybu programowania)
    - GPIO1 (pin TX; stan niski przy bootowaniu powoduje włączenie chip_test_mode)
    - GPIO2 (niski stan zablokuje bootowanie)
    - GPIO15 (pin CS od SPI; wysoki stan na nim zablokuje bootowanie)
    Stan niski na pinie może powodować również taki układ:
    ESP8266 i Tasmota - sterowanie przekaźnikiem WiFi krok po kroku
    Gdy podłączymy go np. do GPIO1 (TX) to ESP się nie uruchomi.
    Więcej można poczytać o tym w nocie katalogowej ESP8266:
    ESP8266 i Tasmota - sterowanie przekaźnikiem WiFi krok po kroku
    Dla wygody poniżej ją załączam:
    0a-esp8266...eet_en.pdf Download (870.58 kB)

    Wskazówka: Nazewnictwo pinów ESP
    Warto tu jeszcze zwrócić uwagę na to, że nie zawsze numer pinu GPIO odpowiada numerowi pinu na używanej płytce. Na przykład w przypadku NodeMCU:
    ESP8266 i Tasmota - sterowanie przekaźnikiem WiFi krok po kroku
    Na grafice widać wyraźnie, że np. D1 to GPIO5, D4 to GPIO2, a D3 to GPIO0. Może to przysporzyć nieco kłopotów poczatkującym, dlatego tu o tym wspominam.

    Wskazówka: Pamięć ESP8266
    Sam ESP8266 nie posiada pamięci Flash; pamięć ta znajduje się w układzie tuż obok, na zdjęciu poniżej jest to MK25D80B:
    ESP8266 i Tasmota - sterowanie przekaźnikiem WiFi krok po kroku
    80 sugeruje, że jest to pamięć 8Mbit, czyli 1MB:
    ESP8266 i Tasmota - sterowanie przekaźnikiem WiFi krok po kroku
    Zgadza się to też z tym co wykrywa programator:
    ESP8266 i Tasmota - sterowanie przekaźnikiem WiFi krok po kroku
    1MB to może być dość mało, zwłaszcza jeśli chcemy mieć możliwość aktualizowania wsadu przez WiFi. W tej sytuacji rozmiar pamięci Flash powinien być na tyle duży, by móc jednocześnie pomieścić aktualny wsad i nowy wsad, gdyż w procesie aktualizacji oba muszą być w pamięci jednocześnie. Możemy na szczęście odlutować pokazaną powyżej pamięć Flash i na jej miejsce dać zamiennik o większym rozmiarze, na przykład W25Q32BVSSIG/W25Q32BVSIG/25Q32BVSIG/W25Q32.
    ESP8266 i Tasmota - sterowanie przekaźnikiem WiFi krok po kroku

    Wskazówka: ESP8266 USB Flasher
    Pokazana przeze mnie metoda wgrania wsadu na ESP8266 przy użyciu przejściówki HW-597 jest uniwersalna, ale można też kupić pod ten konkretny użyty tutaj moduł ESP-01 gotowy programator:
    ESP8266 i Tasmota - sterowanie przekaźnikiem WiFi krok po kroku
    ESP-01 po prostu się na niego nakłada:
    ESP8266 i Tasmota - sterowanie przekaźnikiem WiFi krok po kroku
    Z pewnością jest to prostsze niż to co przedstawiłem, choć samo działanie jest identyczne.

    Wskazówka: Pisanie programów pod ESP8266
    Warto jeszcze wspomnieć, że możemy samodzielnie pisać programy pod ESP8266, używa się do tego Arduino IDE. Trzeba w tym celu zainstalować paczkę wsparcia ESP poprzez Boards Manager. Szczegóły tutaj:
    https://github.com/esp8266/Arduino
    Poruszałem tą kwestię już w innym temacie, tutaj:
    https://www.elektroda.pl/rtvforum/viewtopic.php?p=19056892#19056892
    W temacie powyżej użyłem modułu TYWE3S z urządzenia 'smart', ale tam też siedzi ESP8266, tylko inaczej są wyprowadzone piny.

    Załącznik
    Umieszczam tutaj mój model obudowy klonu Sonoff wykonany w programie Blender:
    relayCas..7.zip Download (90.57 kB)Points: 0.5 for user
    Jak otworzycie go Blenderem, to możecie wyeksportować STLe.

    Podsumowanie
    W pokazany tutaj sposób możemy samodzielnie złożyć własny kontroler IoT z dowolną ilością przekaźników, przycisków i nie tylko. Wsad Tasmoty można do niego wygodnie dostosować przez formularz WWW. Można również go kontrolować przez WWW i przez aplikację na telefon; nie jest potrzebny do tego żaden zewnętrzny serwer ani broker. Ważne tylko jest statyczne IP, bo inaczej prędko nasze urządzenie IoT się "zgubi" lub nawet zamieni miejscami z innym urządzeniem. Zamiast statycznego IP można też użyć nazwy hosta (unikalnej dla każdego urządzenia, ustawianej przy konfiguracji Tasmoty), wtedy IP już może być zmienne.
    Do opracowania została kwestia MQTT oraz brokera, ale jak widać nie są one niezbędne do zrobienia sobie własnej namiastki 'smart house'.
    Czy macie jakieś doświadczenia z Tasmotą lub ogólnie tematem ESP i IoT? Zapraszam do dyskusji.

    Cool! Ranking DIY
    Can you write similar article? Send message to me and you will get SD card 64GB.
  • CSICSI
  • #2
    khoam
    Level 39  
    p.kaczmarek2 wrote:
    Warto tu jeszcze zwrócić uwagę na to, że nie zawsze numer pinu GPIO odpowiada numerowi pinu na używanej płytce.

    Numery na płytce, czyli Dx to jest alternatywny sposób numeracji dla Arduino Core - to są stałe, którym przypisane są właściwe numery GPIO.
    Code: c
    Log in, to see the code

    p.kaczmarek2 wrote:
    Ważne tylko jest statyczne IP, bo inaczej prędko nasze urządzenie IoT się "zgubi" lub nawet zamieni miejscami z innym urządzeniem.

    Niekoniecznie. Urządzenie IoT może być identyfikowane poprzez jego nazwę DNS, niezależnie od jego adresu IP. Do tego służy komenda WiFi.hostname(): Link
  • #3
    p.kaczmarek2
    Level 25  
    khoam wrote:

    p.kaczmarek2 wrote:
    Ważne tylko jest statyczne IP, bo inaczej prędko nasze urządzenie IoT się "zgubi" lub nawet zamieni miejscami z innym urządzeniem.

    Niekoniecznie. Urządzenie IoT może być identyfikowane poprzez jego nazwę DNS, niezależnie od jego adresu IP. Do tego służy komenda WiFi.hostname(): Link


    Masz rację, oczywiście można też po prostu użyć nazwy hosta, rozwiązuje to problem z IP. W aplikacji na telefon też można zamiast IP dać nazwę hosta, tutaj:
    ESP8266 i Tasmota - sterowanie przekaźnikiem WiFi krok po kroku
    i to rozwiązuje sprawę, choć już tego nie testowałem, bo coś u mnie router ma problem z nazwami hostów (w logach jest lease host name not found a skaner IP nie wykrywa nazwy hostów urządzeń z ESP, choć mojego NAS wykrywa). Dopiero mam zamiar do tego usiąść i sprawdzić, co jest nie tak.
  • #4
    Bazic
    Level 15  
    Bardzo dokładnie rozpisany temat. Podoba mi się. I wcale nie trzeba było dawać doopochronu w postaci klauzuli o tych zaawansowanych ;)
  • CSICSI
  • #5
    p.kaczmarek2
    Level 25  
    W przyszłym miesiącu wrzucę też szczegółowy opis wgrywania własnego firmware przez WiFi dla dowolnego kupionego w sklepie urządzenia IoT opartego o moduł z ESP od Tuya. Czyli tuya-convert. Wtedy nie trzeba mieć żadnego programatora ani nawet nie trzeba otwierać obudowy urządzenia.
  • #6
    h3c4
    Level 14  
    Że Ci się chciało tworzyć taki "ogryzek" przy dostępnych gotowych rozwiązaniach.
  • #7
    p.kaczmarek2
    Level 25  
  • #8
    Stanley_P
    Level 27  
    p.kaczmarek2 wrote:
    Ważne tylko jest statyczne IP, bo inaczej prędko nasze urządzenie IoT się "zgubi" lub nawet zamieni miejscami z innym urządzeniem.

    Tak tylko z ciekawości zapytam, bo jestem na wstępie do wstępu rozkminiania tych wszystkich ESP, inteligentnych gniazdek, itp.: czy "nasze urządzenia IoT" nie mają unikatowego adresu MAC? W większości, jeśli nie we wszystkich routerach jest opcja rezerwacji stałego adresu IP na podstawie adresu MAC (zazwyczaj w okolicach opcji konfiguracji DHCP).
  • #10
    p.kaczmarek2
    Level 25  
    A to też jest dobry pomysł. Oczywiście, że mają różne MAC, choć i tak jednak te rozwiązanie z nazwą hosta pewnie jest troszkę lepsze, bo można ją ustawić tak by mówiła nam jaką rolę pełni dany ESP.
    Przypisywanie IP do MAC można łatwo ustawić na routerze tak jak mówisz:
    ESP8266 i Tasmota - sterowanie przekaźnikiem WiFi krok po kroku
    ESP8266 i Tasmota - sterowanie przekaźnikiem WiFi krok po kroku
    MAC jest widziany zarówno przez router, jak i w ustawieniach Tasmoty:
    ESP8266 i Tasmota - sterowanie przekaźnikiem WiFi krok po kroku
    I zresztą na ESP można go zmienić funkcją esp_wifi_set_mac.
  • #11
    khoam
    Level 39  
    p.kaczmarek2 wrote:
    I zresztą na ESP można go zmienić funkcją esp_wifi_set_mac.

    Taka komenda jest dostępna dla ESP32. W wypadku Arduino Core dla ESP8266 jest to komenda wifi_set_macaddr().
  • #12
    JarekC
    Level 31  
    Czy przedstawiona konfiguracja pozwala na sterowanie z dowolnego miejsca na świecie czy tylko z sieci lokalnej?
  • #14
    p.kaczmarek2
    Level 25  
    Chyba najwygodniej byłoby to zrealizować już mając postawionego Brokera MQTT. Zamierzam to opisać w przyszłości.
    ESP8266 i Tasmota - sterowanie przekaźnikiem WiFi krok po kroku
    Być może przyda się też przekierowanie portów (na naszym routerze i na tym od ISP)

    chociaż jak się bawiłem w 100% DIY sterowanie przekaźnikami poprzez Ethernet na PIC18F67J60 to miałem panel dostępny z całego świata przez Internet bez zewnętrznego IP u siebie, tunelowania, itp..... po prostu postawiłem sobie ZA DARMO stronę na polskim serwisie hostingowym i napisany tam mój skrypt PHP pozwalał wszystkim kontrolować, natomiast PICe tylko wysyłały do niego zapytania o stan co sekundę i potem ten stan przyjmowały. Oczywiście czas reakcji (włączenia światła np zdalnie) wynosił tą sekundę czy ileś, ale to nie problem.
  • #15
    JarekC
    Level 31  
    Chętnie bym poczytał/obejrzał poradnik jak zdalnie konfigurować kontrolować urządzenia trochę bardziej skomplikowanie niż typu zał/wyłącz.
    Być może że będę realizował projekt rozbudowy lub przeprojektowania urządzenia ale jest tam kilkadziesiąt różnych parametrów, kalendarz załączeń itp, łącznie około 1kB danych.
    Urządzeń może być kilkadziesiąt porozrzucanych po całym kraju.
  • #16
    hedo77
    Level 10  
    Cześć,

    JarekC wrote:
    Chętnie bym poczytał/obejrzał poradnik jak zdalnie konfigurować kontrolować urządzenia trochę bardziej skomplikowanie niż typu zał/wyłącz.
    Być może że będę realizował projekt rozbudowy lub przeprojektowania urządzenia ale jest tam kilkadziesiąt różnych parametrów, kalendarz załączeń itp, łącznie około 1kB danych.
    Urządzeń może być kilkadziesiąt porozrzucanych po całym kraju.


    Do tego polecam Node-RED i MQTT. Czujnik raportują się na brokera MQTT z którego Node-RED pobiera wartości i wykonuje określone działanie.. myślę ze Node-RED dorównuje sterownikom PLC jest mega elastyczny i prosty...

    Dwa kanały z polskiego youtuba powinny pomóc..
    ArturHome
    Inżynier Domu