使用NodeMCU将Wi-Fi控制的照明添加到您的计算机

自隐藏在桌子下方的灰色塑料塔楼以来,台式PC塔楼已经走了很长一段路。除具有不同功能的机箱外,PC机箱也逐渐发展出一种美学感,玻璃面板自豪地展示了组件,强大的未来派设计成为所有傲慢怪胎桌子上的焦点。

LED装置正变得越来越流行比较普遍;普遍上。一条简单的 12v RGB 条带可以每米低至1美元的价格购买,并且可以很好地照亮箱子的内部(以及几乎所有其他东西)。

但是,我们想做些比这更特别的事情!今天,我们将使用像素LED来创建Wi-Fi可控的箱体照明,并带有自定义的如果那么那么(IFTTT)通知。整个系统使用塔内的备用Molex连接器供电,使其完全独立。最棒的是,整个项目的制作成本不到10美元。

本教程可通过下面的视频形式获得,或者继续阅读书面版本。

大脑发光

我们将为该项目使用可单独寻址的LED。有时称为 Neopixels ,有多种模型可供选择。此处使用的LED来自 WS2812B 灯带,每米约4美元。

我们将使用 NodeMCU 板进行控制。尽管您可以将任何Arduino兼容板与Wi-Fi结合使用,但NodeMCU作为Arduino杀手已成为我们的最爱。

您需要什么

  • 1 x 5v像素LED灯带,Neopixel / WS2811 / 12 / 12B
  • 1 x NodeMCU(在AliExpress上为$ 3)
  • 1 x 220-500欧姆电阻
  • 1 x 100-1000微法电容器
  • 1 x拨动开关或断路器
  • 1 x插座Molex连接器
  • 1 x面包板
  • 1 x 5v电源(用于测试) )
  • 1 x原型板和电线(用于安装电路)
  • 各种连接线
  • 烙铁和焊料
  • 此列表中唯一与众不同的是 Molex 连接器。如今,许多PC所有者完全不使用CD驱动器,尽管仍然为他们提供了电源。我们可以利用这些备用电源线来发挥我们的优势。我可以从旧的磁盘驱动器上挽回我的母连接器,尽管它们的价格仅为0.30美元。

    构建电路

    为避免不必要的打扰,我们将测试一下使用外部电源进行设置。像这样设置面包板。

    如果这是您首次设置此类LED,我建议您仔细阅读我们的深入指南,以首先将这些灯条与Arduino一起使用。

    该开关仅使NodeMCU脱离电路。在此构建中,我实际上将使用一个简单的断路器来代替开关。它的功能是允许我们通过USB连接时隔离板的 VIN 引脚。虽然我们的LED将消耗的功率相对较小,但最好避免通过USB拉动过多的功率。

    一旦安装好面包板,其外观应如下所示:

    在我的示例中,电容器和电阻器已经在原型板上使用,尽管电路是完全相同的,但电路是完全相同的。

    现在我们有了硬件设置,让我们创建代码。

    操作的大脑

    您将使用Arduino IDE编码NodeMCU。在此示例中,我们将设置两种操作模式,一个主开关,以及在收到电子邮件时的通知信号。我们将使用物联网设备的Web服务Blynk与我们的开发板进行通信。

    如果您以前从未使用过Blynk入门文章,请确保您阅读了该文章。

    在Blynk应用中,设置一个新项目,然后选择NodeMCU作为您的板。授权码将发送到您在Blynk注册的电子邮件地址。添加 3个按钮 3个滑块

    这些按钮和滑块应设置为向虚拟引脚V0-V5发送值。 “测试"按钮将立即测试我们的电子邮件通知。标记其他两个按钮电源自动/手动或类似名称,这三个滑块分别用于红色绿色 Blue

    现在打开Arduino IDE。您将需要Blynk和FastLED库用于该项目,因此请确保已安装。如果您刚开始使用Arduino IDE,请查阅我们的Arduino初学者指南。

    我们将在这里将代码分解成小块,尽管如果您只想下载完整的代码,则可以找到

    如果要决定这样做,请确保在脚本中添加自己的Wi-Fi详细信息,授权代码以及相关的NodeMCU引脚和LED数量。如果您刚刚开始学习编程,那么我将从头开始进行学习,以了解每个部分的工作方式。这是掌握编码的多种方法之一。

    创建一个新草图并用适当的名称保存。确保从工具>面板工具>端口菜单中选择正确的板和端口。首先包括相关的Blynk和FastLED命名空间:

    #define BLYNK_PRINT Serial#include <ESP8266WiFi.h>#include <BlynkSimpleEsp8266.h>#include "FastLED.h"

    下一步,为FastLED添加一些定义:

    //---FastLED definitions and CRGB---#define LED_PIN 3 // GPIO pin for RGB LEDs.#define NUM_LEDS 44 // Number of LEDs connected.#define BRIGHTNESS 64 // Default LED brightness.#define LED_TYPE WS2812B#define COLOR_ORDER GRBCRGB leds[NUM_LEDS];

    接下来,我们将为RGB值声明变量,即自动/手动模式,以及我们的主开关。我们还将为以后将使用的FastLED预设添加所需的基础颜色值。

    //---variables for our RGB values (0-1023) ---int r = 500;int g = 500;int b = 500;//---variables for On/Off, and Auto/Manual toggleint masterSwitch = 1;int autoMode = 1;//--- int/byte for automatic hue incrementation---uint8_t gHue = 0; // rotating "base color" used by many of the patterns

    添加Blynk详细信息时,请确保在此处填写您自己的Wi-Fi详细信息:

    //---Blynk auth code and wifi details---char auth[] = "YourAuthCode";//Blynk authorisationchar ssid[] = "YourWifiName";char pass[] = "YourWifiPassword";

    我们使用设置功能将LED添加到FastLED,并与Blynk建立通信。

    void setup() {  // power-up safety delay  delay(3000);  Serial.begin(9600);  //--- add the LEDS to FastLED and set the brightness---  FastLED.addLeds<LED_TYPE, LED_PIN, COLOR_ORDER>(leds, NUM_LEDS).setCorrection(TypicalSMD5050);  FastLED.setBrightness(BRIGHTNESS);  #define FRAMES_PER_SECOND 120  //---start communication with the Blynk server ---  Blynk.begin(auth, ssid, pass);}

    在Loop函数中使用if语句根据您所处的模式进行不同的操作。

    void loop() {  Blynk.run();  if(masterSwitch == 0) {    for (int i = 0; i < NUM_LEDS; i++) {      leds[i] = CRGB::Black;      FastLED.show();      delay(30);    }  }  if(autoMode == 0 && masterSwitch == 1) {    for (int i = 0; i < NUM_LEDS; i++){      leds[i] = CRGB(r, g, b);      FastLED.show();      delay(30);    }  }  if(autoMode == 1 && masterSwitch == 1) {    fill_rainbow( leds, NUM_LEDS, gHue, 7);    // send the 'leds' array out to the actual LED strip    FastLED.show();     // insert a delay to keep the framerate modest    FastLED.delay(1000/FRAMES_PER_SECOND);     EVERY_N_MILLISECONDS(20) {      gHue++; // slowly cycle the "base color" through the rainbow    }   }}

    现在,根据您在Blynk应用中选择的内容,使用 BLYNK_WRITE 函数更改这些变量:

    //---Master On/Off---BLYNK_WRITE(V0) {  masterSwitch = param.asInt();}//--- Red slider value---BLYNK_WRITE(V1) {  r = param.asInt();}//--- Green slider value---BLYNK_WRITE(V2) {  g = param.asInt();}//--- Blue slider value---BLYNK_WRITE(V3) {  b = param.asInt(); }//--- Toggle Auto/Manual Mode ---BLYNK_WRITE(V4) {  autoMode = param.asInt();}

    最后,创建一个函数导致一连串的红色指示灯用作您的电子邮件通知。此功能旨在触发其他任何事件,这意味着即使当前灯光不亮,您也始终会收到通知。

    //---Email notification light---BLYNK_WRITE(V5) {  int g = param.asInt();  if(g == 1) {    for(int a = 0; a < 10 ; a++) {      for (int i = 0; i< NUM_LEDS; i++) {        leds[i] = CRGB(1023, 0, 0);        FastLED.show();        delay(10);        FastLED.clear();        delay(10);      }    }  }}

    一旦有了完整的代码,请使用开关/电路断路器将NodeMCU与电路隔离,然后通过USB插入。将草图上载到板上。上传后,断开USB电缆的连接,然后连接5v电源。一切正常,LED灯带应以自动模式启动,这是FastLED的 fill_rainbow 模式。您可以使用“测试"按钮来测试通知信号。

    正如您在此处看到的那样,我将LED大致放在机箱的侧面,这样我就知道需要多少。在我的情况下为44,尽管我使用的是迷你塔,所以您也许可以使用更多的塔。只需确保考虑到您使用的LED的功耗,以及您的PC电源可以提供多少。

    配置IFTTT

    我们将使用 IFTTT Gmail集成以触发我们的通知顺序。如果您以前从未使用过IFTTT,那么您会惊讶于可以自动执行自己喜欢的网络应用程序的众多方法。

    设置一个新的applet。对于“此",从 Gmail 频道中选择收件箱中的任何新电子邮件。对于“那个",选择 Maker Webhooks 提出Web请求

    URL部分是我们称为通知图钉的位置。您将需要修改URL才能使用您的项目。格式为 http:// BlynkIpAddress / YourAuthCode / pin / V5 。您可以通过在命令提示符下键入 ping blynk-cloud.com 来找到Blynk ip。

    选择 PUT 作为方法,并以 application / json 作为内容类型。最后,将 [“ 1"] 添加到 Body 部分,然后单击 Create Action

    现在,每次电子邮件到达与IFTTT关联的Gmail地址的收件箱中,它将向Blynk服务器上的虚拟Pin 5发送“ 1"消息,这将触发我们的通知。尝试给自己发送电子邮件进行测试。请耐心等待,IFTTT可能需要一些时间!

    现在,您可以根据需要摆脱Blynk应用程序中的“测试"按钮。

    将它们放在一起

    现在我们已经对所有内容进行了测试,现在该完成并安装硬件了。将项目从面包板移动到原型板上。如果您不熟悉焊接,并且正在寻找一些提示,请查阅我们的焊接指南。

    在将Molex连接器连接到板上之前,请注意要使用的引脚。来自PC电源的公连接器将具有四根电缆。黑色的两条电缆是公共接地电缆,黄色的电缆是+ 12v,红色的电缆是+ 5v。确保将母连接器的相应引脚连接到板上。我选择只连接两个插脚,以避免意外炸开我的电路板和LED!

    我决定在电路板和LED之间连接杜邦电缆,因此仍可以完全卸下PC机壳的侧面,而不必卸下原型板。我建议您先将LED放在外壳上,然后用胶带将其固定,以确保在关闭时它们能正确装入外壳内。

    注意:当您将LED灯条焊接在一起时,数据线需要全部沿相同方向流动。

    最后,将原型板安装到PC塔中。由于这是我的临时搭建物,因此我选择将板子的背面绝缘,然后将其拉链绑在我的箱子的背面。但是,您决定安装该板,请注意不要造成任何短路,并请注意内部组件上的静电危险。

    开明

    一切都很好,您应该拥有功能齐全的Wi-Fi供电的指示灯,并具有自动的电子邮件通知功能。现在您已经有了该系统,可以使用板上的kill开关,以便通过USB安全地插入NodeMCU并更改代码。您可以尝试添加与IFTTT集成的另一个通知(例如,在Twitter或Facebook上提到蓝灯),或尝试在FastLED库中使用自定义设置以使您的灯稍微动一下。

    具有您将LED安装到PC塔中了吗?您是否为他们设置了任何出色的自动化功能?在下面的评论部分中,让我们了解您的项目和计划!

    图片来源:David Brown / Flickr

    标签: 计算机机箱 电子产品 LED灯条