В данной статье мы рассмотрим подключение датчика влажности и температуры SHT31 к плате NodeMCU ESP8266. Считываемые данные влажности и температуры мы будем передавать на сервер Thingspeak - отличный сервис для многих проектов Интернета вещей (IoT).
Существуют различные датчики влажности и температуры, такие как DHT11 и HTU21D. Но если говорить о точности, ни один из них не подходит для промышленного контроля температуры и влажности из-за точности и достоверности. Они имеют низкую точность и чувствительность. Поэтому здесь мы будем использовать датчик температуры/влажности SHT31. Это самые точные и высокоточные устройства, которые вы можете получить для этой цели. Это цифровой датчик с интерфейсом I2C, который обеспечивает легкое считывание влажности и температуры. Датчик SHT31 имеет превосходную точность измерения относительной влажности ±2% и температуры ±0,3°C для большинства применений.
В этом проекте мы соединим датчик температуры/влажности SHT31 с платой Nodemcu ESP8266. Мы будем отправлять считываемые данные на сервер Thingspeak. ThingSpeak — это приложение Интернета вещей с открытым исходным кодом и API для хранения и извлечения данных из вещей с использованием протоколов HTTP и MQTT через Интернет или через локальную сеть. На нашем сайте мы рассматривали уже достаточно много проектов с использованием сервиса ThingSpeak - посмотрите их если хотите более подробно изучить работу с данным сервисом.
Также мы рассматривали подключение датчика SHT31 и к другим микроконтроллерам/платам:
- подключение датчика температуры и влажности SHT3x к Arduino;
- веб-сервер мониторинга температуры и влажности на ESP32 и датчике SHT31.
Необходимые компоненты
- NodeMCU ESP8266 (купить на AliExpress).
- Датчик влажности и температуры SHT31 (купить на AliExpress).
- Макетная плата
- Соединительные провода.
Реклама: ООО "АЛИБАБА.КОМ (РУ)" ИНН: 7703380158
Датчик влажности и температуры SHT31
SHT31 — это следующее поколение датчиков температуры и влажности от компании Sensirion. SHT31 обладает улучшенными характеристиками интеллекта, надежности и точности по сравнению со своим предшественником. Его функциональность включает улучшенную обработку сигнала, температуру и влажность, которые можно считывать через интерфейс I2C. Этот мини-модуль I2C упрощает считывание температуры и влажности с помощью любого современного микроконтроллера.
Все мини-модули I2C рассчитаны на работу при напряжении 5 В постоянного тока. Используя удобный 4-контактный разъем, устройства можно последовательно подключать к шине I2C, устраняя необходимость в пайке. Просто подключите вместе устройства, необходимые для вашего приложения автоматизации.
Характеристики датчика SHT31
1. Датчик температуры и влажности двойного назначения.
2. Точность относительной влажности ±2%.
3. Диапазон измерения влажности 0–100%.
4. Рабочая температура от -40 до +125 °C (от -40 до +257 °F).
5. Время отклика датчика 8 секунд.
6. Начальный адрес 0x44.
7. Модульная коммутационная плата SHT31.
Схема проекта
Схема подключения датчика температуры и влажности SHT31 к Nodemcu ESP8266 представлена на следующем рисунке.
Подключите контакт VCC датчика SHT31 к контакту 3,3 В ESP8266, а GND датчика - к GND ESP8266. Подключите контакты SCL и SDA SHT31 к контактам SCL (D1) и SDA (D2) ESP38266 соответственно, как показано на рисунке выше.
Настройка Thingspeak
1. Перейдите на https://thingspeak.com/ и создайте учетную запись, если у вас ее нет. Войдите в свою учетную запись, если у вас ее уже есть.
2. Создайте новый канал, нажав кнопку Create («Создать»). Введите основные данные канала, такие как поля 1 и 2. Затем прокрутите вниз и сохраните канал.
3. Затем перейдите в API keys, скопируйте и вставьте этот ключ в отдельный файл блокнота. Он вам понадобится позже при программировании.
Исходный код программы
Исходный код для подключения датчика SHT31 к плате NodeMCU ESP8266 приведен ниже. Вы можете скопировать этот код и загрузить его на плату ESP8266. Но перед этим вам понадобится библиотека для работы с датчиком SHT31. Вы можете скачать ее по следующей ссылке.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
#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
После загрузки кода на плату откройте Serial Monitor (окно монитора последовательной связи) на скорости 115200 бод. Нажмите кнопку сброса ESP8266. Состояние подключения Wi-Fi должно быть напечатано в Serial Monitor вместе со значением влажности и температуры.
Теперь вы можете перейти на приватный просмотр в сервисе thingspeak и проверить данные онлайн. Данные обновляются на сервере thingspeak с интервалом в 15 секунд.
42 просмотров