ایستگاه هواشناسی هوشمند با NodeMCU و اینترنت اشیا (IoT)
خیلی وقتها دلمون میخواد دقیقا بدونیم وضعیت هوای بیرون یا حتی داخل گلخونه چطوره، اونم بدون اینکه بخوایم به دماسنجهای قدیمی نگاه کنیم. اینجاست که اینترنت اشیا (IoT) به کمکمون میاد تا بتونیم اطلاعات محیطی رو مستقیم روی گوشی یا کامپیوترمون ببینیم.
تو این پروژه از آیسیمدار، میخوایم یه ایستگاه هواشناسی کامل و خفن بسازیم. این دستگاه با استفاده از برد NodeMCU و چند تا سنسور مختلف، میتونه دما، رطوبت، فشار هوا، میزان نور و حتی بارون رو تشخیص بده و همه این اطلاعات رو به صورت آنلاین برامون بفرسته.
پس قطعات و سنسورها رو آماده کن تا با هم بریم سراغ ساخت این گجت کاربردی و جذاب که قدم بزرگی برای یادگیری اینترنت اشیا به حساب میاد!
- برد NodeMCU (ورژن 0.9 یا 1.0) با قابلیت برنامهنویسی راحت تو آردوینو IDE
- ارسال زنده اطلاعات به پلتفرمهای ابری مثل ThingSpeak
- سنسور دما و رطوبت DHT11 یا DHT22
- سنسور فشار و دمای BMP180
- سنسور تشخیص باران
- سنسور تشخیص نور
- بازر پیزو برای هشدار صوتی
- الایدی نشانگر وضعیت ارسال داده
- دمای محیط با DHT11/22
- دمای محیط با BMP180
- رطوبت هوا با DHT11/22
- فشار هوا با BMP180
- نقطه شبنم با DHT11/22
- ارتفاع از سطح دریا با BMP180
- شدت نور محیط با LDR
- میزان بارش باران
- برد بورد (Breadboard)
- برد سوراخدار (Perfboard)
- برد NodeMCU ورژن 0.9 یا 1.0
- مقداری سیم جامپر
- کابل تبدیل میکرو USB به USB
- 2 عدد دیود 1N4001 (1 آمپر 50 ولت)
- 3 عدد مقاومت 10 کیلواهم
قطعات موردنیاز
- برد NodeMCU ورژن 0.9 یا 1.0
- سنسور دما و رطوبت DHT11 یا DHT22
- سنسور فشار و دمای BMP180
- سنسور تشخیص باران
- سنسور تشخیص نور (LDR)
- بازر پیزو
- الایدی چشمکزن (الایدی)
- برد بورد (Breadboard)
- برد سوراخدار (Perfboard)
- مقداری سیم جامپر
- کابل میکرو USB
- 2 عدد دیود 1N4001
- 3 عدد مقاومت 10 کیلواهم
آشنایی با مغز متفکر پروژه: برد NodeMCU
برد NodeMCU یه انتخاب فوقالعاده برای پروژههاییه که نیاز به اتصال اینترنت دارن. این برد در واقع شبیه همون آردوینو کار میکنه، با این تفاوت که یه شیلد وایفای قدرتمند به اسم ESP8266 روش نصب شده و امکانات بینظیری رو در اختیارت میذاره. شاید در نگاه اول متوجه قدرت این برد نشی، اما داشتن قابلیت وایفای داخلی کار رو برای پروژههای اینترنت اشیا خیلی راحت میکنه.
اون قاب فلزی روی برد که احتمالا توجهت رو جلب کرده، همون ماژول وایفای ESP8266 هست که وظیفه ارتباطات بیسیم رو بر عهده داره. خود این ماژول رو میشه جداگانه هم تهیه کرد. نسخههای اولیهاش پایههای دیجیتال کمی داشتن، اما این مدلی که روی برد NodeMCU نصب شده، پایههای دیجیتال زیادی داره که اجازه میده سنسورهای متعددی رو بهش متصل کنیم.
خوبی بزرگ NodeMCU اینه که مستقیم تو همون محیط نرمافزار آردوینو (Arduino IDE) برنامهنویسی میشه. علاوه بر این، روی خودش یه مبدل ولتاژ 5 به 3.3 ولت داره؛ یعنی میتونی با خیال راحت با کابل USB به کامپیوتر وصلش کنی و نیازی به ماژول کاهنده ولتاژ جداگانه نداری.
اگه خواستی این برد رو تهیه کنی، معمولا دو نسخه 0.9 و 1.0 تو بازار هست. نسخه 0.9 یه کم پهنتره و روی برد بورد فضای زیادی میگیره، جوری که جای سیم زدن برات نمیمونه. پس بهتره سراغ نسخه 1.0 بری که جمعوجورتره و راحتتر روی برد بورد میشینه.
اتصال به پلتفرم ابری اینترنت اشیا
برای اینکه بتونیم دادههای سنسورها رو همهجا ببینیم، از پلتفرم ابری ThingSpeak استفاده میکنیم. این سرویس خیلی راحت راهاندازی میشه، محیط کاربری جذابی داره و کار باهاش کاملا رایگانه.
علاوه بر نمایش گرافیکی نمودارها، این پلتفرم قابلیتهای جالبی مثل ارتباط با توییتر و تعریف وبهوک (WebHook) رو هم بهت میده تا بتونی نوتیفیکیشنهای اختصاصی بسازی.
فقط کافیه تو سایتش یه حساب کاربری بسازی. تو بخش تنظیمات کانال (Channel)، فیلدها رو بر اساس سنسورهایی که داری نامگذاری کن. مثلا فیلد اول رو برای "دما"، فیلد دوم رو برای "رطوبت" و فیلد سوم رو برای "نقطه شبنم" در نظر بگیر.
برای سنسورهای دیگهای که قراره نصب کنیم مثل فشارسنج، سنسور باران و LDR هم دقیقا همین کار رو تکرار کن و فیلدهای بعدی رو بهشون اختصاص بده.
تو تب API Key، یه کلید اختصاصی بهت داده میشه. این کلید رو حتما کپی کن چون بعدا باید داخل کد آردوینو قرارش بدیم تا بردمون بتونه اطلاعات رو مستقیما به این کانال بفرسته.
سیمکشی و اتصال سنسورها به برد
پیشنهاد میکنم سنسورها رو یکییکی وصل کنی. اول از DHT11 یا DHT22 شروع کن و وقتی تو نرمافزار جواب گرفتی، برو سراغ اضافه کردن سنسور بعدی. اینجوری خطایابی خیلی راحتتر میشه.
این سنسور دما و رطوبت برای شروع عالیه! سنسور DHT22 نسبت به DHT11 دقت بالاتری داره ولی یه مقدار گرونتره. میتونی کار رو با همون DHT11 آبیرنگ شروع کنی و اگه نیاز به دقت بیشتری داشتی بعدا ارتقاش بدی.
همونطور که تو عکسها میبینی، همه قطعات به ترتیب روی یه برد بورد بزرگ و در کنار NodeMCU چیده شدن. راهاندازی این سنسورها کار سختی نیست، فقط باید به چند تا نکته توجه کنی:
اگه سنسورت روی یه ماژول (برد کوچیک) لحیم شده، احتمالا خودش مقاومت داخلی رو داره و فقط سه تا پین بهت میده. اما اگه مثل عکس فقط خود سنسور رو داری، باید یه مقاومت 10 کیلواهم بین پین اول و دومش قرار بدی. پین اول سنسور رو به ولتاژ 3.3 ولت، پین چهارم رو به زمین (GND) و پین دوم (دیتا) رو به پایه دیجیتال D4 روی NodeMCU وصل کن.
اگه به چیدمان پایههای NodeMCU دقت کنی، متوجه میشی پایههای D4، 5 ولت و GND دقیقا کنار هم قرار گرفتن. این یعنی اگه از ماژول آماده سنسور استفاده کنی، میتونی خیلی راحت اون رو روی برد بورد دقیقا روبهروی این پایهها جا بزنی! سنسور بعدی BMP180 هست.
سنسور BMP وظیفه اندازهگیری فشار هوا و دما رو داره. درسته که ما سنسور دمای قبلی رو داریم، اما فشار هوا برای پیشبینی وضع هوا خیلی مهمه. پایه تغذیه این سنسور رو به 3.3 ولت و پایه GND رو به زمین برد متصل کن. پایههای ارتباطی این سنسور یعنی SCL و SDA رو هم باید به ترتیب به D1 و D2 وصل کنی. حالا بریم سراغ سنسور باران و نور.
چالش اصلی پروژه اینجاست که NodeMCU فقط یه دونه پایه آنالوگ (A0) داره، ولی ما دو تا سنسور آنالوگ (باران و LDR) داریم. برای حل این مشکل باید این پایهها رو مالتیپلکس کنیم. یعنی با استفاده از دو تا دیود و دو پایه دیجیتال، این سنسورها رو به نوبت روشن میکنیم و مقدارشون رو میخونیم.
این تکنیک یه ترفند عالی برای افزایش ورودیهای آنالوگ برده و بهمون کمک میکنه بدون قطعه اضافه، مشکل رو حل کنیم. این روش هم روی آردوینو و هم روی NodeMCU دقیقا به یه شکل کار میکنه و مشکلی تو برنامهنویسیش نخواهی داشت.
تو شماتیک مشخصه که سنسور باران از طریق پایه D7 (یا همون GPIO13) تغذیه میشه و سنسور نور هم برقش رو از پایه D8 (یا GPIO15) میگیره.
سنسورهای باران معمولا با یه ماژول کوچیک برای تبدیل خروجی به فروش میرسن، اما تو این پروژه ما برای گرفتن دقت بالاتر و خوندن مقدار آنالوگ بارش، نیازی به اون برد واسط نداریم.
دلیل استفاده از اون ماژولها اینه که بشه خروجی سنسور رو به پایههای دیجیتال وصل کرد (مثلا تنظیم کنی اگه بارون شدید شد، پین رو صفر یا یک کنه). ولی ما میخوایم سطح دقیق رطوبت رو به صورت پیوسته متوجه بشیم.
برنامهنویسی و آپلود کدها
خبر خوب اینه که کدهای مربوط به ماژول ESP8266 به راحتی روی NodeMCU هم جواب میدن و نیازی نیست درگیر زبانهای برنامهنویسی دیگهای مثل Lua بشی. میتونی از کدهای آماده آردوینو برای این ماژولها استفاده کنی. این سازگاری باعث میشه بتونی از هزاران مثال و پروژه آمادهای که تو اینترنت هست به راحتی بهره ببری.
برای شروع، پکیجهای برد ESP8266 رو تو آردوینو اضافه کن تا کتابخونه ESP8266WiFi نصب بشه. کتابخونه سنسورهای DHT و بقیه قطعات رو هم میتونی خیلی راحت از بخش Library Manager خود نرمافزار جستجو و نصب کنی. حواست باشه کتابخونههای رسمی و معتبر رو انتخاب کنی.
یه نکته جالب تو کتابخونه DHT اینه که با تغییر دادن یه کلمه ساده داخل کد، میتونی به برد بگی که سنسورت DHT11 هست یا DHT22. پس نیازی به تغییرات پیچیده نیست!
برنامهای که برای این ایستگاه نوشتیم، اول دادههای دما و رطوبت رو به ThingSpeak میفرسته و بعد سراغ گرفتن دیتای فشار، نور و باران میره. اگه بخوای سنسور دیگهای هم اضافه کنی، ساختار کد بهت اجازه میده این کار رو خیلی راحت انجام بدی.
یه قابلیت خفنی که به کد اضافه شده اینه که به جای سنسور اضافی، برد میتاد با استفاده از فرمولهای ریاضی ترکیب شده با اطلاعات دما و رطوبت، "نقطه شبنم" رو محاسبه کنه. از طرفی با داشتن میزان فشار هوا، میتونه "ارتفاع از سطح دریا" رو هم به دست بیاره که برای یه هواشناسی حرفهای اطلاعات فوقالعادهایه.
- کلید API (همون API Key) که از پنل ThingSpeak کپی کردی رو داخل کد جایگزین کن.
- اسم شبکه وایفای (SSID) خودت رو دقیق وارد کن.
- رمز وایفای رو هم بنویس تا دستگاه بتونه به مودم وصل بشه.
وقتی تنظیمات بالا رو انجام دادی و کد رو روی برد آپلود کردی، سریال مانیتور نرمافزار (با فشردن کلیدهای Ctrl+M) رو باز کن تا وضعیت اتصال و دیتای سنسورها رو به صورت زنده ببینی.
ساخت قاب محافظ برای ایستگاه هواشناسی
یه مدار الکترونیکی به این جذابی برای اینکه بتونه بیرون از خونه دوام بیاره، نیاز به یه قاب محکم داره! میتونی از جعبههای پلاستیکی یا باکسهای ضدآب برق استفاده کنی. سنسور باران دقیقا باید روی سقف جعبه نصب بشه تا قطرات بارون روش بریزه. سنسورهای دما و فشار رو هم میتونی روی دیوارههای کناری قرار بدی.
حتما روی سنسورهای محیطی یه سایهبان کوچیک یا محفظه ایجاد کن تا بارون مستقیم روی بردشون نریزه و خرابشون نکنه. نکته تجربی: اگه جعبهات خیلی نازک یا تیره باشه، تو طول روز زیر نور خورشید گرم میشه و سنسورها دمای هوا رو بالاتر از حد واقعی نشون میدن. بهتره از باکسهای عایق حرارتی، چوبی، یا حتی پلاستیکهای رنگ روشن استفاده کنی تا دقت دستگاه پایین نیاد.
برای ضدآب کردن درزها و سوراخهایی که ایجاد کردی، حتما از چسب آکواریوم استفاده کن. جعبههای معمولی به تنهایی نمیتونن در برابر بارانهای شدید مقاومت کنن و ممکنه آب به مدار اصلی نفوذ کنه.
نمایش اطلاعات با گیجهای عقربهای جذاب
پلتفرم ThingSpeak افزونههای مختلفی داره که یکیش ساخت گیجهای (Gauges) عقربهای و گرافیکیه. این سیستم به صورت خودکار بهت یه کد میده که میتونی نمودارها رو خیلی شیک روی صفحات وب نمایش بدی.
با دستکاری کدهای این بخش، میتونی رنگها، ابعاد و بازه اعداد رو به دلخواه خودت تغییر بدی. البته این گیجها معمولا تو حالت خصوصی نمایش داده میشن، مگه اینکه بخوای اونا رو با تگ iframe تو وبسایت یا داشبورد شخصی خودت جاسازی (Embed) کنی.
مثلا تو این پروژه بازههای رنگی گیجها رو تنظیم کردیم تا محدوده نرمال سبز، و محدودههای گرمتر قرمز باشن. میتونی کدهای HTML، CSS و جاوااسکریپتی که بهت میده رو شخصیسازی کنی. (این نمودارها به صورت لحظهای اطلاعات ارسالشده رو مانیتور میکنن)
امکانات جانبی: هشدار صوتی و نوری
برای اینکه متوجه بشیم سیستم داره درست کار میکنه، میتونیم دو تا قابلیت کوچیک بهش اضافه کنیم. اولی یه بازر پیزو (Buzzer) هست که میشه طوری برنامهریزیش کرد که وقتی برد با موفقیت به وایفای وصل شد، یه بوق کوتاه بزنه تا از اتصالش مطمئن بشی.
دومی استفاده از یه الایدی چشمکزنه. روی خود برد NodeMCU یه الایدی کوچیک هست که موقع ارسال دیتا چشمک میزنه. میتونی پایههای این الایدی رو با سیم به یه الایدی بزرگتر (مثلا 5 میلیمتری روی بدنه جعبه) وصل کنی.
اینجوری حتی وقتی مدار کاملا داخل جعبه قرار داره و درش بسته است، با دیدن چشمک زدن الایدی خیالت راحت میشه که دادهها دارن به درستی سمت سرور ابری ارسال میشن.
حالا نوبت توئه که بسازیش!
ساخت این ایستگاه هواشناسی نه تنها خیلی لذتبخش بود، بلکه مسیر فوقالعادهای برای یادگیری عملی اینترنت اشیا (IoT) محسوب میشه. تازه میتونی با اضافه کردن سنسور کیفیت هوا یا وزش باد، این پروژه رو حتی حرفهایتر هم بکنی.
منتظر چی هستی؟ قطعات رو روی میز بچین و این پروژه جذاب رو برای خودت بساز. اگه تو هر کدوم از مراحل به ایدههای جدیدی رسیدی، حتما تو بخش نظرات آیسیمدار برامون بنویس تا بقیه هم از تجربیاتت استفاده کنن. موفق باشی!
تو میتونی اولین سازنده باشی!
اگه پروژه رو ساختی به اشتراک بزار و اعتبار هدیه بگیر
این آموزش با استانداردهای اختصاصی آیسیمدار بازنویسی و بهینهسازی شده و تمامی حقوق انتشار آن متعلق به این مجموعه است و در صورت کپی یا بازنشر پیگرد قانونی خواهد داشت.








































گفتگوهای کاربران
هنوز نظری ثبت نشده؛ تو شروع کن!
هنوز نظری ثبت نشده؛ تو شروع کن!