【移远产品体验官】QuecDuino(EG800Z)AHT20 温湿度例程避坑:接线正确却读不到数?请改用 I2C1
一、体验背景与目标
本次体验产品为 QuecDuino 入门级传感器实验套件,开发板搭载 EG800Z 模组,已烧录官方 QPY_OCPU_EG800Z_CNLA_FW QuecPython 固件(AT+GMR 显示版本为 EG800ZCNLAR05A01M04)。体验内容为套件中的 AHT20 温湿度传感器:按 GitHub 仓库 QuecDuino-Sensor-Kit-Demo 的例程 19 复现,并尝试在本地采集稳定后,继续探索 4G 注网与移远通信云、移联万物 App 查看数据。
预期完成三件事:按官方 README 接线并读出温湿度;熟悉 QPYcom 传脚本与 REPL 调试;完成移远开发者平台创建设备后,通过模组连接移远通信云并在手机 App 上查看温湿度。
二、体验过程
环境与工具准备
收到套件后,通过 Type-C 连接电脑,安装 QuecPython USB 驱动与 QPYcom,在 REPL 口确认可正常交互。模组使用官网下载的 EG800Z CNLA 固件,QuecPython 环境可运行 example.exec 执行脚本。
硬件接线
严格按例程 19 README:AHT20 电源接 3.3V 与 GND,SCL 接 PIN17,SDA 接 PIN16,使用套件自带杜邦线。
运行官方例程(首次失败)
将 example/19-temperature_and_humidity_sensor(AHT20)/ 目录下 AHT20.py 上传至模组并运行。现象为:无正常温湿度打印,或读取失败;调试时可看到 I2C 的 write/read 返回 -1,或读回数据全为 0x00。当时曾怀疑传感器损坏、接触不良,或必须更换非官方驱动。
排查 I2C 总线
查阅移远《Quectel_EG800Z_Series_QuecPython_GPIO_Configuration》,并分别用 I2C0、I2C1 对 AHT20 做标准初始化与测量流程对比测试。结果:I2C0 无法得到有效温湿度;I2C1 可稳定读到约 26℃、相对湿度 40%~60%,与室内体感和另一台湿度计大致相符。说明硬件与 AHT20 正常,问题在软件使用的 I2C 控制器编号与 EG800Z 引脚复用不一致。
最小改动验证(成功)
仅修改官方 AHT20.py 一行:将 I2C(I2C.I2C0, I2C.STANDARD_MODE) 改为 I2C(I2C.I2C1, I2C.STANDARD_MODE)。接线与其他测量代码不变,温湿度立即正常。之后循环采集也稳定。
移远通信云与移联万物 App(目前无法连通,独立说明)
在 I2C 与本地采集调通后,我按移远物联网平台流程创建了产品、物模型与设备,并在网页侧配置了 ProductKey/ProductSecret、DeviceKey、激活码等;模组侧插入 Nano-SIM、连接 LTE 天线,4G 拨号成功(dataCall 显示已连接,IMEI 可正常读取)。
但连接移远通信云、在「移联万物」App 查看数据这一步,在当前环境下无法完成,具体表现如下:
(1)模组 REPL 执行 import Qth、import quecIot,均报错 no module named ‘Qth’ / ‘quecIot’,即 QuecPython 运行环境中没有移远云所需的内置 SDK,无法执行 Qth.init()、Qth.setProductInfo()、sendTsl 等官方文档中的连云与物模型上报接口。
(2)并非脚本路径或 PK/PS 填错 alone 导致:在 4G 已连接、温湿度本地读取正常的前提下,仅因缺少 Qth/quecIot 模块,云端侧设备会长期显示未激活/离线,App 也看不到上报数据。这与 AHT20 接线、I2C 总线问题无关,属于另一条技术链路。
(3)我对照从移远官网下载的 QPY_OCPU_EG800Z_CNLA_FW(与 AT+GMR 版本一致)以及 QPY_OCPU_EG800Z_EULA_FW_BETA 固件包,对应用镜像检索,公开 CNLA/EULA BETA 包中均未发现 Qth、quecIot 等移远云 SDK 组件(可见通用 umqtt 等,但不足以替代官方 Qth 对接移远开发者平台与移联万物 App)。因此,在「仅使用当前官网公开 EG800Z QuecPython 固件、不更换固件」的前提下,暂无法实现「4G + 移远通信云 + 手机 App 看温湿度」的完整闭环。
(4)向同好说明:若你的目标也是移联万物 App,建议先在 REPL 自检 import Qth 或 import quecIot;若同样不可用,需向移远官方/论坛确认 EG800ZCNLA 是否提供带 QuecThing(Qth/quecIot)的固件版本,或是否需采用其他已内置云能力的模组方案。本地串口看温湿度、4G 注网本身不受影响。
三、体验结果
(1)按 README 接线且不改官方例程:失败,I2C 无有效数据。
(2)接线不变,仅将例程改为 I2C1:成功,温湿度合理、可长期循环读取。
(3)4G 注网:成功。
(4)移远通信云 + 移联万物 App(当前公开 CNLA 固件):未能连通。根因是固件未提供 Qth/quecIot,模组无法接入移远通信云,非 SIM、天线或 I2C 故障。
总体结论:QuecDuino 套件与 EG800Z 可以很好完成 AHT20 本地实验与 4G 注网;官方 Demo 在 EG800Z 上需将 I2C0 改为 I2C1。若体验目标是移远云与 App,需关注 EG800Z 公开 QuecPython 固件是否包含云 SDK,目前我使用的 CNLA 公开版本下该链路走不通。
四、遇到的问题与原因分析
问题一(AHT20 / I2C):例程 19 的 README 要求 AHT20 接 PIN16/17,代码却写死 I2C0。EC800X 一代 QuecDuino 上该组引脚常映射 I2C0;EG800Z 上 PIN16/17 对应 I2C1,出现「文档接线对、代码总线错」,属于官方 Demo 与新一代开发板之间的兼容缺口,改一行 I2C1 即可,不必更换 AHT20 驱动算法。
问题二(移远通信云):网页侧产品、设备、物模型、激活码配置完成后,仍无法连云,是因为模组侧缺少 Qth/quecIot,不是「再改 Python 业务脚本」或「多上传几个 .py 文件」能解决的——移远云 SDK 为固件内置能力。容易与 I2C 问题混淆:若本地读不到温湿度,应先修 I2C1;若本地已正常、4G 已 OK 但 App 仍无数据,应查固件是否含 Qth/quecIot。
给移远官方的建议:(1)例程 19 注明 EG800Z 使用 I2C1;(2)在 EG800Z QuecPython 下载页或 release note 中明确是否支持移远通信云、对应固件包名称;(3)若 CNLA 精简固件 intentionally 不含 Qth,建议在 QuecDuino 套件/cloud 入门文档中前置说明,避免体验官按「4G 上云 + App」路径投入后卡在固件能力边界。
五、给同套件用户的操作建议
第一,接线仍按手册:PIN16=SDA,PIN17=SCL,EG800Z 上例程改为 I2C1。
第二,移远云/App 目标:REPL 先执行 import Qth 或 import quecIot,不可用则当前公开 CNLA 固件下勿预期能连移远通信云,应咨询官方固件或改选其他云平台(如固件若支持 aLiYun 可另测 import aLiYun)。
第三,I2C 未通时不要先调云;云 SDK 不存在时不要反复改 PK/PS 误以为能激活设备。
六、总结
传感器套件与开发板硬件匹配良好,AHT20 实验的瓶颈在官方例程 I2C 编号未随 EG800Z 更新,一行改为 I2C1 即可复现例程 19。4G 注网在本套件上可用。需要向移远通信云上报并在移联万物 App 查看时,在我使用的官网公开 QPY_OCPU_EG800Z_CNLA_FW 上目前不能连接,原因是固件未编入 Qth/quecIot,与传感器和 4G 无关。希望本报告帮助同批次体验官区分「I2C 避坑」与「云端能力边界」,也供移远优化 Demo、固件说明与文档。
话题标签:
#移远产品体验官 #QuecDuino EG800Z #AHT20 #I2C避坑




