使用的是 ws2812数字灯珠 + esp826601s +mqtt 使用arduino IDE开发
能够实现使用mqtt控制多种彩灯模式
效果演示:
链接
ws2812数字灯珠

有信号的输入和输出
有信号的输入和输出
DO是信号输出 DI是信号输入
将多个RGB灯串联,信号进行传输然后实现灯带。

有很多种 我使用是这种来充当led灯

联合esp826601s使用
只需要一个GPIO给ws2812 信号端就可以
因此考虑使用esp8266 -01s的GPIO2
对esp8266 mqtt 使用arduino开发没有基础的同学可以先看这几篇文章
http://niehen.cn/esp8266/esp8266-mqtt-%e4%bd%bf%e7%94%a8arduino%e5%bc%80%e5%8f%91%e6%95%99%e7%a8%8b/
http://niehen.cn/esp8266/mqtt%e5%8d%8f%e8%ae%ae%e4%bb%8b%e7%bb%8d%e4%b8%8e%e5%ba%94%e7%94%a8/
http://niehen.cn/esp8266/esp8266-01s%e4%bb%8b%e7%bb%8d/
前期使用 fast led 库 多次尝试不成功,
查资料发现 由于ws2812 需要连续的扫描 频率很大,而esp01s频率不足所以在前期尝试的时候都没成功,但是使用ws2812只需要一个引脚 使用12f显得浪费
查找了很多资料发现使用Adafruit_NeoPixel.h 可以实现
下面会讲
只需要ws2812 的信号引脚接到 esp01s的GPIO2
5v接到电源5v
GND接地
这里推荐使用 这种模块 方便简单

接线省事很多

Adafruit_NeoPixel库
用于控制基于单线的LED像素和条带
安装
IDE内安装:
- 在arduino IDE中 项目—》加载库----》管理库
- 然后使用搜索栏搜索Neopixel strip。
- 选择版本进行安装
源码安装:
- 找到源码 GitHub链接下载下来
- 下载后,将文件夹重命名为“ Adafruit_NeoPixel”并安装在Arduino Libraries文件夹中
- 重新启动Arduino IDE,打开示例 找到这个库的示例代码
支持的芯片

使用
有两种创建灯带形式
- GRB:绿红蓝三基色 值从0到255
- GRBW:在RGB的基础上加上一种白光,增加亮度的作用。
Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUM_LEDS, PIN, NEO_GRB + NEO_KHZ800); // 创建 GRB灯带
Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUM_LEDS, PIN, NEO_GRBW + NEO_KHZ800); // 创建 GRBW灯带
在使用时 显示的形式不一样
函数
- begin() 灯带初始化
- setPixelColor() 设置灯带的颜色(第一个参数是灯珠索引,第二个是颜色值(GRB或GRBW))
- setBrightness() 设置灯带的亮度(第一个参数是灯珠索引,第二个是亮度值0-255)
- show() 显示灯带
…
这些函数控制对象 就是前面创建的灯带对象(可以看下面的示例代码)
在使用时可以根据自己需要显示的样子
编写控制灯珠颜色 亮度变化的代码
当然也可以使用这个库提供的一些示例代码 也是很有意思的
彩灯模式
彩虹灯
void rainbowCycle(uint8_t wait) {
uint16_t i, j;
for(j=0; j<256*5; j++) { // 5 cycles of all colors on wheel
for(i=0; i< pixels.numPixels(); i++) {
pixels.setPixelColor(i, Wheel(((i * 256 / pixels.numPixels()) + j) & 255));
}
pixels.show();
delay(wait);
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
另一种彩虹灯
void rainbow(uint8_t wait) {
uint16_t i, j;
for(j=0; j<256; j++) {
for(i=0; i<pixels.numPixels(); i++) {
pixels.setPixelColor(i, Wheel((i+j) & 255));
}
pixels.show();
delay(wait);
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
更多彩灯模式 可以到Adafruit_NeoPixel 库的示例中进行查找 使用
项目参考代码在下方
更多学习教程
ESP开发学习基础知识
基础知识包括对esp模块的认识与了解 mqtt协议的了解,arduino IDE运用代码编写等等。
- arduino基础学习
- esp系列模块的介绍
- mqtt协议的介绍与使用
- 利用mqtt esp模块 基于arduino IDE开发方法
- esp模块的AT指令 刷固件
- esp模块睡眠模式使用
- esp8266-01s介绍与使用
- esp8266-12f介绍与使用
- NodeMcu介绍与使用
esp开发IOT应用
基于esp8266的模块以及其他模块根据实际的应用场景与需求制作的物联网应用
- 基于FRID arduino 继电器 电磁锁开发的FRID门禁系统
- esp32-cam获取视频流图像处理
- 基于步进电机 esp8266 mqtt开发的自动窗帘控制
- 基于DHT11 Esp8266 mqtt获取室内温湿度
- 基于CCS811 esp8266 mqtt 获取室内空气质量
- 基于红外模块 esp8266 mqtt开发的智能遥控控制
- 基于ws2812 esp8266 mqtt开发的智能多级照明灯
- 基于ws2812 esp8266 mqtt开发的智能多模式氛围灯
- 基于mp3player esp8266 mqtt开发的智能语音播报系统
- IOT综合应用之智慧教室项目开发
如果以上内容对你有帮助或是对IOT开发感兴趣,欢迎关注我。
本人接下来一段时间承接人脸图像处理,IOT开发等相关项目(毕设 比赛等)
有需要可联系qq:1639206518
![]()
我的个人主页
我的专栏:人工智能领域,希望能帮助到大家!!!点赞❤ 收藏❤
![]()
![]()
引言
在当今科技飞速发展的时代,人工智能(AI)无疑是最为耀眼的领域之一。众多技术与平台如繁星般涌现,而DeepSeek以其独特的姿态,宛如一条强力的鲶鱼,在人工智能产业的广阔水域中掀起了阵阵波澜。它不仅带来了技术上的创新突破,更在产业格局、开源生态以及社会经济等多个层面引发了深刻变革。本文将深入剖析DeepSeek对人工智能产业所产生的鲶鱼效应,全方位解读其带来的机遇与挑战,通过代码展示其部分技术实现的魅力。
一、DeepSeek技术突破剖析
1.1 模型架构创新
DeepSeek在模型架构方面展现出了卓越的创新能力。以其推出的语言模型DeepSeek - L为例,它采用了一种全新的分层注意力机制(Hierarchical Attention Mechanism),相较于传统的Transformer架构,这种机制能够更有效地处理长序列数据,捕捉文本中的多层次语义信息。
传统Transformer架构的核心是自注意力机制(Self - Attention):
import torch
import torch.nn as nn
def scaled_dot_product_attention(query, key, value, mask=None):
d_k = query.size()[-1]
scores = torch.matmul(query, key.transpose(-2, -1)) / torch.sqrt(torch.tensor(d_k, dtype=torch.float32))
if mask is not None:
scores = scores.masked_fill(mask == 0, -1e9)
attention_weights = nn.functional.softmax(scores, dim=-1)
return torch.matmul(attention_weights, value)
class MultiHeadAttention(nn.Module):
def __init__(self, d_model, num_heads):
super(MultiHeadAttention, self).__init__()
self.d_model = d_model
self.num_heads = num_heads
self.depth = d_model // num_heads
self.wq = nn.Linear(d_model, d_model)
self.wk = nn.Linear(d_model, d_model)
self.wv = nn.Linear(d_model, d_model)
self.dense = nn.Linear(d_model, d_model)
def split_heads(self, x, batch_size):
x = x.view(batch_size, -1, self.num_heads, self.depth)
return x.permute(0, 2, 1, 3)
def forward(self, v, k, q, mask):
batch_size = q.size(0)
q = self.wq(q)
k = self.wk(k)
v = self.wv(v)
q = self.split_heads(q, batch_size)
k = self.split_heads(k, batch_size)
v = self.split_heads(v, batch_size)
attention = scaled_dot_product_attention(q, k, v, mask)
attention = attention.permute(0, 2, 1, 3).contiguous()
concat_attention = attention.view(batch_size, -1, self.d_model)
output = self.dense(concat_attention)
return output
class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">
评论记录:
回复评论: