ورکشاپ آموزشی - آیسی مدار
رفتن به محتوا

آبیاری هوشمند گیاهان؛ ساخت سیستم کنترل تحت وب

رباتیک و هوشمندسازی
۰ نظر
۳۸ نفر
کد ۳۲۲۷

نگهداری از گل و گیاه تو خونه خیلی لذت‌بخش و آرامش‌بخشه، اما گاهی به خاطر مشغله‌های روزمره یادمون می‌ره بهشون آب بدیم. تو این پروژه از آیسی‌مدار می‌خوایم یه سیستم آبیاری هوشمند و مبتنی بر اینترنت اشیا (IoT) بسازیم که این مشکل رو برای همیشه حل می‌کنه! با این سیستم می‌تونی رطوبت خاک گلدونت رو از طریق مرورگر گوشی یا لپ‌تاپت چک کنی و فقط با یه کلیک تحت وب، پمپ آب رو روشن کنی.

مغز متفکر این پروژه برد Nodemcu هست که به وای‌فای وصل می‌شه. ما از یه ترفند خیلی جالب استفاده کردیم؛ به جای اینکه پمپ آب رو مستقیم به برد وصل کنیم، از یه سروو موتور کمک می‌گیریم تا یه کلید فیزیکی رو فشار بده و پمپ روشن بشه. این‌طوری مدار کنترلی از مدار آب‌رسانی کاملا جدا می‌شه و خیالمون از بابت خیس شدن قطعات و اتصالی راحته. پس وسایلت رو آماده کن تا بریم سراغ ساخت این سیستم جذاب و کاربردی.

مرحله ۱

چرا دو تا مدار جدا؟ سیم‌کشی سنسور و پمپ آب

مدار این پروژه خیلی سادست، اما یه ابتکار جالب توش به کار بردیم؛ ما کل سیستم رو به دو بخش کاملا مجزا تقسیم کردیم. مدار اول شامل برد NodeMCU، سنسور رطوبت خاک و یه سروو موتوره. سنسور رطوبت سه تا پایه داره که پایه‌های تغذیه (VCC و GND) به 3 ولت و زمین برد وصل می‌شن و پایه سیگنال (A0) هم به پین A0 آردوینو می‌ره.

پایه‌های تغذیه سروو موتور هم به 3 ولت و GND، و پایه سیگنالش به پین D1 برد متصل می‌شه. مدار دوم در واقع همون سیستم پمپاژ آبه که شامل یه پمپ آب مینیاتوری، یه باتری و یه کلید قطع و وصل (Toggle Switch) می‌شه. اما ارتباط این دو تا مدار چطوریه؟ خیلی ساده! سروو موتوری که تو مدار اول نصب کردیم، وظیفه داره کلید مدار دوم رو فشار بده تا پمپ روشن بشه.

دلیل این کار اینه که نخواستیم درگیر ماژول‌های رله و پیچیدگی‌های تغذیه متناوب بشیم. از طرفی چون مدار ما فقط با یه پاوربانک تغذیه می‌شه، ایمنی کار خیلی بالا می‌ره.

مهم‌تر از همه اینکه چون با آب سر و کار داریم، اگه نشتی پیش بیاد یا آب پخش بشه، مدار اصلیمون (NodeMCU) کاملا از بخش پمپاژ جداست و هیچ خطری قطعات الکترونیکی رو تهدید نمی‌کنه. این ترفند دو مداره بودن، تمام این مشکلات رو حل می‌کنه!

مرحله ۲

اتصال قطعات به برد و حذف سیم‌های اضافی

حالا که منطق مدار رو متوجه شدی، بریم سراغ وصل کردن قطعات. برای اینکه کارمون راحت‌تر باشه و مدار زیاد شلوغ نشه، اصلا از برد بورد استفاده نمی‌کنیم و قطعات رو با سیم‌های جامپر مستقیما به پایه‌های NodeMCU وصل می‌کنیم. اول سنسور رطوبت خاک رو متصل کن و بعد برو سراغ سروو موتور. بعد از اینکه اتصالات رو با دقت چک کردی و از محکم بودنشون مطمئن شدی، می‌تونیم بریم سراغ آپلود کد روی برد.

استفاده نکردن از برد بورد باعث می‌شه حجم سیم‌ها به شدت کم بشه و پروژه‌ات خیلی جمع‌وجورتر دربیاد. پس فقط از جامپرهای کوتاه و مستقیم استفاده کن. کیفیت اتصالات خیلی مهمه؛ حتما دقت کن پایه‌های تغذیه برعکس وصل نشن تا آسیبی به برد اینترنت اشیای تو نرسه. با این سیم‌کشی تمیز، خیالت راحته که تو مراحل بعدی و موقع جابه‌جایی، هیچ سیمی قطعی پیدا نمی‌کنه.

حالا همه‌چیز از نظر سخت‌افزاری آماده است تا به سیستممون هوشمندی تزریق کنیم. بریم سراغ نرم‌افزار Arduino IDE و راه‌اندازی سرور محلی!

مرحله ۳

برنامه‌نویسی NodeMCU و راه‌اندازی سرور تحت وب

وقتشه که به بردمون جون بدیم! کدهای این پروژه یه ساختار خیلی جالب دارن. اول از همه باید کتابخونه‌های مربوط به ESP8266، وای‌فای و سروو موتور رو نصب داشته باشی.

ما تو این پروژه از یه فایل جداگانه به اسم PageIndex.h استفاده می‌کنیم. این فایل رو باید تو یه تب جدید تو نرم‌افزار Arduino IDE کنار کد اصلیت بسازی.

دلیل استفاده از فایل PageIndex اینه که کدهای HTML و جاوا اسکریپت رابط کاربری (همون صفحه وب که قراره رو گوشیمون ببینیم) رو به صورت مرتب تو خودش نگه می‌داره. حالا بیا نگاهی به توابع اصلی کد بندازیم. تابع HandleRoot()

وقتی وارد آدرس سرور می‌شی، تابع handleRoot فراخوانی می‌شه. این تابع مقدار آنالوگ سنسور رطوبت خاک رو می‌خونه، با دستور map اون رو به یه عدد بین 0 تا 10 تبدیل می‌کنه و جایگزین متغیری تو کدهای HTML می‌کنه تا رطوبت رو روی صفحه نمایش بده.

در نهایت، این کدهای HTML تغییریافته به عنوان پاسخ برای مرورگر گوشی یا لپ‌تاپ تو ارسال می‌شن. تابع HandleServo() این تابع وقتی فعال می‌شه که تو از روی صفحه وب، اسلایدر رو حرکت بدی. زاویه‌ای که انتخاب می‌کنی رو از سرور می‌گیره، به عدد صحیح تبدیل می‌کنه و به سروو موتور دستور می‌ده تو همون زاویه قرار بگیره.

تابع setup() این بخش فقط یک بار اول کار اجرا می‌شه. پورت سریال رو برای دیباگ باز می‌کنه، پین سروو رو معرفی می‌کنه و به شبکه وای‌فای وصل می‌شه. حتما یادت باشه که تو این قسمت، اسم وای‌فای (SSID) و رمز خودت رو جایگزین کنی. وقتی برد با موفقیت به وای‌فای وصل شد، آدرس IP رو تو سریال مانیتور چاپ می‌کنه تا بتونی سرورت رو پیدا کنی.

تابع loop() این تابع به صورت مداوم تکرار می‌شه و منتظر می‌مونه تا کلاینت (گوشی تو) درخواستی بفرسته و وب‌سرور بهش جواب بده. اگه دوست نداری تو کدها دست ببری، فقط کافیه اطلاعات وای‌فای رو وارد کنی و کد رو روی برد آپلود کنی.

مرحله ۴

تست مدار کنترلی و رابط کاربری وب

قبل از اینکه سیستم آب‌رسانی رو اضافه کنیم، بهتره مدار کنترلی رو تست کنیم تا خیالمون راحت بشه. برد NodeMCU رو به یه پاوربانک یا آداپتور موبایل وصل کن. هات‌اسپات گوشیت رو روشن کن تا برد بهش متصل بشه. حالا از تو تنظیمات گوشیت (بخش دستگاه‌های متصل) آدرس IP که به برد اختصاص داده شده رو یادداشت کن.

این آدرس IP رو تو مرورگر گوشیت وارد کن. بلافاصله یه صفحه وب برات باز می‌شه که میزان رطوبت رو نشون می‌ده و یه اسلایدر برای کنترل موتور داره. برای تست، سنسور رطوبت رو داخل یه لیوان آب ببر و صفحه رو رفرش کن؛ باید عدد رطوبت تغییر کنه. حالا اسلایدر رو حرکت بده تا ببینی سروو موتور چطور می‌چرخه. بخش کنترلی ما عالی کار می‌کنه!

مرحله ۵

ساخت استند و جاسازی قطعات روی پایه

برای اینکه پروژه‌مون شکل مرتبی بگیره، همه قطعات رو روی یه تیکه مقوای محکم سوار می‌کنیم. برای نصب برد NodeMCU می‌تونی از چند تا خلال دندون به عنوان پایه استفاده کنی. سر خلال دندون‌ها رو ببر، با یه قطره چسب حرارتی به چهار گوشه برد بزن و بعد روی پایه مقوایی بچسبونش تا برد کمی از سطح مقوا فاصله داشته باشه و هوا زیرش جریان پیدا کنه.

برای مرتب کردن سیم‌ها می‌تونی از بست‌های کمربندی کوچیک استفاده کنی تا ظاهر کارت تمیز بمونه.

حالا نوبت مهم‌ترین بخش مکانیکی کاره! کلید قطع و وصل پمپ رو روی مقوا بچسبون و سروو موتور رو دقیقا کنارش طوری تنظیم کن که وقتی بازوی موتور (هورن) می‌چرخه، بتونه دکمه کلید رو فشار بده.

مرحله ۶

راه‌اندازی پمپ آب و تست نهایی آبیاری

همون‌طور که گفتیم، پمپ آب مستقیما توسط اون کلیدی که سروو موتور فشار می‌ده کنترل می‌شه. با دقت موتور رو سر جایش محکم کن و از چسب حرارتی برای فیکس کردن همه قطعات استفاده کن تا موقع حرکت بازوی موتور، کلید جابه‌جا نشه. پمپ آب رو داخل یه ظرف آب بذار و شلنگش رو به سمت گلدونت هدایت کن. حالا کابل USB رو به برد متصل کن و هات‌اسپات گوشیت رو روشن کن.

وقتی NodeMCU به وای‌فای وصل شد، آدرس IP رو تو مرورگر وارد کن. با کشیدن اسلایدر روی صفحه وب، بازوی سروو موتور می‌چرخه، کلید مدار دوم رو می‌زنه و پمپ روشن می‌شه! با کشیدن دوباره اسلایدر، پمپ خاموش می‌شه.

اندازه مخزن آبی که انتخاب می‌کنی کاملا به نیاز گیاهت و اینکه چند روز می‌خوای سیستم خودکار کار کنه بستگی داره. هر گیاهی نیاز آبی متفاوتی داره.

مرحله ۷

پایان کار؛ گلدونت دیگه تشنه نمی‌مونه!

به همین راحتی تونستی یه سیستم آبیاری هوشمند و مبتنی بر اینترنت اشیا (IoT) بسازی. این پروژه یه ایده بی‌نظیر برای وقتاییه که مسافرتی یا فرصت نمی‌کنی به گیاهات سر بزنی. حتی می‌تونی با کمی تغییر تو کدها، سیستم رو طوری برنامه‌ریزی کنی که وقتی رطوبت خاک از یه حدی کمتر شد، پمپ به صورت کاملا خودکار روشن بشه.

حتما این پروژه کاربردی رو بساز و اگه ایده‌ای برای ارتقاش داشتی یا تو ساختش به چالشی خوردی، تو بخش کامنت‌ها با ما در میون بذار.

فایل‌های پیوست

INO garden.ino
ZIP ESP8266-master.zip

تو میتونی اولین سازنده باشی!

اگه پروژه رو ساختی به اشتراک بزار و اعتبار هدیه بگیر

این آموزش با استانداردهای اختصاصی آیسی‌مدار بازنویسی و بهینه‌سازی شده و تمامی حقوق انتشار آن متعلق به این مجموعه است و در صورت کپی یا بازنشر پیگرد قانونی خواهد داشت.

آموزش‌های مشابه

گفتگو‌های کاربران

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