[作品提交] Follow me 第二季第2期、汇总贴

dvacos   2024-9-28 19:44 楼主
非常感谢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实验中用到的电阻
wd_175522iqsuu0wen9ex2sra.png
 
硬件简介:
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上,完成代码下载与串口数据接收。
 
硬件:
wd_175523l9oej00u5ijmrf4i.jpg
 
代码:
wd_175523j3ke9asuh9ox23ye.png
 
任务二
目标:“驱动12x8点阵LED;用DAC生成正弦波;用OPAMP放大DAC信号;用ADC采集并且打印数据到串口等其他接口可上传到上位机显示曲线”
 
任务二是熟悉Arduino 的LED矩阵 和 模拟外设分别是ADC、DAC、运算放大器。其中运算放大器需要自己计算运放的倍率,并且不能超过4.7V,不然会损坏器件,并且先要把DAC输出的电压设置为输入电压的一般(USB输入5v/2=2.5v)。
 
硬件运行效果:
wd_175523b6ty6a18q3ta554y.jpg
 
代码:
wd_175523kpt33pke4uhhx362.png
 
Arduino 官方关于运放的解释
wd_175523zwzacv526v858v2u.png
 
硬件:
wd_175523rev4tr1tymzgi1or.jpg
 
代码流程:
wd_175523tz2ixhht1x8b77tu.png
 
运行结果:
 
DAC输出电压降低前后对比
wd_175523pppwgg7zcpizc17w.png
 
由于上位机不能缩放(或者说我不会)Y轴,只能勉强看
wd_175523semksg1asl8zzme6.png
 
任务三
目标:“通过Wi-Fi,利用MQTT协议接入到开源的智能家居平台HA(HomeAssistant)”
 
任务三主要目的是控制Arduino上的WiFi模块发送MQTT数据,HA平台是运行在PC端的,功能是接收、解析并显示出MQTT数据。
 
要点:
1、安装PubSubClient 库
wd_175523bzg23vg88ssjj7ls.png
 
2、参考8266 的例程编写代码,因为只有这个例程有连接WIFI的实例
wd_175523fg41el1alylqyqa7.png
 
3、添加自己的WIFI名称 与 密码,注意要2.4G频段的,5G的会连接失败。
 
4、添加mqtt_server的IP、端口号、用户名、密码、发布的主题
 
运行效果:
wd_175523k534mon40wqm4wq9.png
wd_175523pof20zfnnzijznyg.png
wd_175523t0bo10ytkwydmy2w.png
 
任务四
目标:“驱动SHT40温湿度传感器,上传温湿度到HA,通过HA面板显示数据”
 
任务四是在任务三上添加获取温度传感器测量的温度值,通过MATT上报给HA平台,替换掉之前的模拟数据。
 
由于我购买的是AHT40传感器 并且没有Qwiic,所以有了以下的折腾。
wd_175523u5t5eidt59ubuyit.png
wd_175523z6693u7fney9um63.png
Qwiic的IIC引脚
wd_175523ei88789l8lxfy4h6.png
wd_175523kdq8ieo66dry8a1q.png
 
结论:
Arduino UNO R4 WiFi有多组IIC接口,并且Qwiic的代码不能配置非Qwiic的IIC接口,如右上红框。
wd_175523gjz95qseqqjvd2p2.png
所以我从下图黑框处,飞了2根线。
wd_175524mu3z5swjvjywh5s5.png
wd_175524op97pb87w0qqk9wp.png
以上解决了硬件问题。
 
软件:
1、经过测试得知,AHT30兼容AHT20的代码,所以安装这个库
wd_175524u1jddcbdrc3r58jo.png
wd_175524b4a1x6vivfa4ad6x.png
2、接线正确后就可以正常获取温度
3、将测量温度代码 与 任务三结合,正常上报温度。
 
温度测量GIF
2123.gif 点击上图查看Gif动图  
 
代码框图:
wd_175524st4uu6vmz21vb0al.png
 
三、总结
再次感谢DigiKey 与 EEWorld,本次活动学习到了从未接触过的MQTT和HA,整个流程走过一遍后,发现arduino同一个功能活传感器有太多各种各样的库了,每个库的代码、逻辑都不同,造成了各种代码不适用、查到的资料各种库对不上,浪费很多时间,比直接手动写驱动还要累(不同的累,arduino要过滤信息很烦,应为依赖库,所以经常性的代码没原因的不能用,报错只能报语法上的错)。
但是整体体验下来还是比芯片SDK级C语言开发要快速的,所以有得必有失吧,对于爱好者arduino还是非常好用的,能快速的把创意落地。
 

 

代码:

 

 


 

本帖最后由 dvacos 于 2024-10-16 18:00 编辑

    code_1016.zip (2024-10-16 18:00 上传)

    6.03 KB, 下载次数: 2

回复评论

暂无评论,赶紧抢沙发吧
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复