فهرست مطالب:

پروژه ثبت کننده درب و دما: 21 مرحله
پروژه ثبت کننده درب و دما: 21 مرحله

تصویری: پروژه ثبت کننده درب و دما: 21 مرحله

تصویری: پروژه ثبت کننده درب و دما: 21 مرحله
تصویری: با یه دختر این کارو نکن😰 2024, نوامبر
Anonim
پروژه ثبت کننده درب و دما
پروژه ثبت کننده درب و دما

این دستورالعمل به شما نشان می دهد که چگونه با استفاده از ESP8266 NodeMCU ، یک سنسور دما و رطوبت DHT11 ، یک کلید درب/پنجره ، یک مقاومت 10K اهم و مقداری سیم اتصال ، یک دستگاه ثبت کننده درب و دما با قیمت کمتر از 10.00 دلار تهیه کنید.

پیدایش این پروژه از تمایل من به انجام بیشتر اتوماسیون خانگی با برد Arduino ناشی شد ، از آنجا که من در مورد EPS8266 NodeMCU سازگار با Arduino بسیار مطالعه کرده بودم ، تصمیم گرفتم که این برد بهترین تخته کم هزینه برای انجام آزمایش باشد. پس از جستجو در اینترنت برای پروژه های اتوماسیون خانگی با استفاده از بردهای ESP8266 ، در اولین تلاش خود به ترکیب دماسنج و وضعیت درب پرداختم. سرانجام این پروژه با سروها ، سنسورهای رطوبت و سایر وسایل الکترونیکی ترکیب می شود تا یک خانه سبز کوچک را که پدربزرگم 50 سال پیش طراحی و ساخته بود ، خودکار کند. از سنسور دما برای تعیین اینکه آیا سیستم گرمایشی باید درگیر یا خاموش شود و همچنین به سرووها برای باز و بسته کردن سیستم تهویه در صورت نیاز استفاده می شود. وضعیت سیستم تهویه با استفاده از کلیدهای مغناطیسی نی کنترل می شود. در نهایت ، سنسورهای رطوبت برای خودکار کردن سیستم آبیاری استفاده می شود.

مرحله 1: سلب مسئولیت

فقط یک سلب مسئولیت سریع برای بیان این که هیچ مسئولیتی در قبال هر اتفاقی که در نتیجه پیروی از این دستورالعمل رخ می دهد بر عهده نمی گیریم. همیشه بهتر است هنگام ساخت هر چیزی دستورالعمل های سازندگان و برگه های ایمنی را رعایت کنید ، بنابراین لطفاً برای هر یک از قطعات و ابزارهایی که برای ساختن خود استفاده می کنید ، از این اسناد استفاده کنید. ما به سادگی اطلاعاتی را در مورد مراحلی که برای ایجاد برنامه خود استفاده کرده ایم ، ارائه می دهیم. ما حرفه ای نیستیم. در حقیقت ، از هر 3 نفری که در این ساخت شرکت کردند 2 نفر کودک هستند.

مرحله 2: راه اندازی حساب IFTTT رایگان

راه اندازی حساب IFTTT رایگان
راه اندازی حساب IFTTT رایگان

اگر قبلاً یکی ندارید ، اکنون وقت آن است که با رفتن به صفحه اصلی یک حساب IFTTT رایگان راه اندازی کنید. شما را قادر می سازد تا از این خدمات به روش های جدید استفاده کنید. برای این پروژه ما از IFTTT استفاده می کنیم تا به ESP8266 اجازه دهیم وضعیت در را از طریق سوئیچ نی و دما و رطوبت را از طریق حسگر DHT11 در سند Google Sheets ثبت کند.

مرحله 3: یک برنامه کاربردی IFTTT ایجاد کنید

یک اپلت IFTTT ایجاد کنید
یک اپلت IFTTT ایجاد کنید

در حالی که هنوز در IFTTT هستید ، به بخش "اپلت های من" بروید و با کلیک روی دکمه "اپلت جدید" یک اپلت جدید ایجاد کنید.

مرحله 4: قسمت "this" اپلت خود را پیکربندی کنید

پیکربندی کنید
پیکربندی کنید

روی کلمه "this" که به رنگ آبی است کلیک کنید - همانطور که در شکل بالا مشخص شده است.

مرحله 5: سرویس WebHooks را به اپلت خود اضافه کنید

سرویس WebHooks را به اپلت خود اضافه کنید
سرویس WebHooks را به اپلت خود اضافه کنید

در نوار جستجو ، سرویس "Webhooks" را جستجو کرده و نماد Webhooks را انتخاب کنید.

هنگامی که سرویس "Webhooks" را پیدا کردید ، روی آن کلیک کنید.

مرحله 6: راه اندازی دریافت درخواست وب را راه اندازی کنید

راه اندازی Receive a Web Request Trigger را راه اندازی کنید
راه اندازی Receive a Web Request Trigger را راه اندازی کنید

ماشه "دریافت درخواست وب" را انتخاب کنید.

مرحله 7: نام یک رویداد را ارائه دهید

نام رویداد را ارائه دهید
نام رویداد را ارائه دهید

در کادر متن ، اپلت جدید خود را با نام رویداد ارائه دهید. من "Data Logger" را انتخاب کردم اما شما می توانید هر چیزی را که دوست دارید انتخاب کنید.

مرحله هشتم: قسمت "that" اپلت خود را پیکربندی کنید

پیکربندی کنید
پیکربندی کنید

روی کلمه "آن" که به رنگ آبی است کلیک کنید - همانطور که در شکل بالا مشخص شده است.

مرحله 9: راه اندازی یک سرویس اقدام

راه اندازی یک سرویس اقدام
راه اندازی یک سرویس اقدام

در کادر جستجو ، سرویس "Google Sheets" را جستجو کرده و روی نماد Google Sheets کلیک کنید.

مرحله 10: به Google Sheets وصل شوید

به کاربرگ‌نگار Google متصل شوید
به کاربرگ‌نگار Google متصل شوید

اگر قبلاً این کار را نکرده اید ، باید حساب IFTTT خود را به Google Sheets وصل کنید. دکمه اتصال نشان داده شده در بالا را فشار دهید و دستورالعمل های روی صفحه را دنبال کنید.

مرحله 11: یک Action را انتخاب کنید

یک Action را انتخاب کنید
یک Action را انتخاب کنید

روی "افزودن سطر به صفحه گسترده" کلیک کنید.

مرحله 12: اقدام را تنظیم کنید

Action را تنظیم کنید
Action را تنظیم کنید

در کادر نوشتاری "نام صفحه گسترده" نامی وارد کنید. من برای قوام از "Data_Logger" استفاده می کنم. بقیه تنظیمات را به حال خود رها کنید (می توانید با تنظیمات دیگری در زمان دیگری آزمایش کنید) و سپس دکمه "ایجاد اقدام" را در پایین صفحه فشار دهید.

مرحله 13: اپلت خود را مرور و نهایی کنید

اپلت خود را مرور و نهایی کنید
اپلت خود را مرور و نهایی کنید

پس از رضایت از تنظیمات اپلت خود ، دکمه "پایان" را فشار دهید.

مرحله 14: بازیابی اطلاعات پیکربندی مورد نیاز بعدا

بازیابی اطلاعات پیکربندی مورد نیاز بعدا
بازیابی اطلاعات پیکربندی مورد نیاز بعدا

همانطور که در بالا مشخص شده است روی "Webhooks" کلیک کنید.

مرحله 15: به سند Webhooks برای کلید API بروید

به سند Webhooks برای کلید API بروید
به سند Webhooks برای کلید API بروید

ممکن است عجیب به نظر برسد اما روی پیوند Documentation در بالا سمت راست کلیک کنید تا با کلید API منحصر به فرد خود به صفحه بروید.

مرحله 16: کلید API را ذخیره کنید

کلید API را ذخیره کنید
کلید API را ذخیره کنید
کلید API را ذخیره کنید
کلید API را ذخیره کنید

خط اول صفحه Documentation کلید API منحصر به فرد شما را نشان می دهد. این کلید را کپی کرده و ذخیره کنید تا بعداً استفاده شود.

همچنین ایده خوبی است که اپلت را در اینجا آزمایش کنید. به یاد داشته باشید که {event} را به Data_Logger یا هر چیزی که رویداد خود را نامگذاری کرده اید تغییر دهید و داده هایی را به 3 مقدار خالی اضافه کنید و سپس روی دکمه "Test It" در پایین صفحه کلیک کنید. شما باید یک پیغام سبز رنگ ببینید که می گوید "رویداد فعال شده است". در این صورت ، به Google Docs بروید و تأیید کنید که داده هایی که در صفحه آزمایش وارد کرده اید در سند کاربرگ Google نشان داده شده است.

مرحله 17: اجزاء را جمع آوری کنید

اجزاء را جمع آوری کنید
اجزاء را جمع آوری کنید
اجزاء را جمع آوری کنید
اجزاء را جمع آوری کنید
اجزاء را جمع آوری کنید
اجزاء را جمع آوری کنید

شما فقط به چند قسمت نیاز دارید.

1) هیئت توسعه ESP8266 NodeMcu

2) سنسور دما/رطوبت DHT11

3) سوئیچ نی در و پنجره

4) مقاومت 10k اهم

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 اهم وصل کنید.

6) طرف دیگر مقاومت 10k اهم را به پین زمین دیگر در ESP8266 وصل کنید.

برای انتخاب پین ESP8266 لطفاً به این نمودار مفید یا ویدیوی بسیار مفید مراجعه کنید.

مرحله 19: کد آردوینو را بنویسید

کد آردوینو را بنویسید
کد آردوینو را بنویسید

کد زیر را در IDE Arduino خود کپی و جایگذاری کنید.

#شامل #شامل #شامل #DHT.h

#deptine 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 تغییر دهید.

// Maker Webhooks IFTTT

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

// منبع آدرس IFTTT

const char* resource = "/trigger/SOME_SERVICE_NAME/with/key/SOME_API_KEY"؛ // حتماً از نام سرویس و کلید api خود استفاده کنید.

String doorStatus = "بسته"؛

فرار bool stateChanged = false؛

// اگر ساعت ها می خوابید ، فاصله را با ساعت * 60 دقیقه * 60 ثانیه * 1000 میلی ثانیه تنظیم کنید

const فاصله طولانی = 1.0 * 60 * 60 * 1000 ؛ // 1 ساعت بدون امضا طولانی previousMillis = 0 - (2 * فاصله) ؛

void setup () {

Serial.begin (115200) ؛ attachInterrupt (digitalPinToInterrupt (DOORPIN) ، eventTriggered ، CHANGE) ؛ pinMode (درب ورودی ، ورودی) ؛ // سنسور درب 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 ثانیه "قدیمی" باشد (سنسور آن بسیار کند است) شناور h = dht.readHumidity ()؛ // دما را به صورت سانتیگراد (پیش فرض) بخوانید 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؛ String completeUrl = "https://maker.ifttt.com/trigger/bme280_readings/with/key/cZFasEvy5_3JlrUSVAxQK9" ؛ http.begin (completeUrl) ؛ // http.begin (سرور) ؛ http.addHeader ("نوع محتوا" ، "application/json") ؛ http. POST (jsonObject) ؛ http.writeToStream (و سریال) ؛ http.end ()؛ // بستن اتصال

stateChanged = false؛

int sleepTimeInMinutes = فاصله / 1000/60 ؛ Serial.print ("\ n / n برو بخواب")؛ Serial.print (sleepTimeInMinutes) ؛ Serial.println ("دقیقه (ها) …")؛ }}

حلقه خالی () {

جریان طولانی بدون امضا Millis = millis ()؛ تأخیر (4000) ؛ // اگر از زمان سپری شده پیشی گرفتیم ، درب و دما را مجبور به بررسی کنید. if (currentMillis - previousMillis> = فاصله) {stateChanged = true؛ previousMillis = currentMillis؛ Serial.print (تعداد ++) ؛ Serial.println (") بررسی به دلیل گذشت زمان!")؛ } else if (stateChanged) {Serial.print (تعداد ++)؛ Serial.println (") بررسی به دلیل تغییر وضعیت!")؛ }

// اگر حالت تغییر کرد ، در و دما را بررسی کنید.

if (stateChanged) {checkStatus ()؛ }

تاخیر (زمان خواب) ؛

}

مرحله 20: نتایج

نتایج
نتایج

هنگامی که کد منبع را در مرحله قبل بارگذاری کردید ، باید نتایجی مانند مثال بالا نشان دهید.

مرحله 21: اعتبار

من نکات و راهنمایی های مفید بسیاری از آموزش های تصادفی نرد پیدا کردم و می خواهم از آنها برای همه کمک هایشان تشکر کنم. به ویژه آموزش عالی آنها در ESP32 ESP8266 Published Sensor Readings to Google Sheets که بخش عمده ای از این دستورالعمل بر اساس آن است.

علاوه بر این ، DHT11 Instructable از TheCircuit به من کمک کرد تا نحوه استفاده از این سنسور کوچک بسیار ارزان اما جالب را درک کنم.

علاوه بر این ، آموزشهای زیادی در زمینه نظارت بر درهای شما وجود دارد مانند مانیتور درب گاراژ و یکی دیگر از آموزشهای تصادفی Nerd. من از تکه هایی از این موارد برای کمک به درک نحوه عملکرد صحیح سوئیچ نی استفاده کردم.

سرانجام ، با این اطلاعات و سایر جزئیات که در اینترنت یافتم ، توانستم سیستمی ایجاد کنم که نیازهای من را برآورده کند. امیدوارم این دستورالعمل مفید واقع شده باشد و یکی از آن ها را خودتان بسازید.

توصیه شده: