Оглавление:

Проект регистратора состояния двери и температуры: 21 шаг
Проект регистратора состояния двери и температуры: 21 шаг

Видео: Проект регистратора состояния двери и температуры: 21 шаг

Видео: Проект регистратора состояния двери и температуры: 21 шаг
Видео: Одесса. НАЧАЛОСЬ! 2024, Июль
Anonim
Проект регистратора состояния двери и температуры
Проект регистратора состояния двери и температуры

Это руководство покажет вам, как сделать простой регистратор состояния двери и температуры менее чем за 10 долларов США, используя ESP8266 NodeMCU, датчик температуры и влажности DHT11, герконовый переключатель двери / окна, резистор 10 кОм и некоторый соединительный провод.

Возникновение этого проекта возникло из-за моего желания сделать большую домашнюю автоматизацию с помощью платы Arduino. Поскольку я много читал о совместимой с Arduino EPS8266 NodeMCU, я решил, что эта плата будет идеальной недорогой платой, с которой можно поэкспериментировать. После поиска в Интернете проектов домашней автоматизации с использованием плат ESP8266 я решил объединить регистратор температуры и состояния двери для своей первой попытки. В конечном итоге этот проект будет объединен с сервоприводами, датчиками влажности и другой электроникой для автоматизации небольшой теплицы, которую мой дед спроектировал и построил 50 лет назад. Датчик температуры будет использоваться для определения того, следует ли включать или выключать систему обогрева, а также для подачи сигнала сервоприводам на открытие и закрытие системы вентиляции при необходимости. Состояние системы вентиляции будет контролироваться с помощью герконов. Наконец, датчики влажности будут использоваться для автоматизации системы полива.

Шаг 1. Заявление об отказе от ответственности

Просто краткий отказ от ответственности, чтобы заявить, что мы НЕ несем ответственности за все, что происходит в результате следования этим инструкциям. Всегда лучше следовать инструкциям производителя и паспортам безопасности при создании чего-либо, поэтому, пожалуйста, ознакомьтесь с этими документами для любых деталей и инструментов, которые вы используете для создания своего собственного. Мы просто предоставляем информацию о шагах, которые мы использовали для создания наших. Мы не профессионалы. Фактически, двое из трех участников этой сборки - дети.

Шаг 2. Создайте бесплатную учетную запись IFTTT

Установить бесплатную учетную запись IFTTT
Установить бесплатную учетную запись IFTTT

Если у вас его еще нет, сейчас самое время настроить бесплатную учетную запись IFTTT, перейдя на их домашнюю страницу. IFTTT означает «Если это, то это», и это бесплатная платформа, которая позволяет вам подключать интернет-сервисы по-новому. позволяют вам использовать эти услуги по-новому. В этом проекте мы собираемся использовать IFTTT, чтобы позволить ESP8266 регистрировать состояние двери через геркон, а также температуру и влажность через датчик DHT11 в документе Google Sheets.

Шаг 3. Создайте апплет IFTTT

Создайте апплет IFTTT
Создайте апплет IFTTT

Находясь в IFTTT, перейдите в раздел «Мои апплеты» и создайте новый апплет, нажав кнопку «Новый апплет».

Шаг 4: Настройте «эту» часть вашего апплета

Настроить
Настроить

Щелкните слово «это» синим цветом, как показано на рисунке выше.

Шаг 5: Добавьте службу WebHooks в свой апплет

Добавьте службу WebHooks в свой апплет
Добавьте службу WebHooks в свой апплет

В строке поиска найдите службу «Webhooks» и выберите значок Webhooks.

Как только вы найдете сервис «Webhooks», щелкните по нему.

Шаг 6: Настройте триггер получения веб-запроса

Настройте триггер получения веб-запроса
Настройте триггер получения веб-запроса

Выберите триггер «Получить веб-запрос».

Шаг 7. Укажите название события

Укажите название события
Укажите название события

В текстовом поле укажите вашему новому апплету имя события. Я выбрал «Регистратор данных», но вы можете выбрать все, что захотите.

Шаг 8: Настройте «ту» часть вашего апплета

Настроить
Настроить

Нажмите на «это» слово синего цвета, как показано на рисунке выше.

Шаг 9: Настройте службу действий

Настроить службу действий
Настроить службу действий

В поле поиска найдите службу «Google Таблицы» и щелкните значок Google Таблицы.

Шаг 10. Подключитесь к Google Таблицам

Подключиться к Google Таблицам
Подключиться к Google Таблицам

Если вы еще этого не сделали, вам не нужно будет подключать свою учетную запись IFTTT к Google Таблицам. Нажмите кнопку «Подключить», показанную выше, и следуйте инструкциям на экране.

Шаг 11: выберите действие

Выберите действие
Выберите действие

Щелкните «Добавить строку в электронную таблицу».

Шаг 12: Настройте действие

Настроить действие
Настроить действие

Введите имя в текстовом поле «Имя электронной таблицы». Я предпочитаю использовать Data_Logger для единообразия. Оставьте остальные настройки в покое (вы можете поэкспериментировать с этими настройками в другой раз), а затем нажмите кнопку «Создать действие» в нижней части экрана.

Шаг 13: Просмотрите и доработайте свой апплет

Просмотрите и доработайте свой апплет
Просмотрите и доработайте свой апплет

Когда вы будете удовлетворены конфигурацией вашего апплета, нажмите кнопку «Готово».

Шаг 14: Получить информацию о конфигурации, которая понадобится позже

Получить информацию о конфигурации, которая понадобится позже
Получить информацию о конфигурации, которая понадобится позже

Щелкните «Webhooks», как выделено выше.

Шаг 15: перейдите к документации Webhooks для ключа API

Перейдите к документации Webhooks для ключа API
Перейдите к документации Webhooks для ключа API

Это может показаться странным, но нажмите ссылку «Документация» в правом верхнем углу, чтобы перейти на страницу с вашим уникальным ключом API.

Шаг 16. Сохраните ключ API

Сохраните ключ API
Сохраните ключ API
Сохраните ключ API
Сохраните ключ API

В первой строке экрана документации отображается ваш уникальный ключ API. Скопируйте и сохраните этот ключ для использования в дальнейшем.

Также неплохо протестировать здесь апплет. Не забудьте изменить {событие} на Data_Logger или другое название, которое вы назвали для своего события, и добавить данные к трем пустым значениям, затем нажмите кнопку «Проверить» внизу страницы. Вы должны увидеть зеленое сообщение «Событие запущено». Если это так, перейдите в Документы Google и убедитесь, что данные, которые вы ввели на тестовой странице, появились в документе Google Таблиц.

Шаг 17: Соберите компоненты

Соберите компоненты
Соберите компоненты
Соберите компоненты
Соберите компоненты
Соберите компоненты
Соберите компоненты

Вам понадобится всего несколько деталей.

1) Совет по развитию ESP8266 NodeMcu

2) Датчик температуры / влажности DHT11

3) Геркон двери / окна

4) Резистор 10 кОм

5) Монтажный провод

Шаг 18: соберите компоненты

1) Подключите один из выводов 3v3 на ESP8266 к выводу vcc на DHT11.

2) Подключите один из выводов заземления на ESP8266 к выводу заземления на DHT11.

3) Подключите контакт D4 (он же контакт 2 в IDE) на ESP8266 к контакту данных на DHT11.

4) Подключите еще один контакт 3v3 на ESP8266 к одной стороне язычкового переключателя двери / окна.

5) Подключите контакт D5 (также известный как контакт 14 в IDE) на ESP8266 к другой стороне геркона двери / окна, а также подключите его к одной стороне резистора 10 кОм.

6) Подключите другую сторону резистора 10 кОм к другому контакту заземления на ESP8266.

Для выбора контактов ESP8266 обратитесь к этой полезной диаграмме или очень полезному видео.

Шаг 19: напишите код Arduino

Напишите код Arduino
Напишите код Arduino

Скопируйте и вставьте приведенный ниже код в свою Arduino IDE.

#include #include #include "DHT.h"

#define DHTPIN 2 // к какому цифровому выводу мы подключены

#define DOORPIN 14 // какой цифровой контакт включен дверной выключатель.

#define DHTTYPE DHT11 // DHT 11

DHT dht (DHTPIN, DHTTYPE);

int count = 1;

const char * ssid = "some_ssid"; // измените это, чтобы использовать ваш ssid const char * password = "some_password"; // измените это, чтобы использовать ваш пароль int sleepTime = 100;

// Maker Webhooks IFTTT

const char * server = "maker.ifttt.com";

// IFTTT URL-ресурс

const char * resource = "/ trigger / SOME_SERVICE_NAME / with / key / SOME_API_KEY"; // Обязательно используйте имя вашей службы и ключ API.

Строка doorStatus = "Закрыто";

volatile bool stateChanged = false;

// Если вы спите часами, установите интервал в час * 60 минут * 60 секунд * 1000 миллисекунд

const long interval = 1.0 * 60 * 60 * 1000; // 1 час беззнаковой длины previousMillis = 0 - (2 * интервал);

void setup () {

Serial.begin (115200); attachInterrupt (digitalPinToInterrupt (DOORPIN), eventTriggered, ИЗМЕНИТЬ); pinMode (DOORPIN, INPUT); // Датчик двери dht.begin (); WiFi.begin (ssid, пароль);

Serial.print ("\ nПодключение..");

в то время как (WiFi.status ()! = WL_CONNECTED) {задержка (1000); Serial.print ("."); } Serial.print ("\ n"); }

void eventTriggered () {

stateChanged = true; Serial.println («Проверяем дверь!»); if (digitalRead (DOORPIN) == HIGH) // Проверяем, открыта ли дверь {Serial.println ("Дверь закрыта!"); doorStatus = "Закрыто"; } else {Serial.println («Дверь открыта!»); doorStatus = "Открыто"; }}

void checkStatus () {

if (WiFi.status () == WL_CONNECTED) {// Проверяем статус WiFi-соединения // Считывание температуры или влажности занимает около 250 миллисекунд! // Показания датчика также могут быть "старыми" до 2 секунд (это очень медленный датчик) float h = dht.readHumidity (); // Считываем температуру в градусах Цельсия (по умолчанию) float t = dht.readTemperature (); // Считываем температуру по Фаренгейту (isFahrenheit = true) float f = dht.readTemperature (true); // Проверяем, нет ли сбоев при чтении, и завершаем работу раньше (чтобы повторить попытку). if (isnan (h) || isnan (t) || isnan (f)) {Serial.println ("Не удалось прочитать с датчика DHT!"); //Serial.print ("."); // Не удалось прочитать с датчика DHT! возвращение; } // Вычислить индекс тепла в градусах Фаренгейта (по умолчанию) float hif = dht.computeHeatIndex (f, h); // Вычислить индекс тепла в градусах Цельсия (isFahreheit = false) float hic = dht.computeHeatIndex (t, h, false);

Serial.print ("\ n");

Serial.print ("Температура:"); Серийный принт (е); Serial.print ("* F ("); Serial.print (t); Serial.print ("* C)"); Serial.print ("\ t"); Serial.print («Тепловой индекс:»); Serial.print (hif); Serial.print ("* F ("); Serial.print (hic); Serial.print ("* C)%"); Serial.print ("\ t"); Serial.print ("Влажность:"); Serial.println (h);

if (digitalRead (DOORPIN) == HIGH) // Проверяем, открыта ли дверь

{Serial.println («Дверь закрыта!»); doorStatus = "Закрыто"; } else {Serial.println («Дверь открыта!»); doorStatus = "Открыто"; } String jsonObject = String ("{" value1 / ": \" ") + f +" * F ("+ t +" * C) / "+ hif +" * F ("+ hic +" * C) "+" / ", \" значение2 / ": \" "+ h +" / ", \" значение3 / ": \" "+ doorStatus +" / "}"; HTTPClient http; String completeUrl = "https://maker.ifttt.com/trigger/bme280_readings/with/key/cZFasEvy5_3JlrUSVAxQK9"; http.begin (completeUrl); // http.begin (сервер); http.addHeader ("Content-Type", "application / json"); http. POST (jsonObject); http.writeToStream (& серийный); http.end (); // Закрываем соединение

stateChanged = false;

int sleepTimeInMinutes = интервал / 1000/60; Serial.print ("\ n / nСпать"); Serial.print (sleepTimeInMinutes); Serial.println ("минуты (-ы)…"); }}

void loop () {

беззнаковый длинный currentMillis = millis (); задержка (4000); // Если мы превзошли истекшее время, то принудительно проверяем дверь и темп. если (currentMillis - previousMillis> = интервал) {stateChanged = true; previousMillis = currentMillis; Serial.print (count ++); Serial.println (") Проверка по истекшему времени!"); } иначе, если (stateChanged) {Serial.print (count ++); Serial.println (") Проверка из-за изменения состояния!"); }

// Если состояние изменилось, то проверяем дверь и темп.

если (stateChanged) {checkStatus (); }

задержка (время сна);

}

Шаг 20: результаты

Полученные результаты
Полученные результаты

После того, как вы загрузите исходный код на предыдущем шаге, вы должны получить результаты, подобные показанному выше примеру.

Шаг 21: кредиты

Я нашел много полезных советов и подсказок в «Учебниках случайных ботаников» и хотел бы поблагодарить их за всю их помощь. Особенно их отличный учебник по ESP32 ESP8266 Публикация показаний датчиков в Google Таблицах, на которых основаны основные части этого руководства.

Кроме того, DHT11 Instructable от TheCircuit помог мне понять, как использовать этот очень недорогой, но интересный маленький датчик.

Кроме того, существует множество руководств по мониторингу ваших дверей, таких как Garage Door Monitor и еще одно от Random Nerd Tutorials. Я использовал их по частям, чтобы понять, как правильно заставить мой язычковый переключатель работать.

Наконец, с этой информацией, а также с другими подробностями, которые я нашел в Интернете, я смог создать систему, которая отвечала моим потребностям. Я надеюсь, что вы найдете это руководство полезным и создадите свой собственный.

Рекомендуемые: