0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

怎样使用ESP8266-01引脚和指示灯

454398 来源:网络整理 作者:佚名 2019-11-08 17:19 次阅读

第1步:ESP8266-01 Pins

怎样使用ESP8266-01引脚和指示灯

ESP8266-01是最小的ESP8266模块,只有8个管脚。在这些VCC中,GND,RST(复位)和CH_PD(片选)不是I/O引脚,但需要模块操作。这样就可以将GPIO0,GPIO2,TX和RX用作可能的I/O引脚,但即使这些引脚都具有预先分配的功能。 GPIO0和GPIO2确定模块以哪种模式启动,并且TX/RX引脚用于对模块进行编程以及用于串行I/O(通常用于调试)。 GPIO0和GPIO2需要连接上拉电阻,以确保模块正确启动。

步骤2:ESP8266编程技巧(espcomm失败)

使用Arduino IDE编程ESP8266时(请参阅ESP8266-01 Wifi Shield),有时(通常)会在Arduino IDE中收到错误消息,例如:-

esp_com打开失败

错误:失败打开COM33错误:espcomm_open失败

错误:espcomm_upload_mem失败

在这种情况下,请按照以下步骤操作:-

检查是否已在Arduino工具菜单中选择了ESP8266板

检查是否已在Arduino工具菜单中选择了COM端口

将GPIO0接地的ESP8266重新通电(干净)电源应用程序,请参阅下文)

如果3)不能解决问题,请从计算机上拔下USB电缆,等待几秒钟,然后再将其重新插入

如果4)不能解决问题,从PC上拔掉USB电缆,关闭Arduino IDE,打开Arduino IDE,重新插入USB电缆。

在给ESP8266供电时,将GPIO0接地后,请确保干净地供电。不要摇晃连接。 ESP8266 led应该亮起并保持不闪烁。

步骤3:最佳技巧–使用I2C

使ESP8266-01额外输入的最好技巧是使用I2C接口

一种选择是使用GPIO0和GPIO2作为I2C总线。

使模块正确启动所需的上拉电阻可以加倍,因为I2C总线上拉电阻和总线上的其他从器件均是集电极开路,因此不应下拉总线通电时。但是,在某些情况下,从站(尤其是具有备用电池的从站)可能会卡住并压低总线。在这种情况下,您需要隔离总线,直到ESP8266进入引导阶段为止。

通过为I2C总线使用TX和RX可以避免此问题

注意:

GPIO1(TX)用作数据线,因为在加电时,您总是会在GPIO1上获得一些调试输出。没有办法抑制此输出,但时钟线(RX)会保持高电平,因此这些数据都不会被时钟传给从机

在对ESP8266进行编程时,RX线会连接到ESP8266。程序员的输出。编程结束时,ESP8266会重新启动,并且330保护电阻可防止RX短路编程器的输出驱动器

I2C串联电阻可为TX,RX提供防止I2C总线短路的保护

ESP8266是3.3V器件,因此最好使用3.3V I2C从器件。如今,许多(但不是全部)I2C器件均为3.3V。 “通常,在一个设备的电压高于另一个设备的电压的系统中,有可能通过I2C连接两个设备,而它们之间没有任何电平转换电路。技巧是将上拉电阻器连接到两个电压中的较低者。”(SparkFun I2C教程)对于5V和3.3V器件的混合,将上拉电阻器连接到3.3V线,如上所示。

使用I2C是向ESP8266-01添加多通道A-to-D转换器的好方法,该转换器不会暴露底层模块的单个ADC输入。例如,使用Adafruit 12位I2C 4通道ADC或模拟输出SparkFun的I2C DAC Breakout – MCP4725板。 I2C总线还提供许多其他类型的传感器

有关克服I2C问题的更多信息,请参见http://www.i2c-bus.org/i2c-primer/common-problems.。.。另请参阅I2C电池后备RTC可靠启动的简短方法,以帮助清除总线

第4步:将GPIO0/GPIO2用于OUTPUT,将RX用于INPUT

虽然可以通过WiFi连接发送调试消息,但是使用TX连接通常很方便。下一个示例显示如何将GPIO0和GPIO2用作输出,将RX用作输入。

使用

Serial.begin(115200,SERIAL_8N1,SERIAL_TX_ONLY);

允许您将RX用作通用输入(或其他输出),同时仍将调试消息写入串行。 RX引线中的330欧姆电阻再次连接到Flash编程器,可以防止编程器的驱动器短路。注意:必须先打开S1才能对ESP8266进行编程。

可以从草图访问TX引脚,因为GPIO1和RX为GPIO3

使用GPIO0作为输出时如何重新编程

注意:需要将GPIO0接地才能进入编程模式。如果您将其拉高,则将其接地可能会损坏ESP8266芯片。当代码驱动GPIO0输出时,对ESP8266进行重新编程的安全方法是:-

a)关闭开发板电源 b)短GPIO0到gnd c)打开开发板电源,使其进入编程模式由于GPIO0短路

d)消除了GPIO0的短路,因此在程序运行时您不会短路输出

e)重新编程开发板 f)必要时重启开发板。

步骤5:另一个技巧-使用GPIO0/GPIO2驱动继电器并读取按钮

这里是另一种配置方式别针。注意:仅当您的继电器模块具有隔离的输入(N1和N1-com)时,此技巧才有效。由于此限制和支持代码的复杂性,上一个示例以RX作为输入为佳。

使用ESP8266 GPIO0/GPIO2/GPIO15引脚已经介绍了如何一起使用GPIO0/GPIO2获得额外的输入。在这里,该示例将扩展为使用GPIO0作为继电器驱动器输出,并使用GPIO0/GPIO2作为输入。

此处是pdf格式的原理图。

此处GPIO0被用作输出以驱动继电器,GPIO0/GPIO2用作输入来读取瞬时按钮,该按钮除了可以通过WiFi连接进行远程控制之外,还可以用作手动操作来打开和关闭继电器。如果在通电时按下瞬时按钮,则也可用于启用配置模式。

这里的诀窍是在ESP8266模块初始化时仍保持GPIO0和GPIO2为高电平的同时进行所有操作。

上拉电阻R1和R3为这两个引脚提供了必要的高电平,但是必须确保连接到GPIO0和GPIO2的任何额外电路都不能将引脚拉低。光电隔离继电器连接在+ 3.3V和GPIO0之间。这样可在启动时使GPIO0保持高电平,但在启动后允许GPIO0作为输出,并使继电器输入接地以操作继电器。模块初始化时是否操作瞬时按钮都没有关系,因为只需将GPIO0连接到GPIO2并将这两个都连接到其上拉电阻即可。

检测配置模式

使用ESP8266作为一个临时访问点,您可以按此处所述通过网页进行配置。该过程的一部分是在加电时使用按钮或短路链接来指示要进入配置模式的软件。

ESP8266模块初始化后,将运行 setup()代码。在该代码中,要检测瞬时按钮是否被按下,您无需使GPIO0为低电平即可为按钮提供GND,然后检查GPIO2输入是否为低。该检查的副作用是,当设备进入配置模式时,继电器将始终处于运行状态。一旦看到继电器操作,就可以释放按钮,因为届时将已检测到其输入。这是一些示例代码,可在 setup()

boolean configMode = false; // not in config mode normally

void setup() {

pinMode(0, OUTPUT);

digitalWrite(0, LOW); // make GPIO0 output low

// check GPIO2 input to see if push button pressed connecting it to GPIO0

configMode = (digitalRead(2) == LOW);

if (configMode) {

// start AP and get ready to serve config web page

// leave relay on to indicate in config mode

//。..。..

} else {

// normal usage

// make GPIO0 HIGH to turn off the relay

digitalWrite(0, HIGH);

//。..。.

}

// rest of setup()

}

检测手动覆盖按钮

中进行此操作。开机时按下按钮以启用配置模式。除了能够通过WiFi链接控制继电器之外,我们还希望使用该按钮作为手动替代来打开和关闭继电器。

此处不介绍继电器的WiFi控制,但可以使用pfodApp轻松完成。有关如何使用pfodDesigner为ESP8266模块生成Arduino代码的信息,请参见OLIMEX菜单生成器。

本节将介绍如何检测何时按下按钮,指示用户想要切换继电器,即打开它。如果是OFF,则将其打开;如果关闭,则将其打开。原理图与上面相同,所有技巧都在代码中。有两种情况需要考虑:-

继电器已关闭,用户希望使用按钮将其打开,

继电器已打开,用户希望

继电器关闭,用户希望使用按钮将其打开。

在这种情况下, GPIO0为高电平。在这种情况下,实际上GPIO0可以作为输入,因为上拉电阻R1将确保继电器不会打开。那是诀窍。在这种情况下,将GPIO0设为输入,将GPIO2输出设为LOW,然后当用户按下按钮时,将发生两件事:-a)由于GPIO2通过按钮提供的接地,继电器将打开,并且b)输入GPIO0将变为低电平。该代码检查输入GPIO0的状态,并在输入GPIO0变为低电平时知道使用已按下按钮并希望继电器打开。然后,该代码使GPIO0变为Output LOW,以在释放按钮时使继电器保持打开状态。

继电器打开,用户希望使用按钮将其关闭。

在这种情况下,从上述情况开始,GPIO0为输出低电平,继电器保持打开状态。现在,在这种情况下,将GPIO2设为输入(由R3上拉),然后当用户按下按钮时,输入GPIO2被GPIO0上的LOW输出拉低。当用户释放按钮时,代码将检测到低电平到高电平的过渡,然后将GPIO0设为输入,由于上拉电阻R1而释放继电器,并使GPIO2变为输出LOW,以针对上述情况i)进行设置。

还有另一个窍门。对于情况ii),我们需要GPIO2作为输入,该输入可检测到从低电平到高电平的转换以关闭继电器。但是,如果我们在情况i)的末尾制作GPIO2并输入,那么当用户释放他们刚刚按下以打开继电器的按钮时,我们将获得从低到高的转换。为避免立即再次关闭继电器,将忽略继电器打开后的第一个从低到高的过渡,因为这只是用户释放他们按下的按钮来打开继电器。

示例循环( )继电器手动超越控制代码

在此代码中,为简单起见,我忽略了开关的反跳。输入应在任何实际应用中进行去抖动。

示例代码在此处,ESP8266_01pinMagic_1.ino

再次使TX/RX引脚可用进行串行调试或用作其他I/O

结论

此页显示了如何充分利用ESP8266-01上可用的有限引脚。将GPIO0/GPIO2用作I2C总线可提供最大的扩展,但是如果您的项目不使用I2C,您仍可以使用GPIO0/GPIO2来驱动继电器并检测按钮输入。无论哪种情况,TX/RX都可用于串行调试,或者如果您通过WiFi链接发送调试打印语句,则这些引脚也可用于常规I/O。
责任编辑:wv

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 指示灯
    +关注

    关注

    3

    文章

    415

    浏览量

    28284
  • ESP8266
    +关注

    关注

    50

    文章

    962

    浏览量

    45001
收藏 人收藏

    评论

    相关推荐

    指示灯LED资料分享

    指示灯板,用CMOS N沟道驱动
    发表于 11-07 10:50 0次下载

    ESP8266 太空人动画的 OLED 显示

    ESP8266 太空人动画的 OLED 显示
    的头像 发表于 10-08 15:06 279次阅读
    <b class='flag-5'>ESP8266</b> 太空人动画的 OLED 显示

    esp32和esp8266代码共用吗

    本文将介绍ESP32和ESP8266两款流行的微控制器在代码共用性方面的可能性与差异性。 一、引言 随着物联网技术的飞速发展,越来越多的智能设备开始进入我们的生活。其中,ESP32和ESP82
    的头像 发表于 08-19 18:23 1152次阅读

    esp8266esp32区别是什么

    以下是关于ESP8266ESP32的主要区别: 处理器和架构 : ESP8266 :使用一个Tensilica L106 80MHz的处理器,属于Xtensa架构。 ESP32 :使
    的头像 发表于 08-19 18:16 5401次阅读

    esp8266不烧录可以使用吗

    ESP8266是一款非常流行的Wi-Fi模块,广泛应用于物联网项目中。然而,如果不进行烧录,ESP8266将无法正常工作。 1. ESP8266简介 ESP8266是一款由Espres
    的头像 发表于 08-19 17:28 807次阅读

    ESP8266-01如何更新固件?

    您好,我有 ESP8266-01,我需要通过 Arduino 更新固件......我有这个版本......esp_iot_sdk_v1.4.0_15_09_18.zip 可以给任何链接重言同义吗?
    发表于 07-22 07:33

    如何将ESP8266-01模块用作物理层设备?

    嗨,大家好。我想将 ESP8266-01 模块用作物理层设备,就像射频发射器和接收器一样。 一个模块将用作发射器,它在没有 WI-Fi 连接的情况下工作,并将发送原始数据,第二个模块将接收数据,并且
    发表于 07-19 12:18

    ESP8266可以使用仅支持标准SPI的闪存芯片吗?

    ]][espDownloader.pyo][行:457][错误]:ESP8266芯片闪存下载错误esp_write_flash。 我使用带有SST25VF080B闪光ESP8266-0
    发表于 07-19 07:52

    如何使用ESP8266-01构建一个电池供电的数据记录器?

    为此类应用量身定制的。在 TI 的数据手册上,它看起来非常简单: 1) TPL5111(带有其 DRV 引脚)接通电压调节器的 ENABLE 引脚。 2) ESP8266-01 由稳压器供电,执行其
    发表于 07-19 06:53

    使用ESP8266-01和Arduino SDK安装AT固件失败了怎么解决?

    在使用我的 ESP8266-01 和 Arduino SDK 玩了一会儿后,我想再次在其上安装 AT 固件,但我失败了。 我尝试从ESP8266_NONOS_SDK-3.0.5开始,按如下方式安装它
    发表于 07-19 06:08

    ESP8266-01适合长时间使用吗?

    我正在使用ESP8266-01,运行NONOS_SDK_V2.0.0_16_07_19。程序正在使芯片进入深度睡眠 2 分钟,然后收集数据。它运行良好大约 ~20 小时,ESP UART 输出符合
    发表于 07-18 06:45

    ESP8266-01在几个小时后停止响应了如何解决?

    我已经使用 Arduino IDE 为我的家庭自动化项目编写了 ESP8266-01ESP-01 会在一段时间后停止响应接收到的 UDP 广播数据。 有人可以告诉我如何解决这个问题吗?
    发表于 07-15 07:31

    ESP8266-01将ch_pd引脚与直接vcc连接,电池功耗持续非常高,怎么解决?

    我使用 ESP8266-01 开发产品并与其他主机 MCU 接口,主机 MCU 使用 UART 和 AT 命令进行 ESP 通信。我们的产品是在低功耗的电池源上,如果我想与主机 MCU 建立
    发表于 07-15 06:37

    基于SDK2.0的ESP8266-01闪存失败的原因?

    如果我的固件基于 SDK2.0,我无法刷新一堆 ESP8266-01。在其他用户的支持下(见线程:http://www.esp8266.com/viewtopic.php?f= ...编号
    发表于 07-11 06:12

    国产低成本Wi-Fi SoC解决方案芯片ESP8266ESP8285对比差异

    ESP8266ESP8285对比差异 ESP8285相当于在ESP8266基础上多加了1/2MB Flash, ESP8285与
    的头像 发表于 05-17 11:44 1338次阅读
    国产低成本Wi-Fi SoC解决方案芯片<b class='flag-5'>ESP8266</b>与<b class='flag-5'>ESP</b>8285对比差异