jak używać pinów i diod ESP8266-01

oto inny sposób konfiguracji pinów. Uwaga: Ta sztuczka działa tylko wtedy, gdy masz moduł przekaźnikowy z izolowanym wejściem (N1 i N1-com). Ze względu na to ograniczenie i złożoność kodu wspierającego, preferowany jest poprzedni przykład, wykorzystujący RX jako wejście.

używanie pinów ESP8266 GPIO0/GPIO2/gpio15 już omówiło, jak używać GPIO0/gpio2 razem, aby uzyskać dodatkowe wejście. Tutaj ten przykład zostanie rozszerzony o użycie GPIO0 jako wyjścia sterownika przekaźnika i gpio0 / GPIO2 jako wejścia.

oto schemat w formacie pdf.

tutaj GPIO0 jest używany jako wyjście do sterowania przekaźnikiem, a GPIO0 / GPIO2 jest używany jako wejście do odczytu chwilowego przycisku, który jest używany jako ręczne sterowanie do włączania i wyłączania przekaźnika, oprócz pilota zdalnego sterowania przez połączenie WiFi. Przycisk chwilowy jest również używany do włączenia trybu config, jeśli jest wciśnięty po włączeniu zasilania.

trik polega na tym, aby zrobić to wszystko, utrzymując GPIO0 i gpio2 na wysokim poziomie, gdy inicjalizuje się moduł ESP8266.

Rezystory podciągania, R1 i R3, zapewniają niezbędną wysokość dla tych dwóch pinów, ale musisz upewnić się, że wszelkie dodatkowe obwody podłączone do GPIO0 i GPIO2 nie mogą nie wyciągnąć pinów nisko. Optycznie izolowany przekaźnik jest podłączony między +3,3 V A GPIO0. To utrzymuje gpio0 wysoko przy rozruchu, ale pozwala gpio0 być wykonane wyjście, po uruchomieniu, i uziemić wejście przekaźnika do obsługi przekaźnika. Nie ma znaczenia, czy przycisk chwilowy jest obsługiwany podczas inicjowania modułu, ponieważ po prostu łączy GPIO0 z GPIO2 i łączy oba z ich rezystorami pullup.

wykrywanie trybu konfiguracji

używając ESP8266 jako tymczasowego punktu dostępu, możesz skonfigurować go za pośrednictwem strony internetowej, jak opisano tutaj. Częścią tego procesu jest użycie przycisku lub łącza zwarciowego podczas włączania, aby wskazać programowi, że chcesz wejść w tryb konfiguracji.

po zainicjowaniu modułu ESP8266 uruchamia on Kod setup (). W tym kodzie, aby wykryć, czy chwilowy przycisk jest wciśnięty, nie musisz zmniejszać GPIO0, aby dostarczyć GND do przycisku, a następnie sprawdzić wejście GPIO2, aby sprawdzić, czy jest niskie. Efektem ubocznym tej kontroli jest to, że przekaźnik będzie zawsze obsługiwany, gdy urządzenie jest wprowadzane w tryb konfiguracji. Gdy zobaczysz, że przekaźnik działa, możesz zwolnić przycisk, ponieważ jego wejście zostanie wykryte do tego czasu. Oto przykładowy kod, aby to zrobić w setup ()

boolean configMode = false; // not in config mode normallyvoid setup() { pinMode(0, OUTPUT); digitalWrite(0, LOW); // make GPIO0 output low // check GPIO2 input to see if push button pressed connecting it to GPIO0 configMode = (digitalRead(2) == LOW); if (configMode) { // start AP and get ready to serve config web page // leave relay on to indicate in config mode //...... } else { // normal usage // make GPIO0 HIGH to turn off the relay digitalWrite(0, HIGH); //..... } // rest of setup()}

wykrywanie przycisku sterowania ręcznego

poprzednia sekcja obejmowała wykrywanie, gdy przycisk został naciśnięty przy włączaniu zasilania, aby włączyć tryb konfiguracji. Chcemy również użyć tego przycisku jako ręcznego obejścia do włączania i wyłączania przekaźnika, a także móc sterować przekaźnikiem za pośrednictwem łącza WiFi.

sterowanie WiFi przekaźnika nie jest tutaj objęte, ale można je łatwo wykonać za pomocą pfodApp. Zobacz generator menu OLIMEX, aby dowiedzieć się, jak wygenerować kod Arduino za pomocą pfoddesignera dla modułów ESP8266.

Ta sekcja zajmie się tym, jak wykryć, kiedy przycisk jest wciśnięty, wskazując, że użytkownik chce przełączyć przekaźnik, tj. wyłączyć go, czy jest włączony, lub włączyć go, jeśli jest wyłączony. Schemat jest taki sam jak powyżej, wszystkie triki są w kodzie. Istnieją dwa przypadki do rozważenia: –

  1. przekaźnik jest wyłączony i użytkownik chce go włączyć za pomocą przycisku,
  2. przekaźnik jest włączony i użytkownik chce go wyłączyć za pomocą przycisku.

przekaźnik jest wyłączony i użytkownik chce go włączyć za pomocą przycisku.

w tym przypadku wyjście GPIO0 jest wysokie. W rzeczywistości GPIO0 może być w tym przypadku wejściem, ponieważ Rezystor podciągania R1 zapewni, że przekaźnik się nie włączy. To jest sztuczka. W tym przypadku ustaw GPIO0 jako wejście i ustaw wyjście GPIO2 na niskim poziomie, a następnie, gdy użytkownik naciśnie przycisk, nastąpią dwie rzeczy:- a) przekaźnik włączy się ze względu na masę dostarczoną przez gpio2 za pomocą przycisku i b) wejście Gpio0 zejdzie na niskim poziomie. Kod sprawdza stan wejścia Gpio0, a gdy spadnie, kod wie, że użycie nacisnęło przycisk i chce, aby przekaźnik był włączony. Kod następnie sprawia, że Gpio0 wyjście niskie, aby utrzymać przekaźnik włączony po zwolnieniu przycisku.

przekaźnik jest włączony i użytkownik chce go wyłączyć za pomocą przycisku.

w tym przypadku, idąc dalej od powyższego przypadku, GPIO0 jest wyjściem niskim trzymającym przekaźnik włączony. Teraz w tym przypadku uczyń Gpio2 wejściem (podciągniętym przez R3), a następnie, gdy użytkownik naciśnie przycisk, WEJŚCIE Gpio2 zostanie pociągnięte nisko przez niskie wyjście na GPIO0. Gdy użycie zwolni przycisk, kod wykrywa przejście od niskiego do wysokiego, a następnie sprawia, że Gpio0 jest wejściem, które zwalnia przekaźnik z powodu rezystora podciągania, R1, i sprawia, że Gpio2 jest wyjściem niskim, aby ustawić dla przypadku i) powyżej.

jeszcze jedna sztuczka. W przypadku II) potrzebujemy GPIO2 jako wejścia, które wykrywa przejście od niskiego do wysokiego, aby wyłączyć przekaźnik. Ale jeśli zrobimy GPIO2 i wejście na końcu przypadku i), to uzyskamy przejście od niskiego do wysokiego, gdy użytkownik zwolni przycisk, który po prostu nacisnął, aby włączyć przekaźnik. Aby uniknąć natychmiastowego ponownego wyłączenia przekaźnika, pierwsze przejście od niskiego do wysokiego po włączeniu przekaźnika zostanie zignorowane, ponieważ tylko użytkownik zwalnia przycisk, który nacisnął, aby włączyć przekaźnik.

Sample Loop() kod dla przekaźnika ręcznego Over-ride

w tym kodzie ignoruję Switch debounce dla uproszczenia. Dane wejściowe powinny być demontowane w każdej rzeczywistej aplikacji.

przykładowy kod znajduje się tutaj, ESP8266_01pinMagic_1.ino

ponownie pozostawia piny TX / RX dostępne do debugowania szeregowego lub używać jako inne We/Wy

wnioski

ta strona pokazuje, jak uzyskać jak najwięcej z ograniczonych pinów dostępnych w ESP8266-01. Użycie GPIO0 / GPIO2 jako magistrali I2C daje największą ekspansję, ale jeśli projekt nie korzysta z I2C, nadal możesz sterować przekaźnikiem i wykrywać wejście przycisku za pomocą GPIO0 / GPIO2. W obu przypadkach TX / RX są również dostępne do debugowania szeregowego lub jeśli wysyłasz instrukcje debug print przez łącze WiFi, te piny są również dostępne dla ogólnych We / Wy..

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.