Вологість та температура є дуже поширеними параметрами для вимірювання в багатьох місцях, таких як ферми, теплиці, медицина, будинки та офіси. Ми вже охопили вимірювання вологості та температури за допомогою Arduino і відобразили дані на РК-дисплеї.
У цьому проекті IoT ми збираємося контролювати вологість та температуру через Інтернет за допомогою ThingSpeak, де ми покажемо поточні дані про вологість та температуру через Інтернет за допомогою сервера ThingSpeak. Це здійснюється завдяки передачі даних між Arduino, сенсорним модулем DHT11, модулем WIFI ESP8266 та РК-дисплеєм. Термометр шкали Цельсія та вимірювач вологості у відсотках відображає температуру навколишнього середовища та вологість через РК-дисплей, а також надсилає їх на сервер ThingSpeak для моніторингу в реальному часі з будь-якої точки світу.
Налаштування Work and ThingSpeak:
Цей проект на основі IoT, що складається з чотирьох розділів, по-перше, датчик вологості та температури DHT11 визначає дані вологості та температури . По-друге, Arduino Uno витягує дані датчика DHT11 як відповідне число у відсотках та шкалі Цельсія, і надсилає їх до модуля Wi-Fi. По - третє, модуль Wi-Fi ESP8266 надсилає дані в сервер ThingSpeak. І, нарешті, ThingSpeak аналізує дані та показує їх у формі Графіка. Додатковий РК-дисплей також використовується для відображення температури та вологості.
ThingSpeak забезпечує дуже хороший інструмент для проектів на базі IoT для Arduino. Використовуючи сайт ThingSpeak, ми можемо контролювати наші дані через Інтернет з будь-якого місця, а також можемо контролювати свою систему через Інтернет, використовуючи Канали та веб-сторінки, надані ThingSpeak. ThingSpeak "збирає" дані з датчиків, "аналізує та візуалізує" дані та "діє", викликаючи реакцію. Тут ми пояснюємо, як надсилати дані на сервер ThingSpeak за допомогою модуля ESP8266 WIFI:
1. Перш за все, користувачеві потрібно створити обліковий запис на ThingSpeak.com, потім увійти в систему та натиснути на «Початок роботи».
2. Тепер перейдіть до меню «Канали» та натисніть опцію « Новий канал» на тій же сторінці для подальшого процесу.
3. Тепер ви побачите форму для створення каналу, заповніть ім’я та опис відповідно до вашого вибору. Потім заповніть "Вологість" і "Температура" в мітках Полів 1 і Поля 2, поставте прапорці в обох полях. Також поставте прапорець біля опції "Зробити загальнодоступною" нижче у формі та, нарешті, Збережіть канал. Тепер ваш новий канал створено.
4. Тепер натисніть на вкладку «Ключі API» та збережіть ключі API Write and Read API, тут ми використовуємо лише клавішу Write. Вам потрібно скопіювати цей ключ у char * api_key у Коді .
5. Після цього натисніть «Імпорт / експорт даних» та скопіюйте URL-адресу запиту «Оновити канал каналу», який є:
api.thingspeak.com/update?api_key=SIWOYBX26OXQ1WMS&field1=0
6. Тепер користувачеві потрібно відкрити “api.thingspeak.com”, використовуючи функцію httpGet з postUrl як “update? Api_key = SIWOYBX26OXQ1WMS & field1 = 0”, а потім надіслати дані за допомогою стрічки даних або адреси запиту на оновлення.
Перед відправкою даних користувачеві потрібно відредагувати цей рядок запиту або postUrl з полями температури та вологості, як показано нижче. Тут ми додали обидва параметри в рядок, який нам потрібно надіслати за допомогою запиту GET на сервер, після чого ми використали httpGet для передачі даних на сервер. Перевірте повний код нижче.
Sprintf (postUrl, "оновити? Api_key =% s & field1 =% s & field2 =% s", api_key, humidStr, tempStr); httpGet ("api.thingspeak.com", postUrl, 80);
Весь процес продемонстровано в розділі " Відео " в кінці цієї статті.
Робота цього проекту базується на однопровідному послідовному зв'язку для отримання даних з DHT11. Спочатку Arduino надсилає сигнал старту модулю DHT, а потім DHT видає сигнал відповіді із вмістом даних. Arduino збирає та витягує дані з двох частин, перша - це вологість, а друга - температура, а потім надсилає їх на РК-дисплей 16x2 та сервер ThingSpeak. ThingSpeak відображає дані у вигляді графіку, як показано нижче:
Ви можете дізнатись більше про датчик DHT11 та його взаємодію з Arduino тут.
Опис ланцюга:
Підключення цього проекту ThingSpeak з моніторингу температури та вологості дуже просте. Тут для відображення температури та вологості використовується рідкокристалічний дисплей, який безпосередньо підключений до Arduino в 4-бітному режимі. Виводи РК-дисплея, а саме RS, EN, D4, D5, D6 і D7, підключені до цифрових виводів Arduino 14, 15, 16, 17, 18 і 19. Цей РК-дисплей не є обов'язковим.
Модуль датчика DHT11 підключений до цифрового виводу 12 Arduino. Виводи Vcc та GND модуля Wi-Fi ESP8266 безпосередньо підключені до 3,3 В, а GND Arduino, а CH_PD також 3,3 В. Виводи Tx і Rx ESP8266 безпосередньо підключені до виводів 2 і 3 Arduino. Тут також використовується програмна послідовна бібліотека, яка дозволяє послідовний зв’язок на контактах 2 і 3 Arduino. Ми вже детально висвітлювали взаємодію модуля Wi-Fi ESP8266 з Arduino.
Частина програмування:
Частина програмування цього проекту відіграє дуже важливу роль для виконання всіх операцій. Перш за все ми включаємо необхідні бібліотеки та ініціалізуємо змінні.
#include "dht.h" // Включаючи бібліотеку для dht #include
Після цього введіть ваш ключ API API та візьміть рядки.
char * api_key = "SIWOYBX26OXQ1WMS"; // Введіть ваш ключ API API із статичного символу ThingSpeak postUrl; int humi, tem; void httpGet (String ip, String path, int port = 80);
У функції void loop () ми зчитуємо температуру та вологість, а потім показуємо ці показники на РК-дисплеї.
void send2server () використовується для надсилання даних на сервер. Функція Send2server - це процедура переривання таймера, що викликає кожні 20 секунд. Коли ми викликаємо функцію оновлення, викликається процедура обслуговування переривання таймера.
void send2server () {char tempStr; char humidStr; dtostrf (tem, 5, 3, tempStr); dtostrf (humi, 5, 3, humidStr); sprintf (postUrl, "оновити? api_key =% s & field1 =% s & field2 =% s", api_key, humidStr, tempStr); httpGet ("api.thingspeak.com", postUrl, 80); }