基于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:

隐藏内容,您需要满足以下条件方可查看

人已赞赏
Arduino

旧手机+Arduino的巅峰之作—视频监控机器人 ,异地远程遥控

2018-11-26 15:30:24

Arduino

Arduino如何破解IR红外遥控器

2018-12-8 22:26:54

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
有新消息 消息中心
搜索