首页

ESP8266和Arduino入门:ESP8266 Arduino接口

如果你对物联网感兴趣,你可能听说过ESP8266 WiFi模块。如果没有,也不用担心。本教程是关于如何开始使用Esp8266 WiFi模块,以及如何在您的物联网项目中使用Esp8266 Arduino对。

因此,在详细介绍如何连接ESP8266 Arduino Pair之前,让我们先从ESP8266 WiFi模块开始。

ESP8266 Arduino

看看这些物联网项目

ESP8266是什么?

ESP8266(简称ESP8266EX)是Espressif Systems公司基于Cadence Tensilica L106 32位MCU开发的WiFi模块。ESP8266 SoC包含一个功能完整的WiFi栈和TCP/IP栈,允许任何微控制器连接到WiFi网络。

使用软件开发工具包(sdk),您可以直接编程ESP8266的片上微控制器,而不需要外部微控制器。

基于ESP8266 SoC,一些第三方制造商开始生产定制板,其中一个制造商是ai -思想家。ai -思想者制作的第一块板子是ESP-01(本项目使用的就是这一块板子),后来很受欢迎。

在ESP-01模块成功的基础上,ai -思想者还发布了ESP-02、ESP-07、ESP-12等模块。所有这些单板都基于ESP8266 SoC,但主要的区别是GPIO引脚的数量。

还有其他模块,如Espressif Systems的ESP-WROOM, NodeMCU, WeMOS, SparkFun ESP8266等。

ESP8266 ESP-01

在这个项目中,我们将使用ai -思想者的ESP-01模块。它由8个引脚组成,下图显示了单板的不同组件。

ESP8266 Arduino

到引脚配置,如上所述,ESP-01模块共有8个引脚,分别是VCC、GND、TX、RX、RST、CH_PD、GPIO0、GPIO2。ESP-01模块的引脚示意图如下图所示。

ESP8266 Arduino

引脚说明ESP8266 ESP-01模块

  • VCC:是电源引脚,通过它提供3.3V。
  • 接地:它是接地针。
  • TX:该引脚用于向其他设备传输串行数据。
  • 处方: RX引脚用于接收来自其他设备的串行数据。
  • RST:它是复位引脚,它是一个活跃的LOW引脚。(如果RST引脚接收LOW信号,ESP8266复位)。
  • CH_PD:这是芯片使能引脚,它是一个活跃的高引脚。通常接3.3V。
  • GPIO0: GPIO0 (General Purpose I/O)引脚具有双重功能——一个用于正常的GPIO操作,另一个用于使能ESP8266的编程模式。
  • GPIO2:这是GPIO Pin。

重要提示: ESP8266不兼容5V, ESP-01模块上没有任何稳压器。确保ESP8266的电源是3.3V,最好从专用电源,而不是从Arduino的3.3V引脚。

ESP8266 Arduino接口

在看到ESP8266之前Arduino接口您需要了解一些关于ESP8266模块的知识。ESP8266 WiFi模块自带默认固件,支持AT命令。

ESP8266 WiFi模块与Arduino接口后,上传我们自己的程序,原始固件将被清除。我们将在一个单独的项目中看到如何为AT命令接口ESP8266模块,以及如何使用Arduino flash原始固件。

现在,我们将看到如何使用Arduino编程ESP8266,并访问其GPIO引脚。首先,我们会看到接口的电路图。

ESP8266 Arduino接口电路图

ESP8266 Arduino图片3_1

如果电路图中ESP8266模块的示意图不清晰,请参考下图。这只是电路图的个人表示。在前一节中,您已经看到了实际的引脚图。

ESP8266 Arduino

组件的要求

  • Arduino UNO [在这里买
  • ESP8266 ESP-01
  • 1 KΩ电阻器
  • 2.2 KΩ电阻器
  • 100pf电容器(电容器代码- 104)
  • 微型电路试验板
  • 连接电线

准备安装ESP8266 ESP-01模块

如果查看ESP8266 ESP-01模块的引脚,可以发现它对面包板不友好。所以,我做了一个小穿孔板,底部有面包板友好的插脚和母头,用来安装ESP8266 ESP-01模块。

ESP8266 Arduino

在这个性能板上,我还连接了ESP8266的RX引脚的电平转换电阻,以及VCC (3.3V)和GND之间的100 pF旁路电容。以ESP8266 ESP-01 Module安装在迷你面包板上为例。

ESP8266 Arduino

获取Arduino IDE准备编程ESP8266

ESP8266 WiFi模块可以使用Arduino IDE编程,为了做到这一点,你需要对Arduino IDE做一些更改。首先,转到Arduino IDE中的“文件- >首选项”和“附加板管理器URL”部分,输入以下URL。

http://arduino.esp8266.com/stable/package_esp8266com_index.json

ESP8266 Arduino

请注意:您可以添加许多这样的url,但它们必须用逗号分隔。

打开“工具- > Board - > Boards Manager”,在搜索栏中搜索“ESP8266”。选择ESP8266 by ESP8266社区,单击“安装”。

ESP8266 Arduino

请注意: Arduino IDE Version 1.6.4及更高版本支持通过板管理器添加第三方板的功能。所以,请确保你有最新版本的Arduino IDE。

获取Arduino UNO准备编程ESP8266

为了对ESP8266模块进行编程,我们需要将ESP8266模块与计算机连接。由于串行通信是ESP8266 ESP-01模块上唯一可用的通信,我们需要一个USB到串行适配器,如FTDI、CH340或FT232RL。

如果你没有专用的USB到串行适配器,不要担心。Arduino UNO有一个板载USB串行适配器(用于编程Arduino)。我们将使用它对ESP8266进行编程。

我们将使用Arduino的TX和RX引脚连接到ESP8266模块,为了确保Arduino不使用这些引脚,我们可以上传一个最小的草图到Arduino。

请注意:仅包含设置和循环函数,其中没有任何数据。

在我的例子中,我有一个额外的Arduino UNO板,它的ATmega328p IC不工作。所以,我从Arduino UNO中移除微控制器IC,并开始使用它作为USB到串行转换器。

基于Arduino的ESP8266编程电路设计

您已经看到了项目所需的组件和电路图。现在,让我们来了解一下电路的设计。

首先,ESP8266模块工作在3.3V电源上,任何超过这个电压的电源,比如5V,都会杀死SoC。ESP8266 ESP-01模块的VCC引脚和CH_PD引脚连接到3.3V电源上。

接下来要记住的重要事情是,ESP8266 WiFi模块有两种操作模式:编程模式和正常模式。

在“编程模式”下,用户可以将程序或固件上传到ESP8266模块中;在“普通模式”下,上传的程序或固件将正常运行。

为了启用编程模式,GPIO0引脚必须连接到GND。在电路图中,我已经将SPDT开关连接到GPIO0引脚。拨动SPDT杆将ESP8266切换到编程模式(GPIO0接GND)和正常模式(GPIO0作为GPIO引脚)。

此外,RST(重置)将在启用编程模式中发挥重要作用。RST引脚是有源LOW引脚,因此,它通过一个按钮连接到GND。因此,只要按下按钮,ESP8266模块就会复位。

ESP8266模块的RX和TX引脚与Arduino板上的RX和TX引脚相连。由于ESP8266 SoC不能容忍5V, Arduino的RX Pin通过一个1KΩ和2.2KΩ电阻组成的电平转换器连接。

最后将GPIO2引脚连接到LED上测试程序的工作。下面提到了在ESP8266中启用编程模式所需的所有连接。

  1. VCC——- > 3.3v
  2. GND——- > GND
  3. Ch_pd - - > 3.3v
  4. RST————>常开;接地重置
  5. Gpio0——- > GND
  6. TX——Arduino的> TX
  7. RX——- > Arduino的RX(直通电平转换器)

ESP8266 Arduino接口的工作

确保上述所有连接都正确地进行了。通过编程模式(GPIO0接GND)连接配置ESP8266后,需要将Arduino接入系统。

一旦ESP8266模块上电,按下RST按钮并打开Arduino IDE。在“Board选项(Tools - > Board)”中,选择“Generic ESP8266”单板。在IDE中选择适当的端口号。

ESP8266 Arduino

现在,打开Blink Sketch,将LED引脚设置为2。这里的2表示ESP8266模块的GPIO2引脚。在点击上传之前,请确保GPIO0首先连接到GND,然后按下RST按钮。

点击上传按钮,代码将需要一段时间来编译和上传。您可以在IDE的底部看到进度。一旦成功上传了程序,就可以从GND中删除GPIO0。连接GPIO2的LED会闪烁。

在这个项目中,我们已经看到了ESP8266 Arduino接口将如何工作,如何上传一个程序到ESP8266 WiFi模块,并访问ESP8266模块的输入/输出引脚。

23日回复

      1. 你能帮我吗?它显示如下错误:
        警告:espcomm_sync失败
        错误:espcomm_open失败
        错误:espcomm_upload_mem失败
        错误:espcomm_upload_mem失败

    1. arduino Tx引脚上没有电平转换器。
      Tx引脚上的数据应该从esp8266发送到Arduino,所以它将始终在3.3v
      Rx引脚上的数据应该从Arduino板发送到ESP8266,所以它将在5v

  1. 你的图表中有一个错误的连接。你用TX -TX和RX - RX这是错误的。
    RX表示接收,TX表示发送。你必须连接RX - TX在两个。

    我按照你的指示做了电路,第一次就成功了。一个好的解释。谢谢

    1. 不。ESP8266的TX必须连接Arduino的TX (RX和RX)。这是因为我只使用Arduino作为FTDI接口。如果你注意到的话,我把微控制器从Arduino板上拿掉了。

      1. Sir Ravi,您还可以使用Arduino作为FTDI接口,而不从Arduino板上移除微控制器吗?

        对了,先生,谢谢你对ESP8266的良好解释…

        1. 是的。您可以使用Arduino作为FTDI接口,即使在适当的微控制器。我建议你在使用Arduino之前上传一个最小草图。

      2. 在你说错之前,你应该检查你的事实,了解你在做什么。当你看到图片并阅读说明时,你应该明白Atmel芯片没有被使用。Ravi只是使用Arduino板上的USB-TTL串行模块(FTDI或CH340等)。因此,TX引脚来自Atmel的TX,它是CH340(或其他)USB芯片的RX。这就是ESP8266的TX转到TX引脚的原因。换句话说,将ESP8266看作是替换Atmel芯片,所以您希望TX变成TX。

        错的人,不应该到处去告诉对的人他们错了。这就是Arduino论坛的问题……太多的“错误”。

  2. 你好,ravi先生,我们在使用esp8266时是在数字或模拟引脚上使用arduino uno,我的意思是我们是否可以通过编程esp8266来控制arduino LED引脚?

  3. 你好先生,
    我得到这个错误,而上传-http://downloads.arduino.cc/packages/package_index.json。我如何配置这个问题。

  4. 你好先生,
    我已经配置了一切,但我得到的错误为

    Arduino: 1.8.3 (Windows 8.1),板:“通用ESP8266模块,80 MHz, ck, 26 MHz, 40MHz, QIO, 512K(无SPIFFS), v2预构建(MSS=536),禁用,无,115200”

    存档内置核心(缓存):c:\用户\联想\ appdata \ local \ temp\ arduino_cache_457757\核心core_esp8266_esp8266_generic_CpuFrequency_80,ResetMethod_ck,CrystalFreq_26,FlashFreq_40,FlashMode_qio,FlashSize_512K0,LwIPVariant_v2mss536,Debug_Disabled,DebugLevel_None____,UploadSpeed_115200_05fcc0626ed07ed8ad76618a3caed84e.a
    Sketch使用247055字节(49%)的程序存储空间。最大是499696字节。
    全局变量使用32868字节(40%)的动态内存,为本地变量留下49052字节。最大长度为81920字节。
    警告:espcomm_sync失败
    错误:espcomm_open失败
    错误:espcomm_upload_mem失败
    错误:espcomm_upload_mem失败

    这份报告将有更多的信息
    "在编译期间显示详细输出"
    选项在File -> Preferences中启用。

    我已经检查了端口,但Led仍然不闪烁,其他来源是混乱的,请帮助我,先生。

      1. 这有点棘手。请仔细按照步骤操作。

        步骤1。编辑blink程序(引脚为2)
        步骤2。确保连接正确。
        步骤3。编译前不要按重置按钮。相反,按Arduino IDE中的上传按钮。编译后,也就是当这个语句出现时
        Sketch使用了247055字节(49%)的程序存储空间。最大是499696字节。
        全局变量使用32868字节(40%)的动态内存,为本地变量留下49052字节。最大为81920字节。”

        此时按下复位键。节目将上传。

  5. 嗨拉维,

    我已经按照上面的教程和双重检查电线,特别是IO0把东西进入程序模式。但我仍然得到相同的错误:

    尝试连接
    Espcomm_send_command:发送命令头
    Espcomm_send_command:发送命令负载
    serialport_receive_C0: 00而不是C0

    这个错误是,我理解如果从谷歌搜索,芯片不在程序模式。但是我用万用表检查过,现在的差值是2v, GND后的差值是.3mv。这表明它是有根据的。

    在学习本教程时,您可能发现了导致此错误的其他原因吗?

  6. 你能帮我一下吗?我得到这个错误

    找到“DHT.h”的多个库
    使用:C:\Users\......\Arduino\libraries\ DHT_sensor_library
    不习惯:C:\Users\......\Arduino\libraries\ Grove_Temperature_And_Humidity_Sensor
    不习惯:C:\Users\...\Arduino\libraries\ DHT-sensor-library-master
    在文件c:\ usersmb .....\Arduino\libraries\DHT_sensor_library\DHT_U.cpp:22:0:

    c:\ users \olawa\ onedriver \……DHT_sensor_library\DHT_U.h:25:29:致命错误:Adafruit_Sensor.h:无此文件或目录

    # include

    编译终止。

    退出状态1
    编译单板通用ESP8266模块错误。

  7. 良好的工作。我可以推荐sensor21.com作为一个物联网平台。是一个简单、功能齐全的DIY项目监控平台。

  8. 我的ESP8266 1需要4.5V左右的最大接收电压。3.3V接收机电压不工作。所以在电压转换器中,我使用9k而不是2.2k电阻。

留下一个回复

你的电邮地址不会被公布。

Electronicshub图标
Baidu
map