|
温湿度传感器有各种各样的型号,例如DHT11和HTU21D。但是,由于精度和灵敏度等参数,它们都不适合工业级温度和湿度监测。它们的准确性和灵敏度均较差。因此,本文中我们将使用SHT31温度/湿度传感器。它们是您可以获得的最好和最高精度的器件。采用I2C接口的数字传感器,可轻松读取湿度和温度。 SHT31传感器在大多数情况下具有出色的±2%相对湿度和±0.3°C温度精度。
在本篇文章中,我们将把SHT31温度/湿度传感器连接到Nodemcu ESP8266开发板,然后将数据发送到Thingspeak服务器。 ThingSpeak是一个开源的物联网应用程序,通过提供的API,用户通过网络使用HTTP和MQTT协议从物联网存储和检索数据。
所需的组件 ● Nodemcu ESP8266开发板 ● SHT31传感器 ● Micro-USB数据线 ● 连接导线。
SHT31湿度温度传感器 SHT31是Sensirion的下一代温度和湿度传感器。与之前的产品相比,SHT31具有更高的智能性、可靠性和改进的精度指标。它的功能包括增强的信号处理、温度和湿度,可以使用I2C通信读取。以下这款I2C迷你模块使用标准化的传感器封装可以轻松读取温度和湿度。插入接口模块,以便从世界任何地方访问云。
所有I2C迷你模块均设计为在5V DC下工作。使用方便的4针排针,可以将器件以菊花链方式连接到I2C总线,从而无需焊接。只需将下一个自动化应用程序所需的设备连接在一起。
SHT31与Nodemcu ESP8266连接的原理图 以下是将SHT31湿度温度传感器与Nodemcu ESP8266连接的示意图。
将SHT31的VCC引脚连接到ESP8266的3.3V,并将GND连接到GND。如上图所示,将SHT31的SCL和SDA引脚分别连接到ESP38266的SCL(D1)和SDA(D2)引脚。
设置Thingspeak 1. 转到网页https://thingspeak.com/,如果没有账户,请新建一个帐户并登陆。
2. 单击创建按钮创建一个新频道。输入频道的基本详细信息,例如字段1和字段2。然后向下滚动并保存频道。
3. 然后转到API密钥,然后将此密钥复制并粘贴到单独的记事本文件中。稍后在编程时将需要它。
源代码 下面给出了SHT31与NodeMCU ESP8266连接的源代码。您可以复制该代码并将其上传到ESP8266开发板。但是在此之前,您需要SHT31 Sensor的库。因此,请从下面的链接下载库。 ● 下载SHT31库 - #include <ESP8266WiFi.h>
- #include <Arduino.h>
- #include <Wire.h>
- #include "Adafruit_SHT31.h"
- String apiKey = "PW3AKTNO270BFQGT"; // Enter your Write API key from ThingSpeak
- const char *ssid = "BYNARK"; // replace with your wifi ssid and wpa2 key
- const char *pass = "bynark@123";
- const char* server = "api.thingspeak.com";
- WiFiClient client;
- Adafruit_SHT31 sht31 = Adafruit_SHT31();
- void setup()
- {
- Serial.begin(115200);
- while (!Serial)
- delay(10); // will pause Zero, Leonardo, etc until serial console opens
- Serial.println("Connecting to ");
- Serial.println(ssid);
- WiFi.begin(ssid, pass);
- while (WiFi.status() != WL_CONNECTED)
- {
- delay(500);
- Serial.print(".");
- }
- Serial.println("");
- Serial.println("WiFi connected");
- Serial.println("SHT31 test");
- if (! sht31.begin(0x44)) // Set to 0x45 for alternate i2c addr
- {
- Serial.println("Couldn't find SHT31");
- while (1) delay(1);
- }
- }
- void loop()
- {
- float t = sht31.readTemperature();
- float h = sht31.readHumidity();
- if (client.connect(server,80)) // "184.106.153.149" or api.thingspeak.com
- {
- String sendData = apiKey+"&field1="+String(t)+"&field2="+String(h)+"\r\n\r\n";
-
- //Serial.println(sendData);
- client.print("POST /update HTTP/1.1\n");
- client.print("Host: api.thingspeak.com\n");
- client.print("Connection: close\n");
- client.print("X-THINGSPEAKAPIKEY: "+apiKey+"\n");
- client.print("Content-Type: application/x-www-form-urlencoded\n");
- client.print("Content-Length: ");
- client.print(sendData.length());
- client.print("\n\n");
- client.print(sendData);
- }
- 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(1000);
- }
复制代码
在Thingspeak上监视数据 上传后,打开串口监视器,设置波特率为115200。按下ESP8266的复位按钮。 wifi连接状态应与湿度和温度值一起打印在串口监视器中。
现在,您可以转到Thingspeak网页在线检查数据。 15秒间隔后,数据将更新到Thingspeak服务器。
|