【电子DIY作品】智能家居全彩LED小夜灯,WB2

[复制链接]
查看2688 | 回复15 | 2023-9-3 21:54:18 | 显示全部楼层 |阅读模式
本帖最后由 业余菜狗 于 2023-9-3 23:33 编辑

WB2开发板做了一个能加入HA的全彩LED小夜灯,
代码里面包含WiFi,mqtt,pwm,easyflash,我把我理解的都注释上去了.整个代码都是抄的demo.
  • 连接WiFi
先拿Ai-Thinker-WB2/applications/protocols/mqtt/tcp/例程进行编译,编译成功后,烧录到板子上面去.
上电之后先确认板子有没有连上WiFi,这个在路由器后台可以看到,之后在mqtt服务器后天查看WB2是不是有连接上MQTT服务器,
没连上!为啥?~~~忘了改代码里面的MQTT服务器IP.(这里多谢群友提醒,服务器地址不包含"mqtt://"的前缀,只是纯IP地址)
再次编译上传,mqtt服务器后台可以看到WB2连上mqtt服务器了.
我用的是emqx的开源服务器,可以在服务器里面看到有订阅一个主题,尝试向这个主题发送一个信息,然后用调试器看WB2输出.
这里顺带一提默认波特率是115200,烧录器默认的波特率是2000000,要改.
WB2串口输出,发现WB2收到的mqtt是在一个看不懂的函数里面执行的,里面执行的代码就是把收到的主题和信息打印出来.顺带把订阅和发送的函数也找到了.
  • 远程点亮LED
那就在处理信息这里改,改成判断收到的信息是不是"ON"或者"OFF",如果是,那就开启或关闭LED(这里的判断,出了很多问题,在妖哥个帮助下,抄了一个arduino的代码才成功判断).
因为要LED亮起来,程式到这里也就加上了Ai-Thinker-WB2/applications/get-started/blink/里面的闪灯代码.
  • 加上pwm调整亮度
光亮起来,明显是不够的,明显还需要加上一个pwm程式来调节LED的亮度,这里就把blink里面的代码删除,换成Ai-Thinker-WB2/applications/peripherals/demo_pwm/里面的代码,这里面的代码正好是控制那个板载LEDRGB.不过我嫌pwm的代码太繁琐,就给它封装了一个RGB.h库丢那里让我引用就可以了,库里面就一个函数:RGB(R,G, B, BL),这个函数有4个参数,分辨是颜色参数的RGB的值和亮度值.
但是新的问题来了,mqtt收到的信息是字符串,但是RGB需要的参数是数值,比如收到的信息是"255,0,0",需要分割成255,0,0三个数值.
我在网上找了一大圈,最后用了个笨方法把收到的信息进行历遍分解,这样代码就很长很不好看,不过后面在群友杰哥的帮助下,用了个函数分解出来了.
到现在为止,已经可以用mqtt方式无线控制LED的颜色、亮度和开关了.
不过这样还是有个问题,就是在断电重新上电之后LED的颜色、亮度和开关状态都会被重置,需要有个地方储存这些参数.
  • 存储数据到flash
存哪里呢?存服务器上?不行,因为这样就会导致,WB2上电后还没有连上WiFimqtt服务器的这段时间,没有接收到参数,不会亮的.
所以需要把数据存在WB2,然后我就找到了Ai-Thinker-WB2/applications/storage/easyflash/这个demo,把这个demo改一下也加入到我们的代码中来.
然后设定程式,在启动的时候从WB2flash中读取出数据,在去连接WiFimqtt,也需要在每次收到命令时将数据存到flash里面.
  • 总结
制作过程的全过程大致就是这样了,总结一下代码流程:
上电--->读取flash--->点亮LED--->连接WiFimqtt--->订阅设置主题--->处理收到信息--->更新LED状态--->上传LED状态--->保存LED状态到flash

看看演示效果:
output.gif
玩过HA的都知道设备一旦加入了HA,那么它就具有巨大的可玩性,即使只是一个LED.
这是亮度调节
亮度.png
这是颜色调节
颜色.png
可以直接输入参数
颜色数值.png
还可以通过自动化做出很多好玩的场景联动
自动化.png




mqtt_LED_rgb.zip

8.64 KB, 下载次数: 31

本帖被以下淘专辑推荐:

回复

使用道具 举报

ai_mcu | 2023-9-3 22:03:11 | 显示全部楼层
代码里的注释辛苦狗哥了
明天总会更好
回复 支持 1 反对 0

使用道具 举报

Mr.Tail | 2023-9-4 10:12:02 | 显示全部楼层
狗哥牛逼!
回复

使用道具 举报

爱笑 | 2023-9-4 13:44:16 | 显示全部楼层
狗哥棒棒!
用心做好保姆工作
回复

使用道具 举报

iiv | 2023-9-9 08:52:56 | 显示全部楼层
插眼
回复

使用道具 举报

WYG | 2023-9-10 22:54:08 | 显示全部楼层
打卡
回复

使用道具 举报

cainia | 2023-9-30 21:37:30 | 显示全部楼层
专业
回复

使用道具 举报

啥也不会 | 2023-11-11 16:22:01 | 显示全部楼层
想问一下mqtt_client.h的库要怎么加入工程中,我不会搞
回复 支持 反对

使用道具 举报

干簧管 | 2023-11-13 10:08:58 | 显示全部楼层
狗哥牛逼!
回复

使用道具 举报

业余菜狗 | 2023-11-18 11:27:46 来自手机 | 显示全部楼层
啥也不会 发表于 2023-11-11 16:22
想问一下mqtt_client.h的库要怎么加入工程中,我不会搞

直接拿我那个demo改
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则