搜索代码

第36课:使用HTU21D温度传感器与LCD Arduino的逐步课程

第36课:使用HTU21D温度传感器与LCD Arduino的逐步课程

HTU21D 温湿度传感器因其易用性和准确性而成为许多 Arduino 项目的热门选择。在本课中,我们将构建一个简单的项目,从传感器读取温度和湿度数据并在液晶屏上显示。到本教程结束时,您将有一个工作设置,持续显示摄氏度、华氏度和开尔文的温度,以及相对湿度百分比。如需进一步澄清,请参考视频(视频时长 mm:ss)。

硬件解读

该项目的主要组成部分是 HTU21D 温湿度传感器,它通过 I2C 进行通信。该传感器在 1.5 至 3.6 伏的电压范围内工作,非常适合 3.3V 和 5V 系统。它的功耗非常低,空闲时通常仅为 0.02 微安,而在测量时为 450 微安。 除了 HTU21D,我们还将使用 LCD 显示器,具体为带 I2C 的 LCD1602。该显示器便于输出文本数据,只需两个引脚进行通信:SDA(数据线)和 SCL(时钟线)。这些组件的组合将使我们能够创建一个用于监测温度和湿度水平的信息显示器。

数据表详情

制造商TE 连接器
零件编号HTU21D-F
逻辑/IO 电压1.5 - 3.6 V
供电电压3.3 V(典型值)
输出电流(典型)0.02 微安 (待机), 450 微安 (测量)
温度范围-40到+125°C
湿度范围0到100 %RH
分辨率(温度)0.01 °C
分辨率(湿度)0.04 %RH
包裹DFN-6

  • 如果未集成,请对SDA和SCL线路使用上拉电阻。
  • 确保供电电压正确,以避免损坏传感器。
  • 保持适当的布线以防止通信错误。
  • 如果传感器没有响应,请检查I2C地址。
  • 在读取之间使用延迟以防止传感器过载。
  • 确保LCD与I2C通信兼容。

接线说明

要连接HTU21D传感器和LCD显示屏,首先处理电源连接。将HTU21D的左侧引脚连接到3.3V电源,将第二个引脚(通常为红色)连接到地。接下来,将HTU21D的SDA引脚连接到Arduino的模拟引脚A4,将SCL引脚连接到模拟引脚A5。 对于LCD1602显示屏,将VCC引脚连接到同一3.3V电源,将GND引脚连接到地。LCD上的SDA引脚也应该连接到A4,SCL引脚应该连接到A5,以便两个组件共享I2C总线。确保所有连接都稳固,以便Arduino、传感器和显示器之间能正常通信。

代码示例与教程

以下代码初始化HTU21D传感器和LCD显示器。在setup函数中,准备好LCD以供使用,并检查传感器的连接状态:

void setup() {
  lcd.begin();
  lcd.backlight();
  if (!htu.begin()) {
      lcd.print("Robojax HTUD1DF");
      lcd.setCursor(0,1);
      lcd.print("sensor missing"); 
      while (1);
  } else {
      lcd.print("Robojax HTUD1DF");
      lcd.setCursor(0,1);
      lcd.print("Demo"); 
  }
  delay(2000);   
}

此摘录检查传感器是否正确连接。如果没有,它会在LCD上显示错误信息并停止程序。如果传感器正常工作,它会显示一个演示信息,持续两秒钟。 循环功能是主要读取和显示的地方。在这里,我们调用`lcdDisplay`函数以不同单位显示温度:

void loop() {
   lcd.clear(); // clear previous values from screen
   lcdDisplay(0, 0, "Celsius: ", 10, 0, getHTU('C'), 'd');  
   lcdDisplay(0, 1, "Fahrenheit: ", 10, 1, getHTU('F'), 'd');     
   delay(5000);
}

在这个循环中,LCD被清除,并显示摄氏度和华氏度的温度读数。`getHTU`函数分别使用字符'C'表示摄氏度和'F'表示华氏度。 最后,定义了`getHTU`函数,以根据输入字符读取温度或湿度:

float getHTU(char type) {
   float temp = htu.readTemperature();
   float rel_hum = htu.readHumidity();
   if(type =='F') {
       return temp * 9/5 + 32; // convert to Fahrenheit 
   } else if(type =='K') {
       return temp + 273.15; // convert to Kelvin
   } else if(type =='H') {
       return rel_hum; // return relative humidity
   } else {
       return temp; // return Celsius
   }
}

此功能从传感器读取温度和湿度,并将温度转换为请求的单位。请务必查看文章下方加载的完整代码以获取更多详细信息。

演示 / 期待什么

完成接线和上传代码后,您应该会看到温度和湿度值显示在 LCD 上。读数每隔几秒钟更新一次,反映当前的条件。如果您对传感器加热,您应该会注意到温度相应上升,而湿度则略微降低。请注意传感器的最高温度限制;超过此限制可能会导致读数不准确或传感器故障(视频中的 mm:ss)。

视频时间戳

  • 00:00- 项目介绍
  • 01:15- wiring instructions
  • 03:30- 代码演示
  • 10:00- 设置演示
511-Lesson 36: Using the HTU21D Temperature Sensor with an LCD and Arduino: A Step-by-Step Course
语言: C++
This code has not been parsed yet. Please return to the admin panel to parse it.

|||您可能需要的东西

文件📁

数据手册 (pdf)