合宙ESP32-C3读取 AHT10温湿度传感器模块
购买的合宙ESP32-C3开发板吃灰多日,天气热了,顺便结合着玩一下温湿度传感器AHT10模块。
我所使用的模块链接如下:
AHT10
经典款ESP32C3开发板 套餐一
硬件
看到ESP32-C3开发板上正好有合适的孔,所以我就没有焊排针,直接板对板焊接。焊接的时候小心模块上的排阻和开发板半孔短路。
AHT10 | ESP32-C3 |
---|---|
VIN | 3.3V |
GND | GND |
SCL | IO11 |
SDA | IO07 |
软件
我使用的是Arduino 2.1.0版本,安装 Adafruit_AHTX0 这个库。
代码就是该库自带的示例代码,添加了自定义的I2C接口,Wire.begin(7,11);//7为SDA,11为SCL
#include <Adafruit_AHTX0.h>
Adafruit_AHTX0 aht;
void setup() {
Wire.begin(7,11);
Serial.begin(115200);
Serial.println("Adafruit AHT10/AHT20 demo!");
if (! aht.begin(&Wire)) {
Serial.println("Could not find AHT? Check wiring");
while (1) delay(10);
}
Serial.println("AHT10 or AHT20 found");
}
void loop() {
sensors_event_t humidity, temp;
aht.getEvent(&humidity, &temp);// populate temp and humidity objects with fresh data
Serial.print("Temperature: "); Serial.print(temp.temperature); Serial.println(" degrees C");
Serial.print("Humidity: "); Serial.print(humidity.relative_humidity); Serial.println("% rH");
delay(500);
}
写到这里发现还是无法运行,温湿度数据读不出来,怀疑是I2C接口没配置对,思来想去决定前往合宙的官方文档寻找答案。
在官方文档的讨论中看到这么一段话:
我这个开发板的芯片版本是ESP32-C3(不带后缀),所以GPIO11用作了VDD_SPI功能,需要解锁才能用作GPIO11。
按照大佬的提示,在pip中安装esptool。在 pip 命令中使用 -i 参数来指定镜像地址,加快下载速度。
pip install esptool -i https://pypi.tuna.tsinghua.edu.cn/simple
使用pip 安装好esptool 后,使用everything工具查找 espefuse,可以定位到 烧写工具的目录。在该路径下打开cmd,执行命令解锁GPIO11。端口填自己的com口,我这里是com3。
espefuse.exe -p com3 burn_efuse VDD_SPI_AS_GPIO 1
结语
至此温湿度数据已经读取出来了,功能很简单,但是用到的知识却不少。写下文章供朋友们参考。