0°

基于DHT11的Arduino OLED温度计和湿度计

简介

这个项目将向你展示如何用DHT 11制作一个Arduino OLED温度计和湿度计。

我们今天将使用的OLED是1.3英寸的大小,特点128×64像素和使用SPI总线。在接下来的步骤中,您将发现关于OLED技术和这个显示器的更多有用的信息。

我们将使用u8glib库与我们的oled显示器通信。这个库有许多可用的参数,您可以在OLED和图形LCD上显示数字、字母、位图和其他符号,它也适用于电子墨水显示。

步骤一 材料准备

基于DHT11的Arduino OLED温度计和湿度计
基于DHT11的Arduino OLED温度计和湿度计
基于DHT11的Arduino OLED温度计和湿度计
基于DHT11的Arduino OLED温度计和湿度计

硬件准备:

  • Arduino UNO&Genuino UNO
  • DHT 11温湿度传感器(4个引脚)
  • DHT 22温度传感器
  • 面包板(通用)
  • 1.3寸 OLED显示屏SPI接口
  • 杜邦线(通用)

软件准备:

  • Arduino IDE
  • u8glib库

步骤二 原理说明

有关DHT11的信息

所述DHT11 是一个基础的,超低成本数字温度和湿度传感器。它使用电容式湿度传感器和热敏电阻测量周围空气,并在数据引脚上返回数字信号(无需模拟输入引脚)。它使用起来相当简单,但需要一定的时间才能获取准确数据。这种传感器唯一的缺点是你每2秒只能从中获取一次新数据,传感器读数最长可达2秒。

特征:

  • 体积小,成本低
  • 易于使用,3至5V电源和I / O.
  • 转换期间使用2.5mA最大电流(同时请求数据)
  • 适用于20-80%湿度读数,准确度为5%
  • 适用于0-50°C温度读数±2°C精度
  • 采样率不超过1 Hz(每秒一次)

步骤三 硬件搭建

基于DHT11的Arduino OLED温度计和湿度计
基于DHT11的Arduino OLED温度计和湿度计
基于DHT11的Arduino OLED温度计和湿度计

现在看一下上面的示意图,将显示器和传感器插入面包板。然后使用杜邦线将DHT11和OLED 的负极和正极电压引脚连接到Arduino UNO板的地和+ 5v 引脚。

然后取一个杜邦线,将传感器的输出引脚连接到Arduino板的A0 。

连接OLED引脚:

  • DIN 连接引脚13 ;
  • CLK 连接引脚11 ;
  • CS 连接引脚10 ;
  • D / C 连接引脚9
  • RES 连接引脚8
  • 13,11,10,9 和8是SPI Arduino的UNO的总线他们也是ICSP 微控制器下连接器。

步骤四 开始编程

您需要下载的库:DHTu8glib

DHT库:

当前内容已被隐藏,您需要登录才能查看

u8glib库:

当前内容已被隐藏,您需要登录才能查看

,然后将它们解压缩到/ Program Files(x86)/ Arduino / Libraries(默认)。

完整程序代码:

版本1

#include   // U8glib library
#include      // DHT library

#define dht_apin A5  // Analog pin to which the sensor is connected
dht DHT;
               /*Uncomment and comment*/
U8GLIB_SH1106_128X64 u8g(13, 11, 10, 9, 8);  // CLK=13, DIN=11, CS=10, DC=9, Reset=8
//U8GLIB_SSD1306_128X32 u8g(13, 11, 10, 9, 8); // CLK=13, DIN=11, CS=10, DC=9, Reset=8
//U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9, 8); // CLK=13, DIN=11, CS=10, DC=9, Reset=8

void draw(void) 
{
   u8g.setFont(u8g_font_fub11r);   // select font
   u8g.drawStr(0, 11, "Temp: ");   // put string of display at position X, Y
   u8g.drawStr(80, 11, "Humi: ");
   u8g.setFont(u8g_font_fub14r);
   u8g.setPrintPos(10, 45);        // set position
   u8g.print(DHT.temperature, 0);  // display temperature from DHT11 in Celsius
   u8g.println("F"); 
   u8g.setPrintPos(72, 45);        // set position
   u8g.print(DHT.humidity, 0);     // display humidity from DHT11
   u8g.println("%");
}
void setup(void) 
{

}

void loop(void)
{
   DHT.read11(dht_apin);  // Read apin on DHT11
   u8g.firstPage();  
   do 
{
   draw();
}  while( u8g.nextPage() );
   delay(2000);  // Delay of 2 sec before accessing DHT11 (min - 2sec)
}
                           /*END OF FILE*/

版本2

当前内容已被隐藏,您需要登录才能查看

版本3:

当前内容已被隐藏,您需要登录才能查看
「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论