ESPTOP 10 Berührung wach aus dem tiefen Schlaf auf

ESPTOP 10 Berührung wach aus dem tiefen Schlaf auf
ESP32 ist eine IoT -basierte Mikrocontroller -Karte, die mit vorgebauten Funktionen wie Bluetooth- und WLAN. ESP32 verfügt jedoch über mehrere Stifte, die mit einem Hall -Effekt an Bord und kapazitiven Berührungssensoren verbunden sind. Heute werden wir die ESP32 -Kapazitiven -Touch -Stifte diskutieren und wie sie verwendet werden können, um ESP32 aus dem tiefen Schlaf zu wecken.

Was ist ESP32 Tiefschlaf?

Der ESP32 Sleep Mode ist ein Leistungssparmodus, den der ESP32 bei Nichtgebrauch eingeben kann, und speichern Sie alle Daten im RAM. Zu diesem Zeitpunkt wird die Stromversorgung unnötiger Peripheriegeräte abgeschnitten, während der RAM genügend Strom erhält, um seine Daten aufbewahren zu können.

ESP32 Touch Sensor Pinout

Die ESP32 -Karte verfügt über 10 GPIO -Stifte, die kapazitive Berührungssensoren unterstützen. Diese GPIO -Stifte können Änderungen der elektrischen Ladung erkennen, die durch menschliche Haut verursacht werden können. Diese Stifte können also Variationen erkennen, die durch menschliche Finger verursacht werden und entsprechend Ausgang erzeugen.

Diese Stifte können leicht in Touchpads integriert und mechanische Tasten im ESP32 -Projekt ersetzen. Diese Berührungsstifte können auch ESP32 aus dem tiefen Schlaf aufwachen.

Im Folgenden finden Sie die in grünen Farbe hervorgehobenen Berührungssensorstifte:

Hier entspricht der Touch Sensor Pin 0 dem GPIO -Pin 4 und der Touch Sensor 2 befindet sich am GPIO -Pin 2. Ein Stift, der sich in dieser speziellen Version von ESP32 (30 Pin) Board 1 anfehlt, fehlt. Touch Sensor 1 befindet sich am GPIO Pin 0, der in der 36-poligen Version von ESP32-Board erhältlich ist.

Aktivieren Sie Berührung auf Wake auf ESP32

Das Aktivieren von Touch Pin Wakeup für ESP32 aus dem tiefen Schlaf ist einfach. Wir müssen nur die folgende Funktion im ESP32 -Code verwenden:

esp_sleep_enable_touchpad_wakeup ()

ESP32 Touch Wake Up Deep Sleep Beispiel

Jetzt werden wir ein Beispiel nutzen, um den Kapazitivensor der ESP32 zu testen, um unser Board zu erwachen. Stellen Sie sicher, dass Sie das ESP32 -Board in Arduino IDE installieren. Um eine Anleitung zur ESP32 -Installation mit Arduino IDE anzuzeigen, klicken Sie hier.

Jetzt öffnen Arduino ide zu Arduino ide gehen: Datei> Beispiele> ESP32> DeepSleep> TouchWakeup

Der folgende Code wird im neuen Fenster angezeigt:

#define Schwellenwert 40 / * Sensitivitätssatz * /
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 ();
Switch (Wakeup_reason)

Fall ESP_SLEEP_WAKEUPP_EXT0: SERIAL.println ("Wakeup aufgrund des Signals mit RTC_IO"); brechen;
Fall ESP_SLEEP_WAKEUPP_EXT1: Serie.println ("Wakeup aufgrund des Signals mit RTC_CNTL"); brechen;
Fall ESP_SLEEP_WAKEUP_TIMER: Serial.println ("Timer verursacht Wakeup"); brechen;
Fall ESP_SLEEP_WAKEUP_TOUCHPAD: Serial.println ("touchpad verursacht weck"); brechen;
Fall ESP_SLEEP_WAKEUP_ULP: Serial.println ("ULP -Programm verursacht auf Wakeup"); brechen;
Standard: Seriell.printf ("Waking wurde nicht durch tiefen Schlaf verursacht: %d \ n", wakeup_reason); brechen;


void print_wakeup_touchpad ()
tountpin = esp_sleep_get_touchpad_wakeup_status ();
Schalter (Touchpin)

Fall 0: Serie.println ("Berührung auf gpio 4"); brechen;
Fall 1: Serie.println ("Berührung auf gpio 0"); brechen;
Fall 2: Serie.println ("Berührung auf gpio 2"); brechen;
Fall 3: Serie.println ("Berührung auf gpio 15"); brechen;
Fall 4: Serie.println ("Berührung auf gpio 13"); brechen;
Fall 5: Serie.println ("Berührung auf gpio 12"); brechen;
Fall 6: Serie.println ("Berührung auf gpio 14"); brechen;
Fall 7: Serie.println ("Berührung auf gpio 27"); brechen;
Fall 8: Serie.println ("Berührung auf gpio 33"); brechen;
Fall 9: Serie.println ("Berührung auf gpio 32"); brechen;
Standard: Seriell.println ("Wakeup nicht von Touchpad"); brechen;


void callback ()
// Platzhalter -Rückruffunktion

void setup ()
Serie.Beginnen Sie (115200);
Verzögerung (1000);
// Startzahl erhöhen
++Bootcount;
Serie.println ("Bootnummer:" + String (BootCount));
// Grund für das Aufwachen und die PIN -Nummer drucken
print_wakeup_reason ();
print_wakeup_touchpad ();
// Interrupt am Touch Pin T0 einstellen
TouchAttAchinterrupt (T0, Rückruf, Schwelle);
// Touchpad konfiguriert
esp_sleep_enable_touchpad_wakeup ();
// Schlafmodus aktiv
Serie.println ("Jetzt schlafen gehen");
esp_deep_sleep_start ();
Serie.println ("Dies wird niemals gedruckt");

void Loop ()

Dieser Code liest die Touch Pin T0. Hier entspricht T0 GPIO 4 oder D4. Das erste, mit dem wir beginnen müssen, ist, einen Schwellenwert zu setzen, wonach ESP32 aus dem Schlaf aufwacht. Hier im obigen Beispiel wird die Schwelle als 40 definiert. Der Schwellenwert kann je nach Bedingungen geändert werden.

Sobald der Lesewert bei T0 Pin niedriger wird als der festgelegte Schwellenwert, wacht der ESP32 beim Aufrufen aus dem Schlaf auf Ruf zurück() Funktion.

Die Funktion callback () wird nur ausgeführt, wenn ESP32 wach ist. Wenn man nur den Stift berührt und veröffentlicht, wird er nicht ausgeführt. Wenn wir einen anderen Pin verwenden möchten, müssen wir Interrupts für diesen Pin verwenden.

Als nächstes mit dem esp_sleep_enable_touchpad_wakeup () Funktion Wir setzen den Touch Pin als Weckquelle für die ESP32 -Karte.

Hardware

Um den Code zu testen, nehmen Sie ein Stirnbrett und platzieren GPIO 4 und berühren Sie es mit Ihrem Finger.

Schematisch

Befestigen Sie einen Pulloverdraht am D4 und berühren Sie den Header des Pulloverdrahtes mit Ihrem Finger.

Ausgang

Ausgabe zeigt den Messwert vor und nach dem Berühren des GPIO Pin 4 von ESP32 an. Hier sehen wir die ESP32 -Wachen, nachdem wir den Pin berührt haben, und druckt die Meldung der PIN -Nummer, die sie verursacht.

Abschluss

In diesem Artikel wird Sie über die Verwendung von ESP32 -Touch -Pins führen, um Ihr Board aus dem Deep Sleep aufzuwecken. ESP32 verfügt. Wenn beim GPIO -Touch Pin ESP32 die Berührung erkannt wird und die Funktion Callback () ausführt.