فهرست مطالب:
- تدارکات
- مرحله 1: ساخت دستگاه
- مرحله 2: اتصالات استارت DOL
- مرحله 3: ایجاد حساب با Adafruit IO (io.adafruit.com)
- مرحله 4: نرم افزار را بسازید و نصب کنید
- مرحله 5: MQTT Dash APP را بر روی تلفن همراه خود نصب و پیکربندی کنید
- مرحله 6: آخرین مرحله:-) آزمایش و تنظیم مجدد
تصویری: کنترل کننده راه اندازی مبتنی بر IOT برای پمپ آبیاری: 6 مرحله
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:54
سلام دوستان
این دستورالعمل در مورد نحوه نظارت و کنترل از راه دور یک پمپ آبیاری است که از طریق اینترنت تنظیم شده است.
داستان: من در مزرعه ام فقط 6 ساعت در روز از شبکه محلی منبع تغذیه می گیرم. زمان بندی ها منظم نیستند ، دسترسی به برق می تواند صبح زود یا دیر هنگام عصر یا حتی نیمه شب باشد. هر بار رفتن به محل چاه مته برای بررسی در دسترس بودن نیرو ، استارت یا توقف موتور یک روند بسیار دردناک بود. همچنین مجبور شدم موتور را حداقل 2-3 ساعت در روز کار کنم تا آب کافی برای سیستم قطره ای تامین شود. مدتی بود که در حال بررسی گزینه هایی برای حل این مشکل با کار از راه دور موتور و همچنین اطلاع از وضعیت آن بودم. دستگاه هایی در بازار موجود است که به محض برق رسانی موتور را روشن می کنند ، اما این ویژگی را ندارند که هر زمان که بخواهیم موتور را متوقف کند. همچنین هیچ راهی برای اطلاع از وضعیت روشن/خاموش شدن موتور در هر زمان وجود ندارد. این معمولاً منجر به آبیاری بیش از حد می شود و منجر به از دست دادن باروری خاک و همچنین هدر رفتن برق می شود. سرانجام خودم راه حلی ایجاد کردم که می توانم موتور را از راه دور از موبایل/رایانه لوحی/رایانه راه اندازی و متوقف کنم در هر زمان … !!. همچنین می توانم در دسترس بودن منبع تغذیه از کمربند و همچنین وضعیت موتور (روشن/خاموش) دائماً نظارت کنم. امیدوارم به صاحبان مزرعه در سطح کشور کمک کند تا سیستم های آبیاری خود را بدون نیاز به مراجعه به محل آغازین مدام مدیریت کنند.
تدارکات
پیش نیازها:
مکانی که می خواهید این دستگاه را در آن نصب کنید باید دارای اینترنت باشد (پهنای باند با اینترنت وای فای/تلفن همراه)
چیزهایی که شما نیاز دارید:
- NodeMCU /ESP12
- رله دو کاناله
- WCS1700 - سنسور جریان
- ماژول شارژ باتری TP4056
- LD313 ، خازن - 1000uF Register - دو ثبات 5k اهم
- هر تلفن هوشمند قدیمی (دارای نقطه اتصال /اینترنت).
چگونه کار می کند:
این راه حل ساده IOT مبتنی بر ابر با استفاده از NodeMCU/ESP12 و کارگزار MQTT از راه دور است. NodeMCU به عنوان یک دروازه IOT کار می کند ، همچنین استارت DOL را کنترل می کند. از طریق اینترنت به کارگزار MQTT از راه دور متصل می شود. برنامه ای که بر روی تلفن همراه Android اجرا می شود به کارگزار متصل می شود که از طریق آن می توانیم پمپ آبیاری خود را همیشه کنترل و کنترل کنیم. من از کارگزار MQTT رایگان موجود از Adafruit IO استفاده کردم. بسیاری از کارگزاران رایگان مانند mosquitto ، cloudmqtt و غیره در دسترس هستند. شما می توانید هر کارگزار را انتخاب کنید به شرط تغییر سرور و شماره پورت در کد. NodeMCU با استفاده از WiFi از نقطه اتصال تلفن همراه به اینترنت متصل می شود. Yon می تواند از هر تلفن همراه قدیمی یا کم هزینه برای دسترسی به wifi از طریق hotspot یا هر وسیله دیگری برای ارائه اینترنت از طریق wifi استفاده کند. تلفن همراه باید همانطور که باید در 24X7 به شارژر متصل شود.
NodeMCU با دو رله برای کنترل شروع و توقف موتور کار می کند. برای حس جریان در موتور از سنسور جریان WCS1700 استفاده کردم. خروجی آنالوگ سنسور برای روشن یا خاموش بودن موتور استفاده می شود. همچنین قدرت دسترسی به شبکه را حس می کند و آن را برای کارگزار منتشر می کند تا بتوانیم هر زمان وضعیت شبکه را بدانیم. این دستگاه برای دریافت دو درخواست تغذیه موتور روشن و خاموش موتور مشترک است. با ارسال مقادیر خاص به این فیدها می توانیم موتور را برای شروع یا توقف کنترل کنیم.
در نهایت من برنامه MQTT Dash را روی تلفن اندرویدی خود نصب کردم و آن را پیکربندی کردم تا به کارگزار MQTT متصل شود و از فیدهای داشبورد/gui آن استفاده کند. این برنامه دارای آیکون های بسیار خوب با دکمه ها ، سنج ، سوئیچ و غیره است تا داشبورد جذابی ایجاد کند. با این وجود می توانید از هر برنامه تلفن همراه IOT اتوماسیون خانگی که از پروتکل mqtt پشتیبانی می کند استفاده کنید.
نحوه کار WCS1700:
WCS1700 اساساً یک سنسور اثر هال است که ولتاژ خروجی متناسب با میدان مغناطیسی ایجاد شده با جریان در سیم پیچ ایجاد می کند. سیم پیچ در اینجا یک منبع تغذیه است که به موتور متصل می شود. می تواند جریان AC را تا 70 آمپر اندازه گیری کند. ولتاژ کار بین 3.3 تا 12 ولت است. برای اطلاعات بیشتر به برگه اطلاعات آن مراجعه کنید. همانطور که از ESP12 استفاده می کنم ، از منبع تغذیه مشابه 3.3V به عنوان ولتاژ کار برای WCS1700 استفاده کردم. همانطور که در برگه داده در 3.3 ولت مشخص شده است ، دستگاه باید ولتاژ دیفرانسیلی در حدود 32 تا 38 میلی ولت در هر آمپر جریان از طریق سیم پیچ ایجاد کند. اما ممکن است بر اساس اندازه سیم پیچ / فاصله هوا و تغییرات دستگاه متفاوت باشد. از این رو مجبور شدم آن را با آزمایش با آمپر متر اندازه گیری کنم. من از صحت دستگاه راضی نیستم اما به اندازه کافی خوب است که در مورد وضعیت موتور ON/OFF تصمیم گیری کنم. پین خروجی WCS1700 به A0 ESP12 متصل می شود. هنگامی که جریانی وجود ندارد ، ESP12 باید مقدار 556 را بخواند. با افزایش جریان در سیم پیچ ، ولتاژ می تواند بر اساس نحوه عبور کابل از سنسور در هر دو طرف باشد. در کد من تفاوت مقادیر را به عنوان مقدار مطلق (x - 556) در نظر گرفتم. با تقسیم نتیجه بر 15 ، جریان تقریبی جریان را از طریق سنسور دریافت کردم. برای بدست آوردن عدد مناسب برای شما ، باید این را آزمایش کنید. هرگونه اندازه گیری جریان توسط دستگاه بالای 5 آمپر به عنوان موتور روشن و زیر 5 آمپر به عنوان موتور در حالت خاموش است. با آزمایش می توانید از شماره مناسب دستگاه خود استفاده کنید. بر این اساس باید WCS1700_CONST و MIN_CURRENT را در کد تغییر دهید.
مرحله 1: ساخت دستگاه
نمودار بالا جزئیات کاملی در مورد نحوه سیم کشی تمام اجزا را ارائه می دهد.
منبع تغذیه: من از TP4056 برای شارژ باتری ها و LM313 برای تنظیم 3.7V - 4.2V خروجی باتری تا 3.3 ولت برای تغذیه NodeMCU استفاده کردم. از خازن 1000mF بین Vin و زمین LM313 برای تامین پایدار 3.3V استفاده کرد. برای تغذیه TP4056 می توانید از شارژر USB معمولی تلفن همراه استفاده کنید. دارای مدار محافظ باتری برای محافظت از باتری در برابر شارژ بیش از حد.
حسگر منبع تغذیه شبکه: تقسیم کننده ولتاژ 5k اهم 5 ولت را به 2.5 ولت کاهش می دهد. پین D5 NodeMCU ولتاژ را حس می کند.
پین خروجی WCS1700 برای خواندن ولتاژ آنالوگ از سنسور به A0 متصل است. برای اندازه گیری جریان ، خط برق شبکه باید از سوراخ عبور کند. من از خازن 0.01 uF برای دریافت فرم خواندن پایدار WCS1700 استفاده کردم.
D1 و D2 NodeMCU به IN0 و IN1 پین های ورودی رله متصل شوند.
مرحله 2: اتصالات استارت DOL
من مدار کنترل استارت DOL را تغییر دادم تا مجموعه دیگری از کلیدهای START و STOP را معرفی کنم. این تغییر بر عملکرد راه اندازی/توقف دستی تأثیر نمی گذارد و آنها همچنان به کار خود ادامه می دهند.
احتیاط !!!! از آنجا که استارت DOL یک دستگاه ولتاژ بالا است ، قبل از باز کردن جعبه ، کلید اصلی را خاموش کنید. تماس مستقیم با سیم زنده می تواند خطرناک باشد. اگر مطمئن نیستید برای برقراری ارتباط از متخصص برق کمک بگیرید
من از ماژول رله 2 کانال 5 ولت به عنوان کلید START و STOP استفاده کردم. این رله ها توسط ESP12 کنترل می شوند.
رله - 0 به عنوان کلید START کار می کند - به صورت NO (معمولاً باز است).
رله -1 به عنوان سوئیچ STOP کار می کند - با سیم به عنوان NC (معمولاً بسته است). استارت در حال حاضر دارای سیم متصل از کنتاکتور بالا به NVC است. همانطور که در تصویر نشان داده شده است ، باید آن را برداشته و سیمهای رله -1 را جایگزین کنید.
اطمینان حاصل کنید که اتصالات بین استارت و ماژول های رله برای ایمنی کامل عایق بندی شده اند. من ESP را طوری برنامه ریزی کردم که هر دو رله را 2 ثانیه نگه دارد تا از دکمه START/STOP شبیه سازی شود.
مرحله 3: ایجاد حساب با Adafruit IO (io.adafruit.com)
من از کارگزار Adafruit io mqtt استفاده کردم که استفاده از آن با محدودیت های کمی رایگان است اما برای استفاده ما مناسب است. من این را ترجیح می دهم زیرا در پروژه های دیگر نیز از آن استفاده کردم و کاملاً قابل اعتماد بودم و همچنین دارای بسیاری از ویژگی های دیگر مانند داشبورد با رابط کاربری گرافیکی خوب است و حتی ما می توانیم از تریگرها استفاده کنیم. برای استفاده از Adafruit io باید یک حساب کاربری ایجاد کنید و نام کاربری و کلید فعال را یادداشت کنید.
مرحله 4: نرم افزار را بسازید و نصب کنید
کد کامل در طرح موجود است. قبل از کامپایل و بارگذاری سیستم عامل ، باید آن را در Arduino IDE باز کنید و تغییرات کمی ایجاد کنید. نوع برد را به عنوان NodeMCU 1.0 انتخاب کنید. نصب IDE و کتابخانه های مرتبط در محدوده این اسناد نیست.
خطوط زیر را در کد به عنوان گزینه های زیر اصلاح کنید.
#تعریف WLAN_SSID "xxx" // SSID WiFi نقطه اتصال تلفن همراه شما
#تعریف WLAN_PASS "……" //
/*********************** Adafruit.io Setup ******************* **************/
#تعریف سرور AIO "io.adafruit.com"
#تعریف AIO_SERVERPORT 1883 // از 8883 برای SSL استفاده کنید
#تعریف AIO_USERNAME "xyz" // نام کاربری حساب adafruit شما
#تعریف AIO_KEY "abcd ……" // کلید فعال شما…
درباره MQTT Feeds: دستگاه و سرویس گیرنده (برنامه تلفن همراه) از طریق فیدهای پیام با استفاده از مدل زیر میخانه از طریق کارگزار MQTT اطلاعات را مبادله می کنند. هر مشتری یا دستگاهی برای دریافت پیام ، باید برای یک فید از پیش تعیین شده مشترک شود و باید از روش انتشار برای ارسال پیام به فید استفاده کند. برای پروژه ما به 5 فید نیاز داریم. در زیر توضیحات مربوط به هر یک از فیدها همانطور که در کد می بینید و نحوه عملکرد آنها آمده است.
وضعیت شبکه: در دسترس بودن منبع تغذیه از شبکه در feed /feeds/grid منتشر می شود. Adafruit_MQTT_Publish grid_stat = Adafruit_MQTT_Publish (& mqtt، AIO_USERNAME "/feeds/grid") ؛
0 نشان می دهد منبع تغذیه در دسترس نیست و 1 منبع تغذیه در دسترس است.
وضعیت موتور: دستگاه وضعیت موتور را در تغذیه…/feeds/grid منتشر می کند.
Adafruit_MQTT_Publish motor_status = Adafruit_MQTT_Publish (& mqtt، AIO_USERNAME "/feeds/motor")
مقدار 0 برای OFF و 1 برای ON
دکمه روشن موتور: این فید برای دریافت درخواست راه اندازی موتور استفاده می شود. دستگاه برای دریافت درخواست شروع موتور با مقدار = 1 مشترک می شود و از همان فید برای انتشار پیام تأیید 0 استفاده می کند. به این ترتیب می توانیم تأیید کنیم که پیام درخواست شروع در واقع توسط دستگاه دریافت شده است.
Adafruit_MQTT_Subscribe motoronbutton = Adafruit_MQTT_Subscribe (& mqtt، AIO_USERNAME "/feeds/motor_on")؛
دکمه خاموش موتور:
مشابه درخواست شروع ، این فید برای دریافت درخواست توقف موتور استفاده می شود. دستگاه برای دریافت خبر توقف درخواست با مقدار = 1 مشترک می شود و از همان فید برای انتشار پیام تأیید 0 استفاده می کند.
Adafruit_MQTT_Subscribe motoroffbutton = Adafruit_MQTT_Subscribe (& mqtt، AIO_USERNAME "/feeds/motor_off")؛
ارتباط:
این یک خوراک ویژه است که گزینه "آخرین اراده" را فعال کرده است. وقتی دستگاه در هر بازه ثابت خوب کار می کند ، اتصال = 1 را منتشر می کند تا به کاربر بگوید همه چیز خوب است. در صورت خرابی سیستم یا قطع اتصال ، دستگاه نمی تواند با کارگزار ارتباط برقرار کند. در چنین مواردی کارگزار MQTT خود به عنوان اتصال = 0 در فید منتشر می کند تا به کاربر اطلاع دهد مشکلی روی داده است و دستگاه از طریق اینترنت قابل دسترسی نیست. ما باید به صورت فیزیکی برویم و دستگاه را بررسی کنیم. کد بسیار ساده است. برای اطلاعات بیشتر در مورد نحوه عملکرد "آخرین اراده" به اسناد MQTT مراجعه کنید.
اگر (itr <= 0)
{
mqtt.publish (AIO_USERNAME "/feeds/connection" ، "1" ، 1) ؛
itr = CON_LIVE_ITR؛
}
بقیه کد ها خود توضیحی هستند و نیازی به اصلاح ندارند. در صورت نیاز به اطلاعات بیشتر کامنت بگذارید.
مرحله 5: MQTT Dash APP را بر روی تلفن همراه خود نصب و پیکربندی کنید
- MQTT Dash را در تلفن اندرویدی خود نصب کرده و برنامه را باز کنید
- برای افزودن دستگاه روی نماد + در گوشه سمت راست بالا کلیک کنید.
- همانطور که در اولین تصویر بالا نشان داده شده است ، نام دستگاه خود را بنویسید "MyFarm-IPSet". قسمت آدرس io.adafruit.com و پورت 1883 ، نام کاربری باید نام کاربری adafruit و رمز عبور شما کلید فعال شما از adafruit باشد. بقیه فیلدها را همانطور که هست بگذارید. در آخر روی ذخیره کلیک کنید.
- دستگاه خود را ایجاد کردید حالا روی آن کلیک کنید تا داشبورد به آن اضافه شود.
- روی + کلیک کنید و نوع را به عنوان کلید/کلید انتخاب کنید. همانطور که در بالا نشان داده شده است sys را در قسمت نام وارد کنید. و نام فید را در قسمت موضوع وارد کنید. هر فید باید با نام کاربری/feeds/شروع شود. برای این ما /تغذیه /اتصال. مطمئن شوید Enable Publish غیرفعال است. با کلیک بر روی نماد برای نمایش می توانید نوع نمادی را که می خواهید در داشبورد به نظر برسد انتخاب کنید. برای مقدار 1 یکی از رنگها (مثلاً سبز) و برای مقدار 0 رنگ را به عنوان خاکستری یا قرمز انتخاب کنید. در نهایت روی ذخیره در گوشه بالا سمت راست کلیک کنید. به طور مشابه دو آیکون دیگر برای Grid با نام کاربری/feeds/grid به عنوان موضوع و Motor با نام کاربری/feeds/motor ایجاد کنید. مطمئن شوید Enable Publish غیرفعال است.
- در نهایت دکمه Motor ON را ایجاد کنید. دوباره همانند کلید/دکمه است. موضوع باید /feeds /motor_on باشد و مطمئن شوید Enable Publish این بار فعال است و QOS = 1. به همین ترتیب دکمه دیگری را برای Motor OFF ایجاد کنید. موضوع باید /feeeds /motor_off باشد.
مرحله 6: آخرین مرحله:-) آزمایش و تنظیم مجدد
- برای ایمن بودن ، ابتدا دستگاه را قبل از اتصال رله ها به استارت استارت و STOP آزمایش کنید. Hotspot را در تلفن همراه با اینترنت فعال فعال کنید. لپ تاپ دارای محیط توسعه را مستقیماً به درگاه USB NodeMCU با شارژر دیگری که به TP4056 متصل شده است ، وصل کنید. اگر دستگاه با موفقیت به اینترنت متصل شد ، باید 1 دستگاه متصل به هات اسپات را در تلفن هوشمند مشاهده کنید.
- در تلفن هوشمند دیگری که MQTT Dash را نصب کرده اید داشبورد برنامه را باز کنید. شما باید ببینید که نماد NET به رنگ سبز و نماد Grid نیز به رنگ سبز با مقادیر آنها 1 است. نماد موتور باید به عنوان موتور خاموش با مقدار 0 نشان داده شود.
- وقتی روی دکمه روشن موتور کلیک می کنید ، رله استارت باید با فاصله دو ثانیه دو کلیک را ایجاد کند. به طور مشابه دکمه خاموش موتور نیز.
- برای ایمنی اکنون منبع اصلی را به استارت DOL خاموش کرده و رله ها را به استارت DOL وصل کنید ، همانطور که در مرحله 2 نشان داده شده است. مطمئن شوید موتور خاموش است. دکمه تنظیم مجدد را در NodeMCU فشار دهید. از خروجی مانیتور سریال ، می توانید دستورات اشکال زدایی را مشاهده کنید که مقادیر را از حسگر WC1700 ، دلتا و جریان محاسبه شده در سیم پیچ چاپ می کند. با موتور در حالت خاموش و " #تعریف WCS1700_CONST 15" maxCur باید به طور مداوم کمتر از 2 باشد. اگر بیشتر از 2 نشان داد ، با مقادیر بالاتر WCS1700_CONST امتحان کنید. هر بار باید کد را مجدداً کامپایل کرده و سیستم عامل را بارگذاری کنید.
- حالا موتور را روشن کرده و دوباره به دنبال قرائت های فعلی باشید. موتور را حدود 10 تا 15 دقیقه روشن بگذارید و میزان جریان ثابت را یادداشت کنید. جریان ممکن است بین 10 تا 20 آمپر متغیر باشد و نیازی به دقت ندارد.
- به کد بازگردید و " #تعریف MIN_CURRENT X. جایی که X 40 درصد حداکثر جریان تقریبی به مقدار عددی است را تنظیم کنید. در مورد من من MIN_CURRENT را روی 5 تنظیم کرده ام. سیستم عامل را مجدداً در NodeMCU کامپایل و بارگذاری کنید.
- کابل USB را از NodeMCU بردارید. دستگاه را با شارژر USB متصل به TP4056 خاموش و Swtich ON کنید. با کلیک بر روی دکمه موتور روشن در برنامه تلفن همراه ، موتور باید روشن شود. هنگامی که موتور در وضعیت قرار گرفت ، موتور باید روی داشبورد برنامه به عنوان ON منعکس شود. با کلیک بر روی دکمه توقف موتور باید متوقف شود.
لذت بردن !!!!
توصیه شده:
راه اندازی آسان کنترل از راه دور IR با استفاده از LIRC برای Raspberry PI (RPi) - جولای 2019 [قسمت 1]: 7 مرحله
راه اندازی آسان کنترل از راه دور IR با استفاده از LIRC برای Raspberry PI (RPi) - ژوئیه 2019 [قسمت 1]: پس از جستجوی زیاد ، من از اطلاعات متناقض در مورد نحوه تنظیم کنترل از راه دور IR برای پروژه RPi خود شگفت زده و مأیوس شدم. فکر می کردم کار آسانی باشد اما راه اندازی کنترل مادون قرمز لینوکس (LIRC) برای مدت طولانی مشکل ساز بوده است
کنترل کننده بازی مبتنی بر آردوینو - کنترل کننده بازی Arduino PS2 - بازی Tekken With DIY Arduino Gamepad: 7 مرحله
کنترل کننده بازی مبتنی بر آردوینو | کنترل کننده بازی Arduino PS2 | بازی Tekken With DIY Arduino Gamepad: سلام بچه ها ، بازی کردن همیشه سرگرم کننده است اما بازی با کنترلر بازی سفارشی DIY خود سرگرم کننده تر است. بنابراین ما در این دستورالعمل یک کنترلر بازی با استفاده از arduino pro micro ایجاد می کنیم
راه اندازی آسان کنترل از راه دور IR با استفاده از LIRC برای Raspberry PI (RPi) - جولای 2019 [قسمت 2]: 3 مرحله
راه اندازی آسان کنترل از راه دور IR با استفاده از LIRC برای Raspberry PI (RPi) - جولای 2019 [قسمت 2]: در قسمت 1 نحوه مونتاژ RPi + VS1838b و پیکربندی ماژول LIRC Raspbian برای دریافت دستورات IR از راه دور IR را نشان دادم. همه مسائل سخت افزاری و راه اندازی LIRC در بخش 1 مورد بحث قرار گرفته است. قسمت 2 نحوه اتصال هاردوا را نشان می دهد
ESP8266 RGB LED STRIP WIFI کنترل - NODEMCU به عنوان یک کنترل از راه دور IR برای نوار LED کنترل شده بر روی Wifi - کنترل تلفن هوشمند RGB LED STRIP: 4 مرحله
ESP8266 RGB LED STRIP WIFI کنترل | NODEMCU به عنوان یک کنترل از راه دور IR برای نوار LED کنترل شده بر روی Wifi | RGB LED STRIP Smartphone Control: سلام بچه ها در این آموزش می آموزیم که چگونه از nodemcu یا esp8266 به عنوان ریموت IR برای کنترل نوار LED RGB استفاده کنید و Nodemcu توسط تلفن هوشمند از طریق وای فای کنترل می شود. بنابراین اساساً می توانید RGB LED STRIP را با تلفن هوشمند خود کنترل کنید
راه اندازی دوربین کنترل از راه دور ، سیمی: 4 مرحله
راه اندازی کنترل از راه دور ، سیمی: این یک دستورالعمل کوتاه در مورد نحوه ساخت کنترل از راه دور برای دوربینی است که قبلاً آن را ندارد. این شامل یک شیر برقی ، یک صفحه روشن ، یک زگیل دیواری ، مقداری سیم و سخت افزار است. ساخت آن آسان ، استفاده از آن سرگرم کننده است