使用 ESP8266 连接 Arduino 到 WiFi 网络

ESP8266 是昂贵的 Arduino WiFi 扩展板的简单、低成本的替代品。虽然这些扩展板的成本可能超过 50 美元,但您可以在 ebay 上找到一个少于 3 美元的 ESP 模块,那里有几个不同的 ESP 模块的型号。所有这些都是基于同一个 IC。本文是基于ESP-01,这可能是最常见的型号。

所有 ESP-8266 模块均可编程。您可以使用默认的出厂固件,也可以编写自己的固件并将其上传到您的模块。我的模块带有的固件版本是 0018000902-AI03。

默认的固件提供串行通信,您可以使用它将 AT 命令发送到模块,就像在旧的电话/调制解调器时光一样。这些命令提供连接到 WiFi 路由器、发送/接收数据所需的一切。

步骤1:将 ESP 连接到 Arduino

Arduino 和 ESP 之间的逻辑连接非常简单:ESP-Rx 连接 Arduino Tx,ESP-Tx 连接 Arduino Rx。然而,所有的 ESP-8266 都运行在 3.3V 上,而 Arduino 引脚在5V 上运行。因此在连接之前,您应提供一种调整这些电压的方法,否则可能会损坏您的ESP。

我正在使用 CD4050 来调整 Tx/Rx 引脚之间的电压。如下所示:

Arduino ESP8266 CD4050 连接图

请注意,我正在使用的 CD4050 仅适用于 Arduino-Tx 到 ESP-Rx。由于 Arduino 端口可以处理 3.3V 的电压,因此无需将 ESP-Tx 调整为 Arduino-Rx 所需要的电压。

另请注意,Arduino 3.3V 稳压输出(最大50 mA)无法驱动 ESP 要求的电流(最大 200 mA)。 互联网上的一些教程使用 Arduino 3.3V 为 ESP 提供电源,但对我来说并不管用。因此,我使用外部电源(一个老的 5V Android 充电器)进行供电。

我使用二极管和电阻(17 k欧姆,或者更大的电阻都是可以的),以降低电池组的 5V 电压。根据您的电源质量,您可以使用一个或两个二极管。由于我不是一个好的,当电路通电时,单个二极管足以获得 3.7V。

我用这个电路制作了一块 PCB 板:

电路板

重要事项:

  • 不要用 5V 为 ESP 供电。你会毁灭它,任何逻辑输入也是如此(当前指的是 Rx 引脚)
  • 如果您的 ESP 收到的电压低于 3.3V,那么您最终会遇到很多传输错误(您的串行通讯会看到很多垃圾内容)
  • 使用外部电源时,不要忘记连接 Arduino-GND 和电源GND,以保持电压基准。如果你不这样做,你会再次遇到很多传输错误。

步骤2:ESP-8266-01 端口

此 ESP 型号的端口如下所示:

  • VCC 应连接到 3.3V 电源
  • GPIO0 和 GPIO2 是通用数字端口。GPIO0 还控制模块模式(编程或正常运行)。在我们这种情况下(正常运行),它应连接到 3.3V(高)。在本示例中不使用 GPIO2,因此我将其放在 3.3V 上以简化连接
  • CH_PD:芯片使能。将其保持在高(3.3V)以进行正常操作
  • RST:复位。将其保持在高(3.3V)以进行正常操作。将其置于 0V 以复位芯片。
  • Tx:连接 Arduino Rx
  • Rx:连接 Arduino Tx(但需要电压调整)
  • GND 接地

您可以看到,在本示例中,除 GND,Rx 和 Tx 之外,所有引脚都转到VCC(3.3V)。请注意,该模块还具有双色 LED(或两个独立的 LED,取决于您的供应商)

  • 红色 LED 表示电路板已通电
  • 蓝色 LED 表明模块正在活动(初始化,Rx/Tx等)

步骤3:测试代码

为了测试您的 ESP,您将需要两个串行端口:

  • 一个专用串行端口,连接在 Arduino 和 ESP 之间,Arduino 将向 ESP 发送 AT 命令。
  • 连接在 Arduino 和计算机之间的第二个串行端口,您可以在其中键入 AT 命令。

所以,这个任务的最适合的 Arduino 型号是 Arduino Mega,因为它提供多达 4 个串行端口。您可以尝试使用其它型号,使用 SoftSerial 库,但是该库有一些速度限制,并且可能无法与某些 ESP 型号配合使用。

您可以使用如下所示的简单代码,测试您的 ESP 连接:

void setup()
{
    Serial.begin(9600);
    Serial1.begin(9600);
}
void loop()
{
    while (Serial1.available()) {
        Serial.write(Serial1.read());
    }
    while (Serial.available()) {
        Serial1.write(Serial.read());
    }
}

这个代码只是从 Arduino 串口中继数据。它将得到您在计算机上键入的 AT 命令,并将它们直接发送到您的 ESP。它还获得 ESP 返回的数据,并发送到您的计算机。

将此代码上传到您的 Arduino 后,您将在终端上看到:

MariaMode 终端

请注意,由于来自不同制造商的模块之间存在一些差异,互联网上提供的信息是很容易相互矛盾。 如果您的模块不工作,请尝试其他不同的波特率。

您的终端上的 “ready” 文本意味着您的 ESP 已准备好接收您的 AT 命令。您可以在文章的最后查看 AT 指令列表。

但是,你应该更喜欢使用高级的库,因为使用 AT 命令可能会很棘手。底部的链接也有一个好的示例。 这个库可以实现的一个例子:

MariaMode 显示 ESP8266 高级库通信

这个例子的代码可以在底部找到(葡萄牙语教程)

相关资料

原文链接:https://dalpix.com/blog/connecting-your-arduino-wifi-esp-8266-module

1 人评价

观光\评论区

Copyright © 2017 玩点什么. All Rights Reserved.