风筝
发表于: 2020-12-28 11:31:57 | 显示全部楼层

在过去的几年中,RGB LED灯因其色彩艳丽以及灯光效果而日渐流行。这就是为什么它在许多地方用作装饰物品的原因,例如房屋或办公室空间。另外,我们可以在厨房和游戏机中使用RGB灯。在本篇文章中,我们将使用基于Neopixel的RGB LED点阵扩展板、Arduino和Blynk应用程序来生成动画效果和颜色,同时我们可以使用Blynk应用程序进行控制。


Adafruit的5X8 NeoPixel扩展板

Adafruit-5X8-NeoPixel-Shield-for-Arduino.jpg


NeoPixel扩展板兼容Arduino,包含40个可单独寻址的RGB LED,每个LED都内置有WS2812b驱动器,该驱动器以5×8矩阵排列以形成此NeoPixel扩展板。如果需要,还可以连接多个NeoPixel扩展板以形成更大的扩展板。要控制RGB LED,需要一个Arduino引脚,因此在本文中,我们决定使用Arduino的引脚6来实现。


在我们的案例中,LED由Arduino的内置5V引脚供电,足以在全亮度下为“约三分之一的LED”供电。如果需要给更多的LED供电,则可以切割内置走线,并使用外部5V电源通过外部5V端子为屏蔽供电。


了解Blynk应用程序和Arduino之间的通信过程

这里使用的8 * 5 RGB LED矩阵包含40个基于WS2812B驱动器的可单独寻址的RGB LED。它具有24位色彩控制,每个像素1680万种色彩。可以使用“单线控制”方法进行控制。这意味着我们可以使用单个控制引脚控制整个LED像素。在使用这些LED时,我浏览了这些LED的数据表,扩展板的工作电压范围是4 V至6 V,在5 V时每个LED的电流消耗为50 mA。它在外部电源引脚上具有反向电压保护,并在扩展板上具有复位按钮。如果内部电路无法提供足够的功率,则它还具有用于LED的外部电源输入引脚。

Communication-Process-Between-Blynk-App-and-Arduino.png


如上面的示意图所示,我们需要在智能手机上下载并安装Blynk应用程序,该应用程序可以控制颜色、亮度等参数。设置完参数后,如果应用程序发生任何更改,它将存储在Blynk云中,我们的PC也已连接到该云,并准备接收更新的数据。 Arduino Uno通过USB电缆连接到我们的PC,并打开了通信端口,并且该通信端口(COM端口)可以在Blynk云和Arduino UNO之间交换数据。 PC正在以固定的时间间隔从Blynk云请求数据,并且当接收到更新的数据时,PC会将其传输到Arduino并做出用户定义的决定,例如控制RGB led亮度和颜色。 RGB LED扩展板放置在Arduino上,并通过单个数据引脚连接以进行通信,默认情况下,它通过Arduino的D6引脚连接。从Arduino UNO发送的串行数据发送到Neopixel扩展板,然后将其反映在LED矩阵上。


所需的组件

●    Arduino UNO开发板

●    8 * 5 RGB LED矩阵扩展板

●    USB电缆

●    笔记本电脑


Adafruit RGB LED扩展板和Arduino的硬件连接

WS2812B Neopixel LED具有三个引脚,一个用于数据,另外两个用于电源,但是这种特定的Arduino扩展板使硬件连接非常简单,我们要做的就是将Neopixel LED矩阵放在Arduino UNO的顶部。在本文中,LED由默认的Arduino 5V供电。放置Neopixel扩展板后,设置如下所示:

Adafruit-RGB-LED-Shield.jpg


配置Blynk应用程序

Blynk是一款可以在Android和IOS设备上运行的应用程序,可以使用我们的智能手机控制任何IoT设备和设备。首先,需要创建一个图形用户界面(GUI)来控制RGB LED矩阵。该应用程序会将所有选定的参数从GUI发送到Blynk云。在接收器部分,我们已将Arduino通过串口通信电缆连接到PC。因此,PC从Blynk云请求数据,并将这些数据发送到Arduino进行必要的处理。


设置之前,请从Google Play商店下载Blynk应用程序(IOS用户可以从App Store下载)。安装后,使用您的电子邮件ID和密码注册。


创建一个新项目:

成功安装后,打开应用程序,然后会出现一个带有“New Project”选项的界面。单击它,它将弹出一个新界面,我们需要在其中设置诸如项目名称,电路板和连接类型之类的参数。在我们的项目中,将设备选择为“ Arduino UNO”,并将连接类型选择为“ USB”,然后单击“Create”。


成功创建项目后,我们将在注册邮件中获得一个身份验证ID。保存身份验证ID,以备将来使用。

Blynk-App-Configuration.png


创建图形用户界面(GUI):

在Blynk中打开项目,单击“ +”号,我们将在其中获得可在项目中使用的小部件。在本文中,我们需要一个RGB拾色器,其显示为“ zeRGBa”,如下所示。

Blynk-Arduino.png


设置小部件(Widgets):

将小部件拖到我们的项目后,现在我们必须设置其参数,这些参数用于将RGB颜色值发送到Arduino UNO。


单击ZeRGBa,然后将得到一个名为ZeRGBa Settings的界面。然后将“Output ”选项设置为“Merge”,并将引脚设置为“ V2”,如下图所示。

Blynk-Widget.png


控制WS2812B RGB LED扩展板的Arduino代码

硬件连接完成后,需要将代码上传到Arduino。代码的逐步说明如下所示。


首先,包括所有必需的库。打开Arduino IDE,然后转到Sketch选项卡,然后单击选项Include Library-> Manage Libraries。然后在搜索框中搜索Blynk,然后下载并安装Arduino UNO的Blynk软件包。


在本文中,“ Adafruit_NeoPixel.h”库用于控制RGB LED矩阵。要包含它,您可以从给定的链接下载Adafruit_NeoPixel库

  1. #define BLYNK_PRINT DebugSerial
  2. #include <Adafruit_NeoPixel.h>
  3. #include <SoftwareSerial.h>
复制代码

然后,我们定义了LED矩阵所需的LED数量,还定义了用于控制LED参数的引脚号。

  1. #define PIN 6
  2. #define NUM_PIXELS 40
复制代码

然后,我们需要将先前保存的blink验证ID放入auth []数组中。

  1. char auth[] = "HoLYSq-SGJAafQUQXXXXXXXX";
复制代码

在这里,软件串行引脚用作调试控制台。因此,以下将Arduino引脚定义为调试串行。

  1. #include <SoftwareSerial.h>
  2. SoftwareSerial DebugSerial(2, 3);
复制代码

在setup函数中,使用函数Serial.begin初始化串口通信,使用Blynk.begin连接blynk,pixel.begin()初始化LED矩阵。

  1. void setup()
  2. {
  3.   DebugSerial.begin(9600);
  4.   pixels.begin();
  5.   Serial.begin(9600);
  6.   Blynk.begin(Serial, auth);
  7. }
复制代码

在loop()函数中,我们使用了Blynk.run(),它检查来自blynk GUI的传入命令并相应地执行操作。

  1. void loop()
  2. {
  3.   Blynk.run();
  4. }
复制代码

最后,需要接收和处理从Blynk应用程序发送的参数。如前面在设置部分中所述,将参数分配给虚拟引脚“ V2”。 BLYNK_WRITE函数是一个内置函数,只要关联的虚拟引脚的状态/值发生更改,就会调用该函数。我们可以像其他Arduino函数一样在此函数内运行代码。


BLYNK_WRITE函数检查虚拟引脚V2处的传入数据。彩色像素数据已合并并分配给V2引脚。因此,我们还必须在解码后再次取消合并。因为要控制LED像素矩阵,我们需要所有3种单独的彩色像素数据,例如红色、绿色和蓝色。如下代码所示,读取了矩阵的三个索引,如param [0] .asInt(),以获取Red的值。同样,所有其他两个值也被接收并存储在3个单独的变量中。然后,使用pixel.setPixelColor函数将这些值分配给Pixel矩阵,如下面的代码所示。


在这里,pixels.setBrightness()函数用于控制亮度,而pixels.show()函数用于在矩阵中显示设置的颜色。

  1. BLYNK_WRITE(V2)
  2. {
  3. int r = param[0].asInt();
  4. int g = param[1].asInt();
  5. int b = param[2].asInt();
  6. pixels.clear();
  7. pixels.setBrightness(20);
  8. for (int i=0; i<=NUM_PIXELS;i++)
  9. {
  10. pixels.setPixelColor(i, pixels.Color(r, g, b));
  11. }
  12. pixels.show();
  13. }
复制代码

将代码上传到Arduino开发板

首先,我们需要在Arduino IDE中选择Arduino的端口号,然后将代码上传到Arduino UNO。成功上传后,记下将用于我们的串行通信设置的端口号。


之后,在PC上找到Blynk库的脚本文件夹。它是在您安装库时安装的:“C:\Users\PC_Name\Documents\Arduino\libraries\Blynk\scripts”



在脚本文件夹中,应该有一个名为“ blynk-ser.bat”的文件,这是一个用于串行通信的批处理文件,我们需要使用记事本进行编辑。使用记事本打开文件,然后将端口号更改为您在上一步中记下的Arduino端口号。


编辑后,保存文件并通过双击运行批处理文件。然后,您会看到如下所示的窗口:

Blynk-App-Source-Code.png


现在,该测试电路及其功能了。 打开Blynk应用程序并打开GUI,然后单击“Play”按钮。 之后,您可以选择要在LED矩阵上反射的所需颜色, 如下所示:

WS2812B-RGB-LED-Shield-with-Arduino.jpg


跳转到指定楼层
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 700 | 回复: 1480



手机版|

GMT+8, 2024-4-19 19:10 , Processed in 0.145411 second(s), 8 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

快速回复 返回顶部 返回列表