ESP32线控LED与温湿度监控

上一篇文章讲述了如果将ESP32与Google助手结合起来做一个声控LED灯,但是后来发现连接Adafruit IO的网络状态不太好,而且我们购买的国产模块并不需要接100Ω电阻。这次我们直接抛弃掉声控,改为USB线控,配合一个桌面客户端进行控制。我们可以直接在电脑上看到温湿度,下面的拾色器可以任意调节LED灯的颜色,右侧的开关决定了是否开启炫彩效果,如果需要关灯的话只需要把颜色调到黑色即可。

开源代码:ESP32 Wire-controlled LED with DHT22 Sensor

ESP32

在ESP32上我们并联了两个KY-009兼容的LED模块,连接情况如下表(RGB仍为标注值,真实值参考上一篇文章的表格):

模块 ESP32
R G27
G G14
B G32
- GND

同时我们连接DHT22模块:

模块 ESP32
+ 3V3
out G17
- GND
+ G0

这里我们直接把VCC与G0相连的原因是如果我们不能把G0电平拉高,板子在启动的时候会进入Flash Mode,而不是正常执行程序。那样的话我们无法通过串口通信读取到我们需要数据和发送控制数据。当连接好之后我们刷入程序,源代码在文中给出的GitHub链接中可以下载。因为我发现如果在炫彩效果下,串口通信可能被阻塞,所以优化了一下串口通信的处理函数,但是实际测试发现如果频繁开关的话可能无法及时处理,一般情况下没有问题。温度是每两秒上报一次,如果在炫彩模式下可能需要的时间延长,不太影响最终效果。

Desktop

我最终选择了Electron来开发客户端,因为我发现越来越多开发商青睐这么一款能够直接写HTML来做UI的开发方式,结合Node.js的事件处理机制,我们也能够非常方便对串口拿到的数据进行更新。我的软件版本如下:

  • Windows 10
  • Node.js v12
  • Electron 9

我们串口通信使用的是SerialPort库,用于Electron的时候需要使用electron-rebuild重新编译一下。在编译前我们需要安装windows-build-tools库,这会在你本地安装Python 2.7和VS编译环境,安装完成后参考electron-rebuild的官方文档进行安装、重编译即可。在这个过程中如果你遇到了node.lib库损坏的问题,直接删除electron-gyp中的node.lib即可。程序没有什么特别好说明的,代码经验不足,所以看上去并不美观,还请见谅。这里我直接使用的my-assistant命名项目,大家可以随意更改。

这次的文章就到这里,因为最近不论是课内还是课外的事比较多,所以博客更新会放慢,非常感谢大家的支持。

  • 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 许可协议。转载需要标明作者,并以超链接的方式指向原文。
  • Copyrights © 2020 Kevin Li
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~