1.前言
欢迎大家来到ESP32的世界,从现在开始,笔者将带领大家慢慢揭开ESP32神秘的面纱。
在学习ESP32之前,博主希望读者能有ESP8266的学习基础(ESP32 Wifi模块,理解为增强版本的ESP8266,很多基本原理是共通的,所以博主也不会去重复)。
ESP32 是一款 WiFi 和蓝牙系统级芯片(SoC),具有行业领先的射频性能、低功耗和高度集成的优势。
2.概览
ESP32 带有2个 32位(双核)、LX6 CPU,主频高达 240MHz,采用 7级流水线架构,flash空间都是4MB。
2.1 性能稳定
- ESP32 性能稳定,工作温度范围达到 –40°C 到 +125°C。集成的自校准电路实现了动态电压调整,可以消除外部电路的缺陷并适应外部条件的变化。
2.2 高度集成
- ESP32 将天线开关、RF balun、功率放大器、接收低噪声放大器、滤波器、电源管理模块等功能集于一体。ESP32 只需极少的外围器件,即可实现强大的处理性能、可靠的安全性能,和 Wi-Fi & 蓝牙功能。
2.3 超低功耗
- ESP32 专为移动设备、可穿戴电子产品和物联网应用而设计,具有业内高水平的低功耗性能,包括精细分辨时钟门控、省电模式和动态电压调整等。
2.4 Wi-Fi & 蓝牙解决方案
- ESP32 可作为独立系统运行应用程序或是主机 MCU 的从设备,通过 SPI / SDIO 或 I2C / UART 接口提供 Wi-Fi 和蓝牙功能。
3.模组
目前乐鑫支持多款模组,具体请参考乐鑫官网 模组情况。
博主这里使用安信可推出的基于ESP32的NodeMcu开发板。
3.安装ESP32 Arduino开发环境
3.1 安装Arduino IDE软件
- 博主选择了免安装版本的1.8.9版本,下载完毕解压到个人目录下,比如我的是解压到 E:\arduinoIDE\arduino1.8.9
3.2 安装git工具
- 博主建议百度安装git工具,这里不会手把手教安装
3.3 git Clone arduino-esp32源码
- 在E:\arduinoIDE\arduino1.8.9目录下创建 espressif 文件夹
- 在 espressif 文件夹下右键选择 Git Bash Here
-
在弹出的CMD工具上写上
git clone https://github.com/espressif/arduino-esp32.git
- 确认Clone,等待git下载完毕。下载完毕后,打开 E:\arduinoIDE\arduino1.8.9\espressif\arduino-esp32\tools目录,点击get.exe(请确保你按照了python工具)
- 重新打开Arduino IDE软件,就会发现工具菜单下开发板多了很多ESP32相关选项
4.第一个ESP32测试代码
测试代码:
#include <WiFi.h>
/**
* Demo:
* 测试ESP32 demo
* 打印ESP32模块信息
* 1.打印Arduino Core For ESP32 版本
* 2.打印Flash的唯一性芯片id(读者可以思考一下是否可以用来做点什么唯一性参考)
* 4.打印IDE配置的使用Flash大小
* 5.打印IDE配置的Flash连接通信的频率
* 6.打印Flash连接模式:QIO QOUT DIO DOUT,可以理解为Flash传输速率
* @author 单片机菜鸟
* @date 2019/07/01
*/
#define LED_BUILTIN 22
int state = HIGH;
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
FlashMode_t ideMode = ESP.getFlashChipMode();
String coreVersion = ESP.getSdkVersion();
Serial.print(F("Arduino Core For ESP32 Version: "));
Serial.println(coreVersion);
Serial.printf("Flash real id(唯一标识符): %08X\n", ESP.getChipRevision());
Serial.printf("IDE配置Flash大小: %u KBytes\n", ESP.getFlashChipSize()/1024);
Serial.printf("IDE配置Flash频率 : %u MHz\n", ESP.getFlashChipSpeed()/1000000);
Serial.printf("Flash ide mode: %s\n\n", (ideMode == FM_QIO ? "QIO" : ideMode == FM_QOUT ? "QOUT" : ideMode == FM_DIO ? "DIO" : ideMode == FM_DOUT ? "DOUT" : "UNKNOWN"));
state = !state;
digitalWrite(LED_BUILTIN, state);
delay(1000);
}
注意点:
- 以上代码可能会出现以下编译错误,请删掉ArduinoIDE自带的WIFI库
编译通过后,把以下代码烧进ESP32开发板,烧录方式跟ESP8266 NodeMcu一样,这里不重复讲解。
正常情况下,会显示如下测试结果:
5.引脚映射关系
6.总结
- 建议初学者类比ESP8266学习(参考博主详细的ESP8266教程,后续教程会省略很多重复内容,聚焦于重点内容),基本上原理非常相似;
- 博主在个人学习群上传了一系列学习视频,以供初学者更少地入门;
- 学习会让看起来很难的东西变得容易,请持续关注博主后续更新的ESP32学习教程,力求干货,不说太多废话。