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


Warning: Undefined array key "tie_hide_meta" in /home/cttfir/domains/cttf.ir/public_html/wp-content/themes/sahifa/framework/parts/meta-post.php on line 3

Warning: Trying to access array offset on value of type null in /home/cttfir/domains/cttf.ir/public_html/wp-content/themes/sahifa/framework/parts/meta-post.php on line 3

قطعا تا حالا براتون پیش اومده که دو یا چند برد رو که بر مبنای میکروکنترلرهای طراحی شده اند و یا قراره بشن باهم شبکه کنید!

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

پروتکل چیست؟
تصور کنید مثلا یک چینی و یک فرانسوی، هر یک به زبان خودشان بخواهند با یکدیگر صحبت کنند؛ چه اتفاقی خواهد افتاد؟ قطعا از صحبتهای هم هیچ نخواهند فهمید. در واقع، هر زبان از ۲ بخش لغات و مفاهیم و دستور زبان تشکیل شده است و ما برای درک یکدیگر، باید در هر دو طرف مکالمه مجهز به قوانین یکسانی باشیم در غیر این صورت، امکان برقراری ارتباط نخواهیم یافت.این موضوع دقیقا به همین سادگی درباره شبکه های میکروکنترلری هم برقرار است. میکروکنترلرها برای ارتباط با یکدیگر احتیاج به یک زبان مشترک دارند که این زبان، همان پروتکل است. پروتکل در لغت به معنای آداب و رسوم، تشریفات و نیز توافق است. درحقیقت، پروتکل عبارت است از مجموعه استانداردی از قوانین و توافق ها که تعیین می کنند چگونه میکروکنترلرهای درون یک شبکه با هم ارتباط برقرار کنند. قالب انتقال داده ها، مکانیزم چک کردن خطا که هنگام نقل و انتقال در داده ها پیش می آید، مکانیزم تصحیح خطا، روش فشرده سازی داده ها (اگر وجود داشته باشد)، همه و همه، از سوی قوانین استاندارد پروتکل تعیین می شوند. منبع

بستر ارتباطی
گفتیم پروتکل یعنی یک زبان مشترک بین وسیله هایی که می خوایم با هم در ارتباط باشن. یک سری از این پروتکل ها می تونن تحت بسترهای مختلفی رد و بدل بشن. مثلا پروتکل مدباس که یک ارتباط سریال اسنکرون هست می تونه تحت بستر RS232 و یا RS485 استفاده بشه.
پس به صورت کلی RS232، RS485، RS422 و امثال اینها پروتکل نیستند و صرفا پل ارتباطی برای رد و بدل شدن دیتا رو فراهم میکنن و بسته به محیط مورد استفاده انتخاب خواهند شد.

معرفی چند پروتکل جهت برقراری ارتباط بین میکروکنترلرها

۱- پروتکل SPI: یک پروتکل ارتباطی که با استفاده از ۳ سیم به صورت دو سیم دیتا و یک سیم کلاک ارتباط برقرار می کند. دقت کنید در این پروتکل پینی با عنوان CS یا Chip Select وجود داره که مستر از طریق این پین slave مورد نظر رو انتخاب می کنه. پس ما جدا از سه سیم اصلی برای برقراری ارتباط، یک سیم هم خواهیم داشت(البته بسته به تعداد Slave این سیم بیشتر میشه) که از مستر به Slaveها رفته و با استفاده از اون میکروکنترلر اصلی در هر لحظه Slave رو انتخاب و با اون ارتباط برقرار می کنه.

۲- پروتکل I2C: این پروتکل با استفاده از دو سیم دیتا و کلاک توانایی برقراری ارتباط بین دستگاه ها را دارا می باشد. روش کار در این پروتکل بر اساس فراخوانی ادرس دستگاه های موجود روی باس می باشد. یعنی هر دستگاه باید یک آدرس منحصر به فرد داشته باشه تا مستر بتونه از طریق اون باهاش ارتباط برقرار کنه!

۳- پروتکل مدباس: یک ارتباط سریال که در این پروتکل دقیقا مانند I2C باید هر وسیله دارای ادرس منحصربه فرد باشه و مستر با فراخوانی موارد مورد نیاز از ادرس مشخص، با اون ارتباط برقرار خواهد کرد.

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

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

برای آشنایی شما یه نمونه کد قرار میدم که شرح کارش به این صورته.

من باید دما و رطوبت دو نقطه مختلف رو بر روی یک نمایشگر کاراکتری مانیتور کنم. برای این کار اومدم یه برد مادر طراحی کردم که می تونه همزمان با ۸ برد سنسور ارتباط برقرار کنه. پروتکل ارتباطیشون رو یک ارتباط سریال انتخاب کردم که بر اساس ادرس هر Slave اونارو فراخوانی می کنه و هر دستگاه بر اساس فراخوانی شدن از طریق مستر، اطلاعات دما و رطوبت رو براش ارسال می کنن. پروتکل در بستر RS485 مورد استفاده قرار می گیره.

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

تصویر ساخته شده بردها


سورس کدهای مربوط به مستر و Slave

دانلود شماتیک مربوط به بردها

 

ویدیو طرز کار مدار

7 نظر

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

    • با سلام
      قبل از هر چیز بابت لطفتون ممنونم.
      متاسفانه من از سال 89 به بعد دیگه بسکام کار نکردم و این نمونه برنامه ها هیچ کدوم با بسکام نوشته نشده وگرنه حتما قرار میدادم.
      شما بیاین یک تایمر رو برای ایجاد وقفه 500 میلی ثانیه تنظیم کنید. وظیفه این تایمر فقط اپدیت مقادیر نمایشگر با استفاده از فلگ های تعریف شده هستش. یعنی فقط کافیه چندتا فلگ تعریف کنید و در جای مناسب مقادیر 0 و 1 رو به نسبت نیاز بهش نسبت بدین و در روال وقفه تایمر این فلگ ها رو برای نمایش دیتا چک کنید.

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

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *