初识ESP8266(一):DHT22智能温湿度计

一、引言


在智能家居与物联网技术蓬勃发展的今天,环境数据的实时监测成为许多场景的核心需求——从家庭健康管理到农业大棚调控,再到实验室精密控制,温湿度数据都扮演着重要角色。  
本文将使用ESP8266开发板,搭配DHT22温湿度传感器,打造一个兼具本地显示与远程监控能力的智能温湿度计。通过这个项目,您不仅能掌握传感器数据采集、OLED屏幕驱动和WiFi通信的基础技能,还能体验到物联网设备从硬件搭建到软件联调的完整开发流程。无需复杂电路,仅需30分钟,即可迈出智能硬件开发的第一步!

二、所需硬件

1. ESP8266开发板  
   本文采用CH340芯片的NodeMCU开发板,如芯片不同请下载对应模块驱动。

2. DHT22温湿度传感器
   高精度数字传感器,测量范围:-40~80℃(±0.5℃),0~100%RH(±2%湿度),通过单总线协议与ESP8266通信。  
   相比于DHT11,其数据更为精准。 

3. SSD1306 OLED显示屏(128x64像素,I2C接口)  
   用于本地实时显示数据,无需背光、功耗极低,对比度清晰,适合嵌入式设备。  
   关键参数:0.96英寸,I2C地址默认为0x3C 

4. Micro USB数据线                                                为开发板供电并上传程序,需确保线材支持数据传输(部分廉价线仅能充电,这是一个大坑)。  

5.母对母杜邦线                                                    用于硬件与开发板的连接。

三、准备工作

  1. 安装Arduino IDE
  2. 手机端安装点灯blinker
  3. 安装开发板驱动程序
  4. 在Arduino IDE中搭建ESP8266开发环境
  5. 安装温湿度传感器,OLED屏幕和Blinker所需要的库
  6. 将开发板与电脑连接

四、接线方法

OLED屏幕使用I2C协议,其SCL接D1,SDA接D2,VCC接3V,GND接板子上的G

DHT22使用单总线协议,DATA接D6,VCC接3V,GND接G

 

 

 

接好后如图所示。

五、点灯blinker端的设置

首页-右上角+号-添加独立设备,选择网络接入,此时你会获得一个密钥,记住这个密钥,会在后续代码中用到。

在独立设备右上角点击编辑,新建两个数据模块,组件键名设为temp和humi,这步很重要,否则会导致数据无法显示。

六、代码部分

 

 

#define BLINKER_WIFI

#define BLINKER_PRINT Serial

 

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <DHT.h>
#include <Blinker.h>

#define DHTPIN D6     // DATA引脚接GPIO12/D6
#define DHTTYPE DHT22
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64

char auth[] = "Your_Blinker_Auth_Key"; // 替换为您的Blinker设备密钥
char ssid[] = "Your_WiFi_SSID";        // 替换为您的Wi-Fi SSID
char pswd[] = "Your_WiFi_Password";    // 替换为您的Wi-Fi 密码

DHT dht(DHTPIN, DHTTYPE);
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire);

void setup() {
  Serial.begin(115200);
  Blinker.begin(auth, ssid, pswd); // 初始化Blinker连接
  
  if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // I2C地址通常为0x3C
    Serial.println(F("SSD1306 allocation failed"));
    for(;;);
  }
  display.clearDisplay();
  dht.begin();
}

void loop() {
  Blinker.run(); // 维持与Blinker服务器的连接
  
  float humidity = dht.readHumidity();
  float temperature = dht.readTemperature();

  if (isnan(humidity) || isnan(temperature)) {
    Serial.println("读取失败!");
    return;
  }

  Blinker.print("temp", temperature);   // 发送温度数据到Blinker
  Blinker.print("humi", humidity); // 发送湿度数据到Blinker

  display.clearDisplay();
  display.setTextSize(1);
  display.setTextColor(SSD1306_WHITE);
  
  // 在(0,0)位置显示温度
  display.setCursor(0, 0);
  display.print("Temperature: ");
  display.print(temperature);
  display.print(" C");

  // 在(0,20)位置显示湿度
  display.setCursor(0, 20);
  display.print("Humidity: ");
  display.print(humidity);
  display.print(" %");

  display.display();
  delay(2000); // 每隔2秒更新一次屏幕和Blinker的数据
}

 

 

复制以上代码,在Arduino IDE中粘贴,上传烧录进板子,烧录成功后OLED屏幕中即显示温湿度。

打开Blinker,显示设备在线,组件显示温湿度,即为上传成功。

至此,你已经完成了智能温湿度计的制作,我们下期再见。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值