405|1

47

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

Follow me 第二季第2期、汇总贴 [复制链接]

  本帖最后由 dvacos 于 2024-10-16 18:00 编辑
非常感谢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
 
 
代码框图:
 
三、总结
再次感谢DigiKey 与 EEWorld,本次活动学习到了从未接触过的MQTT和HA,整个流程走过一遍后,发现arduino同一个功能活传感器有太多各种各样的库了,每个库的代码、逻辑都不同,造成了各种代码不适用、查到的资料各种库对不上,浪费很多时间,比直接手动写驱动还要累(不同的累,arduino要过滤信息很烦,应为依赖库,所以经常性的代码没原因的不能用,报错只能报语法上的错)。
但是整体体验下来还是比芯片SDK级C语言开发要快速的,所以有得必有失吧,对于爱好者arduino还是非常好用的,能快速的把创意落地。
 

 

代码:

 

 


 

code_1016.zip

6.03 KB, 下载次数: 2

点赞 关注
 
 

回复
举报

47

帖子

0

TA的资源

一粒金砂(中级)

沙发
 

补充

本帖最后由 dvacos 于 2024-12-6 12:53 编辑

在调试传感器是个人比较偏向于使用基础的SDK对照着传感器规格书去从头调试。

 

AHT30的传感器驱动流程,如下图:

按照我的理解是:

①地址0X70 寄存器0xAC 写0x33,0x00

②等待80ms

③地址0X71 读7字节

④取处温度值,温度值是由第5字节、4字节、3的低四位字节,组成

⑤按照公式换算出实际温度

 

AHT20的传感器驱动流程,如下图:

 

触发测量数据的流程是:

01110000 = 0x70

10101100 = 0xAC

00110011 = 0x33

 

地址0X70 寄存器0xAC 写0x33,0x00

 

读取数据流程:

01110001 = 0x71

③地址0X71 读7字节

 

所以实际上的AHT20 AHT30的驱动流程是一致的,驱动库也是可以通用的。

 

ESP32-C6上直接驱动传感器:

 

I2C的SDA SCL如下,再接上3V3 和 GND就可以了

 

 

IDE 使用的是ESP-IDF

 

测试、调通传感器后,在换Arduino 的开发环境调试

 

 

 

 

 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表