
ESP32
文章平均质量分 55
ESP32相关
SimonLiu009
半导体行业多年从业经历。现从事AIoT独立研发。
展开
-
让PlatformIO支持ESP32C3 SuperMini
在PlatformIO中添加对ESP32C3SuperMini的支持原创 2024-09-23 13:25:09 · 1834 阅读 · 0 评论 -
platformio 提示 fatal error: TimeLib.h: No such file or directory 的解决方案
在platformio编译arduino项目的时候,如果提示`fatal error: TimeLib.h: No such file or directory`的解决方法原创 2024-02-16 22:39:26 · 1260 阅读 · 0 评论 -
ESP32-C3使用WifiManager并将其中文汉化
ESP32-C3使用WifiManager并将其汉化原创 2024-02-15 21:41:12 · 1451 阅读 · 0 评论 -
【转载】ESP8266 基ESP8266_RTOS_SDK (ESP-IDF )中嵌入网页文件
ESP8266/ESP32 基ESP8266_RTOS_SDK (ESP-IDF )中嵌入网页文件转载 2023-07-05 12:19:13 · 450 阅读 · 0 评论 -
ESP32-C3模组资料索引
ESP32-C3模组资料索引原创 2023-05-20 04:46:26 · 170 阅读 · 0 评论 -
MacOS下VScode安装PlatformIO Core卡死和新建项目速度慢的解决方法
MacOS下VScode安装PlatformIO Core卡死和新建项目速度慢的解决方法原创 2022-09-04 16:21:46 · 12023 阅读 · 2 评论 -
ESP8266/ESP32作为Bluetooth Source向Bluetooth Sink(蓝牙音箱等)发送音频资料收集
使用ESP8266/ESP32作为Bluetooth Source连接Bluetooth Sink(例如蓝牙音箱)原创 2022-06-14 15:09:57 · 3011 阅读 · 2 评论 -
ESP32分区表图解
在这篇博文ESP8266 RTOS 之 esp-aliyun 例程Flash分区中,我以2M的ESP8266为例说明了分区表的空间划分。本文则以ESP32 4M Flash为例,讲一讲如何自定义分区。首先下图是一个标准的分区表:关于offset设置。make menuconfig - Partition Table设置里,有一个offset设置,默认为0x8000,即Patition Table的分区偏移地址。Patition Table的分区长度一般为0x1000。修改这个值,会影响到后面所有分区原创 2020-07-15 16:35:34 · 12303 阅读 · 1 评论 -
esp-aliyun OTA及版本设置
版本号在这里设置:make menuconfig->Component config ->iotkit embedded -> aliyun linkkit device version -> Device version版本号设置完毕后重新编译,登录智能生活平台,进入项目页面。具体升级步骤参考我的另外一篇博文即可...原创 2020-07-06 21:25:58 · 946 阅读 · 0 评论 -
(xTaskNotify)- assert failed! 错误的修复
今日在测试ESP32代码的时候,使用xTaskNotify发生错误,提示如下:(xTaskNotify)- assert failed!,然后系统重启。找了一下原因,在xTaskNotify()之前先打印对应的task_handle,结果是NULL。if(target_task_handle != NULL){ xTaskNotify((TaskHandle_t )target_task_handle, //接收任务通知的任务句柄 (uint32_t原创 2020-07-03 12:12:51 · 3001 阅读 · 0 评论 -
esp-idf 之事件循环(Event Loop)例程详解
本文是将Default Event Loop:esp-idf/examples/system/esp_event/default_event_loop at release/v3.3 · espressif/esp-idf 例程内的README和代码注释翻译一下,便于各位看官理解并理顺思路。README事件循环库Event Loop Library (‘esp_event’) 默认事件循环例程Default Event Loop Example本例程是事件循环库的一个示例。为了保持简单,示例仅限于使用原创 2020-06-20 19:03:45 · 9060 阅读 · 0 评论 -
0.96寸OLED像素排列、汉字显示和取模
以常见的128x64的OLED为例。我们常用的取模软件PC2LCD2002为例,字模选项设置如下:阴码逆向列行式十六进制C51格式一个16x16的宋体“联“字,取模结果是2行,每行16个字节:{0x02,0xFE,0x92,0x92,0xFE,0x02,0x00,0x10,0x11,0x16,0xF0,0x14,0x13,0x10,0x00,0x00},{0x10,0x1F,0x08,0x08,0xFF,0x04,0x81,0x41,0x31,0x0D,0x03,0x0D,0x31,0x原创 2020-06-19 13:42:47 · 6620 阅读 · 0 评论 -
ESP32错误码
Error Codes ReferenceThis section lists various error code constants defined in ESP-IDF.For general information about error codes in ESP-IDF, see Error Handling.ESP_FAIL (-1): Generic esp_err_t code indicating failureESP_OK (0): esp_err_t value indicat原创 2020-05-22 11:28:41 · 7110 阅读 · 0 评论 -
ESP32的长按、短按、双击、多击 按键检测实现
乐鑫官方有个仓库叫做esp-iot-solution,里面有很多常用外设的驱动和物联网场景的实现代码。其中就有一个button模块来实现按键的长按、短按检测:espressif/esp-iot-solution › components › general › button › button。README翻译如下:本模块封装了一个按键对象一个按键设备定义如下:GPIO 端口号信号有效电平触发模式:触发模式决定了是否调用连续触发多少秒后开始进行进行连续触发一个按键设备提供如下原创 2020-05-22 10:23:50 · 11635 阅读 · 0 评论 -
ESP8266/ESP32控制ws2812的几种方法
ESP8266的GPIO有效翻转大约需要2.5us(0.4MHz),而ws2812的控制电平要求精度在百ns级别,所以直接控制GPIO比较难实现。在网上搜索了一下各种可行的方案:Arduino配合ws2812库non_os SDK,配合 Adafruit_NeoPixel.cSPI驱动。将SPI的时钟调整为8MHz,发送一个字节所需时间1.25us,等于ws2812一个位的时间,SP...原创 2019-10-25 14:01:23 · 20267 阅读 · 0 评论 -
ESP32-WROOM-32D ESP32-WROOM-32U Pinout管脚图
给几张大图:首先是官方Datasheet的截图,简单明了版本2版本3原创 2020-05-05 15:25:52 · 10731 阅读 · 0 评论 -
ESP32CAM上传图片的几种方法
经过前段时间的研发,总结一下,ESP32CAM拍摄出来的照片上传服务器有如下几种方式,当然还可以进行更多组合:通过4GAT命令上传到FTP服务器AT命令上传到HTTP服务器AT命令上传到MQTT服务器通过DTU上传到FTP服务器通过DTU上传到socket服务器通过DTU上传到HTTP服务器通过DTU上传到MQTT服务器通过WIFI通过FTP上传到FTP服务器通过HTT...原创 2020-04-28 12:59:33 · 7540 阅读 · 4 评论 -
C语言格式化输出日期时间
其实函数就那么几个,具体方法也不少,以下列出几种: char timestr[128]=""; time_t app_time_stamp = 0; //方法1 app_time_stamp = time( 0 ); strftime(timestr, 255, "%a, %d %b %Y %H:%M:%S GMT", localtime(&app_time_stam...原创 2020-04-23 17:22:44 · 10160 阅读 · 0 评论 -
ESP32任务看门狗实践
默认情况下,TWDT(任务看门狗) 将监视每个 CPU 的空闲任务,但任何任务都可以选择由 TWDT 监视。每个观察任务必须定期“重置” TWDT 以指示它们已被分配 CPU 时间。如果任务未在 TWDT 超时期限内重置,则将打印一条警告,其中包含有关哪些任务未能及时重置 TWDT 以及哪些任务当前正在 ESP32 CPU 上运行的信息。并且还有可能在用户代码中重新定义函数 esp_task_wd...原创 2020-04-13 23:12:57 · 7666 阅读 · 6 评论 -
解决ESP32 esp_image: Image length *** doesn't fit in partition length 1048576
背景:ESP32下载的时候遇到esp_image: Image length *** doesn't fit in partition length 1048576错误解决方法:项目文件夹下创建partitions.csv文件,把ota_0和0ta_1的大小改为比固件更大的数值,比如0x180000内容如下:# Name, Type, SubType, Offset, Size, ...原创 2020-03-04 17:57:10 · 2859 阅读 · 0 评论 -
macOS下ESP2866 RTOS 和 esp-idf 开发环境快速切换
缘起是我计划把原先的esp-idf升级到release/v4.1, git pull之后瞄了一眼文档,看到编译环境配置方式有较大变化,交叉编译工具链链接不再提供,而是通过$IDF_PATH/install.sh脚本自动下载。在折腾一通最终报错python_env/idf4.2_py2.7_env/bin/python: No module named pip之后,还是决定走另外一条路:使用不同...原创 2020-02-22 14:30:20 · 837 阅读 · 0 评论 -
对阿里云生活物联网平台"本地倒计时功能开发实践"的补充
之所以写这篇博文,实在是因为阿里云的帮助文档写得让人难以理解,一如既往地正确而无用,对需要帮助的人帮助甚少。基本上就是懂的人不用看,不懂的人看不懂。先给出官方文档的链接:最新版本地倒计时功能开发实践_最佳实践_生活物联网平台-阿里云旧版(旧版信息多一些,但是举的例子信息还是很模糊)本地倒计时功能开发实践 · 开发指南官方文档举例:CountDownList: {Target...原创 2020-02-20 13:31:22 · 736 阅读 · 2 评论 -
ESP8266和ESP32的nvs操作自定义分区
首先说一下ESP8266和ESP32 nvs的handle在声明的时候有些区别:ESP8266 RTOS中是:nvs_handle my_handle;ESP32的esp-idf中是:nvs_handle_t my_handle;在components/nvs_flash/include/nvs.h中NVS_DEFAULT_PART_NAME宏定义如下#define NVS_D...原创 2020-02-18 18:11:00 · 2212 阅读 · 0 评论 -
ESP32-S2与ESP32和ESP8266对比
ESP32-S2是在ESP32的基础上进行了一些裁剪和添加。最重要的部分是移除了蓝牙,增加了USB OTG。在datasheet中提到RF载1%的duty cycle时电流为24uA。据说价格比较美丽,但是不知道具体是多少。以下是框图:以下是对比表格:资料来源:A Comparison of the New ESP32-S2 to the ESP32 | ESP8266 | Maker...原创 2020-02-13 17:22:22 · 15077 阅读 · 2 评论 -
c语言输出编译时间日期行号文件名
打印固件编译日期时间printf(" Firmware compile time:%s %s\n", __DATE__, __TIME__);结果Firmware compile time:Feb 11 2020 19:41:48实现方法是使用C语言预定义宏。ANSIC标准定义了可供C语言使用的预定义宏:1、__ LINE__ : 在源代码中插入当前源代码行号2、__ FILE _...原创 2020-02-11 20:41:33 · 2474 阅读 · 0 评论 -
Task watchdog got triggered错误
今日调试RTOS有时候发生Task watchdog got triggered错误并重启。LOG如下:Task watchdog got triggered.Task stack [heater_task] stack from [0x3fff60f0] to [0x3fff70ec], total [4096] size 0 4...原创 2020-01-07 19:08:34 · 4819 阅读 · 2 评论 -
编译freeRTOS “error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token”错误解决
今日编译ESP8266 RTOS SDK的时候有个头文件声明了extern 结构体,结果一旦加入这个头文件编译就各种报错,提示error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token。一通搜索之后并未解决我的问题,回滚编译日志发现错误太多居然超出了log的buffer大小,看不到完整的log。于是再次编译...原创 2019-11-15 18:06:39 · 6629 阅读 · 0 评论 -
ESP8266/ESP32 NVS获取动态长度的数据
以下代码来自乐鑫官方文档:非易失性存储库 — ESP-IDF 编程指南 v4.1-dev-802-ga45e99853 文档// Example (without error checking) of using nvs_get_str to get a string into dynamic array:size_t required_size;nvs_get_str(my_handle...原创 2019-11-08 21:12:34 · 839 阅读 · 0 评论 -
E (527) uart: uart_set_hw_flow_ctrl(264): rx flow thresh error错误
最近在进行ESP32开发的时候,发现设备启动报了一个错误:E (527) uart: uart_set_hw_flow_ctrl(264): rx flow thresh error搜了一下,发现是结构体初始化风格的问题。原初始化代码 uart_config_t uart0_config; //串口参数配置->uart0 uart0_config.baud_rate = ...原创 2019-05-19 22:48:36 · 1445 阅读 · 0 评论 -
Mac下使用Visual Studio Code 编译Arduino
关于如何使用Visual Studio Code 编译Arduino,网上基本上都是关于Windows的设置,关于Mac的设置说明非常少。摸索了大约20分钟搞定,在此做一个记录。转载请说明来源。安装Arduino官方IDE,如果你编译的是ESP8266/ESP32,请参照相关博文下载对应板子的文件。直接下载板子文件非常非常慢,而且还会断掉。以ESP32为例,可以使用如下方式添加板子:...原创 2019-05-17 00:15:43 · 1769 阅读 · 0 评论 -
ESP IDF为make flash和make monitor指定不同串口
在上一篇博文中我提到minicom的乱码问题:Mac minicom 汉字前面出现六边形问号乱码问题 ,问题源于我希望使用两个不同的COM口进行烧录和监视。minicom的乱码解决了90%,还是不够完美,于是还是想用一个命令使用默认的IDF监视器来解决。搜了一下终于在官方github找到答案:[TW#15684] Feature Request: Command line specify ma...原创 2019-05-29 15:18:53 · 3038 阅读 · 2 评论 -
Mac minicom 汉字前面出现六边形问号乱码问题
今日尝试用两个CH340G调试ESP32,一个用于烧录,一个用于监视UART1的log,就不需要反复拔插。但是这样的话,就不能用`make -j4 flash monitor`命令了,因为这个命令使用同一个设备。于是尝试在UART1上使用了minicom和aos自带的miniterm。miniterm会莫名其妙插入一个空行,字符没问题。minicom的汉字前会出现六边形问号,但是换行没问题。...原创 2019-05-29 14:50:02 · 1374 阅读 · 0 评论 -
ESP idf 笔记(一)
这是我学习ESP IDF的笔记,不一定正确。如果有错误请不吝指正。每次切换idf分支,最好运行git submodule update --init --recursive 更新模块获取idf分支信息:git describe --tags对于idf v3.3即以前的版本:3.1 需要使用版本号为5.2.0的交叉编译工具链3.2 配置命令:make menuconfing...原创 2019-07-24 13:42:42 · 4895 阅读 · 0 评论 -
ESP idf笔记(二)
本文主要描述关于idf调试相关内容:IDF 监视器 — ESP-IDF 编程指南 v4.0-dev-1287-gd7e659df2 文档ESP32 Core Dump — ESP-IDF Programming Guide v4.0-dev-1287-gd7e659df2 documentationESP32 静态分析程序 crash 之 objdump在build目录下运行...原创 2019-07-24 16:54:35 · 273 阅读 · 0 评论 -
ESP32 项目编译 多处esp_log.h 错误的解决
在ESP32项目进行编译的时候,有时候会出现多个esp_log.h相关的错误,包括in expansion of macro 'LOG_COLOR' in expansion of macro 'LOG_COLOR_W' in expansion of macro 'ESP_LOGE' in expansion of macro 'ESP_LOG_LEVEL_LOCAL' in expansion...原创 2019-08-04 15:23:31 · 4268 阅读 · 1 评论 -
ESP idf expected initializer before '__result_use_check'错误修复
今日为了一个新的功能,尝试ESP32最新的idf(master 分支 commit 055943e29),重新下载了idf和toolchain,在测试hello_world项目运行idf.py menuconfig的时候报了一个warnning:CMake Warning at ~/Espressif/ESP32/esp-idf/tools/cmake/crosstool_version_ch...原创 2019-07-22 21:59:14 · 2153 阅读 · 2 评论 -
ESP32 GPIO资源汇总
GPIO可用资源GPIO 6-11 连接到SPI Flash。GPIO 34-39 只能作为输入,其他的可以作为输入或者输出。GPIO 20, 24, 28, 29, 30, 31 不对外开放。GPIO 32,33默认连接到RTC域。可能需要如下设置:/* gpio32 route to digital io_mux */REG_CLR_BIT(RTC_IO_XTAL_32K_PAD...原创 2019-08-07 22:48:00 · 3620 阅读 · 0 评论 -
ESP32反复重启报rst:0x10 (RTCWDT_RTC_RESET),boot:0x33 (SPI_FAST_FLASH_BOOT) flash read err, 1000错误
现象:最近在ESP32和4G模块联调的时候发现上电后ESP32反复重启,错误信息为rst:0x10 (RTCWDT_RTC_RESET),boot:0x33 (SPI_FAST_FLASH_BOOT) flash read err, 1000。经查阅是和上电时GPIO状态有关。原因分析:设备设置了GPIO12/13为UART1,但是上电以后4G模块的串口影响了GPIO12的电压,而GPIO1...原创 2019-08-07 23:38:27 · 30297 阅读 · 15 评论 -
ESP32 MD5 代码
先写个伪代码,验证以后再来更新: #include "esp32/rom/md5_hash.h" struct MD5Context myContext; unsigned char string[] = "Some Data Here"; unsigned char data[16]; memset(myContext,0x00,sizeof(myC...原创 2019-08-06 12:03:08 · 2625 阅读 · 2 评论 -
ESP32 OTA APP版本号设置
本文讲述ESP32设置APP的版本号用于OTA版本对比。在ESP-idf的native_ota_example中, 有一段代码演示如何检查应用程序的版本并防止无限的固件更新。只有新版本的应用程序才能下载。版本检查是在收到第一个固件映像包之后执行的,其中包含有关固件版本的数据。申请版本可从以下三个地方选取:如果在项目 PROJECT_VER 文件中设置PROJECT_VER变量,则使用它的...原创 2019-08-20 18:23:03 · 4660 阅读 · 0 评论