Влажность и температура являются очень распространенными параметрами для измерения во многих местах, таких как ферма, теплица, медицина, промышленные дома и офисы. Мы уже рассмотрели измерение влажности и температуры с помощью Arduino и отобразили данные на ЖК-дисплее.
В этом проекте IoT мы собираемся контролировать влажность и температуру через Интернет с помощью ThingSpeak, где мы будем показывать текущие данные о влажности и температуре через Интернет с помощью сервера ThingSpeak. Это достигается за счет обмена данными между Arduino, модулем датчика DHT11, модулем WIFI ESP8266 и ЖК-дисплеем. Термометр со шкалой Цельсия и измеритель влажности с процентной шкалой отображает температуру и влажность окружающей среды на ЖК-дисплее, а также отправляет их на сервер ThingSpeak для мониторинга в реальном времени из любой точки мира.
Работа и настройка ThingSpeak:
Этот проект, основанный на IoT, состоит из четырех разделов: во-первых, датчик влажности и температуры DHT11 определяет данные о влажности и температуре . Во-вторых, Arduino Uno извлекает данные датчика DHT11 в виде подходящего числа в процентах и шкале Цельсия и отправляет их в модуль Wi-Fi. В - третьих, модуль Wi-Fi ESP8266 отправляет данные на сервер ThingSpeak. И, наконец, ThingSpeak анализирует данные и отображает их в виде графика. Дополнительный ЖК-дисплей также используется для отображения температуры и влажности.
ThingSpeak предоставляет очень хороший инструмент для проектов на основе Интернета вещей для Arduino. Используя сайт ThingSpeak, мы можем отслеживать наши данные через Интернет из любого места, а также мы можем контролировать нашу систему через Интернет, используя каналы и веб-страницы, предоставляемые ThingSpeak. ThingSpeak «собирает» данные с датчиков, «анализирует и визуализирует» данные и «действует», вызывая реакцию. Здесь мы объясняем, как отправлять данные на сервер ThingSpeak с помощью модуля ESP8266 WIFI:
1. Прежде всего, пользователю необходимо создать учетную запись на ThingSpeak.com, затем войти в систему и нажать кнопку « Начать».
2. Теперь перейдите в меню «Каналы» и нажмите « Новый канал» на той же странице, чтобы продолжить работу.
3. Теперь вы увидите форму для создания канала, заполните Имя и Описание по вашему выбору. Затем заполните метки «Влажность» и «Температура» в полях 1 и 2, установите флажки для обоих полей. Также установите флажок «Сделать общедоступным» ниже в форме и, наконец, сохраните канал. Теперь ваш новый канал создан.
4. Теперь перейдите на вкладку «Ключи API» и сохраните ключи API записи и чтения, здесь мы используем только ключ записи. Вам нужно скопировать этот ключ в char * api_key в Коде.
5. После этого нажмите «Импорт / экспорт данных» и скопируйте URL-адрес запроса GET для канала обновления канала, который:
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. Мы уже подробно рассмотрели взаимодействие модуля ESP8266 Wi-Fi с Arduino.
Часть программирования:
Программная часть этого проекта играет очень важную роль для выполнения всех операций. Прежде всего, мы подключаем необходимые библиотеки и инициализируем переменные.
#include "dht.h" // Включение библиотеки для dht #include
После этого введите свой ключ API записи и возьмите несколько строк.
char * api_key = "SIWOYBX26OXQ1WMS"; // Введите свой ключ API записи из ThingSpeak static char 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); }