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(); }
相信很多人都有把绿植给养死的经历,可能是浇水过多、忘记浇水、较长时间不在家不能浇水等,本文介绍一种可以灵活定制的智能浇花方案。
MicroPython 在 ESP32 上支持线程(Thread)功能,通过_thread模块实现。线程允许程序并发执行多个任务,适合处理需要同时运行的场景,例如传感器数据采集和网络通信。
掌控板3.0升级了主控,还主打AI。带有双麦克风阵列,增加了音频解码芯片,板载了一个1W喇叭,还把之前的单色屏幕换成了1.47寸的彩色屏幕,有更多的可玩性。
使用了 MicroPython 库,通过 定时器(Timer) 和 ADC(模数转换器) 功能来实时读取传感器数据。使用定时器可以实现高精度、非阻塞、低资源消耗的周期性任务,保证实时性和可靠性,特别适用于嵌入式系统中的多任务处理和低功耗场景。
ESP32的DAC函数可以实现真正的模拟输出。