女朋友要求我,能用嘴解决的事就不要用手。
# 智能灯改造计划## 写在前面
* 女朋友最近购买了一个天猫精灵,每天都玩的不亦乐乎,真让人搞不明白一个机器语音助手有什么好玩的,和男朋友聊天他不香吗?后来一想,可能是她喜欢控制的感觉吧,看见周围的电器她都想控制一下,这不,冬天来了,每天关灯的时候老是在我耳边说,说什么能用嘴解决的事为什么要用手?这不拉着我非得改下这个氛围灯。。。
* 其实对于电子技术这一块其实我一直是保持了解的状态,真正动手去学的时间几乎没有,在经过百度、b站的调教下让我了解到了esp8266这个开发板和arduino,于是经过一番摸索之后,就这样开启了我的改造之旅。
# 硬件部分
* **必须:** 电烙铁、esp826601s开发板(体积小,NodeMcu也行)、esp8266-01的烧录器、WS2812B灯、电池充放模块、18650锂电池、杜邦线、DC口(其他电源输入口也行)。
* **非必须:** pcb电路板、电阻、单排母座、带线头子、天猫精灵(其他语音助手也行)、灯罩(推荐使用盐灯, 配合全彩灯带效果惊艳)
* **改装成品展示**
!(https://img-blog.csdnimg.cn/img_convert/d7a9008e24a5db38b4f3e354dbb744d7.png)
* **盐灯示意图**:(图来源自网络)
[!(https://img-blog.csdnimg.cn/img_convert/668172c64e7077e6c8b3f44c8bad6d85.png)](https://imgchr.com/i/rCbVB9)
## 实现原理
* 天猫精灵>MQTT服务器>blinker硬件(esp8266)>家居设备
## 实现功能
* 广域网中可以通过手机远程控制,来调节灯光颜色并控制开关
* 局域网中可以通过天猫精灵语音助手进行控制(其他语音助手需要修改代码)
## 改造过程
* 首先当然是搞破坏啦,先把灯给拆了,这是灯原来的样子
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201209190220979.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzkxNDkyNQ==,size_16,color_FFFFFF,t_70)
* 焊接充放模块,还原氛围灯移动电源的功能。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201209190237133.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzkxNDkyNQ==,size_16,color_FFFFFF,t_70)
* 这是灯和esp01s(由于不会PCB设计只有买成品,灯刚好是圆形的,12颗灯珠 )
!(https://img-blog.csdnimg.cn/img_convert/fe6d38db9dead528c6a36b66ff122de0.png)
* 这是连接好的样子
!(https://img-blog.csdnimg.cn/img_convert/e54c5f3b093c7de487ac404407cc9220.png)
* 开始组装
!(https://img-blog.csdnimg.cn/img_convert/6429a05ec5c6fb27953de360b9a38535.png)
# 软件部分
## 开发环境
* IDE:arduino
* 语言:C++
* 物联网接入平台:Blinker
* 使用到的函数库:FastLED、Adafruit_NeoPixel(WS2812系列灯珠库)、Blinker
## 开发步骤
1. 安装集成开发环境(https://pan.baidu.com/s/1N8Zi1GbcF2ZW1CZXlJUQ_w),提取码: ARDU
2. esp8266开发板安装
* 首先选择开发板管理网址,输入http://arduino.esp8266.com/stable/package_esp8266com_index.json
!(https://img-blog.csdnimg.cn/img_convert/2d2d6969560f1d75d29d8c6aaf58a821.png)!(https://img-blog.csdnimg.cn/img_convert/0e38dc78c4460aa3b823f646ea9689da.png)
!(https://img-blog.csdnimg.cn/img_convert/a9a437c17c58a1fbe1b8f8d1a73410a8.png)
*搜索esp8266选择安装
!(https://img-blog.csdnimg.cn/img_convert/c4cdc8869959f1d85001c480f6e277d2.png)
**注:** 如果网络安装不了,请下载[离线版本](https://pan.baidu.com/s/1O3E5LKtS9TqQVh8wBeX0cA)进行安装。提取码:8266
3. 导入(https://pan.baidu.com/s/1pqd9xeGJI_OwDZoD3X52hg),提取码:BLIN,压缩包解压缩后放入。
!(https://img-blog.csdnimg.cn/img_convert/f08843b84e77408175ff507f96ac400a.png)]
4. 选择com口和WIFIunio开发板
!(https://img-blog.csdnimg.cn/img_convert/7b85bf2470cbcf0210b8272f85cff629.png)]
5. 编译代码
!(https://img-blog.csdnimg.cn/img_convert/8c9efbfa99c4567e9a33120f93a6ca9d.png)
6. 上传代码
!(https://img-blog.csdnimg.cn/img_convert/b5aee7bf566a2c067199a6e9c7be4f28.png)]
7. 导入Blinker界面配置,并在进行调试,界面配置如下
```
{¨config¨{¨headerColor¨¨transparent¨¨headerStyle¨¨light¨¨background¨{¨img¨¨assets/img/bg/1.jpg¨}}¨dashboard¨|{¨type¨¨btn¨¨ico¨¨iconfont icon-n1¨¨mode¨ê¨t0¨¨1日常色¨¨t1¨¨文本2¨¨bg¨ì¨cols¨Ë¨rows¨Ë¨key¨¨ButtonKey1¨′x′Ë′y′ì¨speech¨|÷¨lstyle¨ê¨clr¨¨#EA0909¨}{ß9ßAßB¨iconfont icon-n2¨ßDêßE¨2温馨色¨ßGßHßIìßJËßKËßL¨ButtonKey2¨′x′é′y′ìßN|÷ßOêßP¨#00A90C¨}{ß9ßAßB¨iconfont icon-n3¨ßDêßE¨3跑马灯¨ßGßHßIìßJËßKËßL¨ButtonKey3¨′x′é′y′ÎßN|÷ßOêßPßU}{ß9ßAßB¨iconfont icon-n4¨ßDêßE¨4呼吸灯¨ßGßHßIìßJËßKËßL¨ButtonKey4¨′x′é′y′DßN||¨act¨¨cmd¨‡¨on¨¨电脑¨ßd′′—÷ßOêßPßU}{ß9ßAßB¨iconfont icon-n5¨ßDêßE¨5旋转灯¨ßGßHßIìßJËßKËßL¨ButtonKey5¨′x′é′y′òßN|÷ßOêßPßU}{ß9¨ran¨ßE¨灯光频率¨ßPßQ¨max¨¤y¨min¨¤FßIêßJÑßKËßL¨SliderKey¨′x′é′y′¤BßN|÷ßOé}{ß9¨col¨ßE¨颜色拾取¨ßP¨#389BEE¨ßIéßJÏßKÏßL¨RGBKey¨′x′Ë′y′ÎßN|÷ßOé}{ß9¨deb¨ßDéßIéßJÑßKìßL¨debug¨′x′é′y′¤DßN|÷}÷¨actions¨|÷¨triggers¨|÷}
```
* 配置好,界面如下图
[!(https://img-blog.csdnimg.cn/img_convert/c24174364306af88e2f37c1984842682.png)](https://imgchr.com/i/rCbBjg)
## 部分代码说明
* 数字信号传输引脚说明,esp01s建议选择RXD即PIN为3,不然容易报一些未知的错误,比如我之前选择的TXD作为信号传输的引脚,插上信号线会导致esp01s无法开机。esp8266 NodeMCU版建议选择GPIO14,即D5引脚。
* esp01s对应引脚功能说明
!(https://img-blog.csdnimg.cn/img_convert/07679b554fd4537ab04b560145c27d90.png)
* esp8266 NodeMCU引脚说明
!(https://img-blog.csdnimg.cn/img_convert/f8d199205d824671c6cdd6ee7150f598.png)
* 代码部分
```
#define PIN 14 //esp8266 输出引脚号(NodeMCU版,D5)
#define NUMPIXELS 12 //ws2812 灯数
```
* 修改该代码中的RGB,可以实现语音颜色的调节,由于官方默认的大红大紫接受不了,所以我已经修改了RGB值,如果相关的通知想要修改参数,可自行百度RGB颜色表,进行修改。但唤醒口令仍不变。
```
//天猫颜色模式
void aliGenieColor(const String & color)
{
BLINKER_LOG("need set color: ", color);
if (color == "Red") {
colorR = 255; colorG = 62; colorB = 150;
}
else if (color == "Yellow") {
colorR = 255; colorG = 215; colorB = 0;
}
else if (color == "Blue") {
colorR = 0; colorG = 191; colorB = 255;
}
else if (color == "Green") {
colorR = 144; colorG = 238; colorB = 144;
}
else if (color == "White") {
colorR = 255; colorG = 255; colorB = 255;
}
else if (color == "Black") {
colorR = 0; colorG = 0; colorB = 0;
}
else if (color == "Cyan") {
colorR = 0; colorG = 255; colorB = 255;
}
else if (color == "Purple") {
colorR = 155; colorG = 48; colorB = 255;
}
else if (color == "Orange") {
colorR = 255; colorG = 165; colorB = 0;
}
if (wsState == false) {
wsState = true;
colorW = 255;
}
if (colorW == 0) {
colorW = 255;
}
pixelShow();
BlinkerAliGenie.color(color);
BlinkerAliGenie.print();
}
```
* 呼吸灯效果
```
void breath()//呼吸灯
{
wsState = true;
for (int brt = colorW; brt > 0; brt--) {
colorW = brt;
pixelShow();
if (active())
{
break;
}
delay(1);
}
for (int brt = colorW; brt <201 ; brt++) {
colorW = brt;
pixelShow();
if (active())
{
break;
}
delay(1);
}
}
```
* **其他效果请看**
## 测试
* 通过语音改变颜色,天猫精灵现支持的控制颜色模式有
| 颜色 | 中文描述 |
| --- | --- |
|Red|红色 |
|Yellow|黄色|
|Blue| 蓝色 |
| Green |绿色|
| White | 白色 |
| Black | 黑色 |
|Cyan|青色|
|Purple|紫色|
|Orange|橙色|
* 天猫精灵支持控制的模式表
|模式|中文描述|
| --- | ---|
|reading|阅读|
|movie|影院|
|sleep|睡眠|
|holiday|假日|
|music|音乐|
|common|普通|
* 测试过程中发现天猫精灵只支持颜色模式和阅读与睡眠模式的调节,比如音乐模式等无法正常开启,但是Blinker中可以正常开启,导致这一现象的原因可能是天猫精灵官方改变了这些模式的接口,导致Blinker无法正常读取。(如果您解决或者知道这一问题,烦请告知。) 本帖最后由 人二 于 2021-1-8 13:12 编辑
视频效果演示地址:http://www.bilibili.com/video/BV ... 1E&ts=1607515864066
1.女朋友老是问我时间多久,于是我做了个计时器来。。。
https://www.52pojie.cn/thread-1304720-1-1.html
2.女朋友老是埋怨我技术不行,于是我做了个辅助工具。
https://www.52pojie.cn/thread-1306461-1-1.html
3.女朋友手速太慢,导致我无精打采。
https://www.52pojie.cn/thread-1346593-1-1.html
厉害厉害,所以女朋友天猫精灵和单片机在哪领 这标题简直就是文案鬼才 哇 浪漫致死啊 啧啧 我要是有女朋友我肯定也试试看 女朋友呢
女朋友在哪里? 墙都不扶就服你 牛{:1_918:} 女朋友在哪里领 这是个高手不解释 直接好家伙