电路PCB绘制——ESP8266开发板

1、文件资料获取

1.1 开发板工程

立创开源工程链接:https://oshwhub.com/xzb1436056045/esp8266-12e-12f-12s-kai-fa-ban

1.2 BOM表

金山在线文档链接:https://kdocs.cn/l/ctY82jKjdS9F

2、详细说明

2.1 模组与芯片

本开发板支持ESP 07/07S/12E/12F/12S模组等,只要封装对应,即可焊接使用。这个开发板上的模组所使用的芯片为ESP8266EX,这个芯片是市面上最流行使用的ESP8266芯片。

2.2 CPU和存储

具体得看模组和芯片型号,下面以ESP12F模组和ESP8266EX芯片为例:

  • 超低功耗 Tensilica L106 32-bit RISC 处理器
  • 总共 160 KB RAM,可用 80 KB
  • 本ESP12F模组上使用的是 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引脚。
  • 04和05引脚一般作为IIC引脚,电路板上的R11、R12为IIC上拉电阻,如果没有使用到较多的IIC元件,可以不焊接R11、R12,或者22和21引脚作为其他使用也不要焊接R11、R12引脚,否则会影响正常使用;如果需要焊接IIC上拉电阻,其阻值可以自行计算,一般为4.7kΩ即可。
  • 建议G、GND丝印引脚焊接黑色排针,VIN、5V、3.3V、V丝印引脚焊接红色排针,S丝印引脚焊接其他颜色排针,我焊接的是绿色排针。这样在接线的时候直观明了,不易接错。

2.5 程序下载

开发板自带串口自动下载电路,使用的芯片是CH340C,只需要一根Typec的USB数据线即可进行程序的下载和串口调试。
有关于单片机串口驱动相关问题,可以看下我的另一篇文章:Arduino单片机串口驱动相关问题

2.6 板载资源

  • LED灯:开发板上有一个板载的可编程LED灯,丝印为LED2,连接到ESP8266的16引脚。需要注意的是,如果16引脚作为普通IO引脚来使用,需要断开H19丝印处2个引脚的连接,即不要连接跳线帽,否则会导致单片机无限重启;如果16引脚作为休眠唤醒引脚来使用,可以使用跳线帽连接;如果不使用16引脚,H19丝印处2个引脚的连接无所谓。
  • 按键:开发板上一共有3个按键,其中SW4丝印按键连接到ESP8266的12引脚,注意该按键在硬件上没有做上、下拉,因此在编程中如果使用需要做软件上、下拉;RST丝印按键是开发板的复位按键,按下后复位重启;IO0丝印按键是开发板的启动模式选择按键,连接到高电平为SPI启动模式,连接到低电平为下载启动模式,程序运行后可做普通引脚使用,但是不要做硬件下拉,否则会导致程序启动异常。

3、测试代码

3.1 LED灯闪烁

#include <Arduino.h>

// 注意不要连接H19丝印处的跳线帽,否则会ESP8266无限重启
#define ledPin 16             // 定义LED灯的引脚,连接到ESP8266的16引脚

void setup() {
  pinMode(ledPin, OUTPUT);    // 初始化LED灯引脚
}

void loop() {
  digitalWrite(ledPin, LOW);  // 将LED灯引脚设为低电平,点亮LED灯
  delay(1000);                // 延时1000ms
  digitalWrite(ledPin, HIGH); // 将LED灯引脚设为高电平,熄灭LED灯
  delay(1000);                // 延时1000ms
}

3.2 按键输入

#include <Arduino.h>

#define button1Pin 12 // 定义按键1(SW4丝印)的引脚,连接到ESP8266的12引脚
#define button2Pin 0  // 定义按键2(IO0丝印)的引脚,连接到ESP8266的0引脚

void setup() {
  delay(1000);                            // 延时1000ms,等待设备上电稳定
  Serial.begin(115200);                   // 初始化串口,波特率为115200
  pinMode(button1Pin, INPUT_PULLUP);      // 初始化按键1引脚,为上拉输入
  pinMode(button2Pin, INPUT_PULLUP);      // 初始化按键2引脚,为上拉输入
  Serial.println("\n你好,ESP8266!");     // 串口打印"你好,ESP8266!"
}

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 <ESP8266WiFi.h>

void setup() {
  Serial.begin(115200);                       // 初始化串口,波特率为115200
  WiFi.disconnect(true);                      // 断开当前WIFI连接
  WiFi.mode(WIFI_STA);                        // 设置WIFI模式为STA模式
  Serial.println("\nESP8266程序初始化完成!");  // 串口打印“ESP8266程序初始化完成!”
}

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 <ESP8266WiFi.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() {
}

3.5 休眠唤醒

#include <Arduino.h>

void setup() {
  delay(1000);                 // 延时1000ms,等待设备上电稳定
  Serial.begin(115200);        // 初始化串口,波特率为115200
  Serial.println("\nESP8266休眠唤醒测试,5s后ESP8266自动唤醒重启...");
  // 注意要连接H19丝印处的跳线帽,否则ESP8266无法唤醒成功
  ESP.deepSleep(5e6);          // 休眠5s
}

void loop() {
}

4、成品图

4.1 正面图

  • 这块开发板焊接的是ESP12F(4MB)模组
    图片[1]-电路PCB绘制——ESP8266开发板-一叶遮天的博客
  • 这块开发板焊接的ESP07S(4MB)模组,并且使用的是外接天线
    图片[2]-电路PCB绘制——ESP8266开发板-一叶遮天的博客图片[3]-电路PCB绘制——ESP8266开发板-一叶遮天的博客

4.2 反面图

图片[4]-电路PCB绘制——ESP8266开发板-一叶遮天的博客

© 版权声明
THE END
喜欢就支持一下吧
分享