در قسمت قبل از آموزش آردوینو دیدیم چگونه میتوان یک دوربین دیجیتال را با استفاده از Arduino و اپتوکوپلر کنترل کرد. در قسمت 59 آموزش آردوینو به سراغ موضوع دیگری از کنترل تجهیزات جانبی میرویم: کنترل دستگاههای AC با آردوینو، بدون اینکه Arduino را مستقیماً به برق شهر متصل کنیم.
در این روش، بهجای دستکاری قسمت AC مدار، با ریموت کنترل، یک کلید یا پریز را بصورت بیسیم کنترل میکنیم و Arduino با استفاده از اپتوکوپلر، به دکمههای روشن و خاموش ریموت فرمان می دهد.
هدف این پروژه این است که بتوانیم وسایلی مانند چراغها یا تجهیزات برقی را که با یک کلید یا پریز ریموتدار کنترل میشوند، توسط Arduino روشن و خاموش کنیم.
یکی از مزیتهای این روش این است که Arduino مستقیماً با ولتاژ AC و برق شهر در تماس نیست. تنها بخشی که تغییر داده میشود، ریموت کنترل باتریخور دستگاه است.
از این روش قرار است برای کنترل ریموت های رادیویی استفاده گردد و نه ریموت های مادون قرمز
برای شبیهسازی فشار دادن دکمههای ریموت از اپتوکوپلر (Optocoupler) استفاده میشود.
سمت ورودی اپتوکوپلر که شامل LED داخلی است به Arduino متصل میشود و سمت ترانزیستوری آن به دو کنتاکت مربوط به دکمه ریموت اتصال پیدا میکند.
وقتی Arduino اپتوکوپلر را فعال میکند، ترانزیستور داخلی آن اتصال بین دو نقطه مدار ریموت را برقرار میکند؛ درست مشابه زمانی که کاربر دکمه روی ریموت را فشار میدهد.
ابتدا قاب ریموت کنترل را باز کنید و نقاط مربوط به کلیدهای ON و OFF را روی برد پیدا کنید.
در مدار نمونه کتاب، دو اپتوکوپلر استفاده شده است؛ یکی برای کلید روشنکردن دستگاه و دیگری برای کلید خاموشکردن آن.
سمت LED اپتوکوپلرها از طریق مقاومتهای 220 اهم به خروجیهای Arduino متصل میشود و سمت ترانزیستوری آنها روی کنتاکتهای کلیدهای ریموت قرار میگیرد.

شکل 59-1 – اتصال اپتوکوپلرها به کنتاکتهای ON و OFF ریموت کنترل
در این مدار دو کلید فشاری نیز به پایههای Arduino متصل شدهاند. با فشار دادن یکی از این کلیدها Arduino فرمان روشنشدن و با فشار دادن کلید دیگر فرمان خاموششدن را به ریموت ارسال میکند.
کد زیر از دو کلید لحظهای برای روشن و خاموشکردن وسیله استفاده میکند. پایههای 2 و 3 ورودی کلیدها هستند و پایههای 4 و 5 اپتوکوپلرهای مربوط به دکمههای ON و OFF ریموت را کنترل میکنند.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
/* * OptoRemote sketch * Switches connected to pins 2 and 3 turn a remote device on and off * using optocouplers. * The outputs are pulsed for at least half a second when a switch is pressed */ const int onSwitchPin = 2; // ورودی کلید روشن const int offSwitchPin = 3; // ورودی کلید خاموش const int remoteOnPin = 4; // خروجی مربوط به ON ریموت const int remoteOffPin = 5; // خروجی مربوط به OFF ریموت const int PUSHED = LOW; // وضعیت کلید هنگام فشردهشدن void setup() { pinMode(remoteOnPin, OUTPUT); pinMode(remoteOffPin, OUTPUT); pinMode(onSwitchPin, INPUT_PULLUP); pinMode(offSwitchPin, INPUT_PULLUP); } void loop() { int val = digitalRead(onSwitchPin); if(val == PUSHED) { pulseRemote(remoteOnPin); } val = digitalRead(offSwitchPin); if(val == PUSHED) { pulseRemote(remoteOffPin); } } void pulseRemote(int pin) { digitalWrite(pin, HIGH); delay(500); digitalWrite(pin, LOW); } |
در ابتدای برنامه چهار پایه تعریف شدهاند. دو پایه اول برای خواندن وضعیت کلیدهای ورودی استفاده میشوند:
|
1 2 |
const int onSwitchPin = 2; const int offSwitchPin = 3; |
دو پایه دیگر خروجیهایی هستند که اپتوکوپلرهای متصل به کلیدهای ریموت را کنترل میکنند:
|
1 2 |
const int remoteOnPin = 4; const int remoteOffPin = 5; |
کلیدهای ورودی با حالت INPUT_PULLUP تعریف شدهاند. به همین دلیل هنگام فشردهشدن کلید، مقدار خواندهشده LOW خواهد بود.
|
1 |
const int PUSHED = LOW; |
زمانی که یکی از کلیدها فشار داده میشود، تابع pulseRemote() اجرا میشود.
|
1 2 3 4 5 6 |
void pulseRemote(int pin) { digitalWrite(pin, HIGH); delay(500); digitalWrite(pin, LOW); } |
ابتدا خروجی Arduino فعال میشود و اپتوکوپلر روشن میشود. این وضعیت به مدت نیم ثانیه ادامه پیدا میکند و سپس خروجی مجدداً LOW میشود.
در عمل این نیمثانیه مانند فشار دادن کوتاه یکی از دکمههای فیزیکی روی ریموت کنترل عمل میکند.
در بسیاری از ریموت کنترلها، کلیدهای روی برد از دو مسیر مسی بدون پوشش تشکیل شدهاند که بهصورت درهمرفته کنار یکدیگر قرار دارند.
هنگامی که دکمه لاستیکی ریموت فشار داده میشود، بخش رسانای زیر دکمه این دو مسیر را به یکدیگر متصل میکند.
در برخی مدلها نیز از کلیدهای فشاری معمولی استفاده میشود. کار با این نوع کلیدها سادهتر است، زیرا پایههای کلید نقاط مشخصی برای اتصال سیم در اختیار ما قرار میدهند.
ترانزیستور داخل اپتوکوپلر جریان را تنها در یک جهت عبور میدهد. به همین دلیل اگر پس از اتصال مدار، فشار دادن کلید Arduino باعث فعالشدن ریموت نشد، ممکن است جهت اتصال سمت ترانزیستور اپتوکوپلر برعکس باشد.
در این حالت میتوانید دو اتصال سمت ترانزیستور اپتوکوپلر را جابهجا کرده و دوباره مدار را آزمایش کنید.
در بعضی ریموت کنترلها، یک سمت چند کلید به یک مسیر مشترک متصل شده است که معمولاً با زمین مدار مشترک است.
برای بررسی این موضوع میتوانید مسیرهای روی برد را دنبال کنید یا با استفاده از مولتیمتر مقاومت بین نقاط مربوط به کلیدهای مختلف را اندازهگیری کنید.
اگر چند کلید دارای مسیر مشترک باشند، لازم نیست برای هر کدام یک سیم جداگانه به مسیر مشترک وصل شود و میتوان تعداد سیمهای موردنیاز را کاهش داد.
در برخی ریموتها ممکن است یک دکمه بیش از دو کنتاکت داشته باشد. در چنین شرایطی ممکن است برای شبیهسازی کامل فشردن یک دکمه به بیش از یک اپتوکوپلر نیاز داشته باشیم.
در شکل زیر نمونهای نشان داده شده که در آن سه اپتوکوپلر توسط یک خروجی Arduino کنترل میشوند.

شکل 59-2 – کنترل چند اپتوکوپلر برای شبیهسازی یک کلید ریموت
روش دیگری که برای کنترل بارهای AC وجود دارد، استفاده از یک رله ایزوله است که بتوان آن را توسط Arduino کنترل کرد.
کتاب Arduino Cookbook به محصول Digital Loggers IoT Power Relay اشاره میکند که برای جداسازی بخش کنترل از برق AC طراحی شده است.
با این حال، هنگام کار با برق شهر باید حتماً از ماژولها و تجهیزات استاندارد، ایزوله و مناسب ولتاژ و جریان موردنظر استفاده شود. استفاده از رلههای معمولی بدون رعایت اصول ایمنی، فاصله عایقی و محفظه مناسب میتواند بسیار خطرناک باشد.
یکی از جذابترین نکات این روش آن است که برای اضافهکردن Arduino به سیستم، نیازی به دستکاری بخش ولتاژ بالای دستگاه نداریم.
Arduino فقط با یک مدار با تغذیه باتری و با ولتاژ پائین در ارتباط است و ریموت کنترل موجود، وظیفه ارسال فرمان بیسیم به پریز یا کلید اصلی را بر عهده دارد.
به همین دلیل این روش برای بسیاری از پروژههای اتوماسیون ساده، نمونهسازی و کنترل از راه دور گزینه مناسبی است.
در قسمت 59 آموزش آردوینو یاد گرفتیم چگونه میتوان یک دستگاه AC مجهز به ریموت کنترل را بدون اتصال مستقیم Arduino به برق شهر کنترل کرد.
برای این کار دکمههای ON و OFF ریموت توسط اپتوکوپلر شبیهسازی شدند. Arduino با فعالکردن کوتاه اپتوکوپلر دقیقاً همان کاری را انجام میدهد که با فشار دادن دکمه روی ریموت اتفاق میافتد.
همچنین دیدیم که بسته به طراحی برد ریموت ممکن است کنتاکتها دارای اتصال مشترک باشند یا حتی برای یک دکمه به چند اپتوکوپلر نیاز داشته باشیم.
با پایان این قسمت، فصل دهم کتاب Arduino Cookbook درباره کنترل از راه دور تجهیزات خارجی به پایان میرسد و در قسمت بعد وارد فصل جدید و مبحث کار با نمایشگرها در Arduino خواهیم شد.
کنترل دوربین دیجیتال با آردوینو | کنترل شاتر...
سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.