Il tocco di Esptop 10 si sveglia dal sonno profondo

Il tocco di Esptop 10 si sveglia dal sonno profondo
ESP32 è una scheda microcontrollore basata su IoT che viene fornita con caratteristiche predefinite come driver Bluetooth e WiFi. Tuttavia, ESP32 ha più pin che si collegano all'effetto della sala on -bordo e ai sensori di touch capacitivi. Oggi discuteremo dei perni tocco capacitivi ESP32 e di come possono essere usati per svegliare ESP32 dal sonno profondo.

Cos'è ESP32 Sleep Deep

La modalità Sleep ESP32 è una modalità di risparmio di potenza in cui l'ESP32 può entrare quando non è in uso, salvando tutti i dati in RAM. Al momento, la potenza di qualsiasi periferica non necessaria viene tagliata mentre la RAM riceve abbastanza potenza per essere in grado di conservare i suoi dati.

ESP32 TOUC SENSORE PINOT

La scheda ESP32 viene fornita con 10 perni GPIO che supportano sensori di touch capacitivi. Questi perni GPIO possono rilevare cambiamenti nella carica elettrica che possono essere causati dalla pelle umana. Quindi, questi pin possono rilevare variazioni causate dalle dita umane e generare output di conseguenza.

Questi pin possono essere facilmente integrati con i touch pad e possono sostituire i pulsanti meccanici nel progetto ESP32. Questi pin toccanti possono anche svegliarsi ESP32 dal sonno profondo.

Di seguito sono riportati i pin del sensore touch evidenziati nel colore verde:

Qui il pin del sensore di touch 0 corrisponde al pin GPIO 4 e il sensore di touch 2 è al pin GPIO 2. Un pin che è il pin touch 1 manca in questa particolare versione della scheda ESP32 (30 pin). Il sensore touch 1 è al pin GPIO 0 che è disponibile nella versione a 36 pin della scheda ESP32.

Abilita il tocco Wake Up su ESP32

Abilitare il risveglio del perno touch per ESP32 dal sonno profondo è semplice. Dobbiamo solo utilizzare la seguente funzione nel codice ESP32:

ESP_SLEEP_ENABLE_TOUCHPAD_WAKEUP ()

ESP32 Touch Wake Up Deep Sleep Esempio

Ora faremo un esempio per testare il sensore di touch capacitivo ESP32 per risvegliare la nostra tavola. Assicurati di installare la scheda ESP32 in Arduino IDE. Per vedere una guida sull'installazione ESP32 con IDE Arduino, fai clic qui.

Ora aperto Arduino Ide vai a: File> Esempi> ESP32> Deepsleep> TouchWakeup

Il seguente codice apparirà nella nuova finestra:

#define soglia 40 / * set di sensibilità * /
Rtc_data_attr int bootCount = 0;
touch_pad_t touchpin;
void print_wakeup_reason ()
ESP_SLEEP_WAKEUP_CAUSE_T WACHEUP_RASASION;
wakeup_reason = esp_sleep_get_wakeup_cause ();
switch (wakeup_reason)

Caso ESP_SLEEP_WAKEUP_EXT0: seriale.println ("wakeup dovuto al segnale usando rtc_io"); rottura;
Caso ESP_SLEEP_WAKEUP_EXT1: seriale.println ("wakeup dovuto al segnale usando rtc_cntl"); rottura;
Caso ESP_SLEEP_WAKEUP_TIMER: seriale.println ("timer causato wakeup"); rottura;
Caso ESP_SLEEP_WAKEUP_Touchpad: seriale.println ("touchpad causato wakeup"); rottura;
Caso ESP_SLEEP_WAKEUP_ULP: seriale.println ("programma ULP causato wakeup"); rottura;
Predefinito: seriale.printf ("Wake Up non è stato causato dal sonno profondo: %d \ n", wakeup_reason); rottura;


void print_wakeup_touchpad ()
touchpin = esp_sleep_get_touchpad_wakeup_status ();
interruttore (touchpin)

Caso 0: seriale.println ("tocca su gpiio 4"); rottura;
Caso 1: seriale.println ("tocca su gpiio 0"); rottura;
Caso 2: seriale.println ("tocca su gpiio 2"); rottura;
Caso 3: seriale.println ("tocca su gpiio 15"); rottura;
Caso 4: seriale.println ("tocca su gpiio 13"); rottura;
Caso 5: seriale.println ("tocca su gpiio 12"); rottura;
Caso 6: seriale.println ("tocca su gpiio 14"); rottura;
Caso 7: seriale.println ("tocca su gpiio 27"); rottura;
Caso 8: seriale.println ("tocca su gpiio 33"); rottura;
Caso 9: seriale.println ("tocca su gpiio 32"); rottura;
Predefinito: seriale.println ("wakeup not by touchpad"); rottura;


void callback ()
// funzione di callback dei segnaposto

void setup ()
Seriale.Inizia (115200);
ritardo (1000);
// Aumenta il numero di avvio
++bootcount;
Seriale.println ("Numero di avvio:" + String (bootCount));
// stampare il motivo di sveglia e numero di pin
print_wakeup_reason ();
print_wakeup_touchpad ();
// Imposta l'interrupt al tacano pin t0
touchattachinterrupt (T0, callback, soglia);
// touchpad configurato
ESP_SLEEP_ENABLE_TOUCHPAD_WAKEUP ();
// Modalità di sospensione attiva
Seriale.println ("andare a dormire ora");
ESP_DEEP_SLEEP_START ();
Seriale.println ("Questo non verrà mai stampato");

void loop ()

Questo codice legge il perno del touch T0. Qui T0 corrisponde a GPIO 4 O D4. La prima cosa che dobbiamo iniziare è impostare un valore di soglia dopo il quale ESP32 si sveglierà dal sonno. Qui nella soglia di esempio sopra è definita come 40. Il valore della soglia può essere modificato a seconda delle condizioni.

Una volta che il valore di lettura sul pin T0 diventa inferiore al valore della soglia impostata, ESP32 si sveglierà dal sonno chiamando richiamare() funzione.

La funzione callback () eseguirà solo quando ESP32 è sveglio. Se si tocca e rilascia il pin non verrà eseguito. Se vogliamo usare un altro pin, allora dobbiamo usare gli interrupt per quel pin.

Poi usando il ESP_SLEEP_ENABLE_TOUCHPAD_WAKEUP () Funzione Sempiamo il perno touch come fonte di sveglia per la scheda ESP32.

Hardware

Per testare il codice, prendere una breadboard e posizionare una scheda ESP32 laggiù, collegare un filo jumper a GPIO 4 e toccalo usando il dito.

Schema

Attacca un filo jumper su D4 e tocca l'intestazione del filo del jumper usando il dito.

Produzione

L'output visualizza la lettura prima e dopo aver toccato il pin 4 di ESP32. Qui possiamo vedere gli svekes ESP32 dopo aver toccato il perno e stampare il messaggio del numero di pin che lo causa.

Conclusione

Questo articolo ti guiderà sull'uso di pin di touch ESP32 per svegliare la tua tavola da Deep Sleep. ESP32 ha 10 pin touch che possono essere chiamati e impostati come fonte per risvegliare le schede ESP32. Quando il tocco viene rilevato al touch pin GPIO ESP32 si sveglierà e eseguirà la funzione di callback () dopo che torna a dormire.