ESP简介及环境搭建
inTop
首先说明一下这系列的文章并不是教学类的内容,只是记录一下自己捣鼓ESP的一些历程。所有的资源文档等最先考虑乐鑫芯片官网,其次是模组、开发板的网站,最后是第三方资源。而且乐鑫官网的的内容已经很全面了,基本的SDK也正逐渐向一体化迈进,所以虽然现在随着乐鑫的不断火爆导致网上的资料鱼龙混杂,稍微捋清一下还是很条理很方便的。也正是由于上述现象,一些很基本的东西就不在这系列里贴了,大家可自行去官网找。
目前本人用的模块主要是安信可的,8266是12S,32S是32S,32S2是12K,最新出的32C系列还没开始研究。关于这些型号,可以这样理解:8266是你本人,基本的功能都是你自己的身体提供的,然后你穿上了不同厂家的衣服,背上了不同容量的背包,然后就有了01、12、12S、ATK01这些型号。其实很多型号也只是厂家在升级过程中的一些半成品,所以理论上来说,只要是8266的核心,就不用担心程序兼容的问题,当然用到的IO口还是需要注意一下的。
非环境工具
安信可汇总:开发工具清单
个人推荐:
- 烧录WiFi固件工具:ESP_DOWNLOAD_TOOL (非集成环境的烧录工具)
- TCP/UDP 网络调试助手安卓版 (应用集成了Smart Touch智能配网)
- 安信可公众号Airkiss智能配网
- 串口工具 SSCOM (个人用过的裸机开发最好的串口工具,具体优点自行体验,强行安利一波。)
网站资源
以上网站包含:
- 硬件设计指南
- 芯片、模组、开发板说明及相关技术文档
- SDK及编程指南及AT指令集相关
- 学习资源
- 下载、调试工具
- 论坛、服务、支持等
总之,想找什么东西第一选择就是乐鑫官网,做了这几年的开发个人感觉乐鑫的官网资料和服务真的很完善了,在官网混的多了就会感觉比意法ST官网的资源都要好一些,虽然现在没有CubeMx那种亲民到变态级别的存在,不过按目前这个发展趋势感觉也逐渐逼近了。
芯片简介
- 摘自 乐鑫 - 芯片概览
- 芯片选型 - ESP Product Selector
ESP32-S 系列
ESP32-S3 系列
32-bit MCU & 2.4 GHz Wi-Fi & Bluetooth LE 5.0
- Xtensa® 32 位 LX7 双核处理器,主频高达 240 MHz
- 内置 512 KB SRAM、384 KB ROM 存储空间,并支持多个外部 SPI、Dual SPI、 Quad SPI、Octal SPI、QPI、OPI flash 和片外 RAM
- 额外增加用于加速神经网络计算和信号处理等工作的向量指令 (vector instructions)
- 44 个可编程 GPIO,支持常用外设接口如 SPI、I2S、I2C、PWM、RMT、ADC、DAC、UART、SD/MMC 主机控制器和 TWAITM 控制器等
- 基于 AES-XTS 算法的 Flash 加密和基于 RSA 算法的安全启动,数字签名和 HMAC 模块,“世界控制器 (World Controller)”模块
芯片 | 单 / 双核 | 封装 (mm) | 管脚 | 存储 | Flash (MB) | PSRAM (MB) | 模组 | 开发板 |
---|---|---|---|---|---|---|---|---|
![]() |
双核 | QFN 7x7 | 56 | 384 KB ROM 512 KB SRAM 16 KB RTC SRAM | N/A | N/A | ESP32-S3-WROOM-1 | ESP32-S3-DevKitC-1 |
ESP32-S2 芯片
32-bit MCU & 2.4 GHz Wi-Fi
- 单核 CPU 时钟频率高达 240 MHz
- 支持多种低功耗工作状态:精细时钟门控、动态电压时钟频率调节
- 安全机制:eFuse 存储、安全启动、Flash 加密、数字签名,支持 AES、SHA 和 RSA 算法
- 外设包括 43 个 GPIO 口,1 个全速 USB OTG 接口,SPI,I2S,UART,I2C,LED PWM,LCD 接口,Camera 接口,ADC,DAC,触摸传感器
- 可对接丰富的网络云平台、拥有通用的产品特性,极大缩短产品构建与上市时间
芯片 | 单 / 双核 | 封装 (mm) | 管脚 | 存储 | Flash (MB) | PSRAM (MB) | 模组 | 开发板 |
---|---|---|---|---|---|---|---|---|
![]() |
单核 | QFN 7x7 | 56 | 128 KB ROM 320 KB SRAM 16 KB RTC SRAM | N/A | N/A | ESP32-S2-WROOM ESP32-S2-WROOM-I ESP32-S2-WROVER ESP32-S2-WROVER-I ESP32-S2-SOLO ESP32-S2-SOLO-U | ESP32-S2-Saola-1 ESP32-S2-Kaluga-1 |
![]() |
单核 | QFN 7x7 | 56 | 128 KB ROM 320 KB SRAM 16 KB RTC SRAM | 2,4 | N/A or 2 MB | ESP32-S2-MINI-1 ESP32-S2-MINI-1U | ESP32-S2-DevKitM-1 ESP32-S2-DevKitM-1U |
ESP32-C3 系列芯片
32-bit RISC-V MCU & 2.4 GHz Wi-Fi & Bluetooth LE 5.0
- RISC-V 32 位单核处理器,四级流水线架构,主频高达 160 MHz
- 行业领先的低功耗性能和射频性能
- 内置 400 KB SRAM、384 KB ROM 存储空间,并支持多个外部 SPI、Dual SPI、Quad SPI、QPI flash
- 完善的安全机制:基于 RSA-3072 算法的安全启动、基于 AES-128-XTS 算法的 flash 加密、创新的数字签名和 HMAC 模块、支持加密算法的硬件加速器
- 丰富的通信接口及 GPIO 管脚,可支持多种场景及复杂的应用
芯片 | 芯片变型 | 单 / 双核 | 封装 (mm) | 管脚 | 存储 | Flash (MB) | PSRAM (MB) | 模组 | 开发板 |
---|---|---|---|---|---|---|---|---|---|
![]() |
ESP32-C3 ESP32-C3FN4 ESP32-C3FH4 | 单核 | QFN 5x5 | 32 | 400 KB RAM, 384 KB ROM, 8 KB RTC SRAM | N/A 4 4 | N/A | ESP32-C3-WROOM-02 ESP32-C3-MINI-1 | ESP32-C3-DevKitC-02 ESP32-C3-DevKitM-1 |
ESP32 系列芯片
32-bit MCU & 2.4 GHz Wi-Fi & Bluetooth/Bluetooth LE
- 两个或一个可以单独控制的 CPU 内核,时钟频率可调,范围从 80 MHz 到 240 MHz
- +19.5 dBm 天线端输出功率,确保良好的覆盖范围
- 传统蓝牙支持 L2CAP,SDP,GAP,SMP,AVDTP,AVCTP,A2DP (SNK) 和 AVRCP (CT) 协议
- 低功耗蓝牙 (Bluetooth LE) 支持 L2CAP, GAP, GATT, SMP, 和 GATT 之上的 BluFi, SPP-like 协议等
- 低功耗蓝牙连接智能手机,发送低功耗信标,方便检测
- 睡眠电流小于 5 μA,适用于电池供电的可穿戴电子设备
- 外设包括电容式触摸传感器,霍尔传感器,SD 卡接口,以太网,高速 SPI,UART,I2S 和 I2C
芯片 | 单 / 双核 | 封装 (mm) | 管脚 | 存储 | Flash (MB) | PSRAM (MB) | 模组 | 开发板 |
---|---|---|---|---|---|---|---|---|
![]() |
双核 | QFN 5x5 | 48 | 520 KB SRAM 448 KB ROM 16 KB RTC SRAM | N/A | N/A | ESP32-WROOM-32E ESP32-WROOM-32UE ESP32-WROVER-E ESP32-WROVER-IE | ESP32-DevKitC ESP32-LyraT ESP32-LyraT-Mini ESP32-LyraTD-MSC ESP32-LyraTD-SYNA ESP32-Vaquita-DSPG ESP32-Korvo ESP32-Ethernet-Kit |
![]() |
双核 | QFN 5x5 | 48 | 520 KB SRAM 448 KB ROM 16 KB RTC SRAM | N/A | N/A | ESP32-WROOM-32D ESP32-WROOM-32U ESP32-WROOM-32SE ESP32-WROVER-B ESP32-WROVER-IB | ESP32-DevKitC ESP32-LyraT ESP32-LyraT-Mini ESP32-LyraTD-MSC ESP32-LyraTD-DSPG ESP32-LyraTD-SYNA ESP32-Korvo ESP-WROVER-KIT |
![]() |
双核 | QFN 6x6 | 48 | 520 KB SRAM 448 KB ROM 16 KB RTC SRAM | N/A | N/A | N/A | N/A |
![]() |
双核 | QFN 6x6 | 48 | 520 KB SRAM 448 KB ROM 16 KB RTC SRAM | N/A | N/A | ESP32-WROOM-32 ESP32-WROVER ESP32-WROVER-I | ESP32-DevKitC |
![]() |
双核 | QFN 5x5 | 48 | 520 KB SRAM 448 KB ROM 16 KB RTC SRAM | 2 | N/A | N/A | N/A |
![]() |
单核 | QFN 5x5 | 48 | 520 KB SRAM 448 KB ROM 16 KB RTC SRAM | 4 | N/A | ESP32-MINI-1 | ESP32-DevKitM-1 |
![]() |
单核 | QFN 5x5 | 48 | 520 KB SRAM 448 KB ROM 16 KB RTC SRAM | N/A | N/A | ESP32-SOLO-1 | ESP32-DevKitC |
![]() |
双核 | LGA 7x7 | 48 | 448 KB ROM 520 KB SRAM 16 KB RTC SRAM | 4 | N/A | ESP32-PICO-V3-ZERO | ESP32-PICO-V3-ZERO-DevKit |
![]() |
双核 | LGA 7x7 | 48 | 448 KB ROM 520 KB SRAM 16 KB RTC SRAM | 8 | 2 | ESP32-PICO-MINI-02 | ESP32-PICO-DevKitM-2 |
![]() |
双核 | LGA 7x7 | 48 | 448 KB ROM 520 KB SRAM 16 KB RTC SRAM | 4 | N/A | N/A | ESP32-PICO-KIT |
ESP8266 系列芯片
32-bit MCU & 2.4 GHz Wi-Fi
- 单核 CPU 时钟频率高达 160 MHz
- +19.5 dBm 天线端输出功率,确保良好的覆盖范围
- 睡眠电流小于 20 μA,适用于电池供电的可穿戴电子设备
- 外设包括 UART,GPIO,I2S,I2C,SDIO,PWM,ADC 和 SPI
芯片 | 单 / 双核 | 封装 (mm) | 管脚 | 存储 | Flash (MB) | PSRAM (MB) | 模组 | 开发板 |
---|---|---|---|---|---|---|---|---|
![]() |
单核 | QFN 5x5 | 32 | 160 KB RAM | N/A | N/A | ESP-WROOM-02D ESP-WROOM-02U ESP-WROOM-02 ESP-WROOM-S2 | ESP8266-DevKitC ESP-Launcher ESP-WROOM-5V2L |
![]() |
单核 | QFN 5x5 | 32 | 160 KB RAM | 1,2 | N/A | N/A | N/A |
开发环境简介
Tips:ESP默认串口波特率为115200,但开机信息为74880的波特率,如果想看开机信息可以直接把串口手动设置为74880,这样开机信息就不是乱码了。
AT
AT指令连接巴法云串口测试:
(注意关闭串口工具的自动回车换行,手动添加\r\n
,否则+++
退不出透传。)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 - AT?
AT\r\n
- AP INFO?
AT+CWLAP\r\n
- NTP?
AT+CIPSNTPCFG?\r\n
- NTP SET
AT+CIPSNTPCFG=1,8\r\n
- NTP TIME?
AT+CIPSNTPTIME?\r\n
- TCP?
AT+CIPSTATUS\r\n
- CONNECT
AT+CIPSTART="TCP","bemfa.com",8344\r\n
- 透传?
AT+CIPMODE?\r\n
- 透传
AT+CIPMODE=1\r\n
- SEND
AT+CIPSEND\r\n
- REGISTER
cmd=1&uid=7d54f85af42976ee3c2693e6xxxxxxxx&topic=EspT1\r\n
- MSG ON
cmd=2&uid=7d54f85af42976ee3c2693e6xxxxxxxx&topic=EspT1&msg=ON\r\n
- MSG OFF
cmd=2&uid=7d54f85af42976ee3c2693e6xxxxxxxx&topic=EspT1&msg=OFF\r\n
- MSG KEEPALIVE
cmd=0&msg=keep\r\n
- MSG GET
cmd=9&uid=7d54f85af42976ee3c2693e6xxxxxxxx&topic=EspT1\r\n
- QUIT SEND
+++
- IP?
AT+CIFSR\r\n
- CLOSE TCP
AT+CIPCLOSE\r\n
Arduino
- Arduino - ESP8266
- Arduino - ESP32
- ESP8266 Arduino Core’s documentation
- Arduino ESP32的文档没找到,只能去源码的library里找了,好在里面有例程,但具体API信息还是要去找源码。
- Arduino官方API
- 太极创客 - ESP8266 API
添加以下网址到Arduino->附加开发板管理器网址:
https://arduino.esp8266.com/stable/package_esp8266com_index.json
https://dl.espressif.com/dl/package_esp32_index.json
- 或
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_dev_index.json
点击
工具->开发板->开发板管理器
安装ESP8266与ESP32的开发板资源。(资源在Github下载,网络不好很大概率会失败,多次尝试即可。)
ESP-IDF
乐鑫官方的物联网框架,ESP32及以后的系列均可以完美适配,还有乐鑫各种像IoT、ADF、Face、Drone等配套资源和解决方案的支持,各种例程很丰富详细,各种资源也在不断优化扩充中,现在也有了Gitee的官方镜像,不用再担心Github速度的问题了,所以只要稍微有点时间,第一推荐的开发环境就是IDF。
使用的话就把
make
换为idf.py
就可以了,比如idf.py menuconfig
相当于原来的make menuconfig
。
idf.py -p COM12 flash monitor
编译,指定在12口下载并打开串口监视器(注意在menuconfig配制好串口信息)。idf.py build
只编译工程(一般用上一命令替代)。idf.py menuconfig
进入图形化配置页面。idf.py cleanall
清除工程编译。
据说IDF也可以开发8266,待更新。
C-SDK (8266) 待更新
NodeMcu
基于Lua的ESP8266 WiFi SOC固件。
零知开源
可以说是国内版Arduino,各方面在追赶中。
安信可IDE
年初刚开始接触的时候尝试了一下,感觉相较起来在给人的整体感官上不如Arduino和乐鑫IDF方便,不过毕竟是刚开始发展,未来可期吧。
其它
基于MicroPython的ESP8266和ESP32框架,没有尝试过,在用MaxiPy搞K210的时候就感觉可能做底层太久了,用这种太高层的语言做嵌入式就会不由自主的产生一种不可控制的不信任感,不过确实是很方便,入门周期短。
之前只是稍微了解过,感觉像是 C - Lua : VSCode - PlatformIO 这种关系,不过看它支持的硬件和SDK那真的是相当丰富了,硬件平台像AVR、PIC、LPC、ST、430、ESP这种常用的单片机都有,SDK的话像上面提到的Arduino、ESP-IDF,还有CMSIS和CubeMx,甚至最近出的堪智K210的SDK都有,所以之后肯定还是会深入研究的,待更新或新开篇。