汕头企业网站建设公司,wordpress 修改用户名,wordpress页面右下角,韩国学校网站模板37款传感器与模块的提法#xff0c;在网络上广泛流传#xff0c;其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块#xff0c;依照实践出真知#xff08;一定要动手做#xff09;的理念#xff0c;以学习和交流为目的#x…37款传感器与模块的提法在网络上广泛流传其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块依照实践出真知一定要动手做的理念以学习和交流为目的这里准备逐一动手试试多做实验不管成功与否都会记录下来——小小的进步或是搞不掂的问题希望能够抛砖引玉。
【Arduino】168种传感器模块系列实验资料代码仿真编程图形编程 实验一百七十七Wemos D1 ESP32 WiFi蓝牙4MB4闪存UNO R32开发板模块 UNO D1 R32(ESP32)开发板 兼容Arduino 知识点ESP32芯片
(包括ESP32- d0wd、ESP32- d0wdq6、ESP32- d2wd、ESP32- s0wd)集成了Wi-Fi和双模式蓝牙。根据型号差异,ESP32包含一个或两个低功耗Xtensa®32位LX6微处理器(s)最大时钟速度240 MHz(通常是160 MHz)和Xtensa RAM / ROM本地内存和JTAG接口。 处理器 主处理器 Tensilica Xtensa 32位LX6微处理器 核心 2 或 1取决于变化除ESP32-S0WD为单核外ESP32系列所有芯片均为双核。 时钟频率高达 240 MHz 性能高达 600 DMIPS 超低功耗协处理器 允许您在深度睡眠时进行 ADC 转换、计算和电平阈值。 无线连接 的Wi-Fi 802.11 B / G / N / E / I802.11n标准 2.4GHz的高达150兆比特/秒 蓝牙 v4.2 BR/EDR 和蓝牙低功耗 (BLE) 记忆 内部存储器 ROM 448 KiB用于启动和核心功能。 SRAM 520 KiB用于数据和指令。 RTC 快速 SRAM 8 KiB用于从深度睡眠模式进行 RTC 启动期间的数据存储和主 CPU。 RTC 慢速 SRAM 8 KiB用于深度睡眠模式下的协处理器访问。 电子保险丝 1 Kibit其中 256 位用于系统MAC 地址和芯片配置其余 768 位保留用于客户应用包括 Flash-Encryption 和 Chip-ID。 嵌入式闪存Flash 通过 ESP32-D2WD 和 ESP32-PICO-D4 上的 IO16、IO17、SD_CMD、SD_CLK、SD_DATA_0 和 SD_DATA_1 内部连接。 0 MiBESP32-D0WDQ6、ESP32-D0WD 和 ESP32-S0WD 芯片 2 MiBESP32-D2WD 芯片 4 MiBESP32-PICO-D4 SiP 模块 外部闪存和 SRAM ESP32 最多支持四个 16 MiB 外部 QSPI闪存和 SRAM具有基于 AES 的硬件加密以保护开发人员的程序和数据。ESP32 可以通过高速缓存访问外部 QSPI flash 和 SRAM。 高达 16 MiB 的外部闪存被内存映射到 CPU 代码空间支持 8 位、16 位和 32 位访问。支持代码执行。 多达 8 MiB 的外部闪存/SRAM 存储器映射到 CPU 数据空间支持 8 位、16 位和 32 位访问。闪存和 SRAM 支持数据读取。SRAM 支持数据写入。 带有嵌入式 flash 的 ESP32 芯片不支持外部 flash 和外设之间的地址映射。 外设输入/输出带有 DMA 的丰富外设接口包括电容式触摸、ADC模数转换器、DAC数模转换器、I²C内部集成电路、UART通用异步接收器/发送器 )、CAN 2.0控制器局域网、SPI串行外设接口、I²S集成 IC 间声音、RMII简化的媒体独立接口、PWM脉宽调制等。 安全 支持 IEEE 802.11 标准安全功能包括 WFA、WPA/WPA2 和 WAPI 安全启动 闪存加密 1024位OTP客户最高768位 加密硬件加速AES、SHA-2、RSA、椭圆曲线加密ECC、随机数生成器RNG 【Arduino】168种传感器模块系列实验资料代码仿真编程图形编程 实验一百七十七Wemos D1 R32 ESP32开发板 项目二十二深度睡眠触摸唤醒(这里设置T0唤醒)
实验开源代码
/*【Arduino】168种传感器模块系列实验资料代码仿真编程图形编程实验一百七十七Wemos D1 R32 ESP32开发板项目二十二深度睡眠触摸唤醒(这里设置T0唤醒)
*/#define Threshold 40 //数值越大灵敏度更高RTC_DATA_ATTR int bootCount 0;
touch_pad_t touchPin;//打印 ESP32 已经从睡梦中醒来的原因
void print_wakeup_reason() {esp_sleep_wakeup_cause_t wakeup_reason;wakeup_reason esp_sleep_get_wakeup_cause();switch (wakeup_reason){case ESP_SLEEP_WAKEUP_EXT0 : Serial.println(使用 RTC_IO 的外部信号引起的唤醒); break;case ESP_SLEEP_WAKEUP_EXT1 : Serial.println(使用 RTC_CNTL 的外部信号引起的唤醒); break;case ESP_SLEEP_WAKEUP_TIMER : Serial.println(定时器引起的唤醒); break;case ESP_SLEEP_WAKEUP_TOUCHPAD : Serial.println(触摸板引起的唤醒); break;case ESP_SLEEP_WAKEUP_ULP : Serial.println(ULP 程序引起的唤醒); break;default : Serial.printf(唤醒不是由深度睡眠引起的: %d\n, wakeup_reason); break;}
}//打印 ESP32 已经从睡梦中醒来的原因
void print_wakeup_touchpad() {touchPin esp_sleep_get_touchpad_wakeup_status();switch (touchPin){case 0 : Serial.println(在 GPIO 4 上检测到触摸); break;case 1 : Serial.println(在 GPIO 0 上检测到触摸); break;case 2 : Serial.println(在 GPIO 2 上检测到触摸); break;case 3 : Serial.println(在 GPIO 15 上检测到触摸); break;case 4 : Serial.println(在 GPIO 13 上检测到触摸); break;case 5 : Serial.println(在 GPIO 12 上检测到触摸); break;case 6 : Serial.println(在 GPIO 14 上检测到触摸); break;case 7 : Serial.println(在 GPIO 27 上检测到触摸); break;case 8 : Serial.println(在 GPIO 33 上检测到触摸); break;case 9 : Serial.println(在 GPIO 32 上检测到触摸); break;default : Serial.println(唤醒不是通过触摸板); break;}
}void callback() {//占位符回调函数
}void setup() {Serial.begin(115200);delay(1000); //花一些时间打开串行监视器//增加引导编号并在每次重启时打印bootCount;Serial.println(Boot number: String(bootCount));//也打印 ESP32 和触摸板的唤醒原因print_wakeup_reason();print_wakeup_touchpad();//在触摸板 0 (GPIO4) 上设置中断touchAttachInterrupt(T0, callback, Threshold);//将触摸板配置为唤醒源esp_sleep_enable_touchpad_wakeup();//现在去睡觉Serial.println( 要休眠了);esp_deep_sleep_start();Serial.println(这永远不会被打印);
}void loop() {//这永远不会到达
}
【Arduino】168种传感器模块系列实验资料代码仿真编程图形编程 实验一百七十七Wemos D1 R32 ESP32开发板 项目二十二深度睡眠触摸唤醒(这里设置T0唤醒)
项目串口返回情况 【Arduino】168种传感器模块系列实验资料代码仿真编程图形编程 实验一百七十七Wemos D1 R32 ESP32开发板 项目二十二深度睡眠触摸唤醒(这里设置T0唤醒)
实验场景图 【Arduino】168种传感器模块系列实验资料代码仿真编程图形编程 实验一百七十七Wemos D1 R32 ESP32开发板 项目二十三带定时器唤醒的简单深度睡眠这里设置为五秒
实验开源代码
/*【Arduino】168种传感器模块系列实验资料代码仿真编程图形编程实验一百七十七Wemos D1 R32 ESP32开发板项目二十三带定时器唤醒的简单深度睡眠这里设置为五秒
*/#define uS_TO_S_FACTOR 1000000ULL /* Conversion factor for micro seconds to seconds */
#define TIME_TO_SLEEP 5 //时间ESP32将转入休眠状态以秒为单位RTC_DATA_ATTR int bootCount 0;/*Method to print the reason by which ESP32has been awaken from sleep
*/
void print_wakeup_reason() {esp_sleep_wakeup_cause_t wakeup_reason;wakeup_reason esp_sleep_get_wakeup_cause();switch (wakeup_reason){case ESP_SLEEP_WAKEUP_EXT0 : Serial.println(Wakeup caused by external signal using RTC_IO); break;case ESP_SLEEP_WAKEUP_EXT1 : Serial.println(Wakeup caused by external signal using RTC_CNTL); break;case ESP_SLEEP_WAKEUP_TIMER : Serial.println(Wakeup caused by timer); break;case ESP_SLEEP_WAKEUP_TOUCHPAD : Serial.println(Wakeup caused by touchpad); break;case ESP_SLEEP_WAKEUP_ULP : Serial.println(Wakeup caused by ULP program); break;default : Serial.printf(Wakeup was not caused by deep sleep: %d\n, wakeup_reason); break;}
}void setup() {Serial.begin(115200);delay(1000); //Take some time to open up the Serial Monitor//Increment boot number and print it every rebootbootCount;Serial.println(Boot number: String(bootCount));//Print the wakeup reason for ESP32print_wakeup_reason();/*First we configure the wake up sourceWe set our ESP32 to wake up every 5 seconds*/esp_sleep_enable_timer_wakeup(TIME_TO_SLEEP * uS_TO_S_FACTOR);Serial.println(Setup ESP32 to sleep for every String(TIME_TO_SLEEP) Seconds);/*Next we decide what all peripherals to shut down/keep onBy default, ESP32 will automatically power down the peripheralsnot needed by the wakeup source, but if you want to be a poweruserthis is for you. Read in detail at the API docshttp://esp-idf.readthedocs.io/en/latest/api-reference/system/deep_sleep.htmlLeft the line commented as an example of how to configure peripherals.The line below turns off all RTC peripherals in deep sleep.*///esp_deep_sleep_pd_config(ESP_PD_DOMAIN_RTC_PERIPH, ESP_PD_OPTION_OFF);//Serial.println(Configured all RTC Peripherals to be powered down in sleep);/*Now that we have setup a wake cause and if needed setup theperipherals state in deep sleep, we can now start going todeep sleep.In the case that no wake up sources were provided but deepsleep was started, it will sleep forever unless hardwarereset occurs.*/Serial.println(Going to sleep now);Serial.flush();esp_deep_sleep_start();Serial.println(This will never be printed);
}void loop() {//This is not going to be called
}【Arduino】168种传感器模块系列实验资料代码仿真编程图形编程 实验一百七十七Wemos D1 R32 ESP32开发板 项目二十三带定时器唤醒的简单深度睡眠这里设置为五秒
项目串口返回情况 【Arduino】168种传感器模块系列实验资料代码仿真编程图形编程 实验一百七十七Wemos D1 R32 ESP32开发板 项目二十四深度睡眠与外部唤醒这里使用10K下拉按钮到 GPIO 34
实验开源代码
/*【Arduino】168种传感器模块系列实验资料代码仿真编程图形编程实验一百七十七Wemos D1 R32 ESP32开发板项目二十四深度睡眠与外部唤醒这里使用10K下拉按钮到 GPIO 34
*/#define BUTTON_PIN_BITMASK 0x200000000 // 2^33 十六进制RTC_DATA_ATTR int bootCount 0;/*
Method to print the reason by which ESP32
has been awaken from sleep
*/
void print_wakeup_reason(){esp_sleep_wakeup_cause_t wakeup_reason;wakeup_reason esp_sleep_get_wakeup_cause();switch(wakeup_reason){case ESP_SLEEP_WAKEUP_EXT0 : Serial.println(Wakeup caused by external signal using RTC_IO); break;case ESP_SLEEP_WAKEUP_EXT1 : Serial.println(Wakeup caused by external signal using RTC_CNTL); break;case ESP_SLEEP_WAKEUP_TIMER : Serial.println(Wakeup caused by timer); break;case ESP_SLEEP_WAKEUP_TOUCHPAD : Serial.println(Wakeup caused by touchpad); break;case ESP_SLEEP_WAKEUP_ULP : Serial.println(Wakeup caused by ULP program); break;default : Serial.printf(Wakeup was not caused by deep sleep: %d\n,wakeup_reason); break;}
}void setup(){Serial.begin(115200);delay(1000); //Take some time to open up the Serial Monitor//Increment boot number and print it every rebootbootCount;Serial.println(Boot number: String(bootCount));//Print the wakeup reason for ESP32print_wakeup_reason();/*First we configure the wake up sourceWe set our ESP32 to wake up for an external trigger.There are two types for ESP32, ext0 and ext1 .ext0 uses RTC_IO to wakeup thus requires RTC peripheralsto be on while ext1 uses RTC Controller so doesnt needperipherals to be powered on.Note that using internal pullups/pulldowns also requiresRTC peripherals to be turned on.*/esp_sleep_enable_ext0_wakeup(GPIO_NUM_34,1); //1 High, 0 Low//If you were to use ext1, you would use it like//esp_sleep_enable_ext1_wakeup(BUTTON_PIN_BITMASK,ESP_EXT1_WAKEUP_ANY_HIGH);//Go to sleep nowSerial.println(Going to sleep now);esp_deep_sleep_start();Serial.println(This will never be printed);
}void loop(){//This is not going to be called
}【Arduino】168种传感器模块系列实验资料代码仿真编程图形编程 实验一百七十七Wemos D1 R32 ESP32开发板 项目二十四深度睡眠与外部唤醒这里使用10K下拉按钮到 GPIO 34
项目串口返回情况 【Arduino】168种传感器模块系列实验资料代码仿真编程图形编程 实验一百七十七Wemos D1 R32 ESP32开发板 项目二十四深度睡眠与外部唤醒这里使用10K下拉按钮到 GPIO 34
实验场景图