Mundarija:

Eshik va harorat holatini qayd qilish loyihasi: 21 qadam
Eshik va harorat holatini qayd qilish loyihasi: 21 qadam

Video: Eshik va harorat holatini qayd qilish loyihasi: 21 qadam

Video: Eshik va harorat holatini qayd qilish loyihasi: 21 qadam
Video: Загадка Титаника : Как они могли не заметить айсберг?! Самая подробная история! 2024, Noyabr
Anonim
Eshik va harorat holatini qayd qilish loyihasi
Eshik va harorat holatini qayd qilish loyihasi

Bu ko'rsatma sizga ESP8266 NodeMCU, DHT11 harorat va namlik sensori, eshik/deraza qamish kaliti, 10K ohmli rezistor va bir nechta ulash simini ishlatib, 10,00 dollardan past bo'lgan oddiy eshik va harorat holatini qayd etishni ko'rsatib beradi.

Ushbu loyihaning kelib chiqishi Arduino platasi yordamida uyni ko'proq avtomatlashtirishni amalga oshirish istagimdan kelib chiqdi, chunki men Arduino -ga mos keladigan EPS8266 NodeMCU haqida ko'p o'qiganim uchun, men tajriba o'tkazish uchun bu taxta arzon narxlardagi mukammal taxta bo'ladi deb qaror qildim. ESP8266 taxtasi yordamida uyni avtomatlashtirish loyihalarini Internetda qidirgandan so'ng, men birinchi urinishim uchun harorat va eshik holatini qayd etuvchi jurnalni birlashtirishga qaror qildim. Oxir -oqibat, bu loyiha servo, namlik sensori va boshqa elektronika bilan birlashtirilib, bobom 50 yil oldin loyihalashtirilgan va qurilgan kichik issiqxonani avtomatlashtiradi. Harorat sensori isitish tizimini ishga tushirish yoki o'chirish kerakligini aniqlash uchun ishlatiladi, shuningdek, kerak bo'lganda shamollatish tizimini ochish va yopish uchun servolarga signal beradi. Shamollatish tizimining holati magnit qamish kalitlari yordamida kuzatiladi. Nihoyat, namlik sezgichlari sug'orish tizimini avtomatlashtirish uchun ishlatiladi.

1 -qadam: Ogohlantirishdan voz kechish

Shuni ta'kidlash kerakki, biz ushbu ko'rsatmalarga amal qilish natijasida sodir bo'layotgan har qanday narsa uchun javobgarlikni o'z zimmamizga olmaymiz. Har qanday narsani qurishda ishlab chiqaruvchilarning ko'rsatmalariga va xavfsizlik varaqlariga rioya qilish har doim yaxshidir, shuning uchun siz o'zingiz tayyorlagan buyumlar va asboblar uchun ushbu hujjatlar bilan tanishib chiqing. Biz shunchaki o'zimiz yaratgan qadamlar haqida ma'lumot beramiz. Biz professional emasmiz. Aslida, ushbu qurilishda qatnashgan har 3 kishidan 2 nafari bolalardir.

2 -qadam: Bepul IFTTT hisobini o'rnating

IFTTT hisobini bepul o'rnatish
IFTTT hisobini bepul o'rnatish

Agar sizda hozircha yo'q bo'lsa, endi IFTTT -ning asosiy sahifasini ochib, hisob qaydnomasini o'rnatish vaqti keldi. IFTTT bu "Agar shunday bo'lsa" degan ma'noni anglatadi va Internetga asoslangan xizmatlarni yangi usullar bilan ulash imkonini beradigan bepul platformadir. bu xizmatlardan yangi usullar bilan foydalanish imkonini beradi. Ushbu loyiha uchun biz ESP8266 -ga Google Sheets hujjatidagi DHT11 sensori orqali eshikning holatini qamish kaliti va harorat va namlik orqali qayd qilish uchun IFTTT -dan foydalanamiz.

3 -qadam: IFTTT ilovasini yarating

IFTTT ilovasini yarating
IFTTT ilovasini yarating

IFTTTda bo'lganingizda, "Mening appletlarim" bo'limiga o'ting va "Yangi Applet" tugmasini bosib yangi applet yarating.

4 -qadam: Appletingizning "bu" qismini sozlang

Ni sozlang
Ni sozlang

Yuqoridagi rasmda ta'kidlanganidek, ko'k rangdagi "bu" so'zini bosing.

5 -qadam: WebHooks xizmatini ilovangizga qo'shing

WebHooks xizmatini ilovangizga qo'shing
WebHooks xizmatini ilovangizga qo'shing

Qidiruv satrida "Webhooks" xizmatini toping va Webhooks belgisini tanlang.

"Webhooks" xizmatini topgach, ustiga bosing.

6 -qadam: Veb -so'rovni qabul qilishni sozlash

Veb -so'rovni qabul qilishni sozlash
Veb -so'rovni qabul qilishni sozlash

"Veb -so'rovni qabul qilish" tugmachasini tanlang.

7 -qadam: Voqea nomini ko'rsating

Voqea nomini ko'rsating
Voqea nomini ko'rsating

Matn maydoniga yangi appletni voqea nomi bilan kiriting. Men "Data Logger" ni tanladim, lekin siz xohlagan narsani tanlashingiz mumkin.

8 -qadam: Appletingizning "o'sha" qismini sozlang

Ni sozlang
Ni sozlang

Yuqoridagi rasmda ta'kidlanganidek, ko'k rangdagi "o'sha" so'zni bosing.

9 -qadam: Harakatlar xizmatini o'rnating

Harakatlar xizmatini o'rnating
Harakatlar xizmatini o'rnating

Qidiruv maydonida "Google Sheets" xizmatini toping va Google Sheets belgisini bosing.

10 -qadam: Google Sheets -ga ulaning

Google Sheets -ga ulaning
Google Sheets -ga ulaning

Agar siz buni hali qilmagan bo'lsangiz, IFTTT hisobingizni Google Sheets -ga ulashingiz kerak bo'ladi. Yuqorida ko'rsatilgan Ulanish tugmasini bosing va ekrandagi ko'rsatmalarga amal qiling.

11 -qadam: Harakatni tanlang

Harakatni tanlang
Harakatni tanlang

"Jadvalga qator qo'shish" ni bosing.

12 -qadam: Amalni o'rnating

Amalni sozlash
Amalni sozlash

"Elektron jadval nomi" matn maydoniga nom kiriting. Men izchillik uchun "Data_Logger" dan foydalanishni tanlayman. Qolgan sozlamalarni yolg'iz qoldiring (xohlagan vaqtda bu sozlamalar bilan tajriba o'tkazishingiz mumkin), so'ngra ekranning pastki qismidagi "Amal yaratish" tugmasini bosing.

13 -qadam: Appletni ko'rib chiqing va yakunlang

Appletingizni ko'rib chiqing va yakunlang
Appletingizni ko'rib chiqing va yakunlang

Applet konfiguratsiyasidan qoniqqaningizdan so'ng "Finish" tugmasini bosing.

14 -qadam: Keyinchalik kerak bo'lgan konfiguratsiya ma'lumotlarini oling

Keyinchalik kerak bo'lgan konfiguratsiya ma'lumotlarini oling
Keyinchalik kerak bo'lgan konfiguratsiya ma'lumotlarini oling

Yuqorida ta'kidlanganidek "Webhooks" ni bosing.

15 -qadam: API kaliti uchun Webhooks hujjatlariga o'ting

API kaliti uchun Webhooks hujjatlariga o'ting
API kaliti uchun Webhooks hujjatlariga o'ting

Bu g'alati tuyulishi mumkin, lekin betakror API kalitingiz bilan sahifaga o'tish uchun yuqori o'ngdagi Hujjatlar havolasini bosing.

16 -qadam: API kalitini saqlang

API kalitini saqlang
API kalitini saqlang
API kalitini saqlang
API kalitini saqlang

Hujjatlar ekranining birinchi qatorida sizning yagona API kalitingiz ko'rsatiladi. Bu kalitni keyinroq ishlatish uchun nusxa ko'chiring va saqlang.

Bu erda appletni sinab ko'rish ham yaxshi bo'ladi. {Event} ni Data_Logger -ga o'zgartirishni unutmang yoki voqeaga qanday nom berdingiz va 3 ta bo'sh qiymatga ba'zi ma'lumotlarni qo'shing, so'ngra sahifaning pastki qismidagi "Sinab ko'rish" tugmasini bosing. "Voqea ishga tushirildi" degan yashil xabarni ko'rishingiz kerak. Agar shunday bo'lsa, Google Docs -ga o'ting va test sahifasiga kiritilgan ma'lumotlar Google Sheets hujjatida ko'rsatilganligini tasdiqlang.

17 -qadam: Komponentlarni yig'ing

Komponentlarni yig'ing
Komponentlarni yig'ing
Komponentlarni yig'ing
Komponentlarni yig'ing
Komponentlarni yig'ing
Komponentlarni yig'ing

Sizga faqat bir nechta qism kerak bo'ladi.

1) ESP8266 NodeMcu ishlab chiqish kengashi

2) DHT11 harorat/namlik sensori

3) Eshik/Oyna qamish kaliti

4) 10k Ohm qarshilik

5) ulanish simlari

18 -qadam: Komponentlarni yig'ing

1) ESP8266 dagi 3v3 pinni DHT11 vcc piniga ulang.

2) ESP8266 -dagi topraklama pinlaridan birini DHT11 -dagi topraklama piniga ulang.

3) ESP8266 dagi D4 pinini (IDE -dagi 2 -pin) DHT11 -dagi ma'lumotlar piniga ulang.

4) ESP8266 -dagi boshqa 3v3 pinni eshik/deraza qamish kalitining bir tomoniga ulang.

5) ESP8266 -dagi D5 pinini (IDE -dagi 14 -pin) eshik/deraza qamish kalitining boshqa tomoniga ulang va uni 10k ohmli rezistorning bir tomoniga ulang.

6) 10k ohmli qarshilikning boshqa tomonini ESP8266 ustidagi boshqa topraklama piniga ulang.

ESP8266 pin tanlash uchun iltimos, ushbu foydali diagramma yoki juda foydali videoga qarang.

19 -qadam: Arduino kodini yozing

Arduino kodini yozing
Arduino kodini yozing

Quyidagi kodni nusxa ko'chiring va Arduino IDE -ga joylashtiring.

#qo'shish #qo'shish #qo'shish "DHT.h"

#DHTPIN 2 ni aniqlang // biz qanday raqamli pin bilan bog'langanmiz

#deorine DOORPIN 14 // eshik kaliti qanday raqamli pinli.

#DHTTYPE DHT11 // DHT 11 ni aniqlang

DHT dht (DHTPIN, DHTTYPE);

int soni = 1;

const char* ssid = "some_ssid"; // ssid const char* password = "some_password" dan foydalanish uchun buni o'zgartiring; // parolni ishlatish uchun buni o'zgartiring int sleepTime = 100;

// IFTTT ishlab chiqaruvchi veb -kancalari

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

// IFTTT URL manbasi

const char* resource = "/trigger/SOME_SERVICE_NAME/with/key/SOME_API_KEY"; // Xizmat nomingiz va api kalitingizdan foydalanganingizga ishonch hosil qiling.

String doorStatus = "Yopiq";

o'zgaruvchan bool stateChanged = false;

// Agar soatlab uxlasangiz, intervalni soat * 60 daqiqa * 60 soniya * 1000 millisekundga o'rnating

const uzoq interval = 1,0 * 60 * 60 * 1000; // 1 soat imzosiz uzoq oldingiMillis = 0 - (2 * interval);

bo'sh o'rnatish () {

Serial.begin (115200); attachInterrupt (digitalPinToInterrupt (DOORPIN), eventTriggered, CHANGE); pinMod (DOORPIN, INPUT); // eshik sensori dht.begin (); WiFi.begin (ssid, parol);

Serial.print ("\ nUlanmoqda..");

while (WiFi.status ()! = WL_CONNECTED) {kechikish (1000); Serial.print ("."); } Serial.print ("\ n"); }

void eventTriggered () {

stateChanged = rost; Serial.println ("Eshik tekshirilmoqda!"); if (digitalRead (DOORPIN) == HIGH) // Eshik ochiqligini tekshiring {Serial.println ("Eshik yopiq!"); doorStatus = "Yopiq"; } else {Serial.println ("Eshik ochiq!"); doorStatus = "Ochilgan"; }}

void checkStatus () {

if (WiFi.status () == WL_CONNECTED) {// WiFi ulanish holatini tekshiring // O'qish harorati yoki namligi taxminan 250 millisekundni oladi! // Sensor o'qishlari ham 2 sekundgacha bo'lishi mumkin (bu juda sekin sensori) float h = dht.readHumidity (); // Haroratni Selsiy bo'yicha o'qing (standart) float t = dht.readTemperature (); // Haroratni Farengeyt sifatida o'qing (isFahrenheit = rost) float f = dht.readTemperature (rost); // O'qish muvaffaqiyatsiz bo'lganligini tekshiring va erta chiqing (qaytadan urinish uchun). if (isnan (h) || isnan (t) || isnan (f)) {Serial.println ("DHT sensoridan o'qib bo'lmadi!"); //Serial.print ("."); // DHT sensoridan o'qib bo'lmadi! qaytish; } // Farengeytdagi issiqlik indeksini hisoblash (standart) float hif = dht.computeHeatIndex (f, h); // Selsiy bo'yicha issiqlik indeksini hisoblash (isFahreheit = false) float hic = dht.computeHeatIndex (t, h, false);

Serial.print ("\ n");

Serial.print ("Harorat:"); Ketma -ket chop etish (f); Serial.print (" *F ("); Serial.print (t); Serial.print (" *C)"); Serial.print ("\ t"); Serial.print ("Issiqlik indeksi:"); Serial.print (hif); Serial.print (" *F ("); Serial.print (hic); Serial.print (" *C)%"); Serial.print ("\ t"); Serial.print ("Namlik:"); Serial.println (h);

if (digitalRead (DOORPIN) == HIGH) // Eshik ochiqligini tekshiring

{Serial.println ("Eshik yopiq!"); doorStatus = "Yopiq"; } else {Serial.println ("Eshik ochiq!"); doorStatus = "Ochilgan"; } String jsonObject = String ("{" qiymati1 / ": \" ") + f +"*F (" + t +"*C) / " + hif +"*F (" + hic +"*C) " +" / ", \" qiymat2 / ": \" " + h +" / ", \" qiymati3 / ": \" " + eshik holati +" / "}"; HTTPClient http; String completeUrl = "https://maker.ifttt.com/trigger/bme280_readings/with/key/cZFasEvy5_3JlrUSVAxQK9"; http.begin (completeUrl); // http.begin (server); http.addHeader ("Kontent turi", "application/json"); http. POST (jsonObject); http.writeToStream (& Serial); http.end (); // Ulanishni yopish

stateChanged = noto'g'ri;

int sleepTimeInMinutes = interval / 1000/60; Serial.print ("\ n / nUxlashga ket"); Serial.print (sleepTimeInMinutes); Serial.println ("daqiqa (lar)…"); }}

void loop () {

belgisiz uzun oqimMillis = millis (); kechikish (4000); // Agar biz o'tgan vaqtdan oshib ketgan bo'lsak, eshik va haroratni tekshirib ko'ring. if (currentMillis - previousMillis> = interval) {stateChanged = true; oldingiMillis = joriyMillis; Serial.print (hisoblash ++); Serial.println (") Vaqt o'tganligi sababli tekshirilmoqda!"); } else if (stateChanged) {Serial.print (count ++); Serial.println (") Holat o'zgarishi sababli tekshirilmoqda!"); }

// Agar holat o'zgargan bo'lsa, eshik va haroratni tekshiring.

if (stateChanged) {checkStatus (); }

kechikish (uyqu vaqti);

}

20 -qadam: Natijalar

Natijalar
Natijalar

Oldingi qadamda manba kodini yuklaganingizdan so'ng, yuqorida ko'rsatilgan misol kabi natijalarga ega bo'lishingiz kerak.

21 -qadam: kreditlar

Men tasodifiy darslardan juda ko'p foydali maslahatlar va maslahatlarni topdim va ularga barcha yordamlari uchun minnatdorchilik bildirmoqchiman. Ayniqsa, ularning ESP32 ESP8266 dagi sensorli o'qishlarini Google Sheets -da chop etish bo'yicha qo'llanma, bu ko'rsatmaning asosiy qismlari.

Bundan tashqari, TheCircuit -dan DHT11 Instructable menga bu juda arzon, lekin qiziqarli kichik sensorni qanday ishlatishni tushunishga yordam berdi.

Bundan tashqari, sizning eshiklaringizni kuzatib boradigan ko'plab darsliklar mavjud, masalan, Garaj eshiklari monitori va boshqa tasodifiy darsliklar. Men qamish tugmachasini qanday to'g'ri ishlashini tushunishga yordam berish uchun bu qismlardan foydalanardim.

Nihoyat, Internetda topilgan bu ma'lumotlar va boshqa tafsilotlar bilan men o'z ehtiyojlarimga javob beradigan tizimni yaratishga muvaffaq bo'ldim. Umid qilamanki, siz ushbu ko'rsatmalarni foydali deb topasiz va o'zingiznikidan birini qurasiz.

Tavsiya: