تراریوم هوشمند با ESP32 برای رشد خودکار گیاهان
نگهداری از یه تراریوم فقط به آب دادن و روشن کردن نور ختم نمیشه. گیاهها و حتی خزندهها به یه محیط کاملا متعادل نیاز دارن؛ دما، رطوبت، چرخه نور و میزان رطوبت خاک همه باید تو یه بازه مشخص بمونن. اگه هر کدوم از اینها بههم بریزه، سلامت گیاه هم بهسرعت افت میکنه.
تو این پروژه با کمک یه برد ESP32 یه تراریوم کاملا خودکار میسازیم که خودش وضعیت محیط رو زیر نظر داره و بدون نیاز به دخالت دستی، شرایط ایدهآل رو حفظ میکنه. این سیستم چهار کار اصلی رو براساس سنسورهاش انجام میده: کنترل نور روز و شب، تأمین رطوبت با مهساز، تنظیم دما با فن و کنترل رطوبت خاک برای جلوگیری از رشد کپک.
تو این آموزش از آیسیمدار قدمبهقدم میبینیم چطور مدار رو میبندیم، سنسورها و رلهها رو وصل میکنیم، همهچیز رو داخل یه آکواریوم قدیمی جاسازی میکنیم و در نهایت با یه داشبورد تحت وب که مستقیم از خود ESP32 اجرا میشه، کل سیستم رو کنترل میکنیم. اگه دوست داری یه تراریوم واقعا هوشمند برای خودت بسازی، بریم سراغ قطعات و شروع کار.
- نورپردازی خودکار روز و شب
- تنظیم رطوبت با مهساز
- کنترل دما با فن
- کنترل میزان رطوبت خاک (برای جلوگیری از کپکزدگی)
- دریافت استعلام قیمت ساخت PCB
قطعات موردنیاز
- ماژول ESP32 (همراه با نمایشگر OLED)
- ماژول تبدیل برق AC به DC مدل Hi-Link
- سنسور دما و رطوبت DHT11
- سنسور رطوبت خاک
- ماژول مهساز
- فن 5 ولت
- پمپ آب
- رینگ الایدی از نوع WS2812B
- ماژول رله 3 کاناله
- بردبورد یا PCB
- کلید فشاری
- سیمهای رابط
- پایه مهساز پرینتشده با پرینتر سهبعدی
- یه آکواریوم قدیمی
- هویه و سیم لحیم
- پرینتر سهبعدی
- ست پیچگوشتی
منطق کنترلی سیستم چطور کار میکند
قبل از شروع ساخت، اول باید بفهمی دقیقا از یه تراریوم چی میخوای. در نگاه اول شاید فکر کنی فقط باید آب بدی یا نور بذاری، ولی موضوع به همین سادگی نیست. گیاهها (و حتی خزندهها) به یه محیط درست و اصولی نیاز دارن؛ یعنی دما، رطوبت هوا، چرخه نور و میزان رطوبت خاک باید همیشه تو یه بازه مناسب باقی بمونن.
منطق کنترلی سیستم به این شکل کار میکنه:
- اگه رطوبت خاک کمتر از 30 درصد بشه، پمپ آب روشن میشه
- اگه رطوبت خاک بیشتر از 50 درصد بشه، پمپ خاموش میشه
- اگه رطوبت هوا از حد آستانه پایینتر بیاد، مهساز روشن میشه
- اگه دما از حد آستانه بالاتر بره، فن روشن میشه
- اگه سنسوری خراب بشه یا مقدار نامعتبر بده، همهچیز خاموش میشه (حالت ایمن)
برای جلوگیری از روشن و خاموش شدن پیدرپی، سیستم از یه تأخیر هوشمند استفاده میکنه؛ یعنی صبر میکنه تا مقدار سنسور واقعا از حد آستانه رد بشه، نه اینکه به هر نوسان کوچیک واکنش نشون بده. این کار هم به رلهها فشار کمتری وارد میکنه و هم عملکرد کل سیستم رو پایدارتر میکنه. صفحه OLED هم همیشه مقادیر لحظهای و وضعیت سیستم رو نشون میده. رینگ الایدی هم یه وضعیتنمای سریع و بصری بهت میده:
🟢 سبز یعنی همهچیز عادیه 🔵 آبی یعنی پمپ روشنه و داره آبیاری میکنه 🟣 بنفش یعنی مهساز فعاله 🔴 قرمز یعنی خطای سنسور داریم. داشبورد وب هم مستقیم از خود ESP32 اجرا میشه؛ نه به سروری نیاز داره نه به فضای ابری. کافیه آدرس آیپی نمایش دادهشده روی OLED رو تو مرورگر هر دستگاهی که به همون وایفای وصله باز کنی تا کنترل کامل رو در دست بگیری.
سیستم دو حالت کاری داره:
- حالت خودکار (AUTO) — سیستم بر اساس مقادیر سنسورها و آستانههایی که تعیین کردی، خودش تصمیم میگیره
- حالت دستی (MANUAL) — خودت مستقیم از داشبورد فن، مهساز و پمپ رو کنترل میکنی
یه کلید فشاری هم روی برد هست که با یه فشار کوتاه بین دو حالت جابهجا میشه و با نگهداشتن طولانیترش، میتونی کل سیستم رو بهصورت اضطراری متوقف کنی.
نقشه سیمکشی مدار
سیمکشی این پروژه ساده و مستقیمه. باید همه قطعات یعنی صفحه OLED، سنسور DHT11، سنسور رطوبت خاک، رینگ الایدی از نوع WS2812، کلید فشاری و ماژولهای رله رو طبق نقشه پین به برد ESP32 (مدل Wemos Lolin32) وصل کنی. میتونی از نمودار مداری بالا استفاده کنی یا جدول پینهای زیر رو بهعنوان مرجع در نظر بگیری.
اتصال صفحه OLED به ESP32:
- SDA به GPIO 5
- SCL به GPIO 4 (اگه از یه OLED خارجی استفاده میکنی، بهجاش SDA رو به GPIO 21 و SCL رو به GPIO 22 وصل کن)
سنسور DHT11:
- GPIO12 به پین DATA
- 3.3 ولت به VCC
- GND به GND
سنسور رطوبت خاک:
- GPIO13 به خروجی آنالوگ (AO)
- 3.3 ولت به VCC
- GND به GND
کلید فشاری:
- GPIO14 به یک سر کلید
- سر دیگر کلید به GND
- (از حالت INPUT_PULLUP استفاده میشه)
رینگ الایدی از نوع WS2812:
- GPIO15 به DIN
- 5 ولت به VCC
- GND به GND
ماژول رله 3 کاناله:
- GPIO25 به رله 1، متصل به فن
- GPIO26 به رله 2، متصل به پمپ آب
- GPIO16 به رله 3، متصل به مهساز
VCC رله به 5 ولت و GND رله به GND متصل میشه. برای تغذیه کلی سیستم هم:
- خروجی 5 ولت ماژول Hi-Link به VIN برد ESP32، VCC رله و VCC رینگ WS2812B وصل میشه
- همه خطهای GND باید به یک زمین مشترک متصل بشن
حتما مطمئن شو همه اتصالات GND به هم مشترک باشن، وگرنه ممکنه سیستم درست کار نکنه.
آمادهسازی برد اصلی
اول برد سوراخدار رو جلوت بذار و قبل از هر لحیمکاری، چیدمان قطعات رو تو ذهنت مشخص کن. ماژول Hi-Link رو اول جا بده چون بزرگترین قطعهست و مسیر توزیع برق رو تعیین میکنه. اطراف این ماژول فضای کافی بذار و مراقب باش قطعات دیگه خیلی به سمت ورودی برق AC نزدیک نشن.
بعد پینهدر برای ESP32 جا بده تا در صورت نیاز بتونی برد رو جدا کنی. برای اتصالات ماژول رله و سیمهای خروجی به فن، پمپ و مهساز هم از ترمینال پیچی یا پینهدر استفاده کن.
وقتی از چیدمان راضی شدی، اول ریلهای تغذیه یعنی مسیرهای 5 ولت و GND رو در امتداد لبههای برد لحیم کن. بعد نوبت پینهدرها و کانکتورها میرسه.
بعد از لحیمکاری، پشت برد رو چک کن که هیچ پل لحیمی اتفاقی بین پدها ایجاد نشده باشه. با مولتیمتر روی حالت تست پیوستگی مطمئن شو خط 5 ولت و GND اتصال کوتاه نشدن. برد ESP32 رو وصل کن و اول از طریق USB روشنش کن (قبل از وصل کردن ماژول Hi-Link) تا مطمئن بشی OLED روشن میشه و برد درست کار میکنه.
نصب سنسورها و سیستم مهساز
مهساز و سنسور DHT11 با هم داخل یه پایه پرینتشده سهبعدی جا میگیرن که کف آکواریوم قرار میگیره. قرار دادن این دو کنار هم باعث میشه سنسور رطوبت دقیقا هوای نزدیک منبع مه رو بخونه و مقادیر دقیقتری بده. طراحی سهبعدی این پایه از یه طراح دیگه گرفته شده. تنظیمات پیشنهادی پرینت سهبعدی برای این پایه:
- متریال: PLA یا PETG (ترجیحا PETG چون در برابر رطوبت مقاومتره)
- ارتفاع لایه: 0.2 میلیمتر
- درصد پرشدگی: بین 25 تا 30 درصد
- نیازی به ساپورت نیست
بعد از پرینت، دیسک مهساز رو داخل پایه جا بزن و سیمهای سنسور DHT11 رو از کانال کناری عبور بده. مقداری آب داخل یه ظرف کوچیک بریز، مهساز رو داخلش بذار و موقتا به برق وصلش کن تا خروجی مه رو قبل از نصب داخل آکواریوم تست کنی. سیمهای DHT11 هم در امتداد دیواره آکواریوم میرن و بیرون از آکواریوم به برد اصلی وصل میشن.
اتصال فن، نور و رلهها
هر کانال رله به این شکل کار میکنه:
- رله 1 روی GPIO 25، فن رو کنترل میکنه و وقتی دما از حد مشخص عبور کنه فعال میشه
- رله 2 روی GPIO 26، پمپ آب رو کنترل میکنه و با افت شدید رطوبت خاک فعال میشه
- رله 3 روی GPIO 16، مهساز رو کنترل میکنه و با افت رطوبت هوا فعال میشه
فن، پمپ و مهساز رو به پایههای NO (نرمال باز) و COM هر کانال رله وصل کن. یعنی هر کدوم از این قطعات بهصورت پیشفرض خاموشن و فقط وقتی رله فعال بشه روشن میشن؛ این دقیقا همون رفتار ایمن و پیشفرضیه که باید داشته باشیم. رینگ الایدی از نوع WS2812B هم مستقیم به GPIO 15 وصل میشه و نیازی به رله نداره، چون کنترلش در سطح داده توسط خود ESP32 انجام میشه.
نصب کل سیستم داخل آکواریوم
قبل از نصب، محل سوراخها رو با ماژیک روی بدنه آکواریوم علامت بزن. برای فن، یه سوراخ نزدیک بالای یکی از دیوارهها ایجاد کن. فن باید کاملا همسطح بشینه و هوا رو روی سطح بالای محفظه بدمه.
رینگ الایدی رو تو قسمت بالایی داخل آکواریوم نصب کن؛ یا زیر درب بچسبونش یا از قاب بالایی آویزونش کن. این کار باعث میشه نور بهصورت یکنواخت تو کل محفظه پخش بشه. پایه مهساز رو کف آکواریوم، نزدیک یه مخزن آب کوچیک قرار بده. اگه گیاه داری، سنسور رطوبت خاک رو هم داخل خاک یا بستر فرو کن.
همه سیمهای سنسورها و قطعات رو از یه شکاف کوچیک پشت آکواریوم یا یه سوراخ اختصاصی برای کابل بیرون بکش. برد کنترل رو کاملا بیرون از آکواریوم نگهدار، چون رطوبت و مدارهای الکترونیکی اصلا باهم سازگار نیستن.
وقتی همهچیز سرجاش قرار گرفت، قبل از بستن نهایی یه تست خشک انجام بده. سیستم رو روشن کن و مطمئن شو همه سنسورها روی OLED مقادیر درست نشون میدن، بعد همهچیز رو بهطور کامل ببند.
برنامهنویسی برد ESP32
اول باید کد پروژه رو دانلود کنی. کد کامل این پروژه در دسترسه؛ فایل با پسوند ino رو تو Arduino IDE باز کن. اگه قبلا با ESP32 کار نکردی، از مسیر File بعد Preferences برو و آدرس بردمنیجر ESP32 رو تو قسمت "Additional Boards Manager URLs" وارد کن.
بعد از مسیر Tools، Board و Boards Manager برو، عبارت ESP32 by Espressif Systems رو جستجو کن و نصبش کن. از مسیر Tools بعد Board برد ESP32 Dev Module رو انتخاب کن. کتابخانههای موردنیاز رو هم از مسیر Tools و Manage Libraries نصب کن:
- Adafruit GFX
- Adafruit SSD1306
- کتابخانه DHT سنسور از Adafruit
قبل از آپلود، این تنظیمات رو تو کد بهروزرسانی کن:
// WiFi and Time Settings
const char* WIFI_SSID = "YourWiFiName";
const char* WIFI_PASS = "YourWiFiPassword";
const char* NTP_SERVER = "pool.ntp.org";
const long GMT_OFFSET = 19800; // IST = UTC+5:30 → change for your timezone
const int DST_OFFSET = 0;
نکته درباره پینهای OLED: اگه از برد Lolin32 با نمایشگر OLED داخلی استفاده میکنی، پینهای I2C غیراستاندارد هستن. کد از قبل این مقادیر رو درست تنظیم کرده:
#define I2C_SDA 5
#define I2C_SCL 4
اگه از یه ماژول OLED خارجی استفاده میکنی، این مقادیر رو به 21 و 22 تغییر بده. پورت درست رو از مسیر Tools و Port انتخاب کن و روی Upload بزن.
بعد از آپلود موفق، صفحه OLED باید ظرف چند ثانیه روشن بشه و مقادیر سنسورها رو نشون بده. سیستم هم بهصورت خودکار تلاش میکنه به وایفای وصل بشه و بعد از اتصال، آدرس آیپی خودش رو نمایش میده.
آشنایی با داشبورد تحت وب
به محض وصل شدن ESP32 به وایفای، آدرس آیپی روی صفحه OLED نمایش داده میشه. همون آدرس رو تو مرورگر هر دستگاهی که به همون شبکه وصله باز کن. داشبورد چهار بخش اصلی داره:
نمای کلی — مقادیر لحظهای دما، رطوبت و رطوبت خاک رو نشون میده. نشانگرهای وضعیت هم میگن آیا فن، مهساز یا پمپ الان فعاله یا نه. اگه شرایطی نیاز به توجه داشته باشه (مثلا دمای بالا)، یه پیام هشدار بهصورت خودکار نمایش داده میشه.
کنترلها — یه کلید دستی بالای صفحه بین حالت خودکار و دستی جابهجا میکنه. تو حالت دستی، دکمههای جداگانه روشن و خاموش برای مهساز، فن و پمپ در اختیارت قرار میگیره. تو حالت خودکار این دکمهها غیرفعالن و سیستم خودش تصمیم میگیره. آستانهها — میتونی مقادیر فعالسازی رو خودت تنظیم کنی:
- حداکثر دما قبل از فعال شدن فن
- حداقل رطوبت قبل از فعال شدن مهساز
- بازه رطوبت خاک برای کنترل پمپ
- مقدار تأخیر کنترلی (پیشنهاد میشه اول همون مقدار پیشفرض رو نگه داری)
زمانبندی — میتونی زمانهای مهپاشی خودکار رو مستقل از سنسور رطوبت تنظیم کنی. این قابلیت برای گیاههایی که به مهپاشی منظم در ساعتهای مشخص نیاز دارن، خیلی کاربردیه.
نمودارها — نمودارهای زنده و تاریخچهای از دما، رطوبت و رطوبت خاک رو نشون میده. این بخش برای پیدا کردن روندها خیلی مفیده؛ مثلا اگه متوجه بشی رطوبت هر روز تو یه ساعت مشخص افت میکنه، میتونی یه مهپاشی زمانبندیشده برای همون ساعت اضافه کنی.
تست نهایی سیستم
بعد از سرهم کردن کل سیستم و مدتی استفاده ازش، همهچیز دقیقا همونطوری کار میکنه که میخواستم. دیگه لازم نیست هر لحظه تراریوم رو چک کنم؛ خودش شرایط رو حفظ میکنه و من فقط هر از گاهی یه نگاه به داشبورد میاندازم تا مطمئن بشم همهچیز تو بازه درسته.
بخش نمودارها هم خیلی بیشتر از چیزی که فکرش رو میکردم به کارم اومد. دیدن روند تغییرات رطوبت و دما تو طول یه روز کامل، کمکم کرد آستانهها رو خیلی دقیقتر از حدس زدن تنظیم کنم. امیدواریم این پروژه رو با آیسیمدار خودت هم بسازی و تجربهتو باهامون تو بخش نظرات به اشتراک بذاری.
فایلهای پیوست
تو میتونی اولین سازنده باشی!
اگه پروژه رو ساختی به اشتراک بزار و اعتبار هدیه بگیر
این آموزش با استانداردهای اختصاصی آیسیمدار بازنویسی و بهینهسازی شده و تمامی حقوق انتشار آن متعلق به این مجموعه است و در صورت کپی یا بازنشر پیگرد قانونی خواهد داشت.








































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