MQTT آردوینو اینترنت اشیا IOT برد ویموس Wemos پروژه های آردوینو

ارتباط آردوینو با نرم افزار اینترنت اشیاء Node Red با پروتکل MQTT

Arduino-MQTT-Protocol---Digispark
نوشته شده توسط اروند طباطبایی

پروتکل MQTT روش تبادل پیام مناسب برای بستر اینترنت اشیاء IOT است. پروتکل MQTT بسیار سبک و کم حجم است، همین دو ویژگی به همراه امنیت قابل توجه این پروتکل، باعث شده انتخاب مناسبی برای پروژه‌های اینترنت اشیاء IOT باشد. این پروتکل دارای دو نوع ارتباط رمزنگاری شده که همان پورت ۸۸۸۳ و ارتباط رمزنگاری نشده یا همان پورت ۱۸۸۳ می‌باشد. پروتکل MQTT روی یک سرور نصب می‌شود و سپس از طریق MCU یا همان Main Control Unit نوعی ارتباط ماشین به ماشین برقرار می‌کند. این ارتباط دو طرفه است، از MCU به سرور و از سرور به MCU صورت می‌گیرد. در این آموزش با استفاده از یک برد برپایه تراشه ESP8266 ارتباط با پروتکل MQTT به سمت سرور برقرار شده، سپس از سمت سرور با پروتکل MQTT دیتا به سمت برد رزبری پای Raspberry Pi در نرم افزار اینترنت اشیاء نود رد Node Red ارسال می‌شود. این ارتباط بین رزبری پای و برد ESP8266 به صورت دو طرفه با سرور برقرار می‌شود. در ادامه این آموزش با مرجع تخصصی اینترنت اشیاء IOT به زبان فارسی دیجی اسپارک همراه باشید.

 

راه اندازی MQTT در نرم افزار Node Red

چنانچه با نرم افزار اینترنت اشیاء نود رد Node Red آشنایی ندارید، حتما پست آموزش کار با نرم افزار اینترنت اشیاء Node Red که توسط همکارم نوشته شده است، را مطالعه کنید. در پست مربوطه شیوه راه اندازی نود رد Node Red کاملا آموزش داده شده است. سپس باید از نودهای MQTT که به صورت پیش فرض در این نرم افزار نصب هستند، استفاده کنید. همانند تصویر زیر، نود mqtt گیرنده را وارد صفحه کنید و با دوبار کلیک روی آن، تنظیمات مربوطه باز می‌شود.

ارتباط آردوینو با نرم افزار اینترنت اشیاء Node Red با پروتکل MQTT-دانشجوکیت

پس از انجام تنظیمات مربوطه، تایید کنید. سپس نود Debug را وارد صفحه کنید. از خروجی نود MQTT به آن اتصال دهید. پس از انجام این مراحل Deploy کنید. حال باید کدهای آردوینو Arduino را که برای برد کنترل اینترنت اشیاء Wemos D1 mini نوشته شده است، را کامپایل و آپلود کنید.

 

کدهای برنامه:

 

مهمان گرامی، جهت دسترسی به کدهای این پروژه، اسپارکر پلاس شوید.

 

پس از اینکه کدها در آردوینو آپلود شد، سریال مانیتور آردوینو Arduino IDE را باز کنید. همانند تصویر زیر به صورت اتوماتیک شروع به ارسال پیام Publish message: Check Digispark.ir می‌کند. سپس پس از دریافت پیام توسط برنامه نود رد، خط Message arrived [digispark] Check Digispark.ir را نمایش می‌دهد. این برنامه به صورت منظم شروع به ارسال این پیام و در ازای دریافت پیام دوم را نمایش‎‌ می‌دهد. این پیام را در قسمت دیباگ نرم افزار نود رد Node Red می‌توانید مشاهده کنید.

ارتباط آردوینو با نرم افزار اینترنت اشیاء Node Red با پروتکل MQTT -دانشجوکیت

 

مدیریت برد Wemos ESP با پروتکل MQTT

کافیست در نرم افزار نود رد Node Red از نود MQTT فرستنده به همراه کلید UI استفاده کنید. به این صورت ابتدا نود UI Switch را وارد صفحه کنید. سپس نود MQTT فرستنده را وارد صفحه کنید. به هم اتصال دهید. تنظیمات نود MQTT همانند مرحله قبلی انجام گیرد. به تصویر زیر توجه کنید.

ارتباط آردوینو با نرم افزار اینترنت اشیاء Node Red با پروتکل MQTT-دانشجوکیت

در این مرحله نرم افزار نودرد Node Red شما در هرجایی که باشد، روی سرور، لپ تاپ و یا برد رزبری پای Raspberry Pi با دسترسی به آی پی آن، می‌توانید به برد Wemos D1 Mini با تراشه ESP8266 فرمان دهید. در تصویر زیر رابط گرافیکی خروجی نرم افزار نود رد که در بالا انجام دادیم را می‌توانید ببینید.

 

MQTT-with-esp8266-Wemos-d1-Mini UI Node red-digispark

با تحریک کلید در رابط UI می‌توانید شیلد رله روی برد Wemos D1 Mini را تحریک کنید. از راه دور با پروتکل MQTT به رله فرمان دهید. جهت درک بهتر موضوع حتما ویدیو یک دقیقه‌ای زیر را ببینید.

 

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

 

در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.

درباره نویسنده

اروند طباطبایی

بنیانگذار دیجی اسپارک: اولین مرجع تخصصی امبدد سیستم به زبان فارسی / کارشناس سئو و تولید محتوا

هرچه می آموزم میبینم که خیلی کم آموختم. در حال حاضر مدیریت تولید مقطع کارشناسی ارشد هستم. علاقه به رباتیک و تکنولوژی دارم. امیدوارم بتونم دانشی را که آموخته‌ام، به روش‌های مختلفی به کاربران علاقمند منتقل کنم.

تبادل نظر و رفع عیب با ثبت دیدگاه

۵۸ دیدگاه

  • سلام
    بابت آموزش ها و وقتی که میزارید واقعا ممنونم. ببخشید سوالی دارم، اینکه شما از چه سروری برای mqtt استفاده کردید؟

    • با سلام و تشکر از توجه شما
      در این آموزش از سرور رایگان ایکلیپس استفاده شده است. که هم در کدهای آردوینو و هم در تنظیمات نرم افزار Node Red آدرس سرور وارد شده است.

  • سلام
    میبخشید من این فیلم را دیدم، اون قسمت که نوشتید نصب کتابخانه در آردوینو، اون چطوریه؟ من تابحال اینجوری نصب نکرده بودم. ممنون میشم توضیح بدید.

    • با سلام
      ضمن تشکر از توجه شما، بله میتوانید این کار را انجام دهید. کافیست در تمامی بردها اطلاعات سرور و تاپیک را قرار دهید. تا به تبادل اطلاعات از این طریق بپردازند.

  • آموزش منحصر به فردی بود، امیدوارم دیگر کاربران هم متوجه بشوند. بنده که خیلی لذت بردم، شماها بینظیرید
    درباره Node-Red چطور میشه بیشتر یاد بگیرم؟

  • سلام
    جناب مهندس امکان استفاده از ssr بجای رله توی پروژه های اینترنت اشیا هست یا خیر؟
    بطور کلی میشه ssr رو جایگزین رله کرد؟

  • در مورد اصل کلی پروژه اینترنت اشیا تو این فاز یه سوال مطرحه
    ما میگیم پروژه کنترل وسایل از طریق اینترنت اما در واقع این فضایی که داریم ، میایم با وای فای (ssid , password) محلی تنطیمش می کنیم . اینطوری اگه تو خونه یا محلی که اون وای فای لوکال هست نباشیم عملا نمی تونیم کنترل کنیم. به جای اون باید از ip اختصاصی استفاده کنیم ؟ راه حلش چیه ؟ کتابخونه دیگه ای هست ؟

      • سلام
        ممنون
        با ربات تلگرام درست شد ولی برای پروژه ام حتما به node red نیاز دارم.
        من با mqtt همین پروژه رو اجرا کردم در وای فای محلی جواب میده ولی اصلا آدرس
        http : my|-ip:1880
        رو در مرورگر ها وقتی در وای فای محلی نیستم نمیاره. اما در وای فای محلی خیلی خوب با گوشی فرمان رو اجرا میکنه. تنظیمات خاصی باید برای mqtt انجام بشه ؟

        • با سلام مجدد
          در این مورد یک نکته را دقت داشته باشید که پروتکل MQTT یک روش رمزنگاری و ارسال دیتا است و ربطی به آی پی لوکال و رابط گرافیکی ندارد. شما در مورد رابط گرافیکی با نودرد Node Red در محیط لوکال میتوانید ارتباط برقرار کنید ولی برای برقراری ارتباط Over IP نیاز به آی پی استاتیک و یا DNS دارید. که آموزش این‌ها در حال تولید است و به زودی در سایت منتشر میشود. ولی روش بهینه تر برای استفاده از رابط گرافیکی بدون نیاز به آی پی استاتیک استفاده از ربات تلگرام است.

  • سلام من دنبال یه موضوع کامل و جامع در ارتباط با خانه هوشمند برای پروژه کارشناسیم میگردم که بتونم یا یه برد بسازم یا با برد های آماده پیاده سازیش کنم میشه کمکم کنید ممنونم

  • سلام خسته نباشید ایا میشه خودمون یک سرور برای mqttبسازیم که برای انتقال داده نیازی به روشن بودن اینترنت نداشته باشد

    • با سلام
      ضمن تشکر از توجه شما، بله این امکان وجود دارد، پروتکل mqtt اپن سورس است و میتوانید روی یک سرور لوکال هم نصب کنید. البته بنده در این زمینه به صورت عملی کار نکرده‌ام.

  • ببخشید من چون زیاد با برنامه نویسی اردوینو کار نکردم میخواستم که اگه ممکنه برنامه ای را قرار بدین که بشه نصف پین های دیجیتال wemos d1 miniرا به عنوان ورودی دیجیتال و نصف دیگرش را به عنوان خروجی دیجیتال بنویسید.
    اگه یادتون باشه تویه گروه تلگرامیتون هم مطرح کردم که قرار شد از اینجا درخواست بدم.

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

    • با سلام
      برای این منظور در کدها، پین‌های دیگر را تعریف کنید و سپس برای آن‌ها ارزش تعریف کنید.

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

  • سلام خسته نباشید ایا میشه ۲ تا خروجی برای wemos d1 mini تعریف کرد و همچنین ۲ تا ورودی که بتونن هر کدوم از ورودی ها یکی از اون خروجی ها رو فعال بکنن؟

    • با سلام
      ضمن تشکر از توجه شما، اگر سوال شما در مورد محدودیت برای سخت افزار است، بله بدون هیچ محدودیتی می‌توانید این کار را انجام دهید. ولی اگر سوال شما در مورد اینکه چطور اینکار باید انجام شود، باید دانش برنامه نویسی در این مورد داشته باشید. همچنین از طریق پروتکل MQTT با نرم افزار نود رد بنده این مورد را تست نکرده‌ام ولی دور از دسترس نیست.

  • سلام ،ممنون از آموزش عالیتون.من میخواستم بدونم که میتونم چندین آردوینو که مجهز به ماژول های hmtr هستند را به رسیپبری که مجهز به یک ماژول hmtr هست با این پروتکل ارتباط بدم؟؟

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

  • من وقتی UI به برنامه میدم برنامه دچار مشکل میشه (نود رد)
    باید چیکار کنم؟
    و کد if (client.connect(“ESP8266Client”)) دقیقا چیکار میکنه چون وقتی تغییرش میدیم اوضاع تغییر میکنه

    • با سلام
      ضمن تشکر از توجه شما، لطفا دقیق‌تر مشکلتان را بیان کنید. نکته دیگر اینکه خط مربوطه برای اطمینان از اتصال برد می‌باشد که در خط ۱۱ این موضوع را تعریف کرده‌ایم.

  • با سلام
    من دقیقا همین کد هارا روی nodemcu اپلود کردم متاسفانه رله روشن میشه اما خاموش نمیشه در قسمت دیباگ دستور ۰ نمایش داده میشه اما خود رله تغییری نمیکنه
    با تشکر

  • با سلام
    من از طریق سریال تونستم ارتباط بین آردوینو و node-red را برقرار کنم ولی از طریق MQTT نتوانستم. در node-Red , نود MQTT در حالت connecting باقی می ماندو در آردوینو هم دستور(Serial.print(client.state());) مقدار -۲ را نمایش می دهدو اتصال برقرار نمی شود. بنظرم تنظیمات MQTT را درست انجام نداده ام فقط IP و پورت سرور را در node-red همان Ip و پورت کامپیوتری که node-red برروی آن نصب است را داده ام . ممنون می شوم اگر راهنمایی بفرمائید

  • سلام
    ضمن تشکر از آموزشهای بسیار خوبتون ، سوالی داشتم اینکه آیا با راه اندازی اینترنت اشیاء بازهم نیاز به اینترنت IDSL برای اتصال و آنلاین شدن هست یا با اینترنت اشیاء دیگه نیازی به آن نیست ؟ و یه سوال دیگه اینکه اینترنت اشیاء مختص استخراج ارزهای دیجیتاله یا برای خیر؟

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

  • با سلام من اشتراک اسپارک پلاس خریدم منتظر دریافت ایمیل تاییدیه هستم لطفا مجدد برام ایمیل تایید ارسال کنید چون نمیتونم از منابع سایت استفاده کنم
    با تشکر

  • با سلام
    من تو در یافت دیتا مشکل دارم و دستگاه عمل نمیکنه
    تو یه سایتی خوندم که باید بروکر mqtt به اسم mosquitto رو هم نصب کنیم .آیا درسته؟
    در ضمن من از لپ تاپ بجای رزپبری پای استفاده میکنم

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