第1步:ESP8266-01 Pins

步骤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

esp8266灯上电闪一下_怎样使用ESP8266-01引脚和指示灯相关推荐

  1. esp8266灯上电闪一下_如何在ESP8266上实现变色呼吸灯效果?

    引言 呼吸灯最早是由苹果公司发明并应用于笔记本睡眠提示上,一经展出,立刻吸引众多科技厂商争相效仿.将其广泛用于各种电子产品中,尤其是智能手机.于是研究了一下,一起来DIY一个变色RGB呼吸灯吧.呼吸灯 ...

  2. esp8266灯上电闪一下_【零知ESP8266教程】快速入门2-点亮外部LED灯

    [零知ESP8266教程]快速入门2-点亮外部LED灯 [复制链接] 一.工具原料 电脑,windows系统 ESP8266开发板 micro-usb线 LED灯1个 220Ω 电阻1个 面包板一个+ ...

  3. esp8266灯上电闪一下_消除esp8266上电时继电器抖动的几种方法

    本帖最后由 lwq1947 于 2020-6-17 18:01 编辑 众所周知esp8266在上电时它的一些GPIO端口会有瞬间电平翻转现象,这就导制了在其输出控制的继电器就会突然瞬间吸合一下.这种状 ...

  4. esp8266数据上传到mysql数据库_03-STM32+ESP8266+AIR202/302终端管理篇-把设备温湿度数据存储到MySQL数据库(Windows)...

    前言 这一节把设备通过MQTT上报的数据写入MySQL数据库. 注:关于MySQL数据库的安装和基本使用请用户参考基础开源教程学习! 说明 此节代码使用的 IntelliJ IDEA 软件编写. 整个 ...

  5. vc 控制台添加托盘显示_开源:ESP8266读DHT11温湿度,小程序实时显示

    第一.原理讲解 原理简述:利用发布订阅模式.第一步,先读取DHT11温湿度数值,第二步,新建主题,然后esp8266往这个主题发送消息,第三步.小程序通过http API接口获取数据.小程序控制原理: ...

  6. 基于ESP8266灯控

    ESP8266灯控硬件:使用淘宝ESP-01模块,带一个ESP8266插槽和一个5V继电器,220V转5V用拆下的手机充电器 ESP8266代码,开放TCP Server(80)端口,同时作为TCP ...

  7. 怎么接收layui上传的文件_layui 上传文件_批量导入数据UI的方法

    使用layui的文件上传组件,可以方便的弹出文件上传界面. 效果如下: 点击[批量导入]按钮调用js脚本importData(config)就可以实现数据上传到服务器. 脚本: /*** * 批量导入 ...

  8. 如何在label上显示字_如何地图上标注店面_新开的店铺要怎样上地图显示_怎么将公司标记在地图...

    新开的店铺商铺商家商户企业工厂怎么标注地图位置?如何地图上标注店面_怎么将店铺标记在地图_新开的店铺要怎样上地图显示?还没有办好营业执照可以做?您可能会有很多地图疑问?请直接联系腾图通地图服务公司为您 ...

  9. LED灯上的ASEMI整流桥MB10F怎么检测是否正常

    编辑-Z 我的LED灯盘上有一个桥式整流桥,它的型号是:MB10F,那么什么是整流,整流是做什么的?LED灯上的ASEMI整流桥MB10F怎么检测是否正常? 整流电路就是将交流电转换成直流电.为什么要 ...

最新文章

  1. phantomjs 抓取html,javascript – 如何使用PhantomJS获取网站的HTML源代码
  2. java 安卓 html_java – Android的HtmlUnit替代品?
  3. jQuery进阶部分笔记
  4. 本硕985非科班渣硕2020腾讯计算机视觉算法实习面经(已获Offer)
  5. Cron表达式在线工具
  6. 《跟阿铭学linux》(第3版)笔记
  7. Python实现Mean Shift算法
  8. 新手入门学Python一定要知道的编程开发工具
  9. TIBCO中国胡长城谈:中国企业工作流应用
  10. 如何控制舵机的速度?
  11. 使用MapWinGis ActiveX控件在图层上画点
  12. 一元三次方程求解(枚举)
  13. 成都拓嘉启远:拼多多开店有差评,原因是这样的
  14. 【论文 | 复现】YOLO-landmark detection
  15. python123不能登录_python入门:最基本的用户登录用户登录,三次错误机会
  16. 最新调研-核心业务运营服务市场究分析报告
  17. TTL反相器、OC门、TS门、推挽输出、开漏输出
  18. 【技术向】VOT中的EAO是如何计算的
  19. Spring Boot MongoDB 实现总结
  20. 自学SQL网习题题解:0-12(带内容解析!)

热门文章

  1. Latex 表格内换行
  2. SAP High Avaliability offering
  3. 2021年新媒体运营不可缺少的24大类工具!
  4. 计算机两个硬盘的作用,电脑装2个硬盘有什么好处与坏处
  5. 微信小程序原生上传图片封装
  6. 【HTML】html基本标签-1(文字,列表,图片标签)
  7. 基于51单片机 + ds12c887 + ds18b20 + lcd1602的时钟温度显示器(带闹钟功能)
  8. Ailurus 小熊猫
  9. 关于间皮瘤mesothelioma的相关信息
  10. Mybatis---多表联合查询(1)