У сучасному світі розумний дім стає все більш популярним, але часто ми стикаємося з потребою в моніторингу різних параметрів, таких як температура, щоб забезпечити комфорт та безпеку. Ця стаття навчить вас, як створити Arduino проект моніторингу температури, який надсилатиме сповіщення в Telegram, якщо температура вийде за межі встановлених вами меж. Ми розберемо код крок за кроком, обговоримо типові помилки та порівняємо різні підходи до реалізації.
Контекст і чому це важливо
Уявіть, що ви від’їжджаєте у відпустку, а у вашому будинку залишаються рослини, які потребують стабільної температури. Або, можливо, у вас є домашні улюбленці, чутливі до перепадів температур. Безперервний моніторинг температури та своєчасне отримання повідомлень про критичні зміни можуть запобігти серйозним проблемам. На жаль, часто люди покладаються на візуальний огляд, що є ненадійним, особливо коли мова йде про тривалі відсутність. За статистикою, приблизно 20% пошкоджень майна вдома пов’язані з неконтрольованими температурними коливаннями.
Практична реалізація
Для реалізації проекту нам знадобиться Arduino плата (наприклад, Arduino Uno), датчик температури (наприклад, DHT11 або DHT22), модуль WiFi (наприклад, ESP8266 або ESP32), та обліковий запис Telegram Bot. Спочатку ми налаштуємо необхідні бібліотеки та структуру коду для збору даних з датчика та надсилання повідомлень в Telegram. Потім, ми створимо логіку для перевірки температури на відповідність заданим межам та надсилання сповіщень у разі їх порушення.
include
include
include
define DHTPIN 2 // Пін підключення датчика DHT
define DHTTYPE DHT11 // Тип датчика DHT (DHT11 або DHT22)
DHT dht(DHTPIN, DHTTYPE);
const char* ssid = "YOUR_WIFI_SSID";
const char* password = "YOUR_WIFI_PASSWORD";
const String BOT_TOKEN = "YOUR_TELEGRAM_BOT_TOKEN";
const String CHAT_ID = "YOUR_TELEGRAM_CHAT_ID";
TelegramBot bot(BOT_TOKEN);
void setup() {
Serial.begin(115200);
dht.begin();
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("WiFi connected");
Serial.println("Waiting for Telegram initialization...");
bot.begin();
Serial.println("Telegram initialized");
}
void loop() {
delay(2000);
float temperature = dht.readTemperature();
if (isnan(temperature)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.println(" °C");
if (temperature > 28.0) {
bot.sendMessage(CHAT_ID, "Temperature is too high: " + String(temperature) + " °C");
} else if (temperature < 15.0) {
bot.sendMessage(CHAT_ID, "Temperature is too low: " + String(temperature) + " °C");
}
}
Цей код спочатку включає необхідні бібліотеки для роботи з датчиком DHT, WiFi та Telegram Bot. Далі він визначає піни підключення, SSID, пароль, токен бота Telegram та ID чату. Функція `setup()` ініціалізує датчик, підключається до WiFi та ініціалізує бота Telegram. У функції `loop()` зчитується температура, перевіряється на відповідність заданим межам, і у разі порушення надсилається повідомлення в Telegram.
Поширені помилки та підводні камені
- Неправильний SSID або пароль WiFi: Переконайтеся, що SSID та пароль WiFi вказані правильно. Неправильні дані призведуть до того, що Arduino не зможе підключитися до мережі, і проект не працюватиме. Перевірте великі/малі літери та спеціальні символи.
- Неправильний токен бота Telegram: Токен бота є унікальним і конфіденційним. Якщо токен невірний, бот не зможе отримати доступ до Telegram API. Отримайте токен з BotFather у Telegram.
- Недостатньо пам'яті на Arduino Uno: Якщо ви використовуєте Arduino Uno, то великі бібліотеки, такі як TelegramBot, можуть призвести до нестачі пам'яті. У такому випадку, спробуйте спростити код або використовувати плату з більшим обсягом пам'яті, наприклад ESP32.
Порівняння підходів
Раніше, для моніторингу температури використовувалися прості датчики, підключені до комп'ютера, який відображав дані на екрані. Це рішення було обмеженим, оскільки вимагало постійного нагляду за комп’ютером. Наш підхід з використанням Arduino, WiFi та Telegram дозволяє автоматизувати процес моніторингу та отримувати сповіщення на мобільний пристрій, незалежно від вашого місцезнаходження. Основний недолік цього підходу - залежність від стабільного WiFi з’єднання та надійності Telegram API.
Висновки
Створення Arduino проекту моніторингу температури з алертами в Telegram - це простий та ефективний спосіб забезпечити безпеку та комфорт у вашому розумному домі. Рекомендуємо вам спробувати цей проект, адаптувавши його під свої потреби. Практична порада: почніть з простого коду, переконайтеся, що все працює коректно, а потім поступово додавайте нові функції та можливості.