Esptop 10 Touch acorda do sono profundo

Esptop 10 Touch acorda do sono profundo
O ESP32 é uma placa de microcontrolador baseada em IoT que vem com recursos pré -construídos, como drivers Bluetooth e Wi -Fi. No entanto, o ESP32 possui vários pinos que se conectam ao efeito de bordo do salão e sensores de toque capacitivos. Hoje estaremos discutindo os pinos de toque capacitivos do ESP32 e como eles podem ser usados ​​para acordar esp32 do sono profundo.

O que é ESP32 Sono profundo

O modo de suspensão ESP32 é um modo de economia de energia que o ESP32 pode entrar quando não estiver em uso, salvando todos os dados em RAM. Neste momento, o poder de qualquer periférico desnecessário é cortado enquanto a RAM recebe energia suficiente para poder manter seus dados.

Esp32 Touch Sensor Pinout

A placa ESP32 vem com 10 pinos de gpio que suportam sensores de toque capacitivos. Esses pinos de GPio podem detectar mudanças na carga elétrica que podem ser causadas pela pele humana. Portanto, esses pinos podem detectar variações causadas por dedos humanos e gerar saída de acordo.

Esses pinos podem ser facilmente integrados com touch pads e podem substituir os botões mecânicos no projeto ESP32. Esses pinos de toque também podem acordar esp32 do sono profundo.

A seguir estão os pinos do sensor de toque destacados na cor verde:

Aqui, o pino do sensor de toque 0 corresponde ao pino GPIO 4 e o sensor de toque 2 está no pino gpio 2. Um pino que é o pino de toque 1 está faltando nesta versão específica da placa ESP32 (30 pinos). O sensor de toque 1 está no pino GPIO 0, disponível na versão de 36 pinos da placa ESP32.

Ativar toque acordado no ESP32

Ativar despertar pino de toque para ESP32 do sono profundo é simples. Só precisamos usar a seguinte função dentro do código ESP32:

Esp_sleep_enable_tuouchpad_wakeup ()

Esp32 Touch Wake Up Deep Sleep Exemplo

Agora vamos dar um exemplo para testar o sensor de toque capacitivo ESP32 para despertar nossa placa. Certifique -se de instalar a placa ESP32 em Arduino IDE. Para ver um guia sobre a instalação do ESP32 com o Arduino IDE, clique aqui.

Agora aberto Arduino IDE vá para: Arquivo> Exemplos> Esp32> Deepsleep> Touchwakeup

O código a seguir aparecerá na nova janela:

#DEFINE LIMPHOLD 40 / * SENSIFICIÇÃO DE SENSIBILIDADE * /
Rtc_data_attr int bootcount = 0;
touch_pad_t touchpin;
void print_wakeup_Reason ()
ESP_SLEEP_WAKEUP_CAUSE_T WAKEUP_REASAS;
WakeUp_Reason = ESP_SLEEP_GET_WAKEUP_CAUSE ();
Switch (WakeUp_Reason)

case esp_sleep_wakeup_ext0: serial.println ("WakeUp devido ao sinal usando RTC_IO"); quebrar;
case esp_sleep_wakeup_ext1: serial.println ("WakeUp devido ao sinal usando rtc_cntl"); quebrar;
case esp_sleep_wakeup_timer: serial.println ("Timer causou wakeup"); quebrar;
case esp_sleep_wakeup_tuouchpad: serial.println ("touchpad causou wakeup"); quebrar;
case esp_sleep_wakeup_ulp: serial.println ("Programa ULP causou WakeUp"); quebrar;
Padrão: Serial.printf ("Wake up não foi causado pelo sono profundo: %d \ n", wakeup_reason); quebrar;


void print_wakeup_tuouchpad ()
touchpin = ESP_SLEEP_GET_TOUCHPAD_WAKEUP_STATUS ();
Switch (Touchpin)

Caso 0: Serial.println ("toque no gpio 4"); quebrar;
Caso 1: Serial.println ("toque no gpio 0"); quebrar;
Caso 2: Serial.println ("toque no gpio 2"); quebrar;
Caso 3: Serial.println ("toque no gpio 15"); quebrar;
Caso 4: Serial.println ("toque no gpio 13"); quebrar;
Caso 5: Serial.println ("toque no gpio 12"); quebrar;
Caso 6: Serial.println ("toque no gpio 14"); quebrar;
Caso 7: Serial.println ("toque no gpio 27"); quebrar;
Caso 8: Serial.println ("toque no gpio 33"); quebrar;
Caso 9: Serial.println ("toque no gpio 32"); quebrar;
Padrão: Serial.println ("WakeUp não pelo touchpad"); quebrar;


retorno de chamada void ()
// Função de retorno de espaço reservado

Void Setup ()
Serial.começar (115200);
atraso (1000);
// Aumente o número da inicialização
++bootcount;
Serial.println ("Número da inicialização:" + string (bootcount));
// Imprimir motivo de despertar e número de pinos
print_wakeUp_Reason ();
print_wakeUp_TouchPad ();
// Defina a interrupção no pino touch t0
touchattachinterrupt (t0, retorno de chamada, limite);
// touchpad configurado
Esp_sleep_enable_tuouchpad_wakeup ();
// Modo de suspensão ativo
Serial.println ("vai dormir agora");
ESP_DEEP_SLEEP_START ();
Serial.println ("Isso nunca será impresso");

Void Loop ()

Este código lê o pino de toque T0. Aqui t0 corresponde a GPIO 4 ou D4. A primeira coisa que temos que começar é definir um valor limite após o que o ESP32 acordará do sono. Aqui no exemplo acima, o limite é definido como 40. O valor limite pode ser alterado dependendo das condições.

Uma vez que o valor de leitura no pino T0 se torne mais baixo que o valor limite definido, o ESP32 acordará do sono ligando para ligar de volta() função.

A função de retorno de chamada () será executada apenas quando o ESP32 estiver acordado. Se alguém apenas tocar e libera o alfinete, ele não será executado. Se quisermos usar outro pino, temos que usar interrupções para esse alfinete.

Em seguida, usando o Esp_sleep_enable_tuouchpad_wakeup () Função, definimos o pino de toque como uma fonte de despertar para a placa ESP32.

Hardware

Para testar o código, pegue uma placa de pão e coloque uma placa ESP32 ali, conecte um fio de jumper a GPIO 4 e tocá -lo usando o dedo.

Esquemático

Prenda um fio de jumper em D4 e toque no cabeçalho do fio do jumper usando o dedo.

Saída

A saída exibe a leitura antes e depois de tocar no pino GPIO 4 do ESP32. Aqui podemos ver o ESP32 acordar depois de tocar o alfinete e imprime a mensagem do número do pino, causando -o.

Conclusão

Este artigo o guiará sobre o uso de pinos de toque esp32 para acordar sua prancha de sono profundo. O ESP32 possui 10 pinos de toque que podem ser chamados e definidos como uma fonte de despertar as placas ESP32. Quando o toque é detectado no GPIO Touch Pin Esp32, acordará e executa a função de retorno de chamada () depois que ele retorna ao sono.