فهرست مطالب:

رطوبت سنج خاک خورشیدی با ESP8266: 10 مرحله (همراه با تصاویر)
رطوبت سنج خاک خورشیدی با ESP8266: 10 مرحله (همراه با تصاویر)

تصویری: رطوبت سنج خاک خورشیدی با ESP8266: 10 مرحله (همراه با تصاویر)

تصویری: رطوبت سنج خاک خورشیدی با ESP8266: 10 مرحله (همراه با تصاویر)
تصویری: مزایای گلخانه هوشمند 2024, جولای
Anonim

در این دستورالعمل ، ما یک مانیتور رطوبت خاک با انرژی خورشیدی می سازیم. از یک میکروکنترلر وای فای ESP8266 با کد کم مصرف استفاده می کند و همه چیز ضد آب است تا بتوان آن را در بیرون رها کرد. می توانید این دستور العمل را دقیقاً دنبال کنید ، یا تکنیک های مفید برای پروژه های خود را از آن بگیرید.

اگر تازه وارد برنامه نویسی میکروکنترلر شده اید ، لطفاً کلاس Arduino و کلاس اینترنت اشیا را مطالعه کنید تا با اصول سیم کشی ، کد نویسی و اتصال به اینترنت آشنا شوید.

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

برای ادامه کار با من ، در یوتیوب ، اینستاگرام ، توییتر ، Pinterest من را دنبال کنید و در خبرنامه من مشترک شوید.

مرحله 1: آنچه شما نیاز دارید

آنچه شما نیاز دارید
آنچه شما نیاز دارید

برای قرار دادن مدار خود در داخل ، به یک صفحه شارژ باتری خورشیدی و خروجی ESP8266 مانند NodeMCU ESP8266 یا Huzzah و همچنین یک سنسور خاک ، باتری ، سوئیچ تغذیه ، مقداری سیم و یک محفظه احتیاج دارید.

در اینجا اجزا و مواد مورد استفاده برای اندازه گیری رطوبت خاک آمده است:

  • میکروکنترلر ESP8266 NodeMCU (یا مشابه ، Vin باید تا 6 ولت را تحمل کند)
  • برد شارژ خورشیدی Adafruit با ترمیستور اختیاری و مقاومت 2.2K اهم
  • باتری لیتیوم یونی 2200 میلی آمپر ساعت
  • تخته Perma-proto
  • سنسور رطوبت/دمای خاک
  • 2 غده کابل
  • محفظه ضد آب
  • جفت کابل برق ضد آب DC
  • لوله های جمع کننده حرارت
  • پنل خورشیدی 3.5 واتی
  • کلید قدرت را فشار دهید
  • نوار فوم دو چوب

در اینجا ابزارهایی که شما نیاز دارید آورده شده است:

  • لحیم کاری و لحیم کاری
  • ابزار دست یاری
  • استریپرهای سیم
  • اسنپ فلاش
  • موچین (اختیاری)
  • تفنگ گرم کننده یا فندک
  • مولتی متر (اختیاری است اما برای عیب یابی مفید است)
  • کابل USB A-microB
  • قیچی
  • مته مرحله ای

شما به حسابهای رایگان در سایتهای داده ابری io.adafruit.com و IFTTT احتیاج دارید.

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

مرحله 2: نمونه اولیه Breadboard

نمونه اولیه Breadboard
نمونه اولیه Breadboard

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

تصویر
تصویر
تصویر
تصویر
تصویر
تصویر
تصویر
تصویر

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

تصویر
تصویر

برای وصل کردن قدرت سنسور ، زمین ، ساعت و پین های داده ، نمودار مدار را دنبال کنید (اطلاعات همچنین دارای یک مقاومت کششی 10K است که همراه با سنسور خاک است).

  • سنسور سیم سبز به GND
  • سنسور سیم قرمز به 3.3 ولت
  • سنسور سیم زرد به NodeMCU پین D5 (GPIO 14)
  • سنسور سیم آبی به NodeMCU پین D6 (GPIO 12)
  • مقاومت کششی 10K بین پین داده آبی و 3.3V

می توانید این را به میکروکنترلر دلخواه خود ترجمه کنید. اگر از Arduino Uno یا مشابه آن استفاده می کنید ، برد شما قبلاً توسط نرم افزار Arduino پشتیبانی می شود. اگر از ESP8266 استفاده می کنید ، لطفاً کلاس اینترنت من را برای راهنمایی گام به گام برای راه اندازی ESP8266 در آردوینو بررسی کنید (با افزودن URL های اضافی به قسمت URL های مدیران تابلوهای اضافی در تنظیمات برگزیده آردوینو ، سپس جستجو و انتخاب هیئت مدیره جدید از مدیر هیئت مدیره). من تمایل دارم از نوع برد Adafruit ESP8266 Huzzah برای برنامه ریزی برد NodeMCU ESP8266 استفاده کنم ، اما همچنین می توانید پشتیبانی برد Generic ESP8266 را نصب و استفاده کنید. شما همچنین به درایور تراشه ارتباطات USB SiLabs (موجود برای Mac/Windows/Linux) نیاز دارید.

برای فعال کردن سنسور با برد سازگار با Arduino ، من کتابخانه SHT1x Arduino را از صفحه github Practical Arduino بارگیری کردم ، سپس فایل را از حالت فشرده خارج کرده و پوشه کتابخانه را به پوشه Arduino/libraries من منتقل کردم ، سپس نام آن را SHT1x گذاشتم. نمونه طرح ReadSHT1xValues را باز کرده و شماره پین را به 12 (dataPin) و 14 (clockPin) تغییر دهید ، یا طرح اصلاح شده را در اینجا کپی کنید:

#عبارتند از

#تعریف داده پین 12 // پین NodeMCU D6 #ساعت را تعریف کنید پین 14 // پین NodeMCU D5 SHT1x sht1x (dataPin ، clockPin) ؛ // instantiate SHT1x object void setup () {Serial.begin (38400)؛ // اتصال سریال برای گزارش مقادیر به میزبان Serial.println ("راه اندازی") ؛ } void loop () {float temp_c؛ float temp_f؛ رطوبت شناور ؛ temp_c = sht1x.readTemperatureC ()؛ // خواندن مقادیر از حسگر temp_f = sht1x.readTemperatureF ()؛ رطوبت = sht1x.readHumidity ()؛ Serial.print ("دما:")؛ // مقادیر را در پورت سریال Serial.print (temp_c، DEC) چاپ کنید ؛ Serial.print ("C /") ؛ Serial.print (temp_f، DEC)؛ Serial.print ("F. Humidity:")؛ Serial.print (رطوبت) ؛ Serial.println ("٪")؛ تاخیر (2000) ؛ }

این کد را روی برد خود بارگذاری کنید و مانیتور سریال را باز کنید تا جریان داده های سنسور در آن مشاهده شود.

اگر کد شما کامپایل نمی شود و از پیدا نشدن SHT1x.h شکایت می کند ، کتابخانه حسگر مورد نیاز را به درستی نصب نکرده اید. پوشه Arduino/libraries خود را برای پوشه ای با نام SHT1x بررسی کنید ، و اگر در جای دیگری قرار دارد ، مانند پوشه بارگیری های خود ، آن را به پوشه کتابخانه های Arduino خود منتقل کرده و در صورت لزوم نام آن را تغییر دهید.

اگر کد شما کامپایل می شود اما روی برد شما بارگذاری نمی شود ، تنظیمات برد خود را دوباره بررسی کنید ، مطمئن شوید که برد شما وصل است و پورت صحیح را از منوی Tools انتخاب کنید.

اگر کد شما بارگذاری می شود ، اما ورودی مانیتور سریال شما قابل تشخیص نیست ، میزان باود خود را که در طرح شما مشخص شده است دوباره بررسی کنید (در این مورد 38400).

اگر ورودی مانیتور سریال شما درست به نظر نمی رسد ، سیم کشی خود را در برابر نمودار مدار بررسی کنید. آیا مقاومت کششی 10K شما بین پین داده و 3.3V قرار دارد؟ آیا داده ها و ساعت به پین های صحیح متصل هستند؟ آیا برق و زمین آنطور که باید در سراسر مدار وصل هستند؟ تا زمانی که این طرح ساده کار نمی کند ، ادامه ندهید!

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

مرحله 3: راه اندازی نرم افزار

راه اندازی نرم افزار
راه اندازی نرم افزار

برای کامپایل کد این پروژه با ESP8266 ، باید چند کتابخانه آردوینو دیگر (که از طریق مدیر کتابخانه موجود است) نصب کنید:

  • Adafruit IO Arduino
  • Adafruit MQTT
  • ArduinoHttpClient

کد پیوست شده به این مرحله را بارگیری کنید ، سپس فایل را از حالت فشرده خارج کرده و Solar_Powered_Soil_Moisture_Monitor_Tutorial را در نرم افزار Arduino خود باز کنید.

#عبارتند از

#include #include #include #include // داده ها و اتصالات ساعت را مشخص کرده و شیء SHT1x را نمونه سازی کنید #داده ها را تعریف کنید پین 12 // پین NodeMCU D6 #ساعت را مشخص کنید پین 14 // پین NodeMCU D5 SHT1x sht1x (dataPin ، clockPin) ؛ // راه اندازی خوراک AdafruitIO_Feed *رطوبت = io.feed ("رطوبت") ؛ AdafruitIO_Feed *دما = io.feed ("دما") ؛ const int sleepTime = 15؛ // 15 دقیقه

void setup ()

{Serial.begin (115200) ؛ // اتصال سریال برای گزارش مقادیر به میزبان Serial.println ("راه اندازی") ؛ // اتصال به io.adafruit.com Serial.print ("اتصال به Adafruit IO") ؛ io.connect ()؛ // منتظر اتصال باشید (io.status () <AIO_CONNECTED) {Serial.print (".")؛ تأخیر (500) ؛ } // ما متصل هستیم Serial.println ()؛ Serial.println (io.statusText ()) ؛ }

حلقه خالی ()

{io.run ()؛ // io.run ()؛ مشتری را متصل نگه می دارد و برای همه طرح ها مورد نیاز است. float temp_c؛ float temp_f؛ رطوبت شناور ؛ temp_c = sht1x.readTemperatureC ()؛ // خواندن مقادیر از حسگر temp_f = sht1x.readTemperatureF ()؛ رطوبت = sht1x.readHumidity ()؛ Serial.print ("دما:")؛ // مقادیر را در پورت سریال Serial.print (temp_c، DEC) چاپ کنید ؛ Serial.print ("C /") ؛ Serial.print (temp_f، DEC)؛ Serial.print ("F. Humidity:")؛ Serial.print (رطوبت) ؛ Serial.println ("٪")؛ رطوبت-> ذخیره (رطوبت) ؛ دما-> ذخیره (temp_f) ؛ Serial.println ("ESP8266 خوابیده است …") ؛ ESP.deepSleep (زمان خواب * 1000000 * 60) ؛ // خواب }

این کد ترکیبی از کد سنسور قبلی در این آموزش و یک مثال اساسی از سرویس داده ابری Adafruit IO است. این برنامه وارد حالت کم مصرف می شود و بیشتر اوقات می خوابد ، اما هر 15 دقیقه بیدار می شود تا دما و رطوبت خاک را بخواند و داده های آن را به Adafruit IO گزارش می دهد. به برگه config.h بروید و نام کاربری و کلید Adafruit IO خود و همچنین نام و رمز عبور شبکه wifi محلی خود را وارد کنید ، سپس کد را در میکروکنترلر ESP8266 خود بارگذاری کنید.

تصویر
تصویر

باید مقداری آمادگی در io.adafruit.com انجام دهید. پس از ایجاد فیدها برای دما و رطوبت ، می توانید یک داشبورد برای مانیتور خود ایجاد کنید که نمودار مقادیر سنسور و داده های هر دو فید ورودی را نشان می دهد. اگر برای شروع کار با Adafruit IO به تجدید نیاز دارید ، این درس را در کلاس اینترنت اشیاء من مطالعه کنید.

مرحله 4: تخته شارژ خورشیدی را آماده کنید

تخته شارژ خورشیدی را آماده کنید
تخته شارژ خورشیدی را آماده کنید

با اتصال روی خازن و مقداری سیم به پدهای خروجی بار ، صفحه شارژ خورشیدی را آماده کنید. من با استفاده از مقاومت اضافی اختیاری (2.2K لحیم کاری شده در PROG) ، با سرعت بیشتری شارژ می کنم و با جایگزینی مقاومت سطح با ترمیستور 10K متصل به خود باتری ، بدون مراقبت باقی می ماند. این امر باعث محدود شدن شارژ به محدوده دمای ایمن می شود. من این تغییرات را در پروژه شارژر خورشیدی USB خود با جزئیات بیشتری توضیح دادم.

مرحله 5: ایجاد مدار میکروکنترلر

ساخت مدار میکروکنترلر
ساخت مدار میکروکنترلر
تصویر
تصویر
تصویر
تصویر

برد میکروکنترلر و سوئیچ تغذیه را به یک برد اولیه وصل کنید.

تصویر
تصویر

خروجی برق شارژر خورشیدی را به ورودی سوئیچ خود وصل کنید که باید حداقل 1 آمپر باشد.

تصویر
تصویر

اتصالات سیم ورقه ای که در نمودار مدار بالا (یا مشخصات نسخه شخصی شما) توصیف شده است را ایجاد و لحیم کنید ، از جمله مقاومت کششی 10K در خط داده سنسور.

پین های Load شارژر خورشیدی در صورت عدم وجود انرژی خورشیدی ، باتری 3.7 ولت را تأمین می کنند ، اما در صورت وصل بودن و آفتابی بودن مستقیماً از پنل خورشیدی تغذیه می شوند. بنابراین میکروکنترلر باید بتواند انواع ولتاژها را تا 3.7 ولت و تا 6 ولت DC تحمل کند. برای کسانی که به 5 ولت احتیاج دارند ، می توان از PowerBoost (500 یا 1000 ، بسته به جریان مورد نیاز) برای تعدیل ولتاژ بار تا 5 ولت استفاده کرد (همانطور که در پروژه شارژ USB خورشیدی نشان داده شده است). در اینجا چند تخته رایج و محدوده ولتاژ ورودی آنها آمده است:

  • NodeMCU ESP8266 (در اینجا استفاده می شود): USB 5V یا Vin 3.7V-10V
  • Arduino Uno: USB 5V یا 7-12V Vin
  • Adafruit Huzzah ESP8266 Breakout: 5V USB یا 3.4-6V VBat

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

مرحله 6: Cable Glands را نصب کنید

تصویر
تصویر

برای ایجاد نقاط ورودی کابل پنل خورشیدی و کابل حسگر ، ما دو غلاف کابل را در کنار محفظه ضد آب قرار می دهیم.

تصویر
تصویر
تصویر
تصویر

اجزای خود را برای تعیین محل ایده آل آزمایش کنید ، سپس با استفاده از مته پله ای در محفظه ضد آب علامت زده و سوراخ کنید. دو غده کابل را نصب کنید.

تصویر
تصویر

مرحله 7: مونتاژ کامل مدار

مونتاژ مدار کامل
مونتاژ مدار کامل

قسمت درگاه کابل برق ضد آب را در یک قسمت قرار داده و آن را به ورودی DC شارژر خورشیدی (قرمز به + و سیاه به -) لحیم کنید.

تصویر
تصویر

سنسور خاک را از طریق غده دیگر وارد کرده و مطابق نمودار مدار آن را به پرما-پرو متصل کنید.

تصویر
تصویر

پروب ترمیستور را به باتری وصل کنید. با این کار شارژ به محدوده دمای ایمن محدود می شود در حالی که پروژه در خارج بدون مراقبت رها می شود.

تصویر
تصویر

شارژ بیش از حد گرم یا بیش از حد سرد می تواند به باتری آسیب برساند یا آتش بسوزاند. قرار گرفتن در معرض دمای شدید می تواند باعث آسیب و کوتاه شدن عمر باتری شود ، بنابراین اگر زیر یخ زدگی یا بالاتر از 45 درجه سانتیگراد/113 درجه فارنهایت قرار دارد ، آن را داخل آن قرار دهید.

تصویر
تصویر

غدد کابل را محکم کنید تا در اطراف کابل های خود مهر و موم ضد آب و هوا ایجاد کند.

مرحله 8: پانل خورشیدی را آماده کنید

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

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

مرحله 9: آن را آزمایش کنید

امتحانش کن
امتحانش کن

باتری خود را وصل کرده و با فشار دادن کلید پاور مدار را روشن کنید.

تصویر
تصویر

آن را آزمایش کنید و مطمئن شوید که قبل از بستن محفظه و نصب سنسور در باغ گیاهان ، گیاهان گلدانی گرانبها یا خاک دیگر در محدوده سیگنال شبکه وای فای خود به اینترنت گزارش می شود.

تصویر
تصویر

هنگامی که داده های سنسور به صورت آنلاین ثبت می شوند ، تنظیم دستور العمل هشدارهای ایمیل یا پیامک در سایت API gateway If This Then That آسان است. من پیکربندی کردم که اگر سطح رطوبت خاک به زیر 50 برسد ، به من ایمیل ارسال کند.

برای آزمایش بدون انتظار برای خشک شدن گیاهم ، من به صورت دستی یک نقطه داده برای تغذیه رطوبت خود در Adafruit IO که زیر آستانه بود ، وارد کردم. چند لحظه بعد ، ایمیل می رسد! اگر سطح خاک از سطح تعیین شده من پایین بیاید ، هر بار که خوراک به روز شود تا زمانی که خاک را آبیاری کنم ، یک ایمیل دریافت می کنم. برای سلامت عقلم ، کد خود را به روز کردم تا خاک را خیلی کمتر از هر 15 دقیقه نمونه گیری کنم.

مرحله 10: در خارج از آن استفاده کنید

در خارج از آن استفاده کنید!
در خارج از آن استفاده کنید!
در خارج از آن استفاده کنید!
در خارج از آن استفاده کنید!

این یک پروژه سرگرم کننده است که می توانید بر اساس نیازهای هیدراتاسیون گیاه خود سفارشی سازی کنید و به راحتی می توانید سنسورها را جایگزین یا اضافه کنید یا ویژگی های انرژی خورشیدی را در سایر پروژه های آردوینو خود ادغام کنید.

با تشکر از همراهی شما! دوست دارم نظر شما را بشنوم ؛ لطفا در نظرات ارسال کنید این پروژه بخشی از کلاس خورشیدی رایگان من است ، جایی که می توانید پروژه های حیاط خلوت آسان و درس های بیشتری را در مورد کار با صفحات خورشیدی پیدا کنید. بررسی کنید و ثبت نام کنید!

اگر این پروژه را دوست دارید ، ممکن است به برخی از پروژه های دیگر من علاقه مند باشید:

  • کلاس اینترنت اشیاء رایگان
  • مشترک مشترک YouTube با ESP8266
  • نمایشگر آمار اجتماعی ردیاب با ESP8266
  • نمایش آب و هوا WiFi با ESP8266
  • ولنتاین اینترنتی

برای ادامه کار با من ، من را در YouTube ، Instagram ، Twitter ، Pinterest و Snapchat دنبال کنید.

توصیه شده: