ESP32应用指南

一、简介。想当年,安信可公司推出一款低成本的WIFI模块(基于乐鑫公司的ESP8266芯片)之后,火了一段时间。这个模块是支持AT指令和SDK两种开发方式。AT指令很简单,用串口发送几条指令,即可让模块进入串口透传模式,用户基本不用涉及复杂的TCP/IP协议。SDK开发,相当于固件库开发,官方提供丰富的例子,有带操作系统和不带操作系统等等,代码可读性好,上手难度并不高。由于ESP8…

大家好,又见面了,我是你们的朋友全栈君。

一、简介。

想当年,安信可公司推出一款低成本的WIFI模块(基于乐鑫公司的ESP8266芯片)之后,火了一段时间。这个模块是支持AT指令和SDK两种开发方式。

AT指令很简单,用串口发送几条指令,即可让模块进入串口透传模式,用户基本不用涉及复杂的TCP/IP协议。

SDK开发,相当于固件库开发,官方提供丰富的例子,有带操作系统和不带操作系统等等,代码可读性好,上手难度并不高。

由于ESP8266本身的定位就是低成本的联网方案,所以它的性能不会太高,不适合做太复杂的事情。

后来,安信可又推出了一款WIFI/蓝牙模块ESP32,它可以说是ESP8266的增强版。除了增加了蓝牙4.2之外,还增加了非常丰富的外设,如:ADC、SPI、IIC、IIS、SDIO、UART、PWM、红外控制器、有线以太网MAC、AES、SHA、RSA、随机数产生器、PID控制器、电容触摸传感器、低噪放、温度传感器、DAC等。同时,CPU主频高达240MHz,但是,价格也不高。

STM32也推出了一款类似的芯片,就是STM32WB系列,也就是STM32增加了蓝牙5、OpenThread、ZigBee 3.0等功能。

TI也有类似的芯片CC2652R,集成了48MHz主频的ARM M4F内核,支持蓝牙5、WIFI、Thread、ZigBee,可以在淘宝上买到,但是比较贵。

显然,ESP32比STM32WB和CC2652R更有价格优势。

以下均以ESP32S模块为例,介绍开发时的注意事项。不定期更新。

二、硬件设计。

2.1 串口。

ESP8266系列的ESP-01模块默认一个串口输出调试信息以及AT指令的通信。

ESP32系列的ESP32S模块一共有3个串口,其中,使用串口0输出调试信息以及烧录固件,串口2做AT指令的通信

串口0也就是U0RXD、U0TXD引脚,串口2则是U2RXD、U2TXD引脚。

也就是说使用AT指令时,ESP32不再像ESP8266那样,一上电就打印一串调试信息,用户体验有所提高。

2.2 天线。

ESP32模块在PCB上的布局,要求天线超出板边,如下图所示,否则可能会影响无线通信距离。

ESP32应用指南

ESP32应用指南

其中,天线的连接器是IPEX座一代。

2.3 Micro SD/TF卡。

ESP32S模块的SDMMC Host驱动,支持两个槽:

Slot 0:8bit模式。

Slot 1:4bit模式。其引脚定义如下图所示。

ESP32应用指南

其中CD和WP引脚可以接任意的GPIO口,CD引脚就是SD卡的检测脚。

Slot 0部分引脚连接了内部Flash,无法使用,建议使用Slot 1 4bit模式

具体方法请看《ESP32使用SD卡注意事项》。

2.4 GPIO口。

ESP32有部分引脚只能设为输入引脚,如下图所示,黄色区域。

ESP32应用指南

其中IO6~IO11连接内部Flash,无法当GPIO口使用,如下图红色方框内的引脚,但是部分引脚可以扩展PSRAM。

ESP32应用指南

GPIO0为配置上电模式,拉低时为配置模式,可烧录固件;拉高时为正常工作模式。

GPIO2和GPIO12做普通IO口使用,请看《ESP32使用SD卡注意事项》。

2.5 片内温度传感器。

ESP32有片内的温度传感器TSENS,需要使用ULP协处理器才能使用,但是读到的温度不是绝对温度,而是相对温度,而且是没有标定的相对温度。这个温度传感器实用价值并不高,不建议使用。

2.6 RTC时钟。

增加32.768kHz时钟,主要用于低功耗模式切换CPU主频用的,不能直接#include rtc.h,因为rtc.h在librtc.a中,而不是公共API。ESP32的RTC不能获得实时时钟,需要另外增加RTC芯片,如:DS1302、M41T62等。

2.7 复位。

使用电池供电时,建议增加电源监视器以防止ESP32发生异常。电源电压低于2.3V时,拉低CHIP_PU引脚。

ESP32应用指南

2.8 PSRAM。

当任务需要大量内存时,ESP32自身的内存不足,那么就需要扩展PSRAM内存,对应的芯片型号是ESP-PSRAM64H。其原理图如下图所示。

ESP32应用指南ESP32应用指南

然后在make menuconfig中配置PSRAM。

ESP32应用指南

ESP32应用指南

初始化成功的话,会在串口中打印如下信息。

ESP32应用指南

三、SDK开发环境。

3.1 ESP32-IDF配置。

这里的SDK使用ESP32-IDF,具体的环境配置可以参考官网《示例4:ESP32_IDF 使用》。

需要注意的是,IDF不需要使用git下载,直接在AiThinkerIDE_V0.5的安装目录下就有了,不过是旧的IDF v2.0,我这里是C:\AiThinkerIDE_V0.5\cygwin\home\aithinker\project\esp-idf。

而git下载的是新的IDF v4.0,在AiThinkerIDE_V0.5下,不能使用IDF v2.0的以上版本。(官方的技术支持表示在开发新版本的AiThinkerIDE)

所以这里是把IDF v2.0拷贝出来,把example下的helloword拷贝出来,改名为app,其它的按照示例4的去做就可以了。

IDFv2.0不支持SDIO接口的SD卡,建议使用v3.2或以上版本。

建议使用官方推荐的lubuntu,安装vmware,直接打开就可用了。make menuconfig之前先make clean。

vmware可以安装workstation 15,不要安装player,因为player破解不了。

3.2 使用Eclipse烧录固件。

Windows系统下,在Make Menuconfig那一步,进入Serial flasher config。

ESP32应用指南

进入Default serial port。

ESP32应用指南

我的这里的串口号为COM10,对应于cgywin下的串口号为ttyS9。如果是COM1,对应ttyS0,对应的数字减1。

这里配置为/dev/ttyS9。

ESP32应用指南

此外,还要配置波特率为921600。

ESP32应用指南

我这里试了1152000,烧录失败,具体波特率视硬件上串口的信号质量而定,信号质量差,需要降低波特率。然后退出,保存即可。

先打开Make Target窗口。

ESP32应用指南

双击download,这样,比shift+F9要方便很多。

ESP32应用指南

出现下图所示,即为烧录成功。

ESP32应用指南

这个方法比ESP Flash Download Tool要方便得多,但是串口号不要更改。

3.3 其它问题。

出现下图所示问题,可以不管,只要Build成功就说明代码没问题。(可能是IDE的词法分析器没做好,实际是找得到这些变量)

ESP32应用指南

四、SDK开发。

4.1 Secure Boot。

由于ESP32是使用外部Flash来存放代码的,如果外部Flash不加密的话,很容易被人窃取代码。所以商业应用,必须使用Secure Boot来加密代码。可以参考《ESP32-Secure Boot安全方案》。

五、ESP32-CAM开发板。

ESP32-CAM开发板不是开箱即用,需要重新烧写固件。

手机打开热点,账号设置为aithinker,密码设置为aithinker888。ESP32会自动连接上这个热点,并在串口0上打印IP地址。

手机打开浏览器,输入ESP32的IP地址+/jpg,可以看到静态图像,+jpg_stream可看到动态图像。

但是这里测试发现,动态图像很卡,不流畅。测试用的手机为OPPO A59m。

六、ESP32-S2。

ESP32-S2只有WIFI功能,但是加密和温度传感器等功能有所改善,GPIO口也增多。

ESP32-S2对应的模块为ESP-12K。

七、参考资料。

ESP32系列模组专题

官方源码(包括ESP32和ESP8266等)

ESP32常见问题

ESP32硬件设计指南

ESP-IDF在线API。(中文)

ESP-IDF API手册

ESP32技术参考

ESP32 AT指令集与使用示例

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/126821.html原文链接:https://javaforall.net

(0)
上一篇 2022年4月8日 下午6:20
下一篇 2022年4月8日 下午6:20


相关推荐

  • 服务器开机显示0x000000ca,使用电脑出现蓝屏代码0x000000CA故障该如何解决?[通俗易懂]

    服务器开机显示0x000000ca,使用电脑出现蓝屏代码0x000000CA故障该如何解决?[通俗易懂]最近有用户反应在使用电脑的时候出现了蓝屏,蓝屏代码0x000000CA,导致电脑无法使用,该如何去解决这种问题对于很多用户还真是束手无策,下面来看看豆豆解决这种故障问题吧。电脑出现蓝屏代码0x000000CA故障解决方法:1经查,这个蓝屏出错代码:0x000000ca原因:操作系统无法执行%1。2原因之一:如果在计算机上的高级配置和电源接口(ACPI)BIOS返回Microsoft…

    2022年10月8日
    3
  • ARM指令集和X86指令集对比

    ARM指令集和X86指令集对比参考资料 ARM 和 x86 有什么区别 0 基础知识指令的强弱是 CPU 的重要指标 指令集是提高微处理器效率的最有效工具之一 从现阶段的主流体系结构讲 指令集可分为复杂指令集 CISC 和精简指令集 RISC 两部分 相应的 微处理随着微指令的复杂度也可分为 CISC 及 RISC 这两类 CISC 是一种为了便于编程和提高存储器访问效率的芯片设计体系 在 20 世纪 90 年代中期之前 大多数的微处理器都采用 CISC 体系 包括 Intel 的 80×86 和 Motorola 的 68K 系列等 即通常所

    2026年3月18日
    2
  • Coze平台实战教程:手把手教你从0搭建一个智能体,全部跟下来你就Agent入门了!

    Coze平台实战教程:手把手教你从0搭建一个智能体,全部跟下来你就Agent入门了!

    2026年3月12日
    3
  • 文件夹提示文件或目录损坏且无法读取

    文件夹提示文件或目录损坏且无法读取文件夹无法访问文件名变乱码的恢复方法硬盘损坏怎么恢复 硬盘是我们工作 学习和生活中常用的信息存储工具 因为容量大 价格便宜而深受人们的喜爱 因此硬盘也成为了我们一些重要信息的信息载具 文件夹提示 文件或目录损坏且无法读取 的恢复方法这时我们该如何恢复我们丢失的文件呢 这个时候一定要记住不要再进行读写操作 以防数据被覆盖永久丢失 并且第一时间运用专业软件恢复 因为数据丢失时间越短找回的可能性越大 文件夹提示文件或目录损坏且无法读取工具 软件 AornData 软件步骤 1 先

    2026年3月16日
    3
  • Mac上一定要安装的——MacPorts「建议收藏」

    Mac上一定要安装的——MacPorts「建议收藏」 如果你习惯了使用linux里边的apt-get,那么你一定要在你的mac里安装MacPorts。以下是转载过来的关于这个软件的简介和安装步骤:MacPorts简介MacPorts,曾经叫做DarwinPorts,是一个软件包管理系统,用来简化MacOSX和Darwin操作系统上软件的安装。它是一个用来简化自由软件/开放源代码软件的安装的自由/开放源代码项目,与Fin…

    2026年2月12日
    5
  • html可以转换成word_html显示word文档

    html可以转换成word_html显示word文档项目后端使用了springboot,maven,前端使用了ckeditor富文本编辑器。目前从html转换的word为doc格式,而图片处理支持的是docx格式,所以需要手动把doc另存为docx,然后才可以进行图片替换。一.添加maven依赖主要使用了以下和poi相关的依赖,为了便于获取html的图片元素,还使用了jsoup:<dependency>  <gr…

    2022年10月12日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号