Съдържание:

Проект за регистрация на състоянието на вратата и температурата: 21 стъпки
Проект за регистрация на състоянието на вратата и температурата: 21 стъпки

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

Видео: Проект за регистрация на състоянието на вратата и температурата: 21 стъпки
Видео: Детето ми се храни само със зеленчуци 2024, Юли
Anonim
Проект за регистрация на състоянието на вратата и температурата
Проект за регистрация на състоянието на вратата и температурата

Този Instructable ще ви покаже как да направите прост регистратор на състоянието на вратата и температурата за по -малко от $ 10.00, като използвате ESP8266 NodeMCU, сензор за температура и влажност на DHT11, превключвател за врата/прозорец, резистор от 10K ома и малко свързващ проводник.

Генезисът на този проект дойде от желанието ми да направя повече домашна автоматизация с дъската Arduino. Тъй като бях чел много за съвместимата с Arduino EPS8266 NodeMCU, реших, че тази дъска ще бъде идеалната нискотарифна платка, с която да експериментирам. След като потърсих в Интернет проекти за домашна автоматизация, използвайки платките ESP8266, се спрях да комбинирам регистратор на температура и състояние на вратата за първия си опит. В крайна сметка този проект ще бъде комбиниран със серво, сензори за влага и друга електроника, за да автоматизира малка зелена къща, проектирана и построена от дядо ми преди 50 години. Температурният сензор ще се използва за определяне дали отоплителната система трябва да бъде включена или изключена, както и да сигнализира сервомоторите да отворят и затворят вентилационната система, когато е необходимо. Състоянието на вентилационната система ще се следи чрез използването на магнитни тръстикови превключватели. И накрая, сензорите за влага ще бъдат използвани за автоматизиране на поливната система.

Стъпка 1: Отказ от отговорност

Само бързо отказване от отговорност, за да заявим, че НЕ поемаме НИКАКАВА отговорност за всичко, което се случи в резултат на спазването на тази инструкция. Винаги е най -добре да следвате инструкциите на производителите и листовете за безопасност, когато изграждате каквото и да било, така че, моля, консултирайте се с тези документи за всяка от частите и инструментите, които използвате, за да изградите свои собствени. Ние просто предоставяме информация за стъпките, които използвахме, за да създадем нашите. Ние не сме професионалисти. Всъщност 2 от 3 лица, участвали в това изграждане, са деца.

Стъпка 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: Дайте име на събитие

Посочете име на събитие
Посочете име на събитие

В текстовото поле предоставете на новия си аплет име на събитие. Избрах "Data Logger", но вие можете да изберете каквото искате.

Стъпка 8: Конфигурирайте "онази" част от вашия аплет

Конфигурирайте
Конфигурирайте

Кликнете върху „онази“дума, която е в син цвят - както е подчертано на фигурата по -горе.

Стъпка 9: Настройте услуга за действие

Настройка на услуга за действие
Настройка на услуга за действие

В полето за търсене потърсете услугата „Google Sheets“и щракнете върху иконата на Google Sheets.

Стъпка 10: Свържете се с Google Таблици

Свържете се с Google Таблици
Свържете се с Google Таблици

Ако все още не сте го направили, ще трябва да свържете вашия IFTTT акаунт с Google Sheets. Натиснете бутона за свързване, показан по-горе, и следвайте инструкциите на екрана.

Стъпка 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) 10k Ohm резистор

5) Свързващ проводник

Стъпка 18: Сглобете компонентите

1) Свържете един от 3v3 щифта на ESP8266 към vcc щифта на DHT11.

2) Свържете един от заземяващите щифтове на ESP8266 към заземяващия щифт на DHT11.

3) Свържете щифт D4 (известен още като пин 2 в IDE) на ESP8266 към щифта за данни на DHT11.

4) Свържете друг щифт 3v3 на ESP8266 към едната страна на превключвателя за врата/прозорец.

5) Свържете щифт D5 (известен още като щифт 14 в IDE) на ESP8266 към другата страна на превключвателя на вратата/прозореца и също го свържете към едната страна на резистора 10k ohm.

6) Свържете другата страна на 10k омовия резистор към друг заземен щифт на ESP8266.

За избор на щифтове ESP8266, моля, вижте тази полезна диаграма или много полезното видео.

Стъпка 19: Напишете кода на Arduino

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

Копирайте и поставете кода по -долу във вашата Arduino IDE.

#include #include #include "DHT.h"

#define DHTPIN 2 // към кой цифров пин сме свързани

#define DOORPIN 14 // на кой цифров щифт е включен превключвателят на вратата.

#дефинирайте DHTTYPE DHT11 // DHT 11

DHT dht (DHTPIN, DHTTYPE);

int брой = 1;

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

// Създател на уеб куки IFTTT

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

// URL ресурс на IFTTT

const char* resource = "/trigger/SOME_SERVICE_NAME/with/key/SOME_API_KEY"; // Уверете се, че използвате името на услугата си и своя api ключ.

String doorStatus = "Затворен";

летливи bool stateChanged = false;

// Ако спите с часове, задайте интервал от hr * 60 минути * 60 секунди * 1000 милисекунди

const дълъг интервал = 1,0 * 60 * 60 * 1000; // 1 час без подпис дълъг предишенMillis = 0 - (2 * интервал);

void setup () {

Serial.begin (115200); attachInterrupt (digitalPinToInterrupt (DOORPIN), eventTriggered, CHANGE); pinMode (DOORPIN, INPUT); // Сензор за врата dht.begin (); WiFi.begin (ssid, парола);

Serial.print ("\ nСвързване..");

while (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 (" *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) " +" / ", \" value2 / ": \" " + h +" / ", \" value3 / ": \" " + doorStatus +" / "}"; HTTPClient http; Низ completeUrl = "https://maker.ifttt.com/trigger/bme280_readings/with/key/cZFasEvy5_3JlrUSVAxQK9"; http.begin (completeUrl); // http.begin (сървър); http.addHeader ("Тип съдържание", "приложение/json"); http. POST (jsonObject); http.writeToStream (& Serial); http.end (); // Затваряне на връзката

stateChanged = false;

int sleepTimeInMinutes = интервал / 1000 /60; Serial.print ("\ n / nОтидете да спите за"); Serial.print (sleepTimeInMinutes); Serial.println ("минути (и) …"); }}

void loop () {

беззнаков дълъг токMillis = millis (); забавяне (4000); // Ако сме надхвърлили изминалото време, принудително проверете вратата и темп. if (currentMillis - previousMillis> = интервал) {stateChanged = true; previousMillis = currentMillis; Serial.print (брой ++); Serial.println (") Проверка поради изминалото време!"); } else if (stateChanged) {Serial.print (count ++); Serial.println (") Проверка поради промяна на състоянието!"); }

// Ако състоянието се промени, проверете вратата и темп.

if (stateChanged) {checkStatus (); }

забавяне (sleepTime);

}

Стъпка 20: Резултати

Резултати
Резултати

След като качите изходния код в предишната стъпка, трябва да имате резултати като примера, показан по -горе.

Стъпка 21: Кредити

Открих много полезни съвети и съвети от уроци по случайни глупаци и бих искал да им благодаря за цялата им помощ. Особено техният отличен урок за ESP32 ESP8266 Публикуване на сензори за сензори в Google Sheets, на които се основават основните части на тази инструкция.

Освен това, DHT11 Instructable от TheCircuit ми помогна да разбера как да използвам този много евтин, но интересен малък сензор.

Освен това има много уроци, които се занимават с наблюдение на вашите врати, като монитора на гаражните врати и още един от уроците за случайни глупаци. Използвах парченца от тях, за да ми помогне да разбера как да накарам моя тръстиков превключвател да работи правилно.

И накрая, с тази информация, както и с други подробности, които открих в Интернет, успях да създам система, която да отговаря на моите нужди. Надявам се да намерите този Instructable полезен и да създадете свой собствен.

Препоръчано: