月球计划—ESP8266接入小爱同学控制彩灯

之前的文章「小爱同学控制EP8266点灯」介绍了如何借助Blinker平台接入小爱同学,通过ESP8266控制点灯。Blinker官方例程中使用的是RGB灯,可以调节颜色的,手头刚好找到块RGB彩灯板子,顺便网购了个外壳,接下来分享月球声控彩灯的DIY过程。

在网上找到个灰常漂亮的月球小夜灯外壳,我看到的图片是这样子的:

月球外壳

然后我网购到的是这样子的:
实物

好吧,不得不说,图片比实物好看对不对。然后我也没有收到支架,额,可以考虑吊起来?毕竟月亮高高挂。

所需器件:
  • ESP8266开发板
  • 40 RGB LED灯板
  • 双面洞洞板
  • 排母
  • 电源线

器件

DIY过程:

首先需要将开发板和灯板通过洞洞板连接在一起,我使用了排母,方便灯板和开发板随时能取下来。电路接法非常简单,ESP8266开发板的D4引脚「内部连接ESP8266的GPIO2」连接灯板的数字引脚6,然后电源5V从灯板接入,灯板上的5V和GND分别连接到开发板的Vin和GND,灯板和开发板只需要3根线的连接。

焊接ESP8266开发板对应的排母:

开发板排母

焊接灯板的排母,然后连接电源线和数据线,原谅我丑陋的锡接过线,这种双面洞洞板真的不好焊接。

锡接过线

两块板子通过洞洞板插在一起,还是挺牢固的:

组合

然后将电源线焊接在灯板上:

焊接电源线

将程序下载到开发板,上电来确认下灯板是否可控。详细的下载及接入小爱流程请参照「小爱同学控制EP8266点灯」文章,本篇程序在文末获取。

点亮测试

接下来,要把板子固定进灯罩外壳,灯罩开口是这样的:

外壳开口

非常尴尬,外壳开口处根本没法固定板子,除非自己按照圆形盖子做PCB,然后再粘在上面。

无奈下只有硬来,之前洞洞板为了能放入开口,切割下一长条,然后就利用了这个长条,将它粘贴在ESP8266板子背面,然后两头固定了铜柱,在开口处打了两个孔位,使用螺丝进行固定。

双面胶

粘贴长条

固定铜柱

固定到外壳

最后还是使用双面胶,将盖子粘到开口。

封口

至此造月完成,最终还是没有吊起来,用了胶带支起来,凑合用了。上几张效果图:

绿色

橙色

黄色

东西做完了,放一边留给糖宝玩了。可能我所享受的只是DIY的过程,你呢?附上演示视频:

视频演示


关注公众号「TonyCode」,后台回复「月球」获取文中代码资源。
回复「1024」获取1000G学习资料。
个人博客
在这里插入图片描述

### ESP8266 控制 WS2812 示例代码及教程 #### 使用的硬件组件 为了实现ESP8266控制WS2812带的功能,所需的硬件组件包括ESP8266 NodeMCU开发板、3米长带有90颗LED珠的WS2812带以及电源模块和杜邦线[^1]。 #### 安装必要的库文件 在Arduino IDE环境中编写程序之前,需安装`Adafruit NeoPixel`库来简化对WS2812带的操作。可以通过Arduino库管理器轻松找到并安装该库。 #### 初始化设置 定义用于连接到Wi-Fi网络的SSID和密码,并指定数据针脚编号与的数量: ```cpp #include <WiFi.h> #include <Adafruit_NeoPixel.h> const char* ssid = "YOUR_SSID"; const char* password = "YOUR_PASSWORD"; #define PIN D4 // 数据引脚接NodeMCU的D4管脚 #define NUMPIXELS 90 // 带上的像素数量 Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); ``` #### 连接到Wi-Fi网络 通过下面这段代码可以让ESP8266尝试接入设定好的无线局域网环境: ```cpp void setup() { Serial.begin(115200); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.println("Connecting to WiFi.."); } Serial.print("Connected with IP Address: "); Serial.println(WiFi.localIP()); pixels.begin(); // 启动NeoPixels } ``` #### 创建简单的光效果函数 这里提供了一个名为`colorWipe()`的方法,它会逐个点亮所有的RGB LED直到达到给定的颜色为止;还有另一个方法叫做`rainbowCycle()`用来创建彩虹渐变的效果: ```cpp // Fill the dots one after another with a color void colorWipe(uint32_t c, int wait) { for(int i=0; i<NUMPIXELS; i++) { pixels.setPixelColor(i, c); pixels.show(); delay(wait); } } // Input a value 0 to 255 to get a color value. uint32_t Wheel(byte pos) { if(pos < 85) { return pixels.Color(pos * 3, 255 - pos * 3, 0); } else if(pos < 170) { pos -= 85; return pixels.Color(255 - pos * 3, 0, pos * 3); } else { pos -= 170; return pixels.Color(0, pos * 3, 255 - pos * 3); } } void rainbowCycle(unsigned long wait) { uint16_t numPixels = pixels.numPixels(); uint16_t i, j; for(j=0; j<256*5; j++) { // 5 cycles of all colors on wheel for(i=0; i<numPixels; i++) { pixels.setPixelColor(i, Wheel(((i * 256 / numPixels) + j) & 255)); } pixels.show(); delay(wait); } } ``` #### 主循环逻辑 最后,在主循环里调用上述定义的各种动画效果即可让具展示出不同的视觉体验: ```cpp void loop() { // Some example neopixel animations, you can add more or change them as needed // Simple test effect: colorWipe(pixels.Color(255, 0, 0), 50); // Red wipe colorWipe(pixels.Color(0, 255, 0), 50); // Green wipe colorWipe(pixels.Color(0, 0, 255), 50); // Blue wipe // Rainbow cycle animation: rainbowCycle(20); } ``` 以上就是利用ESP8266配合WS2812制作智能氛围的基础指南。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值