// پروتکل MQTT و اینترنت اشیاء (IOT) - الکترونیکا

الکترونیکا پروژه های الکترونیک و مکانیک

طراحی پروژه های صنعتی

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

چاپ و طراحی PCB

شما میتوانید به صورت آنلاین طرح های pcb خود را به صورت تک لایه و چند لایه سفارش دهید.به منظور بهبود کیفیت،تقاضا میشود برای کاهش تقریبی 50 درصدی قیمت و زمان تولید انواع بردهای نمونه (زیر 5000cm مربع) حتی الامکان در قسمت سفارش آنلاین جهت انتخاب رنگ چاپ محافظ ،رنگ سبز و ضخامت برد مدارچاپی،ضخامت 1.6mm را انتخاب نمایید.

بسته های روباتیک

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

استفاده از پروتکل MQTT برای اینترنت اشیاء (LOT)

اینترنت چیزها:

اینترنت چیزها یا چیزنت (به انگلیسی: Internet of Things) (مخفف انگلیسی: IoT) که گاهی در زبان انگلیسی اینترنت اشیا هم برای این کلمه استفاده می‌شود، به طور کلی اشاره دارد به بسیاری از چیزها شامل اشیا و وسایل محیط پیرامون‌مان که به شبکه اینترنت متصل شده و بتوان توسط اپلیکیشن‌های موجود در تلفن‌های هوشمند و تبلت کنترل و مدیریت شوند. اینترنت چیزها به زبان ساده، ارتباط سنسورها و دستگاه‌ها با شبکه‌ای است که از طریق آن می‌توانند با یکدیگر و با کاربرانشان تعامل کنند. این مفهوم می‌تواند به‌سادگی ارتباط یک گوشی هوشمند با تلویزیون باشد و یا به پیچیدگی نظارت بر زیرساخت‌های شهری و ترافیک. از ماشین لباسشویی و یخچال گرفته تا پوشاکمان؛ این شبکه بسیاری از دستگاه‌های اطراف ما را در برمی‌گیرد.

پروتکل MQTT:

معماری ساختار MQTT شامل یک سرور مرکزی یا واسطه است که به شکل توپولوژی ستاره‌ای با یک یا چند دستگاه ارتباط برقرار می‌کند. پایه ارتباطات بر اساس پیام‌ها و تاپیک‌هایی است که به یک گره (دستگاه) ارسال می‌شود. دراین‌بین دیگر گره‌ها (دستگاه‌ها) نیز می‌توانند با اشتراک‌گذاری آن پیام را دریافت کنند. سرور مرکزی مسئول مدیریت شبکه و انتقال پیام‌ها است. ارتباطات می‌تواند یک به یک یا گروهی باشد. هدف از این پروژه ساخت یک آداپتور IOT است که به همه‌ی دستگاه‌های عمومی بدون احتیاج به wifi اجازه می‌دهد تا به‌عنوان یک گره IOT شناخته شوند. تنها شرط موردنیاز دارا بودن یک پورت سریال است.

جهت پیاده‌سازی یک سیستم با حداقل جزئیات، ما باید در مورد چگونگی کار یک سرور مرکزی (کارگزار) نیز بدانیم. گره‌ها بر پایه‌ی یک ماژول ESP-12E و سرور مرکزی بر روی یک ماژول رزبری پای اجرا می‌شود. در تصویر شماره یک، می‌توانید بلوک مربوط به دیاگرام سیستم را مشاهده کنید. یک دفتر کار را تصور کنید؛ شما به چندین دستگاه با یک واحد مرکزی نیاز دارید. دستگاه‌هایی مانند ترموستات، آلارم یا دستگاه‌های مختلفی که باهم مرتبط‌اند ( مانند یک لامپ با سوئیچ قطع و وصل). ما به یک پروتکل ارتباطی نیاز داریم که بین همه‌ی این دستگاه‌ها مشترک باشد.

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

  • متن‌باز بودن
  • سازگاری با تمام دستگاه‌ها (اندروید، لینوکس)
  • پیاده‌سازی ساده‌ی سیستم

این پروتکل مبتنی بر مبانی زیر است:

  • هر دستگاهی می‌تواند داده‌ها را فراخوانی و منتشر کند.
  • هر دستگاهی می‌تواند یک تاپیک را برای دیگر دستگاه‌ها منتشر کند.
  • داده‌های منتشر‌شده توسط یک سرور مرکزی که کارگزار نامیده می‌شود مدیریت می‌شوند. در‌واقع کارگزار مسئول توزیع و دریافت داده‌هاست.
  • داده‌ها و سلسله‌ مراتب آن توسط علامت “/” از یکدیگر جدا می‌شوند.

به‌عنوان مثال، یک سنسور دما که در یک اتاق جلسه قرار دارد، داده‌های زیر را منتشر می‌کند:

 “Floor3/Room2/Temperature”

به‌این‌ترتیب دستگاه تهویه هوایی که در اتاق نصب شده است با آگاه شدن از وضعیت دمای اتاق، قادر به تنظیم کردن دمای اتاق خواهد بود و دمای اتاق به خوبی مدیریت می‌شود. دیگر دستگاه‌ها نیز می‌توانند این مورد را مشاهده و تأیید کنند یا حتی جهت نظارت بر دمای تمام اتاق‌ها، آن را با تاپیک “+/+/Temperature” به اشتراک بگذارند. در ادامه مثال، دستگاه تهویه هوا نیز تاپیک “Floor3/Room2/AirConditioner” را به اشتراک می‌گذارد. این تاپیک می‌تواند دو مقدار (ON/OFF) را بگیرد. اگر این تاپیک به‌صورت “Floor3/Room2/AirConditioner = ON”منتشر شود، دستگاه روشن می‌شود. هم دفتر تعمیر و نگهداری و هم اتاق کنترل از راه دور قادر هستند تا این تاپیک را منتشر کنند که البته جای نگرانی نیست و MQTT می‌تواند این موارد را نیز مدیریت کند.

کارگزار:

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

در بین تمامی کارگزارهای در دسترس، ما کارگزار Mosquitto را به دلایل زیر انتخاب کردیم:

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

اولین مرحله کار نصب Mosquitto بر روی رزبری پای است.

کنسول برنامه‌نویسی خود را باز کنید و عبارت زیر را در آن تایپ کنید:

$ sudo apt-get install mosquitto mosquitto-clients python-mosquitto

در حال حاضر Mosquitto نصب شده و در حال اجرا است. همچنین پس از خاموش شدن و راه‌اندازی مجدد سیستم، به‌صورت خودکار اجرا می‌شود. به منظور بررسی عملکرد مناسب آن، یک جفت برنامه کاربردی را نصب و آماده اجرا می‌کنیم: یک منتشر کننده و یک مشترک. ما این تاپیک را با موضوع “test” با تایپ سطر زیر پیاده‌سازی می‌کنیم:

$ mosquitto_sub -d -t test

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

$ mosquitto_pub -d -t test -m Hello

در پنجره اول می‌توانیم ببینیم که پیغامی مبنی بر اینکه “مشترک، تاپیک فوق را دریافت کرده است” نمایش داده می‌شود:

Client mosqsub/22163-raspberry received PUBLISH (d0, q0, r0, m0, 'test', ... (5 bytes)) Hello

استفاده از پروتکل MQTT برای اینترنت چیزها (IOT):

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

به‌عنوان هسته اصلی آداپتور IOT، به دلایلی که در پایین ذکر‌شده، ما یک دستگاه  ESP-12E را بر پایه یک تراشه ESP8266 انتخاب کردیم:

  • اندازه‌ی کوچک
  • هزینه بسیار پایین
  • امکانات وای فای
  • رابط سریال
  • وابسته بودن به یک خانواده بزرگ (که درنتیجه دستگاه به‌راحتی قابل تعویض است.)
  • برنامه‌نویسی ساده به کمک Arduino IDE

سخت‌افزار:

اشکال مهم ESP-12E این است که اتصالات آن از نوع 2.54 نیست. که مانع از اتصال به یک PCB با یک اتصال استاندارد می‌شود. راه‌حل اجراشده در تصویر دو قابل‌مشاهده است. ما یک سیم به هرکدام از پین‌ها لحیم کردیم که خم شدن آن‌ها باعث می‌شود تا با یک هدر 2.54 مواجه شوند. (حداکثر دقت باید اعمال شود. زیرا تلاش برای استفاده از حداقل لحیم‌کاری ممکن است موجب به وجود آمدن اتصالات کوتاه شود که غیرقابل‌بازگشت است.)

ESP-03 می‌تواند به‌صورت متصل یا غیر متصل برنامه‌ریزی شود. البته افزایش حجم، در صورت اتصال حداقل مقدار، ممکن است. همچنین جایگاه عمودی ESP-12E کمک می‌کند تا سطح مورداستفاده PCB کاهش یابد.

پین‌ها باید به مقدار حداقل ممکن برای اپلیکیشن‌ها مورداستفاده قرار گیرند. در تصویر سه، پین‌های خروجی اصلی ESP-12E و آرایش نهایی آداپتور LOT را می‌توانید ببینید. ایضاً می‌بینید که 12 پین هدر مورداستفاده قرار گرفته است.

برای برنامه‌ریزی آداپتور ما به یک فلش USB به‌عنوان مبدل سریال نیاز داریم. با در نظر گرفتن اینکه ESP-12E از جریان برق 3.3V استفاده می‌کند. (و نه 5V) سیگنال‌های Rx و Tx باید با ولتاژ فوق سازگار شود. به این منظور ما از یک کابل FTDI 5V استفاده کردیم و ولتاژ موردنظرمان را تغییر دادیم.

میزان ولتاژ Rx وقتی‌که از کابل FTDI استفاده می‌کنیم باید کاهش یابد. به همین دلیل ما از دو مقاومت تقسیم‌کننده ولتاژ استفاده کردیم. از سوی دیگر سیگنال Tx با استفاده از کابل FTDI باید از 3.3 به 5 ولت افزایش یابد. در تئوری، به این کار نیازی نیست. زیرا 3.3 ولت از 2.5 ولت بالاتر است. ارزش کابل FTDI “1” در نظر گرفته می‌شود. شماتیک دیاگرام فوق را ببینید. بورد فوق به‌راحتی بر روی یک پوسته نصب می‌شود.

نرم‌افزار:

(مواردی که در ادامه ذکر می‌شود تنها برای ESP-01 معتبر است.)

دستگاه‌های ESP-xx  که در این پروژه از آن‌ها نام برده می‌شود، همه از یک کارخانه بوده و به‌وسیله یک پروتکل دستوری مشخص باهم ترکیب شده‌اند.

امکان دوم این است که آن‌ها به یک مترجم زبان LUA مجهز شده‌اند، که البته MQTT را نیز پشتیبانی می‌کنند و پس از چند آزمایش مشاهده شد که به خوبی کار می‌کند.

امکان سوم، استفاده از محیط برنامه‌نویسی آردوینیو (Arduino) به‌طور گسترده است. جهت برنامه‌نویسی بهتر می‌توانید از برنامه ++C به‌عنوان مترجم زبان برنامه‌نویسی استفاده کنید. ما درنهایت این راه را انتخاب کردیم.

فرایندهای زیر را دنبال کنید:

  • نصب نرم افزار Arduino IDE:

از طریق لینک ” https://www.arduino.cc/en/Main/Software” می‌توانید آخرین نسخه نرم‌افزار را یافته و نصب کنید.

  • راه‌اندازی IDE و پیدا کردن کارت سازگار با ESP8266:

نرم افزار Arduino IDE را باز کنید. در قسمت منو این آدرس را دنبال کنید: File–Preferences سپس در باکس Additional Boards Manager URLs  مورد فوق را پیدا کنید:

http://arduino.esp8266.com/versions/2.0.0/package_esp8266com_index.json

نصب کارت سازگار با ESP8266:

در قسمت منو به این آدرس بروید: Tools-Board-Boards Manager، گزینه esp8266 را پیدا کنید و فایل esp8266 by ESP8266 Community را نصب کنید.

در پنجره ای که ظاهر می‌شود به این آدرس بروید: Tools – Board – Generic ESP8266 Module

نصب کتابخانه MQTT:

به این آدرس بروید : Sketch – Include library – Manage Libraries، به دنبال mqtt 8266 بگردید و PubSubClient را نصب کنید.

  • بارگیری و کامپایل کردن طرح ارائه شده mqtt.ino:

جهت توصیف سخت‌افزارها و آپلود طرح، آداپتور IOT را به رایانه متصل کنید برای این کار دکمه‌های  POWER و PROGRAM را بر روی برنامه‌ریز به‌طور همزمان فشار دهید. (توجه داشته باشید که به‌طورمعمول دکمه POWER به‌صورت بسته است.) سپس در ابتدا دکمه POWER و پس‌ازآن دکمه PRGRAM را آزاد کنید. در حال حاضر ESP-01 منتظر دریافت برنامه است. دکمه آپلود را در Arduino IDE فشار دهید. بعد از آن طرح ارسال می‌شود. سپس دکمه POWER  را به‌صورت لحظه‌ای فشار دهید تا برنامه بر روی ESP-03 اجرا شود.

جهت راه‌اندازی نرم‌افزار موارد زیر را دنبال کنید:

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

ارتباطات با دستگاه‌های عمومی از طریق پورت سریال انجام می‌گیرد که بر اساس یک پروتکل مبتنی بر متن ترکیبی است که در زیر می‌بینید. (برای هر دو Rx و Tx) :

:[Command];[Parameter1];[Parameter2]CRLF

که منظور از هرکدام این‌چنین است:

  • Command : دستورها، پیام‌های استاتوس
  • Parameter1
  • Parameter2 : یک یا دو پارامتر داریم. (بسته به قسمت Command)
  • CRFL : کاراکترهای اسکی 13و 10 که در پایان خط نشان داده می‌شوند.

دستورهایی که از دستگاه عمومی به آداپتور LOT ارسال می‌شوند به این صورت هستند:

:publish;topic;payload

 انتشار یک تاپیک با یک مقدار ارزش‌گذاری مشخص

مثال:

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

:publish;Floor3/Room2/Temperature;22.3

:subscribe;topic

مشترک شدن در یک تاپیک.

مثال:

یک سیستم تهویه متبوع، به یک سرویس خاموش-روشن مشترک شده است:

:subscribe;Floor3/Room2/AirConditioner

در نتیجه دستورات برگشتی دریافت خواهد شد که در زیر مشاهده می‌کنید.

دستورات از آداپتور LOT به دستگاه‌های عمومی به شکل زیر ارسال می‌شود:

:callback;topic;payload

یک تاپیک با ارزش مشخص دریافت شده است. البته تنها تاپیک‌هایی که از قبل دستگاه با آن‌ها مشترک شده، قابل دریافت هستند.

مثال :

اگر دستگاه تهویه هوایی که قبلاً ذکر شد باید خاموش شود دستور زیر را دریافت خواهد کرد:

:callback;Floor3/Room2/AirConditioner;OFF

پیام های وضعیت:

آداپتورIOT، اطلاعاتی که در مورد پیشامدهای موجود هستند را به دستگاه‌های عمومی ارسال می‌کند. این پیام‌ها، خارج از پروتکل MQTT هستند اما فرمت یکسانی دارند. پیام‌ها عبارتند از:

  • START شروع برنامه ESP-12E به‌صورت بوت
  • WIFI–ON روشن کردن وای فای و برقرار شدن ارتباط با روتر.
  • MQTT-ON روشن شدن MQTT و برقرار شدن ارتباط با کارگزار.
  • MQTT-ERR  خطا در برقراری ارتباط با کارگزار. پس از گذشت 5 ثانیه مجدد تلاش کنید.
  • Error  فرمان ناشناخته دریافت شده است.
  • Ping60 هر 60 ثانیه ارسال می‌شود، به‌عنوان ناظر.

بازبینی:

به‌منظور بررسی عملکرد صحیح آداپتور IOT، آن را از طریق کانال سریال به کامپیوتر متصل کنید. مانند آنچه بر روی Arduino IDE دیده بودید، یک سریال کنسول بر روی کامپیوترتان آغاز بهکار می‌کند. ماژول آداپتور IOT را بدون فشار دادن دکمه  PROGRAM راه‌اندازی کنید. برنامه شروع به کار خواهد کرد و اگر همه‌چیز به‌درستی کار کند، کنسول پیغام زیر را به نمایش می‌گذارد:

:status;Start :status;WiFi_ON :status;MQTT_ON

جهت بررسی اینکه آیا ماژول دستورات را به درستی دریافت می‌کند یا خیر می‌توانیم از یک دستور نامعتبر استفاده کنیم:

در این صورت ماژول باید پیغام زیر را نمایش دهد:

حال ما می‌توانیم کاربری مشترکمان با رزبری پای را آغاز کنیم:

$ mosquitto_sub -d -t test

اگر ما در کنسول IDE کد دستوری زیر را تایپ کنیم:

:publish;test;Hello

در کنسول رزبری پای باید تأییدیه رسیدن پیغام فوق، نمایش داده شود.

همچنین، اگر ما در کنسول IDE کد دستوری زیر را تایپ کنیم:

:subscribe;mytopic

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

در کنسول IDE باید کد زیر به نمایش گذاشته شود:

ارتقاء:

یکی از امکان‌ها برای بهبود توانایی، اضافه کردن دستورهای جدید جهت نمایان ساختن روتر ، SSID و پسورد و یا آدرس IP  کارگزار است که به‌جای کدهای ثابت می‌توانند مورداستفاده قرار بگیرند.این پروژه جهت کمک به دیگر مدارها و تبدیل آن‌ها به یک عضو از اینترنت اشیاء (LOT) در نظر گرفته شده است. اما ESP-03 این قابلیت را دارد تا اگر پین‌های (L/O) محدود آن برای یک برنامه خاص کافی باشند، خود به‌عنوان یک ماژول مستقل عمل کند. در غیر این صورت ما به یک ماژول مشابه با تعداد پین بیشتر، مانند ESP-12 نیاز خواهیم داشت.

برنامه‌ها:

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

 

نظرات کاربران

مجموع رتبه (0)
  • هیچ نظری یافت نشد

نظر خود را اضافه کنید.

ارسال نظر به عنوان مهمان

0
نظر شما به دست مدیر خواهد رسید
شرایط و قوانین.

در باره ما

ما معتقدیم هیچ کاری بدون همکاری گروهی به نتیجه نمی رسد. از این رو کاربران خود را به مشارکت برای رسیدن به بهترین سایت نرم افزاری دنیای اینترنت دعوت می کنیم.ما می خواهیم کاربران خود را شناسایی کنیم و به آنهایی که پیشرفت سایت برایشان مهم است خدمات بهتری ارائه کنیم.

الکترونیکا چگونه کار می کند؟

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

ایده های خودتون رو به ما بسپارید

 

طراحی پروژه های دانشجویی وصنعتی با بهترین کیفیت