发布于 2026-01-06 2 阅读
0

轻松构建联网温湿度传感器 DEV 的全球展示挑战赛,由 Mux 呈现:展示你的项目!

轻松构建联网温湿度传感器

由 Mux 赞助的 DEV 全球展示挑战赛:展示你的项目!

为了监测主房间或婴儿房的温度,您可以轻松创建和开发自己的联网温度传感器。

我们将按照以下步骤创建一个联网温度传感器。为此,我们将使用 ESP8266 微控制器和两个扩展板。ESP8266
是一款类似于 Arduino 的微控制器,但它集成了 Wi-Fi 模块。

扩展板是一种可以添加到主板上以扩展其功能的电路板。扩展板的优势在于设置和使用极其简便。
目前,ESP8266 D1 Mini 已有 20 款扩展板可供选择。
因此,我们只需将扩展板相互连接,编写少量代码,即可轻松创建各种物联网项目。

本项目中使用的物品

  • 一款基于 ESP8266 的 Wemos D1 mini。它是主要的迷你 Wi-Fi 开发板。
  • SHT30扩展板它是一个温湿度传感器模块。我建议你选择V2版本,因为它精度更高,而且不受ESP8266发热的影响。本文中,我将使用该模块的V1版本。
  • OLED显示屏扩展板。它是一个可以显示温度的屏幕。

要求

更改配置Tools

  • 木板 :LOLIN(WEMOS) D1 mini lite
  • 端口:/dev/cu.wchusbserial…适用于 Mac
  • 上传速度:921600
  • 点击Serial Monitor

步骤 1 - 读取温度值

目前,我们将把 SHT30 扩展板连接到 ESP8266 上。通过以下代码,我们将每四秒钟把房间的温度和湿度数据反馈到控制台。

SHT30

#include "Adafruit_SHT31.h"

Adafruit_SHT31 sht30 = Adafruit_SHT31();

void setup() {
  Serial.begin(9600);

  while (!Serial)
    delay(10);
  // will pause until serial console opens

  Serial.println("SHT30 test");
  if (! sht30.begin(0x45)) {
    Serial.println("Couldn't find SHT30");
    while (1) delay(1);
  }
}


void loop() {
  float t = sht30.readTemperature();
  float h = sht30.readHumidity();

  if (! isnan(t)) {  // check if 'is not a number'
    Serial.print("Temp *C = "); Serial.println(t);
  } else { 
    Serial.println("Failed to read temperature");
  }

  if (! isnan(h)) {  // check if 'is not a number'
    Serial.print("Hum. % = "); Serial.println(h);
  } else { 
    Serial.println("Failed to read humidity");
  }
  Serial.println();
  delay(4000); 
  // wait 4 seconds before coming back into the loop
}
Enter fullscreen mode Exit fullscreen mode

通过以下代码,我们将每四秒钟将房间的温度和湿度显示在控制台上。

安慰

步骤二:在屏幕上显示消息

让我们把OLED显示扩展板连接到ESP8266上,然后发布一条简单的消息。

OLED显示屏

#include <Adafruit_SSD1306.h>

Adafruit_SSD1306 display(-1);

void setup() {
  Serial.begin(9600);

  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);  
  // initialize with the I2C addr 0x3C (for the 64x48)

  // set the text size and color
  display.setTextSize(2);
  display.setTextColor(WHITE);
}

void loop() {
   display.setCursor(0,0);
   display.println("Hello");
   display.display();
   delay(1000);

   display.clearDisplay();

   display.setCursor(0,24);
   display.println("World");
   display.display();
   delay(1000);

   display.clearDisplay();
}
Enter fullscreen mode Exit fullscreen mode

我们现在知道如何显示文本以及如何清除屏幕。

你好世界

步骤 3 - 在屏幕上显示温度

既然温度值可以读取并在屏幕上显示文本,下一步我们将显示温度和湿度值。

#include "Adafruit_SHT31.h"
#include <Adafruit_SSD1306.h>

Adafruit_SSD1306 display(-1);

Adafruit_SHT31 sht30 = Adafruit_SHT31();

void setup() {
  Serial.begin(9600);

  if (! sht30.begin(0x45)) {
    Serial.println("Couldn't find SHT30");
    while (1) delay(1);
  }

  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);  
  // initialize with the I2C addr 0x3C (for the 64x48)

  // set the text size and color
  display.setTextSize(2);
  display.setTextColor(WHITE);
  display.clearDisplay();
}

void loop() {
   float t = sht30.readTemperature();
   float h = sht30.readHumidity();

   display.setCursor(0,0);
   display.sprintf("%.1fC", t);

   display.setCursor(0,25);
   display.printf("%.0f%%\n", h);

   display.display();
   delay(5000);

   display.clearDisplay();
}
Enter fullscreen mode Exit fullscreen mode

温度传感器

步骤 4 - 连接到 Blynk 应用

拥有温度和湿度数据固然不错,但直接查阅并不方便。因此,我们将把温度传感器连接到互联网,以便将数据上传到云端,并在我们使用 Blynk 构建的应用程序中接收这些数据。

Blynk是一款免费应用程序,适用于像我们这样的小型应用程序。它是最流行的物联网平台,可将您的设备连接到云端,并方便我们设计应用程序。

您可以点击此链接查看如何在应用程序中创建新项目的详细说明。➡️

http://docs.blynk.cc/#getting-started-getting-started-with-the-blynk-app

#define BLYNK_PRINT Serial

#include "Adafruit_SHT31.h"
#include <Adafruit_SSD1306.h>
#include <BlynkSimpleEsp8266.h>

Adafruit_SSD1306 display(-1);

Adafruit_SHT31 sht30 = Adafruit_SHT31();

char auth[] = "BLYNK_API_KEY";
char ssid[] = "WIFI_NAME";
char pass[] = "WIFI_PASSWORD";

void setup() {
  Serial.begin(9600);
  Serial.println("Starting");

  // connect to the WiFi
  Blynk.begin(auth, ssid, pass);

  if (! sht30.begin(0x45)) {
    Serial.println("Couldn't find SHT30");
    while (1) delay(1);
  }

  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);  

  display.setTextSize(2);
  display.setTextColor(WHITE);
  display.clearDisplay();
}

void loop() {
   // start blynk
   Blynk.run();
   float t = sht30.readTemperature();
   float h = sht30.readHumidity();

   display.setCursor(0,0);
   display.printf("%.1fC", t);

   // send the temp value on the virtual pin 1 (V1)
   Blynk.virtualWrite(1, t);

   display.setCursor(0,25);
   display.printf("%.0f%%\n", h);

   // send the humidity value on the virtual pin 2 (V2)
   Blynk.virtualWrite(2, h);

   display.display();
   delay(5000);

   display.clearDisplay();
}
Enter fullscreen mode Exit fullscreen mode

现在您可以通过设置如下图中所示的 2 个带标签的值,在 Blynk 上配置您的应用程序。


你可以利用应用程序中提供的模块进行一些有趣的尝试。我用它制作了一个图表,用来表示温度和湿度的值。

Blynk应用程序

恭喜,您已成功制作出联网温度传感器。👏

原文发表于https://henaff.io

文章来源:https://dev.to/monsieur_riz/easily-build-a-connected-Temperature-and-humidity-sensor-22g5