- ESP8285简介
- ESP开发板电路图
- 制作我们的ESP8285开发板
- 从PCBWay订购PCB
- 组装和编程ESP8285开发板
- 使用简单的LED闪烁草图进行测试
- 在ESP8285上测试Webserver草图
Espressif的ESP控制器正成为基于IoT的设计的广泛选择。市场上已经有许多ESP模块和开发板可用,其中NodeMCU是最受欢迎的一种。除此之外,ESP-12E,ESP01也是最受欢迎的选择。但是,如果您想使设计更加灵活和紧凑,则有可能我们必须从芯片级别设计自己的ESP模块,而不是直接使用现成的模块。在本文中,我们将学习如何在不使用模块的情况下直接使用ESP控制器(ESP8285)设计电路和PCB。
在本项目中,我们使用了ESP8285,因为它是一个非常有趣的小芯片。它是一款小型SoC(片上系统),具有IoT(物联网)和深度睡眠功能。它具有与他的大哥ESP8266相同的功能,并且还附带一个内置1MB闪存和许多GPIO。您还可以使用ESP8266作为替代品,本文中讨论的大多数内容仍然相同。
在上一篇文章中,我向您展示了如何使用相同的ESP8285芯片设计自己的2.4GHz PCB天线。您可以阅读该文章以了解ESP8266 / ESP8285的天线设计。
因此,在本文中,我将介绍所有电路的工作原理,最后会有一段视频介绍所有这些电路。我还详细介绍了从PCBWay设计和订购PCB板以进行ESP模块设计的完整过程。
ESP8285简介
如果您不知道这款多功能的ESP8285芯片,这里是功能列表的简要说明。ESP8285是一款内置1M闪存和ram的小型芯片,与ESP8286,ESP-01模块非常相似,但内部闪存使其更紧凑,更便宜。
该芯片装有Tensilica的L106 Diamond 32位核心处理器,ESP8266也是如此,这就是为什么ESP8266的所有代码都可以不经过任何修改直接直接写入该芯片的原因,并且其网络堆栈与ESp8266剂量相同。
ESP8285集成了天线开关,RF巴伦,功率放大器,低噪声接收放大器,滤波器和电源管理模块。紧凑的设计最小化了PCB尺寸,并且需要最少的外部电路。如果您想了解更多有关此IC的信息,可以随时在Espressif Systems上查看设备的ESP8285的数据手册。
ESP开发板电路图
电路非常简单,为了更好的理解,我将其分解了。下面的ESP示意图显示了整个电路,如您所见,共有八个功能块,我将逐一介绍并解释每个块。
ESP8285 SOC:
该项目的核心是ESP8285 SoC,此处定义了所有GPIO和其他必要的连接。
电源滤波器:此IC上有7个电源引脚,第一个是ADC和IO的电源引脚。我将它们短接在一起,并使用一个47uF的电源滤波电容器和一个0.1uF的去耦电容器对3.3V直流输入进行滤波。
PI滤波器: PI滤波器是该设计中最重要的模块之一,因为它负责为RF放大器和LNA供电,任何内部或外部噪声都可以描述此部分,因此,RF部分将无法工作。这就是LNA部分的低通滤波器非常重要的原因。您可以通过以下链接了解有关PI过滤器的更多信息。
晶振: 40MHz晶振用作ESP8285 SoC的时钟源,并按照数据手册的建议添加了10pF去耦电容。
LNA部分:该电路的另一个最重要的部分是LNA部分。这是PCB天线连接到ESP物理引脚的地方。根据数据手册的建议,使用一个5.6pF的电容器,它应该可以作为匹配电路正常工作。但是我为两个电感器添加了两个占位符,就好像万一匹配电路不起作用,我总是可以放一些电感器来调整值以匹配天线阻抗。
LNA部分还具有两个带有UFL连接器的PCB跳线。PCB天线是默认设置的,但是如果您的应用需要更大的范围,则可以拆焊PCB跳线并短路UFL连接器的跳线,然后可以像这样连接外部天线。
电池输入连接器:
您可以在上面看到,我将三种类型的电池连接器并联放置,因为如果找不到一种,则可以随时放置另一种。
GPIO头和编程头:
GPIO标头用于访问GPIO引脚,而编程标头用于刷新主Soc。
自动复位电路:
在此区块中,当您按下Arduino IDE中的上载按钮时,两个NPN晶体管MMBT2222A构成自动复位电路,python工具被调用,此python工具是ESP设备的flash工具,此pi工具提供了向UART转换器发送信号以复位板,同时将GPIO引脚保持接地。之后,开始上传和验证过程。
电源LED,板载LED和分压器:
电源LED:电源LED有一个PCB跳线如果您将此板用于电池供电的应用,则可以对该跳线进行DE焊接以节省大量功率。
板载LED:市场上许多开发板都有板载LED,这个板也不例外。IC的GPIO16连接到板载LED。除此之外,通过填充0欧姆电阻为0 OHMs电阻提供一个占位符,将GPIO16连接到复位,并且您可能知道,这是将ESP置于深度睡眠模式的非常重要的一步。
分压器:您可能知道,ADC的最大输入电压为1V。因此,为了将输入范围更改为3.3V,使用了分压器。进行配置后,您始终可以在该引脚上串联一个电阻,以将范围更改为5V。
HT7333 LDO:
LDO或低压差稳压器用于以最小的功率损耗来调节电池至ESP8285的电压。
HT7333 LDO的最大输入电压为12V,用于将电池电压转换为3.3V。我选择HT7333 LDO是因为它的静态电流非常低。4.7uF去耦电容器用于稳定LDO。
编程模式按钮:
该按钮连接到GPIO0,如果您的UART转换器没有RTS或DTR引脚,则可以使用此按钮将GPIO0手动接地。
上拉和下拉电阻:
上拉电阻和下拉电阻在数据手册中推荐的位置。
除此之外,在设计PCB时还遵循了许多设计规范和准则。如果您想进一步了解这一点,可以在ESP8266的硬件设计指南中找到。
制作我们的ESP8285开发板
原理图已完成,我们可以继续布局PCB。我们已经使用Eagle PCB设计软件来制作PCB,但是您可以使用首选软件来设计PCB。完成后,我们的PCB设计如下所示。
BOM和Gerber文件可从以下链接下载:
- ESP8282开发板Gerber文件
- ESP8282开发板BOM
现在,我们的设计已经准备就绪,是时候使用制造的PCB了。为此,只需按照以下步骤操作:
从PCBWay订购PCB
第1步: 进入https://www.pcbway.com/,如果这是您第一次,请注册。然后,在“ PCB原型”选项卡中,输入PCB的尺寸,层数和所需的PCB数。
第2步:点击“立即报价”按钮继续。您将进入一个页面,在其中设置一些其他参数,例如板类型,层,PCB的材料,厚度等。默认情况下,其中大多数处于选中状态,如果您选择任何特定的参数,则可以选择它在听到。
如您所见,我们需要黑色的PCB!因此,我在阻焊层颜色部分选择了黑色。
第3步:最后一步是上传Gerber文件并继续付款。为了确保过程顺利进行,PCBWAY会在进行付款之前先验证您的Gerber文件是否有效。这样,您可以确保您的PCB易于制造,并且能够按承诺完成。
组装和编程ESP8285开发板
几天后,我们将PCB装在整齐的包装盒中,PCB质量一如既往。电路板的顶层和底层如下所示:
收到板子后,我立即开始焊接板子。我已经使用热风焊接站和大量助焊剂来焊接主CPU,而PCB上的其他组件则通过烙铁进行焊接。组装后的模块如下所示。
完成此操作后,我已通过上载草图,连接的引脚和电路板的图像,连接了值得信赖的FTDI模块以测试电路板:
ESP8285开发板 FTDI模块
3.3V- > 3.3V
发射 -> 接收
RX - > 的Tx
DTR- > DTR
RST- > RST
GND - > GND
一旦完成所有必要的连接,我就可以通过从 Tools > Board > Generic ESP8285 Module中 选择Generic ESP8285 Board来设置Arduino IDE 。
使用简单的LED闪烁草图进行测试
接下来,是时候通过闪烁LED来测试板了,为此,我使用了以下代码:
/ * ESP8285闪烁闪烁ESP828285模块上的蓝色LED * / #define LED_PIN 16 //定义闪烁的LED引脚void setup(){pinMode(LED_PIN,OUTPUT); //将LED引脚初始化为输出} //循环函数永远反复运行void loop(){digitalWrite(LED_PIN,LOW); //打开LED灯(注意电压为低电平)delay(1000); //等待第二个digitalWrite(LED_PIN,HIGH); //通过使电压HIGH delay(1000)来关闭LED;//等待两秒钟}
代码非常简单,首先,我为该板定义了LED引脚,该引脚位于GPIO 16上。接下来,我在设置部分将该引脚设置为输出。最后,在循环部分,我以一秒钟的延迟打开和关闭了该引脚。
在ESP8285上测试Webserver草图
一旦工作正常,就可以从ESP8266WebServer Example中测试HelloServer草图了。我使用一个ESP8266示例,因为大多数代码都与esp8285芯片兼容。示例代码也可以在此页面的底部找到。
这段代码也非常简单,首先,我们需要定义所有必需的库,
#包括
接下来,我们需要输入热点的名称和密码。
#ifndef STASSID#定义STASSID“ your-ssid” #define STAPSK“您的密码” #endif const char * ssid = STASSID; const char * password = STAPSK;
接下来,我们需要定义ESP8266WebServer对象。这里的示例将其定义为服务器(80),其中(80)是端口号。
接下来,我们需要为LED定义一个插针,即16号插针。
const int led = 16;
接下来,定义 handleRoot() 函数。当从我们的浏览器中调用IP地址时,将调用此函数。
void handleRoot(){digitalWrite(led,1); server.send(200,“ text / plain”,“你好,esp8266!”); digitalWrite(led,0); }
接下来是设置功能,听说我们必须定义所有必要的参数,例如-
pinMode(led,OUTPUT); //我们将led引脚定义为输出Serial.begin(115200); //我们已开始使用115200波特WiFi.mode(WIFI_STA);建立串行连接。//我们已将wifi模式设置为station WiFi.begin(ssid,password); 然后我们开始wifi连接Serial.println(“”); //此行提供了一个额外的空间,而(WiFi.status()!= WL_CONNECTED){delay(500); Serial.print(“。”); } / *在while循环中,我们正在测试ESP能够连接到热点的连接状态,该循环将使制动* / Serial.println(“”); Serial.print(“ Connected to”); Serial.println(ssid); Serial.print(“ IP地址:”); Serial.println(WiFi.localIP());
接下来,我们将连接的SSID的名称和IP地址打印到串行监视器窗口。
server.on(“ /”,handleRoot); //调用服务器对象的on方法来处理根函数server.on(“ / inline”,(){server.send(200,“ text / plain”,“这同样有效”);}); //再次为/ inline示例server.begin();调用了on方法。//接下来,我们使用begin方法Serial.println(“ HTTP服务器启动”)启动服务器。//最后,我们在串行监视器中打印一条语句。} //标记设置函数的结尾void loop(void){server.handleClient(); }
在循环函数中,我们调用了 handleClient() 方法来正确地运行esp。
完成此操作后,ESP8285开发板需要花费一些时间才能连接到网络服务器,并成功按预期工作,这标志着该项目的结束。
电路板的完整工作原理也可以在下面的视频链接中找到。希望您喜欢这篇文章并从中学到新东西。如有任何疑问,可以在下面的评论中提问,也可以使用我们的论坛进行详细讨论。