前言和实验结果

跳过Hello World,即点亮LED,直接实战读取DHT11温湿度传感器。

最后实现的效果如下。

如上图,可以在终端Terminal里直接看到DHT11测量到的温湿度信息,无需额外的串口。终端里也支持中文信息输出,感兴趣可以自己上手实测。

使用esp-generate生成模板工程

由于过程具有重复性,故不再重复演示,请点击跳转使用esp-generate生成一个ESP32初始工程

打开工程

  • 导入需要用到的crate,在工程根目录下打开终端,输入以下命令,并按下回车(Enter
1
cargo add esp32-dht11-rs

main.rs里输入以下代码

  • 在头部的位置,先引入需要使用的crate
1
2
use esp32_dht11_rs::{DHT11};
use esp_hal::delay::Delay;
  • 接着,来到main函数里
1
2
3
let delay = Delay::new();
let mut dht11 = DHT11::new(peripherals.GPIO0, delay);
let mut dht11_read_counter = 1;
  • 再将以下内容复制到loop函数里
1
2
3
4
5
6
match dht11.read() {
            Ok(m) => println!("DHT11 TEMP is: {}℃ DHT11 HUMI is:{}% measuring for [NO.{:?}] time", m.temperature, m.humidity, dht11_read_counter),
            Err(error) => println!("error occured: {:?}", error),
        }
        Timer::after_millis(2000).await;
        dht11_read_counter += 1;
  • 断电前提下,连接硬件

    功能DHT11ESP32C3
    电源正极VCC3V3
    地线GNDGND
    数据线D / DATGPIO0 / 引脚 0
  • 连接好硬件之后,将开发板连接到电脑,回到终端,输入以下命令

需要自行安装CH34x的驱动,这一步不做说明,自行安装即可。

1
cargo run --release

可以看到终端里在进行编译compiling

完成之后,会自动进行烧录,期间不需要按开发板上的任何按键(试过很多板子,都不需要按BOOT)。

烧录完成后,正常在终端里打印信息,若是用手握住DHT11模块,湿度会瞬间上升,温度也会开始缓慢上升(假定你手现在并没有进行过冷冻处理,是正常体温。),说明模块工作正常,程序正常运行。