非常感谢DigiKey、EEWorld共同举办的Follow me活动第二季的第二期,让我有体验Arduino UNO R4 WiFi 驱动温度传感器,上传温度到HA,通过HA面板显示数据的开发流程。
一、整体简介
任务简介:
本次的任务的最终目标介绍控制Arduino UNO R4 WiFi 驱动温度传感器,上传温度到HA,通过HA面板显示数据,任务1-3是逐步熟悉Arduino 开发平台的学习过程,并且在过程中体验Arduino 的一些外设。
硬件:
1、Arduino UNO R4 WiFi
2、AHT30 传感器(飞线了,拆了也不好看,索性留着)
3、DAC实验中用到的电阻
硬件简介:
Arduino UNO R4 WiFi 是一款集成了Wi-Fi和蓝牙功能的Arduino开发板。基于R7FA4M1芯片和ESP32-S3芯片,不仅继承了Arduino UNO R3的特性,还增加了联网功能。拥有一个12x8的LED点阵屏、Qwiic连接器等。Arduino UNO R4 WiFi的芯片完整型号为R7FA4M1AB3CFM,ESP32模组的完整编号为ESP32-S3-MINI-1。
AHT30是一款高精度的温湿度传感器,具有低功耗、优异的长期稳定性和快速响应能力。支持I²C接口,并且具有宽电压支持,范围在2.2到5.5 VDC。它配备了一个全新优化的ASIC专用芯片、一个经过改进的MEMS半导体电容式湿度传感元件和一个标准的片上温度传感元件,即使在恶劣环境下也能保持稳定性能。
二 、任务详情
任务一
目标:“搭建环境并开启第一步Blink / 串口打印Hello EEWorld!”
任务一主要是验证开发环境安装完毕,代码就比较简单,硬件就是一根Type-C的线,连接到Arduino上,完成代码下载与串口数据接收。
硬件:
代码:
任务二
目标:“驱动12x8点阵LED;用DAC生成正弦波;用OPAMP放大DAC信号;用ADC采集并且打印数据到串口等其他接口可上传到上位机显示曲线”
任务二是熟悉Arduino 的LED矩阵 和 模拟外设分别是ADC、DAC、运算放大器。其中运算放大器需要自己计算运放的倍率,并且不能超过4.7V,不然会损坏器件,并且先要把DAC输出的电压设置为输入电压的一般(USB输入5v/2=2.5v)。
硬件运行效果:
代码:
Arduino 官方关于运放的解释
硬件:
代码流程:
运行结果:
DAC输出电压降低前后对比
由于上位机不能缩放(或者说我不会)Y轴,只能勉强看
任务三
目标:“通过Wi-Fi,利用MQTT协议接入到开源的智能家居平台HA(HomeAssistant)”
任务三主要目的是控制Arduino上的WiFi模块发送MQTT数据,HA平台是运行在PC端的,功能是接收、解析并显示出MQTT数据。
要点:
1、安装PubSubClient 库
2、参考8266 的例程编写代码,因为只有这个例程有连接WIFI的实例
3、添加自己的WIFI名称 与 密码,注意要2.4G频段的,5G的会连接失败。
4、添加mqtt_server的IP、端口号、用户名、密码、发布的主题
运行效果:
任务四
目标:“驱动SHT40温湿度传感器,上传温湿度到HA,通过HA面板显示数据”
任务四是在任务三上添加获取温度传感器测量的温度值,通过MATT上报给HA平台,替换掉之前的模拟数据。
由于我购买的是AHT40传感器 并且没有Qwiic,所以有了以下的折腾。
Qwiic的IIC引脚
结论:
Arduino UNO R4 WiFi有多组IIC接口,并且Qwiic的代码不能配置非Qwiic的IIC接口,如右上红框。
所以我从下图黑框处,飞了2根线。
以上解决了硬件问题。
软件:
1、经过测试得知,AHT30兼容AHT20的代码,所以安装这个库
2、接线正确后就可以正常获取温度
3、将测量温度代码 与 任务三结合,正常上报温度。
温度测量GIF
点击上图查看Gif动图
代码框图:
三、总结
再次感谢DigiKey 与 EEWorld,本次活动学习到了从未接触过的MQTT和HA,整个流程走过一遍后,发现arduino同一个功能活传感器有太多各种各样的库了,每个库的代码、逻辑都不同,造成了各种代码不适用、查到的资料各种库对不上,浪费很多时间,比直接手动写驱动还要累(不同的累,arduino要过滤信息很烦,应为依赖库,所以经常性的代码没原因的不能用,报错只能报语法上的错)。
但是整体体验下来还是比芯片SDK级C语言开发要快速的,所以有得必有失吧,对于爱好者arduino还是非常好用的,能快速的把创意落地。
代码:
本帖最后由 dvacos 于 2024-10-16 18:00 编辑