脉冲宽度调制或PWM是一种技术,提供功率负载,如led和电机(PWM也可以用来编码消息)。在这篇ESP8266 PWM教程中,我将教你如何使用ESP8266 WiFi模块来产生用于LED衰落的脉宽调制(PWM)信号。
概述
我们已经看到了几个PWM教程使用各种微控制器(或IC的)像8051,Arduino、树莓派和IC 555。使用PWM技术,我们控制了LED的亮度(增加或减少其亮度),改变了直流电机的速度(增加或减少速度),也旋转了伺服电机。
现在在这个ESP8266 PWM教程中,我将控制连接到ESP8266 WiFi模块GPIO2引脚的LED亮度,即使用ESP8266 LED褪色。
在PWM ESP8266
ESP8266EX微控制器即SoC,是所有ESP8266模块(如ESP-01、NodeMCU等)的核心,由四个专用的PWM输出接口组成。ESP8266EX中PWM对应的引脚如下:
ESP8266EX中的PWM引脚 |
|
销的名字 |
密码 |
MTDI |
10 |
MTDO |
13 |
mtm |
9 |
GPIO4 |
16 |
如果你观察的话,你会发现我们的ESP8266 ESP-01 WiFi模块中没有这四个引脚。那么如何在ESP8266中实现PWM呢?
答案很简单:使用软件编程,也就是使用微控制器的定时器。
ESP8266 WiFi模块的PWM可以通过定时器中断实现。PWM信号的频率可以在1Hz到1KHz之间的任何地方(有人说,最小频率是100Hz!)
如何在ESP8266中实现PWM ?
ESP8266中PWM产生的软件实现与Arduino中非常相似。因为我们使用Arduino IDE来编程ESP8266,所以产生PWM信号的函数是analogWrite(与我们在Arduino中使用的函数相同)。
analogWrite函数有两个参数:引脚数和PWM值。代替引脚编号,输入你想要使用PWM输出的引脚编号。
来到PWM值,这里你需要输入一个基于PWM分辨率的值。对于Arduino,分辨率是8位,所以您必须输入0到255之间的值。
以ESP8266为例,ESP8266的PWM采用10位分辨率。因此,您必须输入一个介于0和1023之间的值。这里,PWM值“0”表示占空比为0%,PWM值“1023”表示占空比为100%。0到1023之间的任何值将构成占空比。
注意:
- 如果ESP8266中的一个引脚被分配了analogWrite来产生PWM信号,那么它就不能被用作数字输出引脚,也就是说你不能使用digitalWrite();功能在那个针上。
- 为了使用pin作为数字pin,你需要写analogWrite(pin number, 0)来释放它。
ESP8266 LED衰落PWM教程电路图
下图是使用Arduino作为USB-to-Serial Converter编程ESP8266 WiFi模块,并使用PWM信号进行LED衰落的电路图。
组件的要求
- ESP8266 WiFi模块(ESP-01)
- Arduino UNO
- 按钮
- SPDT开关(滑动开关)
- 电阻(1 KΩ和2.2 KΩ)
- 小LED (5mm或3mm)
- 连接电线
- 电路试验板
电路设计
连接一个LED(我已经使用了8mm的LED,你可以使用5mm或3mm的LED带限流电阻)到ESP8266 WiFi模块的GPIO2引脚。
VCC和CH_PD接3.3V电源,GND接GND。ESP8266 WiFi模块的RST (Reset)引脚通过按键连接到地。
现在ESP8266的RX和TX引脚连接到Arduino UNO的RX和TX。电路图中请注意,ESP8266的RX引脚并不是直接连接到Arduino的RX引脚,而是通过电平转换器(由1KΩ和2.2KΩ电阻组成)。
最后,GPIO0引脚。该引脚负责启用ESP8266的编程模式。将GPIO0引脚连接到SPDT滑动开关,即其中心端子,并将两个端子中的一个连接到GND。另一端作为GPIO脚。
代码
ESP8266 PWM LED渐隐教程的代码如下所示。
工作
按照电路图正确接线后,开启ESP8266的“编程模式”,即将GPIO0开关滑动到GND位置,并按下RST按钮。
使用Arduino IDE上传代码(首先,选择板中的通用ESP8266模块和正确的端口号)。
上传程序后,将GPIO0引脚滑动到GPIO Position并按RST按钮一次。现在,代码将开始运行,最初你可以看到LED通过5个步骤慢慢增加亮度到最大强度。
在这之后,褪色动作开始于LED淡入和淡出,即从低到高,从高到低是一个循环。
应用程序
- ESP8266的PWM教程仅仅是一个关于ESP8266 WiFi模块PWM功能的演示。
- 在ESP8266中使用PWM技术,可以实现伺服电机控制、Web控制伺服、直流电机速度控制等多个项目。
一个回应
我想要…arduino是什么,它是怎么工作的