آموزش رزبری پای پروژه رزبری پای رزبری پای

کنترل وسایل الکترونیکی از راه دور بدون برنامه نویسی با پروتکل MQTT

نوشته شده توسط پریسا پوربلورچیان

در مبحث اینترنت اشیا IOT ، امنیت و شخصی سازی دیتا و کم حجم بودن اطلاعات ارسالی و دریافتی از اهمیت ویژه‌ای برخوردار است. در این آموزش شما را با پروتکل MQTT آشنا خواهم کرد. MQTT مخفف MQ Telemetry Transport  می‌باشد. به طور کلی MQTT را یک پروتکل پیام رسان به صورت Publish/subscribe بین چند دستگاه مختلف می‌توان نامید. از ویژگی‌های MQTT می‌توان به امنیت بالا، سرعت بالا و حجم کم پهنای باند مصرفی اشاره کرد. کلاینت‌ها در شبکه از طریق یک سرور (دریافت و فیلتر پیام) مشترک اطلاعات را منتشر کرده و سپس به اشتراک می‌گذارند. به عنوان مثال در یک پروژه کامندها (command) برای کنترل به عنوان خروجی ارسال می‌شوند، سپس اطلاعات خوانده شده و انتشار داده می‌شوند. در ادامه با مرجع تخصصی اینترنت اشیا دیجی اسپارک همراه باشید.

 

در این آموزش میخواهیم یک خروجی را از طریق پروتکل MQTT کنترل کنیم. اطلاعات از پنل فرمان با پروتکل MQTT به سرور ارسال شده و سپس از سرور با همان پروتکل MQTT به MCU ارسال می‌شوند. در این آموزش از دو نرم افزار Node-RED استفاده می‌کنیم. Node-RED گیرنده حتما به رزبری پای نیاز دارد ولی Node-RED فرستنده می‌تواند روی یک سرور مجازی یا کامپیوتر شخصی ما نصب باشد. در حالت فرستنده به Node خروجی MQTT و در برد رزبری پای به Node ورودی MQTT نیاز داریم. این خروجی را می‌توانیم به هریک از پین‌های رزبری پای Raspberry Pi که نیاز داریم اتصال دهیم. در این آموزش من یک ال ای دی را به صورت نمادین از یک وسیله برقی مدیریت می‌کنم. کافیست شما بجای ال ای دی از ماژول رله استفاده کنید؛ تا وسایل برقی را مدیریت کنید.

 

راه اندازی MQTT در Node-RED

برای مدیریت ال ای دی من از پین ۱۱ (GPIO17) برای خروجی LED استفاده کرده‌ام. سپس از طریق MQTT دیتا را روی سرور ارسال خواهم کرد. همانطور که گفته شد، نیاز به یک Node-RED فرستنده و گیرنده خواهیم داشت. در ابتدا تنظیمات فرستنده و سپس گیرنده را انجام خواهیم داد.

 

تنطیمات Node-RED فرستنده

با Node inject مقادیر ورودی جهت مدیریت LED را وارد می‌کنیم. دو عدد Node inject را وارد صفحه می‌کنیم. برای ارسال فرمان، به نود Node MQTT out (خروجی) نیاز داریم. همانند تصویر زیر وارد صفحه و اتصالات را برقرار می‌کنیم.

کنترل وسایل الکترونیکی از راه دور بدون برنامه نویسی با پروتکل MQTT دانشجوکیت

تنطیمات نود inject را روی عدد، یکی را ۱ و دیگری را ۰ قرار می‌دهیم. در آموزش کنترل وسایل الکترونیکی از راه دور شیوه ی تنظیمات این نود کامل توضیح داده شده است. حال ۲ نود inject را به نود MQTT out همانند تصویر زیر اتصال دهید. در ادامه تنظیمات هر یک از Node ها را بررسی خواهیم کرد.

 

تنظیمات نود خروجی Node MQTT out

بر روی نود کلیک کنید. سپس آدرس سرور را به eclips تغییر دهید: iot.eclips.org:1883 ، حال در قسمت تاپیک اسم مورد نظر خود را تایپ کرده و تنها دقت داشته باشید که برای معرفی تاپیک باید از اسلش ( / ) بین کلمات استفاده نمایید. من در اینجا اسم تاپیک را parisa/LED انتخاب کردم.

کنترل وسایل الکترونیکی از راه دور بدون برنامه نویسی با پروتکل MQTT دانشجوکیت - دیجی اسپارک

 

تنظیمات Node-RED گیرنده

در Node-RED گیرنده به Node MQTT in (ورودی) نیاز داریم. سپس اطلاعاتی که توسط Node-RED فرستنده انتشار داده شده‌اند را از طریق نود Switch به پین خروجی رزبری پای raspberry pi ارسال می‌کنیم. حال از نود MQTT in به Switch و از آن به rpi gpio out همانند تصویر زیر اتصال می‌دهیم. در ادامه تنظیمات هر یک از Node ها را بررسی خواهیم کرد.

کنترل وسایل الکترونیکی از راه دور بدون برنامه نویسی با پروتکل MQTT

 

تنظیمات نود ورودی Node MQTT in

همانند نود MQTT out ، همان آدرس سرور و نام تاپیک را در این نود وارد می‌کنیم. همانند تصویر زیر:

کنترل وسایل الکترونیکی از راه دور بدون برنامه نویسی با پروتکل MQTT

 

تنظیمات Node Switch

نود Switch را از شاخه function انتخاب کرده و روی نود کلیک می‌کنیم. سپس مشخص می‌کنیم که ال ای دی در چه بازه‌ای روشن و خاموش شود. اگر دیتای ارسالی بزرگتر مساوی ۱ باشد، ال ای دی روشن و اگر کوچکتر مساوی ۱ باشد، ال ای دی خاموش شود. سپس Done را بزنید.

کنترل وسایل الکترونیکی از راه دور بدون برنامه نویسی با پروتکل MQTT

 

تنظیمات Node rpi out

از شاخه Raspberry_pi نود rpi gpio out را انتخاب می‌کنیم. سپس روی نود کلیک کرده و gpio 17 یعنی پین ۱۱ را انتخاب می‌کنیم. سپس Done را بزنید.

کنترل وسایل الکترونیکی از راه دور بدون برنامه نویسی با پروتکل MQTT 5 -دیجی اسپارک

حال توسط Node-RED فرستنده، با کلیک روی هر یک از inject ها ، ال ای دی روشن و خاموش خواهد شد. در واقع دیتا از Node-RED از طریق MQTT به برد رزبری پای Raspberry pi ، سپس از رزبری پای از طریق MQTT به MCU ارسال شده و لامپ روشن می‌شود.

 

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

 

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

 

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

پریسا پوربلورچیان

۱۶ دیدگاه

    • سلام
      برای تنظیمات هر دو نود ورودی و خروجی mqtt ، دقت کنید که سرور و پورت یکسان باشد. همانطور که در آموزش گفتم، سرور به این صورت باشد: iot.eclips.org:1883

  • سلام
    منظورتون از “Node-RED فرستنده” دقیقا چیه؟ یعنی نسخه ای مثلا برای آندروید یا ویندوز هستش برای این کار؟
    من از PlayStore نرم افزار node inject رو پیدا کردم ولی نتونستم بفهمم ارتباطش با این چیه و چطور باید کانکت بشم!!!! ارتباطی به این موضوع داره اصلا؟

    سوال دوم اینکه iot.eclips.org:1883 از کجا اومده و آیا باید اکانتی چیزی تعریف بشه روی eclips.org تا یه پورت و آدرس در اختیار بذاره. اگر میشه یکم بیشتر توضیح بدید ازتون ممنون میشم.

    • سلام
      در واقع در تعریف MQTT ، کلاینت ها دیتا را منتشر کرده و از طریق دو Device به اشتراک میگذارند. به عنوان مثال برای ارسال دیتای یک سنسور دما ، اطلاعات از Node mcu از طریق پروتکل MQTT به سرور eclipse و سپس با همین پروتکل از سرور به رزبری ارسال میشود. همانطور که در متن گفتم دیتا به صورت publish/subscribe اشتراک گذاری میشوند. در اینجا نود رد فرستنده ما در واقع ارسال دیتای ال ای دی ها می باشد ( روشن و خاموش شدن ال ای دی ها )
      برای سوال دوم هم ، IOT eclipse در واقع یک اکوسیستم و تکنولوژی مورد نیاز برای ساخت دیوایس های اینترنت اشیا و دیگر پلتفرم ها را در سیستم های open source فراهم میکند که به صورت پیش فرض در نرم افزار Node-RED تعریف شده است.

  • با سلام و احترام.
    خانم بلورچیان عزیز بنده فکر میکنم اسپل eclipse را در URL اشتباه نوشته اید. اگر اصلاح کنید مشکل دوستمونم حل میشه.

    Port :1883
    URL : iot.eclipse.org
    String : iot.eclipse.org:1883
    ===========================
    M26845

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

  • عرض ادب سرکار خانم مهندس
    ارتباط mqtt امن ترین راه ارتباطى است؟ و اینکه دقیقا چه بلایى سر دیتا میاد وقتى از پروژه ارسال میشه؟
    متشکرم

    • سلام
      بله mqtt پروتکلى سبک و کم حجم و کاملا امن براى ارسال دیتا بین دو سرور مى باشد. براى سوال دوم، لطفا سوال خود را واضح تر بیان نمایید اگر منظورتان در این پروژه تعریف شده است ؛ اطلاعات از پنل فرمان با پروتکل MQTT به سرور ارسال شده و سپس از سرور با همان پروتکل MQTT به MCU ارسال می‌شوند.

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

    • سلام
      از توجه شما ممنونم.
      براى ارتباط mqtt بین دو برد رزبرى پاى ، باید از دو پروتکل MQTT in و MQTT out استفاده کنید و در تنظیمات آن در قسمت تاپیک، فرستنده و گیرنده را تعریف کنید. از mcu هم میتوانید استفاده کنید. و اینکه دقیقا چه پروژه اى میخواهید تعریف کنید؟ کامل تر توضیح دهید.

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

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

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

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