logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Sterowanie poprzez ESP-01 (ESP8266)

krzbor 18 Lip 2016 20:39 20718 22
  • W Internecie spotkałem wiele opisów i przykładów sterowania urządzeniami poprzez ESP-01. Ten najmniejszy z modułów zawierających ESP8266 posiada cztery uniwersalne wejścia/wyjścia. Świadomie piszę cztery, gdyż na wielu forach o tym układzie pisze się, że posiada piny Rx,Tx,GPIO0 i GPIO2. W rzeczywistości mapy:
    GPIO0, GPIO1 (Tx0), GPIO2 (Tx1) i GPIO3 (Rx).
    Chciałbym przedstawić część sterującą przekaźnikami (lub innymi odbiornikami) z wykorzystaniem tego układu. Wiele osób się zdziwi – po co osobny temat na sterowanie przekaźnikiem przez GPIO? Otóż sterowanie urządzeniami z ESP-01 wcale nie jest takie proste z dwóch powodów:
    1) piny GPIO0 i GPIO2 muszą być na poziomie wysokim podczas startu procesora (spotkałem także informacje, że dotyczy to także GPIO1 (Tx0)),
    2) na wielu liniach procesor wyrzuca „śmieci” podczas restartu.

    Przykładowe układy prezentowane w Internecie sterują diodą LED. Takie sterowanie jest proste zarówno w przypadku, gdy podłączymy diodę do „plusa” czy „minusa” ze względu na duży spadek napięcia na LED – układ rozpoznaje stan wysoki dzięki wbudowanemu rezystorowi podciągającemu. Podłączenie tranzystora już nie jest takie proste: 0,55V spadku napięcia zostanie wykryte jako „0”. Można zastosować duży rezystor w bazie tranzystora, jednak to ogranicza możliwości sterowania – zmniejsza prąd kolektora. Wszystko to jednak jest do opanowania. Znacznie gorszym problemem są „śmieci” na wyprowadzeniach układu podczas restartu. Można próbować rozwiązywać problem poprzez opóźnienie układu wykonawczego przy podłączeniu zasilania - nie rozwiązuje to jednak problemu przypadkowego restartu podczas pracy.
    Oto co wysyła ESP-01 podczas swojego startu:
    Sterowanie poprzez ESP-01 (ESP8266)
    Cztery wykresy – od góry Rx (GPIO3), GPIO0, Tx(GPIO1) i GPIO2 pokazują co się dzieje na liniach podczas restartu układu jeszcze przed rozpoczęciem programu!
    Na liniach GPIO1 i GPIO2 widać przebiegi:
    Sterowanie poprzez ESP-01 (ESP8266)
    ESP nadaje informacje statusowe z prędkością ok. 57 kbit/s. Nie wiem po co nadaje to samo na obu liniach. Dziwny jest także sygnał na GPIO0 – nie wiem skąd się wziął – ma częstotliwość akustyczną (ok. 3kHz). Jak widać jedyną „spokojną” linią jest GPIO3 (Rx), która jest jednak wewnętrznie podciągana do „+” (orientacyjnie 47k-100k).
    Nie wspomniałem jeszcze, dlaczego eliminacja „śmieci” jest taka ważna – otóż przy sterowaniu lampki zwykle nie będzie nam przeszkadzało mignięcie podczas startu. Jeśli jednak przekaźnik będzie sterował bramą – to taki impuls otworzy lub zamknie nam bramę!
    Poniżej znajduje się schemat części sterującej:


    Sterowanie poprzez ESP-01 (ESP8266)



    Edytuj

    Dzięki rezystorowi R4, napięcie na bazie T4 jest bardzo małe (jak już wspomniałem przy starcie Rx jest podciągane do „+”) – tranzystor nie przewodzi. Blokuje to także działanie tranzystorów sterujących odbiornikami T1-T3 – „śmieci” nie spowodują wysterowania przekaźników podłączonych do P1-P3. Dodatkowo nieprzewodzące tranzystory T1-T3 nie zmieniają poziomów GPIO0 i GPIO2 co jak pisałem jest istotne podczas startu procesora.

    Nasz program (proponuję wykorzystanie ARDUINO IDE z rozszerzeniem do ESP8266) może schematycznie wyglądać tak:


    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Jak widać najpierw ustawiamy typy portów, ich poziom, a na samym końcu uruchamiamy T4 (digitalWrite(STEROWANIE,HIGH)). Później możemy już sterować poszczególnymi tranzystorami i przekaźnikami. Tranzystory sterujące mogą być w zasadzie dowolne, należy jednak pamiętać, że przez T4 płynie prąd łączny pozostałych tranzystorów. Ja użyłem tranzystory BC337-25, które mają prąd kolektora 0.8A, co wystarczy na wysterowanie całej serii przekaźników w przypadku wyboru np. układu ESP-12.

    Jak już wspomniałem, do pracy z układami ESP polecam ARDUINO IDE z rozszerzeniem do ESP8266. Razem z biblioteką zainstaluje nam się cała masa przykładów w tym istotne przy sterowaniu – klient WiFi i Serwer WWW.
    Budowa serwera WWW do sterowania to raczej ciekawostka – nadaje się do sterowania pojedynczego układu (wymagane jest stałe i znane IP wewnętrzne modułu, problematyczne przekierowanie na routerze każdego ESP przy dostępie z zewnątrz, kwestie bezpieczeństwa). Dla realizacji inteligentnego domu z wieloma modułami ESP sugeruję budowę standardowego serwera typu PC z Linuxem (bądź raspberry pi), który będzie „sercem”, a moduły ESP jako klienci odpytują się co określony czas np. co 0.5s czy jest coś do zrobienia.

    Mam nadzieję, że schemat się przyda wszystkim, którzy myślą o sterowaniu urządzeniami poprzez WiFi.

    Dodano 07.11.2016
    Wybudowałem kolejny układ, tym razem na ESP-12 i muszę potwierdzić, że Tx0 (GPIO1) nie może być podczas startu na niskim poziomie. Dla osób, które borykają się z problemem "śmieci" na Tx0 podłączonego do innego UARTa polecam moduł ESP-12. Dzięki dodatkowym wyprowadzeniom można na nim użyć instrukcji Serial.swap(); która "przerzuca" Rx0 i Tx0 na inne piny - GPIO13 i GPIO15. Standardowe piny Rx0 i Tx0 możemy używać do programowania układu, a do komunikacji z innymi modułami wystarczy przerzucenie UARTa na GPIO13 i GPIO15.

    Fajne? Ranking DIY
    O autorze
    krzbor
    Poziom 29  
    Offline 
    krzbor napisał 1781 postów o ocenie 1069, pomógł 42 razy. Jest z nami od 2004 roku.
  • #2 15816308
    szymon122
    Poziom 38  
    Posty: 4092
    Pomógł: 302
    Ocena: 757
    krzbor napisał:
    GPIO0, GPIO1 (Tx0), GPIO2 (Tx1) i GPIO3 (Rx)

    Czyli mamy do dyspozycji dwa oddzielne UART?

    Korzystałeś może z ESP-12? Mam dwie takie sztuki ale leżą nieużywane, ponieważ nie umiem ich zaprogramować, komunikacje udało mi się nawiązać ale na większość komend (np AT+GMR) odpowiada ERROR, na zmianę prędkości baud odpowiada jedynie OK.
    W jakiej kolejności zwierać piny aby wejść w tryb programowania? Czy można w go wejść bez wyłączania zasilania czy trzeba wyłączyć, zewrzeć i włączyć? Po uruchomieniu można od razu programować czy trzeba zrobić reset?
  • #3 15816333
    gosztekseba
    Poziom 31  
    Posty: 1588
    Pomógł: 119
    Ocena: 175
    szymon122 napisał:

    W jakiej kolejności zwierać piny aby wejść w tryb programowania? Czy można w go wejść bez wyłączania zasilania czy trzeba wyłączyć, zewrzeć i włączyć? Po uruchomieniu można od razu programować czy trzeba zrobić reset?


    Mój temat w którym masz napisane jak należy podłączyć i rozwiązanie problemu w razie braku flashowania. Ja potrzebowałem zrobić z ESP most Wifi <-> UART do sterowania własnym sterownikiem PLC poprzez Wifi. Sterownik zostanie może pokazany za jakiś czas wraz z opisem komunikacji.

    https://www.elektroda.pl/rtvforum/topic3191716.html
  • #4 15816362
    krzbor
    Poziom 29  
    Posty: 1781
    Pomógł: 42
    Ocena: 1069
    Trochę wyjaśnień: ESP dostarczany jest ze swoim oprogramowaniem - zestawem komend AT. W Internecie znajdziesz podstawowe zalecenie - wgrać nowe oprogramowanie - firmware. Ja jednak sugeruję coś innego - zapoznaj się z ARDUINO IDE i po instalacji pobierz moduł do obsługi ESP8266. Dzięki takiemu zestawowi sam zaprogramujesz ESP.
    Wracając do Twojego pytania - ESP posiada jeden pełny UART (Rx0 i Tx0) i jeden niepełny Tx1 (tylko nadawanie) - jest to często używane jako debug (na konsolę).
  • #5 15816732
    piterek-23
    Poziom 33  
    Posty: 3321
    Pomógł: 162
    Ocena: 427
    Opis po prostu BOMBA-tego mi brakowało...
    Dziękuję :)
  • #6 15816771
    maly_13
    Poziom 20  
    Posty: 495
    Pomógł: 21
    Ocena: 70
    Jest fajny nowy firmware do esp nazywa się ESPeasy ma wszystko w sobie.
  • #7 15817094
    mariomario
    Poziom 18  
    Posty: 709
    Pomógł: 17
    Ocena: 140
    maly_13 napisał:
    Jest fajny nowy firmware do esp nazywa się ESPeasy ma wszystko w sobie.


    A czy mógłbyś coś więcej o tym firmware napisać ? Jak wgrać, w czym jest lepszy itp.
  • #8 15817137
    krzbor
    Poziom 29  
    Posty: 1781
    Pomógł: 42
    Ocena: 1069
    Standardowy firmware obsługuje komendy AT. Własny firmware umożliwia dowolne sterowanie procesorem. Widzę, że jest sporo pytań odnośnie samego esp. Proponuję wpisać z google trzy wyrazy:
    arduino ide esp8266
    wyświetlą się informacje o rozszerzeniu esp8266 dla Arduino, opisy instalacji i programowania (w tym także po polsku).
  • #9 15817235
    @Kamil
    Poziom 23  
    Posty: 789
    Pomógł: 20
    Ocena: 96
    Jeśli chodzi o programowanie ESP-12 jak i inne na ESP8266 w Arduino IDE to jest to bardzo proste.
  • #10 15817375
    oskar777

    Poziom 26  
    Posty: 1264
    Pomógł: 76
    Ocena: 243
    Tu jest lista wspieranych modułów wspieranych przez espeasy
    https://sourceforge.net/projects/espeasy/
    tutaj opis
    http://www.esp8266.nu/index.php/Tutorial_ESPEasy_Firmware_Upload
    Wie czy to coś działa pod esp07 i jak tym sterować pinami?
    Konto firmowe:
    Oskar-info
    Gidzińskiego 24/1, Warszawa, 02-293 | Tel.: 501XXXXXX (Pokaż) | Strona WWW: http://oskar-info.pl
  • #11 15817383
    piterek-23
    Poziom 33  
    Posty: 3321
    Pomógł: 162
    Ocena: 427
    oskar777 napisał:
    Wie czy to coś działa pod esp07 i jak tym sterować pinami?

    ESP-07 to w sumie ESP-12
    Spróbuj wgrać wszystko jak na ESP-12 i powinno ruszyć.
  • #12 15820595
    electro
    Poziom 18  
    Posty: 488
    Pomógł: 9
    Ocena: 109
    Takie szybkie pytanie, czy na esp8266 można zrobić serwer web który zamiast zapalać led będzie mógł wysyłać określone komendy po uart do innego mikrokontrolera? Tak żeby można było zrobić zdalne sterowanie po wifi?
  • #13 15820707
    oskar777

    Poziom 26  
    Posty: 1264
    Pomógł: 76
    Ocena: 243
    Tak, pod arduino na esp mam bardzo prosty webserwer i wysyłam dane po serialu, wprawdzie testowo by różne parametry sprawdzać ale da się spokojnie.
    Konto firmowe:
    Oskar-info
    Gidzińskiego 24/1, Warszawa, 02-293 | Tel.: 501XXXXXX (Pokaż) | Strona WWW: http://oskar-info.pl
  • #14 15823302
    gosztekseba
    Poziom 31  
    Posty: 1588
    Pomógł: 119
    Ocena: 175
    electro napisał:
    Takie szybkie pytanie, czy na esp8266 można zrobić serwer web który zamiast zapalać led będzie mógł wysyłać określone komendy po uart do innego mikrokontrolera? Tak żeby można było zrobić zdalne sterowanie po wifi?


    Da się zarówno przez www jak i po telnecie.
  • #15 15823441
    krzbor
    Poziom 29  
    Posty: 1781
    Pomógł: 42
    Ocena: 1069
    Oczywiście, że można. Jest to jedno z podstawowych zastosowań ESP. Tu także niestety trzeba pamiętać o "śmieciach", które ESP wyśle po linii Tx podczas swojego startu.
  • #16 15928393
    zolwik_rct
    Poziom 12  
    Posty: 78
    Ocena: 1
    możesz wrzucić oscyloskop po zastosowaniu układu? rozumiem, że udało Ci się całkowicie wyeliminować śmieci, jeśli tak to świetna robota
  • #17 15928476
    krzbor
    Poziom 29  
    Posty: 1781
    Pomógł: 42
    Ocena: 1069
    Przebiegi, które pokazałem, są z analizatora stanów logicznych, nie oscyloskopu. Jak jednak pisałem - jeśli T4 nie przewodzi (a dba o to R4), T1 do T3 nie mają jak przewodzić - mają odciętą masę. Ważne, aby na kolektorach T1-T3 panowały napięcia nie mniejsze niż zasilanie ESP-01 (oczywiście dla nieprzewodzącego tranzystora). Jeśli zatem podłączymy tam przekaźnik do zasilania, to ten warunek jest spełniony. Ja akurat podłączałem przekaźniki 12V - stąd bardzo odpowiadał mi układ OC.
  • #18 19149719
    MaxKleiner
    Poziom 13  
    Posty: 85
    Ocena: 8
    Próbował ktoś zrobic uklad z 4ch pod esp8266-01s ?
  • #19 19150178
    krzbor
    Poziom 29  
    Posty: 1781
    Pomógł: 42
    Ocena: 1069
    Lepiej użyć ESP-12. Niewielka różnica ceny. Jeśli zależy CI na rastrze 2,54 wystarczy adapter - zdjęcie w moim innym poście: Link
  • #20 19150260
    MaxKleiner
    Poziom 13  
    Posty: 85
    Ocena: 8
    Właśnie mi zależy na tym esp01 bo mam ich więcej niż esp12f.
  • #21 19150353
    krzbor
    Poziom 29  
    Posty: 1781
    Pomógł: 42
    Ocena: 1069
    Ja zostawiłem sobie ESP01 do sterowania 1-2 urządzeniami lub do komunikacji po UART. Obecnie staram się unikać tych układów - czytałem, że potrafią siać zakłócenia (brak ekranu). Czytałem też o tym, że niektóre flash w ESP01 są bardzo niskiej jakości.
  • #22 19151007
    MaxKleiner
    Poziom 13  
    Posty: 85
    Ocena: 8
    Do sterowania swiatlem te zakłócenia nie przeszkadzają, mam tych esp01/01s kilka dziesiąt i nie trafiłem na zła jakość czy wadę.
  • #23 19152537
    krzbor
    Poziom 29  
    Posty: 1781
    Pomógł: 42
    Ocena: 1069
    Jeśli ma to być sterowanie światłem, to krótki błysk przy restarcie nie przeszkadza (takie restarty się raczej nie zdarzają). Nie testowałem, ale powinno zadziałać - sterujemy bazą tranzystora poprzez rezystor i diodę LED. Wiem, że to trochę nietypowe, ale czerwone diody LED w bezbarwnej obudowie (zwłaszcza tzw. "jasne") świecą dobrze już przy prądzie 1-2mA. Taki prąd należy ustawić dobierając rezystor ograniczający prąd (powinno to być ok. 1k). Taka dioda ma dwie funkcje - służy jako sygnalizacja załączenia, ale jej głównym zadaniem jest podniesienie napięcia na wejściu ESP. Napięcie to powinno być wówczas 1,4(dioda) + 0,6 (złącze BE)=2V. Będzie to rozpoznane jako logiczne "1" przy starcie. Zamiast LED można dać 2-3 diody 1N4148 połączone szeregowo. Można wówczas zwiększyć wartość rezystora np. do 3,3k.
    Zapomniałem dodać - w ten sposób wysterujemy 4 urządzenia, a nie 3.

Podsumowanie tematu

✨ W dyskusji poruszono temat sterowania urządzeniami za pomocą modułu ESP-01 (ESP8266), który posiada cztery piny GPIO. Użytkownicy zwrócili uwagę na konieczność utrzymania pinów GPIO0 i GPIO2 na poziomie wysokim podczas uruchamiania oraz na problemy z "śmieciami" na liniach Tx podczas restartu. Wskazano na możliwość programowania ESP-01 za pomocą Arduino IDE oraz na dostępność nowego firmware'u ESPeasy, który ułatwia sterowanie. Uczestnicy wymienili doświadczenia związane z używaniem ESP-12 oraz ESP-07, a także omówili zastosowania ESP w tworzeniu serwerów webowych do zdalnego sterowania innymi mikrokontrolerami. Podano również przykłady układów do sterowania przekaźnikami oraz diodami LED.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA