Esptop 10 dotyk obudź się z głębokiego snu

Esptop 10 dotyk obudź się z głębokiego snu
ESP32 to płyta mikrokontrolera oparta na IoT, która jest wyposażona w przygotowane funkcje, takie jak sterowniki Bluetooth i WIFI. Jednak ESP32 ma wiele pinów, które łączą się z efektem hali pokładowej i pojemnościowymi czujnikami dotykowymi. Dzisiaj będziemy omawiać pojemnościowe styki dotykowe ESP32 i sposób, w jaki można je wykorzystać do budzenia ESP32 z głębokiego snu.

Co to jest głęboki sen ESP32

Tryb uśpienia ESP32 to tryb oszczędzania energii, który ESP32 może wprowadzić, gdy nie jest używany, zapisywanie wszystkich danych w pamięci RAM. W tej chwili moc do niepotrzebnych peryferyjnych jest odcięta, podczas gdy pamięć RAM otrzymuje wystarczającą moc, aby móc zachować swoje dane.

ESP32 Touch Sensor Pinout

Płyta ESP32 jest wyposażona w 10 pinów GPIO, które obsługują pojemnościowe czujniki dotykowe. Te szpilki GPIO mogą wykryć zmiany ładunku elektrycznego, które mogą być spowodowane ludzką skórę. Tak więc te piny mogą wykrywać zmiany spowodowane przez ludzkie palce i odpowiednio generować moc wyjściową.

Te piny można łatwo zintegrować z podkładkami dotykowymi i mogą wymienić mechaniczne przyciski w projekcie ESP32. Te piny dotykowe mogą również obudzić ESP32 z głębokiego snu.

Poniżej znajdują się szpilki czujnika dotykowego podkreślone w kolorze zielonym:

Tutaj styk czujnika dotyku 0 odpowiada gpio pin 4, a czujnik dotykowy 2 jest na pin GPIO 2. W tej konkretnej wersji płytki ESP32 (30 pin) brakuje jednego szpilki. Czujnik dotykowy 1 znajduje się w GPIO PIN 0, który jest dostępny w 36-pinowej wersji płyty ESP32.

Włącz dotyk Obudź się na ESP32

Włączanie budzenia pinu dotykowego dla ESP32 z głębokiego snu jest proste. Musimy tylko użyć następującej funkcji w kodzie ESP32:

esp_sleep_enable_touchpad_wakeup ()

ESP32 dotyk budzi się głęboki sen

Teraz weźmiemy przykład, aby przetestować pojemnościowy czujnik dotykowy ESP32 w celu przebudzenia naszej tablicy. Pamiętaj, aby zainstalować płytę ESP32 w Arduino IDE. Aby zobaczyć przewodnik po instalacji ESP32 z Arduino IDE, kliknij tutaj.

Teraz otwórz Arduino Ide idź: Plik> Przykłady> ESP32> Deepsleep> Touchwakeup

Następujący kod pojawi się w nowym oknie:

#definicja progu 40 / * Zestaw wrażliwości * /
Rtc_data_attr int bootCount = 0;
Touch_pad_t Touchpin;
void print_wakeup_reason ()
esp_sleep_wakeup_cause_t wakeup_reason;
WakeUp_reason = esp_sleep_get_wakeup_cause ();
przełącznik (Wakeup_Reason)

case esp_sleep_wakeup_ext0: szeregowy.println („budzenie z powodu sygnału za pomocą rtc_io”); przerwa;
case esp_sleep_wakeup_ext1: szeregowy.println („budzenie z powodu sygnału za pomocą rtc_cntl”); przerwa;
case esp_sleep_wakeup_timer: serial.println („Timer spowodowany budzeniem”); przerwa;
case esp_sleep_wakeup_touchpad: szeregowy.println („Touchpad spowodował budzenie”); przerwa;
case esp_sleep_wakeup_ulp: serial.println („program ULP spowodowany budzeniem”); przerwa;
Domyślnie: serial.printf („budzenie się nie było spowodowane głębokim snem: %d \ n”, wakeup_reason); przerwa;


void print_wakeup_touchpad ()
Touchpin = esp_sleep_get_touchpad_wakeup_status ();
przełącznik (touchpin)

Przypadek 0: szeregowy.println („Dotknij GPIO 4”); przerwa;
Przypadek 1: szeregowy.println („Dotknij GPIO 0”); przerwa;
Przypadek 2: szeregowy.println („Dotknij GPIO 2”); przerwa;
Przypadek 3: szeregowy.println („Dotknij GPIO 15”); przerwa;
Przypadek 4: szeregowy.println („Dotknij GPIO 13”); przerwa;
Przypadek 5: szeregowy.println („Dotknij GPIO 12”); przerwa;
Przypadek 6: szeregowy.println („Dotknij GPIO 14”); przerwa;
Przypadek 7: szeregowy.println („Dotknij GPIO 27”); przerwa;
Przypadek 8: szeregowy.println („Dotknij GPIO 33”); przerwa;
Przypadek 9: szeregowy.println („Dotknij GPIO 32”); przerwa;
Domyślnie: serial.println („budzenie not by Touchpad”); przerwa;


void callback ()
// Funkcja wywołania zwrotnego zastępczego

void setup ()
Seryjny.rozpocząć (115200);
opóźnienie (1000);
// Zwiększ numer rozruchu
++BootCount;
Seryjny.println („Numer rozruchu:” + string (bootCount));
// Wydrukuj powód budzenia i numer pinu
print_wakeup_reason ();
print_wakeup_touchpad ();
// Ustaw przerwanie w stylu dotykowym T0
TouchAttachInterrut (T0, Callback, próg);
// skonfigurowany touchpad
esp_sleep_enable_touchpad_wakeup ();
// Tryb uśpienia aktywny
Seryjny.println („Idę teraz spać”);
esp_deep_sleep_start ();
Seryjny.println („To nigdy nie zostanie wydrukowane”);

void Loop ()

Ten kod odczytuje pin dotykowy T0. Tutaj T0 odpowiada GPIO 4 Lub D4. Pierwszą rzeczą, od której musimy zacząć, jest ustawienie wartości progowej, po czym ESP32 obudzi się ze snu. Tutaj, w powyższym progu przykładu, jest zdefiniowane jako 40. Wartość progową można zmienić w zależności od warunków.

Gdy wartość odczytu przy pinu T0 staje się niższa niż wartość ustawiona progowa, ESP32 obudzi się ze snu, dzwoniąc oddzwonić() funkcjonować.

Funkcja callback () będzie wykonywana tylko wtedy, gdy ESP32 się obudzi. Jeśli ktoś po prostu dotyka i zwolni PIN, nie zostanie wykonany. Jeśli chcemy użyć innego PIN, musimy użyć przerwań dla tego pinu.

Następnie za pomocą esp_sleep_enable_touchpad_wakeup () Funkcja ustawiamy pin dotykowy jako źródło budzenia dla płyty ESP32.

Sprzęt komputerowy

Aby przetestować kod, weź tam tablicę chlebową i umieść tam płytę ESP32, podłącz drut zworki do GPIO 4 i dotknij go za pomocą palca.

Schematyczny

Przymocuj drut zworki w D4 i dotknij nagłówka drutu zworki za pomocą palca.

Wyjście

Wyjście wyświetla odczyt przed i po dotknięciu pinu GPIO 4 ESP32. Tutaj możemy zobaczyć, jak ESP32 budzi się po dotknięciu szpilki i wydrukuje wiadomość o numerze pinu.

Wniosek

W tym artykule poprowadzi Cię w użyciu pinów dotykowych ESP32, aby obudzić planszę od głębokiego snu. ESP32 ma 10 pinów dotykowych, które można nazwać i ustawiać jako źródło przebudzenia płyt ESP32. Po wykryciu dotyku w GPIO Touch Pin ESP32 obudzi się i uruchomi funkcję callback (), po tym powraca do snu.