امروز منابع دیجیتال آردوینو را به لطف یک سپر مجهز به گذرگاه I2C گسترش خواهیم داد و اجازه مدیریت برد را از طریق اتصال بلوتوث RN-42 از طریق سیستمهای اندرویدی میدهیم.
تمام بردهای آردوینو دارای تعدادی ورودی/خروجی دیجیتال هستند. برای سادهترین پروژهها، چنین منابعی معمولاً بیش از اندازه کافی هستند، اما در آنهایی که به چندین خط کنترل نیاز دارید، ورودی/خروجی «استاندارد» میتواند کمتر از حد کافی باشد، زیرا برخی از پینها با منابع داخلی به اشتراک گذاشته میشوند در حالی که برخی دیگر به منابع خارجی اختصاص داده شدهاند. سپرها
در این موارد، یک راه حل ممکن تغییر به آردوینوهای قدرتمندتر است (مثلاً مگا که دارای ورودی/خروجی بیشتری نسبت به Duemilanove یا Uno کلاسیک است) یا استفاده از شیلد توسعه ویژه. در این مقاله، ما یک سپر را ارائه میکنیم که به شما امکان میدهد I/Oهایی را اضافه کنید که میتوان آنها را بسیار ساده از طریق یک کانال داده گذرگاه I²C مدیریت کرد. سپر اساساً همان چیزی است که ما آن را " بسط دهنده ورودی/خروجی " می نامیم. مدیریت باس I²C توسط مدار مجتمع MCP23017 تولید شده توسط Microchip ارائه می شود.
گذرگاه از سه سیم ساخته شده است: یکی زمین (مشترک) و دو سیم دیگر SCL (ساعتی که ارتباط را مشخص می کند) و SDA (داده های سریال دو جهته). در پروتکل I²C-Bus، شروع هر جلسه ارتباطی از یک واحد Master می آید (Slaves فقط می توانند به Master پاسخ دهند)، که دستورات 8 بایتی را ارسال می کند که یکی از آنها حاوی آدرس Slave است که به آن هدایت می شود. از آنجایی که آدرس توسط یک بایت ساخته می شود، I²C-Bus از نظر تئوری می تواند از 128 دستگاه پشتیبانی کند، اما شما فقط می توانید از 112 استفاده کنید، زیرا 16 آدرس رزرو شده است. شناسایی واحدهای برده منفرد معمولاً با تنظیم منطق ترکیبی مناسب بر روی خطوطی که هر یک از آنها یکپارچه شده است انجام می شود: این خطوط معمولاً سه هستند که اجازه 8 ترکیب را می دهند.
در مورد ما، توانایی تعریف مقصد دستورات I²C-Bus به ما این امکان را میدهد که چندین برد I²C I/O Expander را با چیدن آنها بر روی دیگری به طور همزمان وصل کنیم. هر برد توسعه دارای 8 خروجی رله و به همان تعداد ورودی دیجیتال است، آدرس I²C تراشه MCP23017 را می توان از هشت مورد ممکن انتخاب کرد، بنابراین می توانید هشت شیلد را نصب کنید، تا مجموعاً 64 خروجی رله و 64 ورودی دیجیتال.
در بالای این سیستم هوشمند تصمیم گرفتیم تا کنترل بلوتوث را اضافه کنیم تا بتوانیم آن را از طریق تلفن هوشمند مدیریت کنیم. برای اینکه بسیار باحال باشیم، سپر بلوتوث RN-42 خود را اضافه کردیم و یک برنامه ویژه برای Android ایجاد کردیم که به شما امکان میدهد وضعیت همه منابع دیجیتال را مشاهده کنید و دستوراتی را برای فعال کردن خروجیها ارسال کنید.
از آنجایی که سیستم کلی ماژولار است (شما می توانید به دلخواه سپرهای Expander را اضافه و حذف کنید ) به برنامه های مختلف کاربر نهایی کمک می کند. هم سفتافزار آردوینو و هم برنامه تطبیق مییابند: سیستمافزار واقعاً میتواند تشخیص دهد که چه تعداد (و کدام) سپرهای Expander وجود دارد در حالی که برنامه چنین اطلاعاتی را از آردوینو دریافت میکند و در نتیجه رابط کاربری گرافیکی خود را تطبیق میدهد.
این برنامه دارای یک صفحه پیکربندی ویژه است که امکان تنظیم برچسب های متنی را برای استفاده برای شرح منابع I / O دارد، بنابراین با پیکربندی سخت افزار خاص شما سازگار می شود. در نهایت، یک صفحه راه اندازی بلوتوث وجود دارد که می توانید نام و پین کد خود را برای مطابقت با سپر RN-42 تنظیم کنید .
نمودار مدار یک محافظ انبساط منفرد در اطراف مولفه U1، یعنی MCP23017 میکروچیپ توسعه یافته است. اطلاعات بیشتر را در پست قبلی بیابید .
خروجیها به U2 ختم میشوند، ULN2803، که بهویژه برای هدایت بارهای القایی مانند سیمپیچهای رله طراحی شده است (در واقع دارای چندین مرحله ترانزیستور با دیودهای حفاظتی اتصال پایه-کلکتور است).
ورودی ها (پورت B) به بخش های مدار مناسبی متصل می شوند که ورودی های دیجیتال را حمل می کنند. هر ورودی دارای یک دیود حفاظتی، یک مقاومت کششی و یک LED است که وضعیت را نشان می دهد. هنگامی که ورودی به طور منطقی پایین است (به زمین)، LED مربوطه روشن می شود، و منبسط کننده I/O نشان می دهد که ورودی "0" است، در حالی که، زمانی که ورودی بالا است، LED خاموش است و منبسط کننده I/O نشان می دهد. که ورودی "1" است.
مدیریت MCP23017 از طریق پروتکل I²C Bus و با خواندن و نوشتن رجیسترهای خاص انجام می شود. خطوط SDA و SCL روی پایه های 13 و 12 موجود هستند که همانطور که در نمودار سیم کشی مشاهده می کنید، به پین های مربوطه برد آردوینو منتقل می شوند. از آنجایی که MCP23017 توانایی ایجاد وقفه را دارد زمانی که حداقل یک پین برنامه ریزی شده به عنوان ورودی تغییر وضعیت می دهد، ما از این تابع برای مدیریت ورودی های آردوینو در حالت وقفه به جای نظرسنجی (در نتیجه سریعتر و بدون بارگذاری گذرگاه I²C) استفاده کردیم. وقفه به شما اجازه می دهد تا یک اتصال را با آردوینو که به عنوان واحد اصلی کار می کند، راه اندازی کنید. واضح است، همانطور که بعدا خواهیم دید، نرم افزار باید به طور ویژه ساخته شود تا از این ویژگی استفاده کند.