当前位置: 首页 > news >正文

使用 Arduino 和 Wi-Fi 控制 RGB LED

 

通过 WiFi 的 Arduino RGb LED 控制器

,在本文中,我们将介绍下一个基于 IOT 的项目 - 使用 Wi-Fi 的 RGB LED 闪光灯。在这里,我们使用 Arduino 和 ESP8266 Wi-Fi 模块通过 Android 手机通过 Wi-Fi 控制 RGB LED 的颜色。

在这个 RGB Flasher LED 中,我们使用了一个名为“Blynk”的 Android 移动应用程序。Blynk 是一个与 Arduino 非常兼容的应用程序,用于制作基于 IoT 的项目。此应用程序可以从 Google Play 商店下载,并且可以轻松配置。

配置 Blynk 应用程序的步骤:

1. 首先从 Google Play 商店下载并安装在 Android 手机上。

2. 在此之后,需要创建一个帐户。您可以使用您当前的 Gmail 帐户。

3. 现在选择 Arduino Board 并为您的项目命名。

 

4. 记下 Auth Token 代码,或者直接将其邮寄到您的电子邮件帐户,然后复制并粘贴 Arduino sketch(程序代码)。

 

5. 在 Arduino sketch 中输入此 Auth Token 代码。

// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "a20b235cfa794f07981d050950fb4429";

6. 然后点击 Blynk 应用程序中的创建按钮。

7. 现在选择 大滑块 和两个按钮,配置它们(见最后的视频)并点击后退按钮。

 

 

 

 

 

 

8. 之后按屏幕右上角的 Play 按钮。

所有这些使用 Blynk 应用程序的过程,都在视频中清楚地解释了,最后给出了。

所需组件:

  • Arduino UNO
  • ESP8266 Wi-Fi 模块
  • USB 数据线
  • 连接电线
  • RGB 指示灯
  • Android 手机
  • Blynk 应用程序

电路及工作说明:

RGB LED Flasher 的电路图如下所示。我们主要需要一个 Arduino、ESP8266 Wi-Fi 模块和 RGB LED。ESP8266 的 Vcc 和 GND 引脚直接连接到 Arduino 的 3.3V 和 GND,CH_PD也连接到 3.3V。ESP8266 的 Tx 和 Rx 引脚直接连接到 Arduino 的引脚 2 和 3。软件串行库用于允许在 Arduino 的引脚 2 和 3 上进行串行通信。我们已经详细介绍了 ESP8266 Wi-Fi 模块与 Arduino 的接口。

这里我们使用了共阳极 RGB LED。这个 RGB LED 引脚,即 R、G、B 和阳极,以 11、10、9 和 +5 伏 Vcc 连接。公共阳极引脚有一个 +5 伏的 1K 电阻器,用于保护 LED 免受损坏。

 

RGB LED 的工作原理很简单,我们使用 Blynk 应用程序创建了三个滑块,用于控制 RGB LED 三种颜色的强度,即红色、绿色和蓝色。以及一个按钮,用于根据程序代码以不同的模式闪烁 RGB LED。

编程说明:

首先,我们需要下载并安装 Arduino 的 Blynk 库。

我们已经包含了在 Arduino IDE 中运行此代码所需的所有库,然后在身份验证字符串中输入 Blynk 应用程序中的 Auth Token。在这里,我们将 Wi-Fi 串行引脚与 Arduino 的软件串行连接起来。选择引脚 2 作为 RX,选择引脚 3 作为 TX。

#define BLYNK_PRINT Serial    // Comment this out to disable prints and save space
#include <ESP8266_SoftSer.h>
#include <BlynkSimpleShieldEsp8266_SoftSer.h>

// Set ESP8266 Serial object
#include <SoftwareSerial.h>
SoftwareSerial EspSerial(2, 3); // RX, TX

ESP8266 wifi(EspSerial);

// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "a20b235cfa794f07981d050950fb4429";

之后,我们定义了 RGB LED 的输出引脚

#define red 11
#define green 10
#define blue 9 

在此之后,在设置功能中,我们初始化所有需要的设备,开始串行通信,提供 Wi-Fi 用户名和密码。

void setup()
{
  // Set console baud rate
  Serial.begin(9600);
  delay(10);
  // Set ESP8266 baud rate
  // 9600 is recommended for Software Serial
  EspSerial.begin(9600);
  delay(10);

  Blynk.begin(auth, wifi, "username", "password");  // wifi username and password
}

然后我们检查了 Button (Virtual Pin 1) 的条件。在这里,我们选择了虚拟引脚 1 (V1) 来获取来自 Blynk 应用程序的输入以闪烁 RGB LED。

这里我们应该注意,我们在下面的代码部分附加了两个代码,第一个仅用于控制 RGB LED 中三种颜色的强度而不闪烁,第二个用于闪烁 LED 以及控制 RGB LED 的三种颜色。我们只需要在第二个程序中定义 RGB Led 引脚,即 Flashing LED 程序,因为 LED 的 Flashing 是由 Arduino 控制的。另一方面,在第一个程序中,LED 的颜色由 Android 手机中的 Blynk 应用程序控制,因此我们不需要定义 RGB LED 引脚。

我们可以说,如果我们只想通过 Sliders 更改颜色,而不想使用 Button 作为 flasher,那么我们不需要定义 RGB 引脚。

给定的功能用于在 Blynk 应用程序中按下按钮时闪烁 RGB LED。

BLYNK_WRITE(V1) 
{
  int x = param[0].asInt();
  
    while(x==1)
   {
    x = param.asInt();
    int i=0,j=0,k=0;
    analogWrite(red, 255);
    analogWrite(green, 255);
    ... .....
    .... .....

最后我们需要在循环中运行 blynk 函数,以运行系统。

void loop()
{
  Blynk.run();
}

注意:下面给出了两个代码。一个用于在没有闪光灯的情况下更改 RGB LED 的颜色,第二个用于使用 Flasher 更改颜色。查看 视频 以获得更多清晰度。

 

完成项目代码

Code 1: Change the colors of RGB LED without Flasher
#define BLYNK_PRINT Serial    // Comment this out to disable prints and save space
#include <ESP8266_SoftSer.h>
#include <BlynkSimpleShieldEsp8266_SoftSer.h>
// Set ESP8266 Serial object
#include <SoftwareSerial.h>
SoftwareSerial EspSerial(2, 3); // RX, TX
ESP8266 wifi(EspSerial);
// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "a20b235cfa794f07981d050950fb4429";
void setup()
{
  // Set console baud rate
  Serial.begin(9600);
  delay(10);
  // Set ESP8266 baud rate
  // 9600 is recommended for Software Serial
  EspSerial.begin(9600);
  delay(10);
  Blynk.begin(auth, wifi, "1st floor", "muda1884");
}
void loop()
{
  Blynk.run();
}
Code 2: Change the colors of RGB LED with Flasher
#define BLYNK_PRINT Serial    // Comment this out to disable prints and save space
#include <ESP8266_SoftSer.h>
#include <BlynkSimpleShieldEsp8266_SoftSer.h>
// Set ESP8266 Serial object
#include <SoftwareSerial.h>
SoftwareSerial EspSerial(2, 3); // RX, TX
ESP8266 wifi(EspSerial);
// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "a20b235cfa794f07981d050950fb4429";
#define red 11
#define green 10
#define blue 9 
void setup()
{
  // Set console baud rate
  Serial.begin(9600);
  delay(10);
  // Set ESP8266 baud rate
  // 9600 is recommended for Software Serial
  EspSerial.begin(9600);
  delay(10);
  Blynk.begin(auth, wifi, "username", "password");  // wifi username and password
}
BLYNK_WRITE(V1) 
{
  int x = param[0].asInt();
    while(x==1)
   {
    x = param.asInt();
    int i=0,j=0,k=0;
    analogWrite(red, 255);
    analogWrite(green, 255);
    analogWrite(blue, 255);
      for(int j=0;j<20;j++)
      {
       analogWrite(red, 0);
       analogWrite(green, 255);
       analogWrite(blue, 255);
       delay(100);
       analogWrite(red, 255);
       analogWrite(green, 0);
       analogWrite(blue, 255);
       delay(100);
       analogWrite(red, 255);
       analogWrite(green, 255);
       analogWrite(blue, 0);
       delay(100);
        x = param.asInt();
        if(x==0)
        break;
      }
    analogWrite(red, 255);
    analogWrite(green, 255);
    analogWrite(blue, 255);
    for(int z=0;z<10;z++)
    {
    for(i=0;i<=180;i++)
    {
            analogWrite(red, 180-i);
            delay(2);
    }
    analogWrite(red, 255);
    for(j=0;j<255;j++)
    {
            analogWrite(green, 255-j);
             delay(2);
    }
    analogWrite(green, 255);
    for(k=0;k<255;k++)
    {
            analogWrite(blue, 255-k);
             delay(2);
    }
    analogWrite(blue, 255);
     x = param.asInt();
     if(x==0)
     break;
    }
    analogWrite(red, 255);
    analogWrite(green, 255);
    analogWrite(blue, 255);
        for(int z=0;z<5;z++)
    {
    for(j=0;j<255;j++)
    {
            analogWrite(green, 255-j);
             delay(20);
    }
    for(k=0;k<255;k++)
    {
            analogWrite(blue, 255-k);
             delay(20);
    }
        for(i=0;i<=180;i++)
    {
            analogWrite(red, 180-i);
            delay(20);
    }
    analogWrite(red,180);
     x = param.asInt();
     if(x==0)
     break;
    }
   if(x==0)
   break;
  }
    analogWrite(red, 255);
    analogWrite(green, 255);
    analogWrite(blue, 255);
}
void loop()
{
  Blynk.run();
}

 

相关文章:

  • [MySQL初阶]MySQL(5)内置函数详解
  • 【搜索】P3654 First Step (ファーストステップ)
  • 备考六级:词汇量积累(day4)
  • 嵌入式学习L5D2-exec函数族和守护进程
  • 基于uniapp的蓝牙打印功能(佳博打印机已测试)
  • Linux 用户与组管理详解
  • 【LeetCode 热题 100】3. 无重复字符的最长子串 | python 【中等】
  • 算法策略深度解析与实战应用
  • 项目实战:Qt图像拼接渐进色图层生成工具v1.0.0(预设四路拼接,多路可通过多图叠层实现)
  • 再论滑动窗口与行头阻塞
  • Ai-web 1.0靶场通关攻略
  • 【HeadFirst系列之HeadFirst设计模式】第16天之生成器模式(Builder Pattern):让对象构建更优雅!
  • [力扣每日一练]关于所有不同域名的查找
  • 在命令的轨迹中:创建、删除与查看普通用户,Linux用户管理的风华与深邃
  • 嵌入式 ARM Linux 系统构成(4):设备驱动程序
  • 第十五届蓝桥杯 Python B 组省赛(满分题解)
  • 物联网的隧道监测场景中,要实现全面且有效的监测
  • 模型 - Qwen 2.5
  • 深度学习模型Transformer初步认识整体架构
  • 《几何原本》命题I.16
  • 网站开发绩效考核与薪酬/网站建设与管理属于什么专业