2. 获取esp32被唤醒的原因 esp_deep_sleep_get_wakeup_cause();
这是一个ESP-IDF的原生方法, 如果我们想用, 需要引入头文件
3. 设置具体的唤醒源请看下面的相关章节
#include <Arduino.h>
#include <esp_sleep.h>
RTC_DATA_ATTR int bootCount = 0;
void setup()
{
Serial.begin(115200);
Serial.printf("ESP32 is restart now! It's the %d time\r\n", ++bootCount);
delay(5000);
esp_sleep_enable_timer_wakeup(20000000);
Serial.println(esp_sleep_get_wakeup_cause());
}
void loop()
{
Serial.println("ESP32 will sleep now!");
delay(100);
esp_deep_sleep_start();
}
#include <Arduino.h>
#include <esp_sleep.h>
RTC_DATA_ATTR int bootCount = 0;
void setup()
{
Serial.begin(115200);
Serial.printf("ESP32 is restart now! It's the %d time\r\n", ++bootCount);
esp_sleep_enable_ext0_wakeup(GPIO_NUM_35, 0);
Serial.printf("the wakeup reason is :%d\r\n", esp_sleep_get_wakeup_cause());
}
void loop()
{
delay(3000);
Serial.println("ESP32 will sleep now!");
delay(100);
esp_deep_sleep_start();
}
#include <Arduino.h>
#include <esp_sleep.h>
RTC_DATA_ATTR int bootCount = 0;
RTC_DATA_ATTR int BTN_Pin_BITMASK = 0;
void callbackPin2()
{
Serial.println("T2 weak ESP32 up");
}
void setup()
{
Serial.begin(115200);
Serial.printf("ESP32 is restart now! It's the %d time\r\n", ++bootCount);
esp_sleep_enable_touchpad_wakeup();
Serial.printf("the wakeup reason is :%d\r\n", esp_sleep_get_wakeup_cause());
touchAttachInterrupt(2,callbackPin2,40);
}
void loop()
{
delay(3000);
Serial.println("ESP32 will sleep now!");
delay(100);
esp_deep_sleep_start();
}
本小节是一个Web服务结合SD卡文件系统的应用示例。
本节主要讲解FileSystem类的使用,以及Flash文件系统配置和SD存储模块的使用。
本节主要讲解Wifi热点的Web服务使用,以及使用网页交互来控制LED。
本节主要讲解WifiBoard类的功能和HTTPClient库及cJSON的使用。
本节主要讲解TFT-LCD显示屏的使用和Window派生类与TFT_eSPI库的使用。
这篇文章展示了如何将化学与工程、信息技术、现代制造技术紧密结合,以“血氧指标控制的简易供氧器”为载体,组织一次真实的跨学科项目。设计中突出“从需求出发”“闭环控制”“可视化反馈”,不仅呼应了新课标中“跨学科实践”的要求,更贴近生活实际需求,尤其适用于对科技应用、健康关怀有兴趣的学生群体,可作为项目式学习或社团活动的优质课例。
本节主要讲解OLED显示屏的使用和Display类及派生类的介绍及使用。
本节主要讲解用TM1650来驱动四位7段式数码管模块的显示使用。
本节主要讲解FreeRTOS任务间如何使用互斥对象来实现资源互斥访问。
在ESP32的开发,经常会有系统崩溃一直重启的情况,那么如何快速定位出现异常的代码呢?