【花雕学编程】Arduino动手做(234)---WeMos D1R32 打印上次复位原因

在这里插入图片描述

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来——小小的进步或是搞不掂的问题,希望能够抛砖引玉。

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验二百三十四:Wemos D1 迷你Arduino Uno R3 D1 R32 ESP32 Wifi蓝牙无线开发板CH340 4M内存

在这里插入图片描述

Wemos D1 ESP32 开发板是一款紧凑而强大的设备,它集成了天线和射频巴伦、功率放大器、低噪声放大器、滤波器和电源管理模块。整个解决方案占用的印刷电路板面积最少。该板采用台积电 40nm 低功耗技术,搭配 2.4GHz 双模 Wi-Fi 和蓝牙芯片,功率和射频性能最佳,安全可靠,可扩展至各种应用。将 WiFi 和蓝牙连接结合在单个 ESP32 芯片上。Wemos D1 ESP32 开发板是基于乐鑫 ESP32 芯片的开发板。它具有 Wi-Fi 和蓝牙连接,以及一系列用于连接传感器、执行器和其他设备的输入和输出引脚。该板具有高性能处理器和广泛的功能,是物联网和家庭自动化项目的理想选择。此外,该板具有易于使用的界面,采用 Arduino UNO 外形尺寸,并与 Arduino 平台兼容,可以轻松开发项目并与其他设备集成。借助 Wemos D1 ESP32 开发板,您可以轻松地为各种应用创建智能、互联的解决方案。该板的一些规格包括:

  • 240 MHz 双核 LX6 芯片

  • Wi-Fi 802.11 b/g/n 连接

  • 蓝牙 4.2 BLE 连接

  • 4 MB 闪存

  • 520 KB SRAM

  • 30 针输入/输出,包括 GPIO、I2C、SPI、UART 和 ADC

  • MicroSD支持

  • LiPo电池充电支持
    该板与 Arduino 平台兼容,可以使用 Arduino IDE 进行编程。此外,它还支持 MicroPython 平台,该平台允许使用 Python 进行编程。
    在这里插入图片描述
    在这里插入图片描述

    【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
    实验二百三十四:Wemos D1 迷你Arduino Uno R3 D1 R32 ESP32
    Wifi蓝牙无线开发板CH340 4M内存
    {花雕动手做}项目之七:WeMos D1R32 打印上次复位原因

实验开源代码

/*
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
    实验二百三十四:Wemos D1 迷你Arduino Uno R3 D1 R32 ESP32
    Wifi蓝牙无线开发板CH340 4M内存
  {花雕动手做}项目之七:WeMos D1R32 打印上次复位原因
*/

#include <rom/rtc.h>

#define uS_TO_S_FACTOR 1000000  // 微秒转换为秒的因子

// 打印复位原因的函数
void print_reset_reason(RESET_REASON reason) {
  switch ( reason) {
    case 1 : Serial.println ("电池上电复位"); break;         // 电池上电复位
    case 3 : Serial.println ("软件复位"); break;              // 软件复位
    case 4 : Serial.println ("看门狗复位"); break;            // 看门狗复位
    case 5 : Serial.println ("深度睡眠复位"); break;          // 深度睡眠复位
    case 6 : Serial.println ("SDIO模块复位"); break;          // SDIO模块复位
    case 7 : Serial.println ("计时组0看门狗复位"); break;     // 计时组0看门狗复位
    case 8 : Serial.println ("计时组1看门狗复位"); break;     // 计时组1看门狗复位
    case 9 : Serial.println ("RTC看门狗复位"); break;         // RTC看门狗复位
    case 10 : Serial.println ("入侵复位"); break;             // 入侵复位
    case 11 : Serial.println ("计时组复位CPU"); break;        // 计时组复位CPU
    case 12 : Serial.println ("软件复位CPU"); break;          // 软件复位CPU
    case 13 : Serial.println ("RTC看门狗复位CPU"); break;     // RTC看门狗复位CPU
    case 14 : Serial.println ("外部CPU复位"); break;          // 外部CPU复位
    case 15 : Serial.println ("电压不稳定复位"); break;       // 电压不稳定复位
    case 16 : Serial.println ("RTC看门狗复位数字核心和RTC模块"); break; // RTC看门狗复位数字核心和RTC模块
    default : Serial.println ("无意义复位");
  }
}

// 打印详细复位原因的函数
void verbose_print_reset_reason(RESET_REASON reason) {
  switch ( reason) {
    case 1  : Serial.println ("电池上电复位"); break;
    case 3  : Serial.println ("软件复位数字核心"); break;
    case 4  : Serial.println ("传统看门狗复位数字核心"); break;
    case 5  : Serial.println ("深度睡眠复位数字核心"); break;
    case 6  : Serial.println ("由SLC模块复位,复位数字核心"); break;
    case 7  : Serial.println ("计时组0看门狗复位数字核心"); break;
    case 8  : Serial.println ("计时组1看门狗复位数字核心"); break;
    case 9  : Serial.println ("RTC看门狗复位数字核心"); break;
    case 10 : Serial.println ("入侵测试复位CPU"); break;
    case 11 : Serial.println ("计时组复位CPU"); break;
    case 12 : Serial.println ("软件复位CPU"); break;
    case 13 : Serial.println ("RTC看门狗复位CPU"); break;
    case 14 : Serial.println ("应用CPU由主CPU复位"); break;
    case 15 : Serial.println ("电压不稳定时复位"); break;
    case 16 : Serial.println ("RTC看门狗复位数字核心和RTC模块"); break;
    default : Serial.println ("无意义复位");
  }
  delay(1000);
}

void setup() {
  // 初始化,代码只运行一次
  Serial.begin(115200);
  delay(2000);

  Serial.println("CPU0复位原因:");
  print_reset_reason(rtc_get_reset_reason(0));
  verbose_print_reset_reason(rtc_get_reset_reason(0));

  Serial.println("CPU1复位原因:");
  print_reset_reason(rtc_get_reset_reason(1));
  verbose_print_reset_reason(rtc_get_reset_reason(1));

  // 设置ESP32进入深度睡眠以观察复位原因的变化。设备将休眠5秒钟。
  esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_PERIPH, ESP_PD_OPTION_OFF);
  Serial.println("进入睡眠模式");
  esp_deep_sleep(5 * uS_TO_S_FACTOR);
}

void loop() {
  // 主代码,在 setup() 执行完毕后重复运行
}
/*
  示例串行日志:
  ====================
  rst:0x10 (RTCWDT_RTC_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
  configsip: 0, SPIWP:0x00
  clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
  模式: DIO, 时钟分频: 1
  加载: 0x3fff0008, 长度: 8
  加载: 0x3fff0010, 长度: 160
  加载: 0x40078000, 长度: 10632
  加载: 0x40080000, 长度: 252
  入口 0x40080034
  CPU0复位原因:
  RTCWDT_RTC_RESET
  RTC 看门狗复位数字核心和RTC模块
  CPU1复位原因:
  EXT_CPU_RESET
  应用CPU由主CPU复位
  进入睡眠
  ets Jun  8 2016 00:22:57

  rst:0x5 (DEEPSLEEP_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
  configsip: 0, SPIWP:0x00
  clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
  模式: DIO, 时钟分频: 1
  加载: 0x3fff0008, 长度: 8
  加载: 0x3fff0010, 长度: 160
  加载: 0x40078000, 长度: 10632
  加载: 0x40080000, 长度: 252
  入口 0x40080034
  CPU0复位原因:
  DEEPSLEEP_RESET
  深度睡眠复位数字核心
  CPU1复位原因:
  EXT_CPU_RESET
  应用CPU由主CPU复位
  进入睡眠
  ets Jun  8 2016 00:22:57

  rst:0x5 (DEEPSLEEP_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
  configsip: 0, SPIWP:0x00
  clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
  模式: DIO, 时钟分频: 1
  加载: 0x3fff0008, 长度: 8
  加载: 0x3fff0010, 长度: 160
  加载: 0x40078000, 长度: 10632
  加载: 0x40080000, 长度: 252
  入口 0x40080034
  CPU0复位原因:
  DEEPSLEEP_RESET
  深度睡眠复位数字核心
  CPU1复位原因:
  EXT_CPU_RESET
  应用CPU由主CPU复位
  进入睡眠
*/

实验串口返回情况

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

驴友花雕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值