پروژه گلدان هوشمند با سنسور رطوبت خاک
سنسور رطوبت خاک YL_69
ماژول رطوبت خاک YL_69 یکی از معروفترین و پرکاربرد ترین سنسور های رطوبت هستش که در پروژه های هوشمند سازی و اینترنت اشیا ازش استفاده میشه این ماژول قیمت مناسبی داره و دارای دو خروجی دیجیتال و آنالوگ هستش. ما داخل این پروژه از پایه دیجیتال سنسور استفاده میکنیم خب اصلا چه فرقی میکنه که ما از آنالوگ استفاده کنیم یا دیجیتال ؟ ما اگه از پایه آنالوگ استفاده کنیم اول باید مقدار آنالوگ رو بخونیم و بعد شرطی بنویسیم که اگر مقدار آنالوگ مثلا۷۰۰ بود پمپ روشن بشه و اینکه آنالوگ همواره میتونه خطا داشته باشه و نویز روش تاثیر داشته باشه. دیجیتال چه فرقی میکنه؟ ما اگه از پایه دیجیتال استفاده کنیم دیگ نیاز نیست مقدار آنالوگ رو بخونیم و شرط بنویسیم . در واقع پتانسیومتری گه روی ماژول هستش کار خواندن مقدار آنالوگ و شرط نویسیش رو انجام میده.
شماتیک و اتصالات:
پایه VCC ماژول رطوبت خاک = پایه ۳.۳ ولت برد NodeMCU پایه GND ماژول رطوبت خاک = پایه GND برد NodeMCU پایه DO ماژول رطوبت خاک = پایه D1 برد NodeMCU پایه VCC ماژول رله = پایه VIN برد NodeMCU پایه IN ماژول رله = پایه D2 برد NodeMCU پایه GND ماژول رله = پایه GND برد NodeMCU سیم قرمزیا مثبت پمپ آب = پایه NOماژول رله سیم مشکی یا منفی پمپ آب = سیم مشکی یا منفی جاباتری چهارتایی(منبع تغذیه برق پمپ آب) سیم مثبت جاباتری چهار تایی(منبع تغذیه برق پمپ آب) = پایه COM ماژول رله
کد نویسی :
ماژول رطوبت وقتی رطوبت خاک کم باشه خروجیش LOW هستش و وقتی رطوبت زیاد باشه خروجیش HIGH هستش . برنامه ای که ما نوشتیم به این شکل هستش که اگه خروجی ماژول رطوبت LOW بود یعنی رطوبت خاک کم بود پمپ آب به وسیله رله روشن بشه ووقتی خروجی ماژول رطوبت HIGH بود یعنی رطوبت زیاد بود پمپ آب به وسیله رله خاموش بشه.
۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۱۰ ۱۱ ۱۲ ۱۳ ۱۴ ۱۵ ۱۶ ۱۷ ۱۸ |
int sensor = D1; int Relay = D2; void setup() { Serial.begin(۱۱۵۲۰۰); pinMode(sensor, INPUT); pinMode(Relay, OUTPUT); } void loop(){ if (digitalRead(sensor) == LOW) { digitalWrite(Relay, HIGH); } else { digitalWrite(Relay, LOW); } } |
اول از همه دو تا متغیر برای معرفی پایه ها استفاده میکنیم.
۱ ۲ |
int sensor = D1; int Relay = D2; |
داخل VOID SETUP حالت پین هارو مشخص میکنیم و سرعت رو روی ۱۱۵۲۰۰ تنظیم میکنیم.
۱ ۲ ۳ ۴ ۵ |
void setup() { Serial.begin(۱۱۵۲۰۰); pinMode(sensor, INPUT); pinMode(Relay, OUTPUT); } |
داخل VOID LOOP شرطی مینویسیم که اگه مقدار دیجیتال خونده شده از ماژول رطوبت LOW بود Relay مقدارش یک بشه یا همون HIGH بشه (یعنی پمپ آب توسط رله روشن بشه) در غیر این صورت(در غیر این صورت منظور همون هستش که اگه مقدار خروجی ماژول رطوبت HIGH باشه) Relay صفر بشه یا همون LOW بشه (یعنی پمپ آب توسط رله خاموش بشه)
۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ |
void loop(){ if (digitalRead(sensor) == LOW) { digitalWrite(Relay, HIGH); } else { digitalWrite(Relay, LOW); } } |
چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند میتوانید از همین طریق اطلاع رسانی کنید.
.
در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت آکادمی دانش پژوهان آتی حمایت کنید.