В данной статье мы рассмотрим мониторинг данных влажности и температуры на облачном сервисе ThingSpeak с использованием датчика DHT11 и NodeMCU ESP8266. Мы будем использовать сервис Thingspeak в качестве поставщика облачных услуг и датчик DHT11 для измерения температуры и влажности.
Ранее мы уже рассматривали аналогичные проекты на основе плат Arduino и Raspberry Pi, также мы рассматривали и передачу с помощью NodeMCU ESP8266 данных температуры и влажности на Google Firebase, но поскольку большинство сервисов Гугла недоступно сейчас для пользователей из России, то решили в этой статье рассмотреть аналогичный проект на Thingspeak. Все проекты на нашем сайте, использующие сервис Thingspeak, можно посмотреть по этой ссылке.
Необходимые компоненты
- NodeMCU ESP8266 (купить на AliExpress).
- Датчик температуры и влажности DHT11 (купить на AliExpress).
- Макетная плата.
- Соединительные провода.
Реклама: ООО «АЛИБАБА.КОМ (РУ)» ИНН: 7703380158
Внешний вид компонентов, необходимых для данного проекта, показан на следующем рисунке.
Датчик влажности и температуры DHT11
DHT11 — это базовый, сверхбюджетный цифровой датчик температуры и влажности. Он использует емкостный датчик влажности и термистор для измерения окружающего воздуха и выдает цифровой сигнал на вывод данных (аналоговые выводы не требуются).
Он достаточно прост в использовании, но требует тщательного расчета времени для сбора данных. Единственный реальный недостаток этого датчика в том, что вы можете получать от него новые данные только раз в 2 секунды, поэтому при использовании библиотеки показания датчика могут быть устаревшими до 2 секунд.
Схема проекта
Схема подключения датчика DHT11 к плате NodeMCU ESP8266 показана на следующем рисунке.
Настройка Thingspeak и получение ключа API
1. Перейдите на https://thingspeak.com/ и создайте учетную запись, если у вас ее нет. Войдите в свою учетную запись.
2. Создайте новый канал (feed), нажав на кнопку. Введите основные данные канала. Затем прокрутите вниз и сохраните канал. Более подробно данный процесс показан на видео, приведенном в конце статьи.
3. Затем перейдите в раздел API-ключи, скопируйте и вставьте этот ключ в отдельный файл блокнота. Он понадобится вам позже при программировании платы.
Исходный код программы
Ниже представлена программа для мониторинга влажности и температуры с использованием DHT11 и NodeMCU ESP8266 на ThingSpeak.
- Скопируйте эту программу и вставьте ее в Arduino IDE.
- Загрузите библиотеку DHT11/DHT22 с GitHub и добавьте ее в свой менеджер библиотек.
- Выберите плату NodeMCU ESP-12E в менеджере плат.
- Вставьте свой ключ API из thingspeak, который вы создали ранее, в строку раздела программирования.
- Отредактируйте программу, чтобы изменить SSID и пароль Wi-Fi на свои собственные.
- Скомпилируйте код и загрузите его на плату NodeMCU.
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 |
#include <DHT.h> // Including library for dht #include <ESP8266WiFi.h> String apiKey = "H38TEGNC0XKW43BB"; // Enter your Write API key from ThingSpeak const char *ssid = "how2electronics"; // replace with your wifi ssid and wpa2 key const char *pass = "alhabibi"; const char* server = "api.thingspeak.com"; #define DHTPIN 0 //pin where the dht11 is connected DHT dht(DHTPIN, DHT11); WiFiClient client; void setup() { Serial.begin(115200); delay(10); dht.begin(); 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"); } void loop() { float h = dht.readHumidity(); float t = dht.readTemperature(); if (isnan(h) || isnan(t)) { Serial.println("Failed to read from DHT sensor!"); return; } if (client.connect(server,80)) // "184.106.153.149" or api.thingspeak.com { String postStr = apiKey; postStr +="&field1="; postStr += String(t); postStr +="&field2="; postStr += String(h); postStr += "\r\n\r\n"; 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(postStr.length()); client.print("\n\n"); client.print(postStr); Serial.print("Temperature: "); Serial.print(t); Serial.print(" degrees Celcius, Humidity: "); Serial.print(h); Serial.println("%. Send to Thingspeak."); } client.stop(); Serial.println("Waiting..."); // thingspeak needs minimum 15 sec delay between updates delay(1000); } |
Тестирование работы проекта
Ниже показаны скрины, позволяющие оценить хранение и отображение данных температуры и влажности, считываемых нами с датчика DHT11, на сервисе Thingspeak.
Также считываемые данные температуры и влажности можно проконтролировать и в окне монитора последовательной связи.