1、文件资料获取
1.1 开发板工程
立创开源工程链接:https://oshwhub.com/xzb1436056045/esp32-s-kai-fa-ban
1.2 BOM表
金山在线文档链接:https://kdocs.cn/l/ceBXdLXFBKHu
2、详细说明
2.1 模组与芯片
本开发板支持ESP-WROOM-32模组、ESP32-S模组等,只要封装对应,即可焊接使用。模组中所用的的芯片得具体看模组资料,这个开发板上的模组所使用的芯片为ESP32-D0WD-V3,这个芯片是目前乐鑫官方最推荐的ESP32芯片,同时也是市面上最流行使用的ESP32芯片。
2.2 CPU和存储
具体得看模组和芯片型号,下面以ESP-WROOM-32模组和ESP32-D0WD-V3芯片为例:
- Xtensa® 32-bit LX6 单/双核处理器
- 448 KB ROM
- 520 KB SRAM
- 4MB FLASH
2.3 供电
说明:电源电路使用了2个LDO芯片组成了2路供电电路。
一路为转5V电路,LDO芯片型号是AMS1117-5.0,最高输出电流可达1A,输入电压范围为6.5V-12V,这个开发板上AMS1117-5.0的输入电压由VIN引脚处提供,输出的电压5.0V提供给整个开发板。
另一路为转3.3V电路,LDO芯片型号是AMS1117-3.3,最高输出电流可达1A,输入电压范围为4.75V-12V,这个开发板上AMS1117-3.3的输入电压由USB处、5V引脚处、AMS1117-5.0的输出电压处提供,输出的电压3.3V提供给整个开发板。
2.3.1 USB供电
使用Typec数据线供电,电压为5V,电流不超过2A,经过SS24二极管后降压,电路中的5V丝印处引脚电压为应为4.7V左右。经本人实测,未经过二极管前,USB输入电压为5.12V,经过二极管后,5V丝印处引脚电压为4.78V。
2.3.2 5V引脚供电
在5V丝印引脚处,有连着的3个引脚,都是5V引脚,可以使用外部电源的5V和GND引脚分别接在开发板的5V和GND引脚上即可进行供电,需要注意的是,5V进来的电源没有做防反接和限压处理,因此不能引脚接反短路,输入电压也不要超过5V,否则通电后可能会损坏电路板.如果输入电压低于4.75V开发板可能不会工作或者工作异常。
2.3.3 VIN引脚供电
在VIN丝印引脚处,有连着的3个引脚,都是VIN引脚,可以使用外部电源的6.5V-12V和GND引脚分别接在开发板的VIN和GND引脚上即可进行供电,需要注意的是,VIN进来的电源没有做防反接和限压处理,因此不能引脚接反短路,输入电压也不要超过12V,否则通电后可能会损坏电路板。如果输入电压低于6.5V开发板可能不会工作或者工作异常。
2.3.4 3.3V引脚供电
在3.3V丝印引脚处,有连着的3个引脚,都是3.3V引脚,可以使用外部电源的3.3V和GND引脚分别接在开发板的3.3v和GND引脚上即可进行供电,需要注意的是,3.3V进来的电源没有做防反接和限压处理,因此不能引脚接反短路,输入电压要在3.0V-3.6V之间,否则可能会损坏电路板或者不会工作或者工作异常。
2.3.5 V丝印引脚电压
V丝印引脚电压由电路板上的SW1按键切换,当SW1按键拨动到左边时,整个电路板上的V引脚处的电压理论上应为5V,当SW1按键拨动到右边时,整个电路板上的V引脚处的电压理论上应为3.3V。
2.3.6 不同电压共同输入
比如即使用USB供电,又使用5V引脚和VIN引脚供电,这是支持的,但是注意引脚不要接反。
2.4 引脚接口
- 整个电路板上的接口分明,特别注意,其中G丝印表示GND引脚,V丝印表示VCC引脚,它的电压可通过SW1按键调节,S丝印表示IO引脚。
- 22和21引脚一般作为IIC引脚,电路板上的R7、R8为IIC上拉电阻,如果没有使用到较多的IIC元件,可以不焊接R7、R8,或者22和21引脚作为其他使用也不要焊接R7、R8引脚,否则会影响正常使用;如果需要焊接IIC上拉电阻,其阻值可以自行计算,一般为4.7kΩ即可。
- 建议G、GND丝印引脚焊接黑色排针,VIN、5V、3.3V、V丝印引脚焊接红色排针,S丝印引脚焊接其他颜色排针,我焊接的是绿色排针。这样在接线的时候直观明了,不易接错。
2.5 程序下载
开发板自带串口自动下载电路,使用的芯片是CH340C,只需要一根Typec的USB数据线即可进行程序的下载和串口调试。
有关于单片机串口驱动相关问题,可以看下我的另一篇文章:Arduino单片机串口驱动相关问题
2.6 板载资源
- LED灯:开发板上有一个板载的可编程LED灯,丝印为LED2,连接到ESP32的32引脚。
- 按键:开发板上一共有3个按键,其中SW4丝印按键连接到ESP32的33引脚,注意该按键在硬件上没有做上、下拉,因此在编程中如果使用需要做软件上、下拉;EN丝印按键是开发板的复位按键,按下后复位重启;IO0丝印按键是开发板的启动模式选择按键,连接到高电平为SPI启动模式,连接到低电平为下载启动模式,程序运行后可做普通引脚使用,但是不要做硬件下拉,否则会导致程序启动异常。
3、测试代码
3.1 LED灯闪烁
#include <Arduino.h>
#define ledPin 32 // 定义LED灯的引脚,连接到ESP32的32引脚
void setup() {
pinMode(ledPin, OUTPUT); // 初始化LED灯引脚
}
void loop() {
digitalWrite(ledPin, HIGH); // 将LED灯引脚设为高电平,点亮LED灯
delay(1000); // 延时1000ms
digitalWrite(ledPin, LOW); // 将LED灯引脚设为低电平,熄灭LED灯
delay(1000); // 延时1000ms
}
3.2 按键输入
#include <Arduino.h>
#define button1Pin 33 // 定义按键1(SW4丝印)的引脚,连接到ESP32的33引脚
#define button2Pin 0 // 定义按键2(IO0丝印)的引脚,连接到ESP32的0引脚
void setup() {
delay(1000); // 延时1000ms,等待设备上电稳定
Serial.begin(115200); // 初始化串口,波特率为115200
pinMode(button1Pin, INPUT_PULLUP); // 初始化按键1引脚,为上拉输入
pinMode(button2Pin, INPUT_PULLUP); // 初始化按键2引脚,为上拉输入
Serial.println("你好,ESP32!"); // 串口打印"你好,ESP32!"
}
void loop() {
if (digitalRead(button1Pin) == LOW) { // 如果读取到按键1引脚的电平为低电平,即按键1按下
Serial.println("按键1被按下!"); // 串口打印"按键1被按下!"
}
if (digitalRead(button2Pin) == LOW) { // 如果读取到按键2引脚的电平为低电平,即按键2按下
Serial.println("按键2被按下!"); // 串口打印"按键2被按下!"
}
}
3.3 扫描WIFI
#include <Arduino.h>
#include <WiFi.h>
void setup() {
Serial.begin(115200); // 初始化串口,波特率为115200
WiFi.disconnect(true); // 断开当前WIFI连接
WiFi.mode(WIFI_STA); // 设置WIFI模式为STA模式
Serial.println("ESP32程序初始化完成!"); // 串口打印“ESP32程序初始化完成!”
}
void loop() {
Serial.println("开始扫描WIFI中,请等待......");
int n = WiFi.scanNetworks(); // 扫描WIFI,返回扫描到的WIFI数量
if (n == 0) {
Serial.println("没有找到任何WIFI!");
} else {
Serial.println("WIFI扫描已完成,如下所示:");
for (int i = 0; i < n; i++) {
Serial.print(i + 1);
Serial.print("——WIFI名称:");
Serial.print(WiFi.SSID(i)); // 串口打印WIFI名称
Serial.print(",信号值:");
Serial.println(WiFi.RSSI(i)); // 串口打印信号值
}
}
Serial.println("");
delay(10000); // 延时10s再次运行
}
3.4 连接WIFI
#include <Arduino.h>
#include <WiFi.h>
#define wifiName "YYZT_2.4G" // WIFI名称
#define wifiPassword "1234567890" // WIFI密码
void setup() {
Serial.begin(115200); // 初始化串口,波特率为115200
WiFi.disconnect(true); // 断开当前WIFI连接
WiFi.mode(WIFI_STA); // 设置WIFI模式为STA模式
WiFi.begin(wifiName, wifiPassword); // 开始连接WIFI
Serial.print("正在连接到WIFI:");
Serial.println(wifiName);
while (WL_CONNECTED != WiFi.status()) { // 判断WIFI的连接状态
delay(500);
Serial.print(".");
}
Serial.print("\n已连接到WIFI:");
Serial.println(wifiName);
Serial.print("IP地址为:");
Serial.println(WiFi.localIP()); // 串口打印IP地址
Serial.print("信号值为:");
Serial.println(WiFi.RSSI()); // 串口打印信号值
}
void loop() {
}
4、成品图
4.1 正面图
- 这块开发板焊接的是ESP-WROOM-32(4MB)模组
- 这块开发板焊接的是ESP32-S(4MB)模组,并且使用的是外接天线