آموزش کنترل ریموت، دوربین و دستگاه‌های AC با آردوینو

آردوینو 57
16 بازدید
۱۴۰۵-۰۶-۰۲
9 دقیقه
  • نویسنده: Arduino captain
  • درباره نویسنده: من کاپیتان آردوینو، اسمم میلاده و اینجا هستم تا تجربیاتم در رابطه با آردوینو رو با شما به اشتراک بزارم!

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

تقلید سیگنال‌های ریموت کنترل

فرض کنید می‌خواهید از Arduino برای کنترل یک تلویزیون یا وسیله دیگری که با ریموت کنترل کار می‌کند استفاده کنید، به این صورت که سیگنال مادون قرمز آن را شبیه‌سازی کنید. این بخش برعکس کد زیر است؛ یعنی به جای دریافت فرمان‌ها، آن‌ها را ارسال می‌کند.

این sketch از کدهای ریموت کنترل برای کنترل یک دستگاه استفاده می‌کند. کدهای کنترل شما احتمالاً متفاوت خواهند بود، بنابراین حتماً کد Solution همان دستورالعمل را اجرا کنید و از مقادیری استفاده کنید که مخصوص کنترل شما هستند. پنج دکمه، یکی از پنج کد را انتخاب و ارسال می‌کنند. یک LED مادون قرمز را برای ارسال سیگنال، مطابق شکل (‎57-1) متصل کنید:

شکل 2- دکمه‌ها و LED برای فرستنده IR

شکل 1-57 دکمه‌ها و LED برای فرستنده IR

زمانی که کدها ارسال می‌شوند چیزی مشاهده نخواهید کرد، زیرا نور LED مادون قرمز با چشم غیرمسلح دیده نمی‌شود. با این حال، می‌توانید کارکرد یک LED مادون قرمز را با یک دوربین دیجیتال بررسی کنید. باید بتوانید چشمک زدن آن را در منظره‌یاب LCD دوربین ببینید.

آردوینو دستگاه را با چشمک‌زدن یک LED مادون قرمز کنترل می‌کند تا سیگنالی را که از ریموت کنترل شما ارسال می‌شود تکرار کند. برای این کار به یک LED مادون قرمز نیاز است. مشخصات آن چندان حساس و بحرانی نیست؛ برای قطعات مناسب به Appendix A مراجعه کنید.

کتابخانه IR تبدیل کد عددی به چشمک‌های LED مادون قرمز را انجام می‌دهد. شما باید یک object برای ارسال پیام‌های IR ایجاد کنید. خط زیر یک object از نوع IRsend ایجاد می‌کند که LED روی پایه ۳ را کنترل خواهد کرد. شما نمی‌توانید پایه مورد استفاده را مشخص کنید؛ این مقدار داخل کتابخانه به‌صورت hardcoded تعریف شده است:

بسته به بردی که استفاده می‌کنید، کتابخانه IRremote ممکن است برای LED مادون قرمز به پایه متفاوتی نیاز داشته باشد. برای مثال، بردهای Teensy 3.x از پایه ۵ استفاده می‌کنند. به فایل README کتابخانه IRremote مراجعه کنید. اگر برد شما از پایه‌ای استفاده می‌کند که با محدوده پایه‌های استفاده‌شده برای دکمه‌ها هم‌پوشانی دارد (پایه‌های ۶ تا ۱۰ در sketch بخش Solution)، ممکن است لازم باشد محدوده پایه‌ها را تغییر دهید.

کد از یک آرایه با نام irKeyCodes استفاده می‌کند تا مجموعه مقادیری را که می‌توانند ارسال شوند نگهداری کند. این sketch پنج کلید را بررسی می‌کند تا مشخص شود کدام یک فشرده شده است و در خط زیر کد مربوطه را ارسال می‌کند:

شاید برای شما مفید باشد:
لیست پیوندی در C چیست؟ آموزش Singly Linked List با مثال و مدیریت Heap

object مربوط به irSend دارای توابع مختلفی برای قالب‌های رایج کد مادون قرمز است، بنابراین اگر از یکی از قالب‌های دیگر ریموت کنترل استفاده می‌کنید، مستندات کتابخانه را بررسی کنید. اگر می‌خواهید قالب استفاده‌شده در ریموت کنترل خود را نمایش دهید، می‌توانید از کد بالا استفاده کنید.

این sketch کد را از آرایه به تابع می‌فرستد و عدد بعد از آن به تابع می‌گوید که طول این عدد چند bit است. عبارت 0x در ابتدای اعداد در تعریف irKeyCodes در بالای sketch به این معناست که کدها به صورت hex نوشته شده‌اند. هر کاراکتر در hex یک مقدار ۴ بیتی را نمایش می‌دهد. کدهای اینجا از هشت کاراکتر استفاده می‌کنند، بنابراین طول آن‌ها ۳۲ بیت است.

LED با یک مقاومت محدودکننده جریان متصل شده است.

اگر نیاز دارید برد ارسال را افزایش دهید، می‌توانید از چند LED استفاده کنید یا آن LED را انتخاب کنید که خروجی قوی‌تری داشته باشد.

TV-B-Gone ساخته Mitch Altman یک کاربرد هوشمندانه از ریموت کنترل است.

کنترل یک دوربین دیجیتال

فرض کنید می‌خواهید Arduino یک دوربین دیجیتال را کنترل کند تا تحت کنترل برنامه عکس بگیرد. ممکن است بخواهید عکاسی Time-lapse انجام دهید یا عکس‌هایی بگیرید که با رویدادی که توسط Arduino تشخیص داده شده فعال می‌شوند.


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

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

کانکتور شاتر دوربین، که معمولاً کانکتور TRS یا همان (tip, ring, sleeve) نامیده می‌شود، معمولاً در اندازه‌های ۲٫۵ میلی‌متر یا ۳٫۵ میلی‌متر وجود دارد، اما طول و شکل نوک آن ممکن است استاندارد نباشد. مطمئن‌ترین راه برای تهیه پلاگ صحیح این است که یک ریموت سیمی ارزان‌قیمت مناسب مدل دوربین خود بخرید و آن را تغییر دهید، یا یک کابل مبدل را از یک تأمین‌کننده تخصصی تهیه کنید (در گوگل عبارت کابل شاتر دوربین TRS را جست‌وجو کنید).

شما Arduino را با استفاده از اپتوکوپلرها به کابل مناسب دوربین خود متصل می‌کنید؛ همان‌طور که در شکل 57‎-2 نشان داده شده است.

این sketch تعداد ۱۰ عکس می‌گیرد، هر ۲۰ ثانیه یک عکس:

شاید برای شما مفید باشد:
راه‌اندازی ریموت با آردوینو
شکل ‎10-3. استفاده از اپتوکوپلرها با کانکتور دوربین TRS

شکل ‎57-2. استفاده از اپتوکوپلرها با کانکتور دوربین TRS

توصیه نمی‌شود پایه‌های Arduino را مستقیماً به دوربین متصل کنید. ممکن است ولتاژها با هم سازگار نباشند و خطر آسیب‌زدن به Arduino یا دوربین وجود داشته باشد. از اپتوکوپلرها برای ایزوله‌کردن Arduino از دوربین استفاده می‌شود.

برای شناسایی کانکتور TRS مناسب، باید دفترچه راهنمای دوربین خود را بررسی کنید.

ممکن است لازم باشد ترتیب روشن و خاموش شدن پایه‌ها در تابع takePicture را تغییر دهید تا به رفتاری که می‌خواهید برسید. برای اینکه یک دوربین Canon بتواند نوردهی‌های bulb انجام دهد، باید ابتدا focus را روشن کنید، سپس بدون آزاد کردن focus شاتر را باز کنید، بعد شاتر را آزاد کنید و سپس focus را آزاد کنید (مانند همین sketch). برای گرفتن عکس در حالتی که دوربین خودش نوردهی را محاسبه کند، دکمه focus را فشار دهید، آن را رها کنید و سپس شاتر را فشار دهید.

همچنین کتاب The Canon Camera Hackers Manual: Teach Your Camera New Tricks نوشته Berthold Daum از انتشارات Rocky Nook را ببینید.

همچنین امکان کنترل دوربین‌های ویدئویی به روشی مشابه با استفاده از LANC وجود دارد. این کتابخانه از این قابلیت پشتیبانی می‌کند.

یک شیلد Arduino نیز برای کنترل تجهیزات ویدئویی حرفه‌ای Black Magic Design، از جمله دوربین‌ها، با استفاده از پروتکل باز آن‌ها وجود دارد.

کنترل دستگاه‌های AC با دست‌کاری یک سوئیچ ریموت کنترل

فرض کنید می‌خواهید با استفاده از یک سوئیچ ریموت کنترل، جریان برق AC را به‌طور ایمن قطع و وصل کنید و از این طریق چراغ‌ها و وسایل برقی را کنترل کنید.

Arduino می‌تواند با استفاده از یک optocoupler دکمه‌های یک سوئیچ ریموت کنترل را تحریک کند. این کار ممکن است برای ریموت‌هایی لازم باشد که به جای فناوری مادون قرمز از فناوری بی‌سیم استفاده می‌کنند.

از این تکنیک تقریباً برای هر نوع ریموت کنترل می‌توان استفاده کرد. هک‌کردن یک ریموت به‌خصوص از این جهت کاربردی است که شما و آردوینو را از ولتاژهای AC بالقوه خطرناک دور نگه می‌دارد؛ چون فقط کنترلر باتری‌خور تغییر داده می‌شود.

باز کردن ریموت کنترل باعث باطل شدن گارانتی می‌شود و ممکن است به دستگاه آسیب بزند. دستورالعمل‌های مادون قرمز که در این فصل توضیح داده شده‌اند، گزینه های بهتری هستند، چون نیازی به تغییر در خود ریموت کنترل ندارند.

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

ریموت کنترل را باز کنید و optocoupler را به‌گونه‌ای متصل کنید که فرستنده نوری آن (پایه‌های 1 و 2 در شکل 3-57 ) به آردوینو وصل شود و photo transistor (پایه‌های 3 و 4) در دو سر کنتاکت‌های ریموت کنترل قرار گیرد.

optocoupler هایی که به ریموت کنترل متصل هستند

شکل 3-57 -optocoupler هایی که به ریموت کنترل متصل هستند

در این sketch از کلیدهای فشاری لحظه‌ای (با فشار دادن و رها کردن) برای فعال کردن دکمه‌های روشن و خاموش ریموت استفاده می‌شود:

شاید برای شما مفید باشد:
ثابت‌های ممیز شناور در آردوینو

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

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

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

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

ممکن است ریموت کنترل برای هر دکمه چند کنتاکت مجزا داشته باشد. در این صورت، شاید برای اتصال همه کنتاکت‌ها به بیش از یک اپتوکوپلر برای هر دکمه نیاز داشته باشید. شکل 4-57 سه اپتوکوپلر را نشان می‌دهد که همگی از طریق یک پایه آردوینو کنترل می‌شوند.

روش دیگری برای کنترل جریان برق AC استفاده از یک رله ایزوله است که بتوان آن را مستقیماً با پایه‌های آردوینو روشن و خاموش کرد. برای مثال، رله Digital Loggers IoT Power Relay که از طریق Adafruit با شماره قطعه 2935 یا SparkFun با شماره قطعه 14236 عرضه می‌شود. این رله جایگزین بسیار مناسبی برای PowerSwitch Tail است که تولید آن متوقف شده است.

شکل 3-57 - چندین optocoupler متصل به یک دکمه ریموت کنترل

شکل 4-57 – چندین optocoupler متصل به یک دکمه ریموت کنترل

اطلاعات
16
0
0
اشتراک و حمایت
profile نویسنده: Arduino captain متخصص الکترونیک

من کاپیتان آردوینو، اسمم میلاده و اینجا هستم تا تجربیاتم در رابطه با آردوینو رو با شما به اشتراک بزارم!


ویراستار: حسین زنجانی زاده
مقالات بیشتر

slide

پالت | بازار خرید و فروش قطعات الکترونیک

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

آیسی | موتور جستجوی قطعات الکترونیک

سامانه آی سی سیسوگ (Isee) قابلیتی جدید و کاربردی از سیسوگ است. در این سامانه سعی شده است که جستجو، انتخاب و خرید مناسب تر قطعات برای کاربران تسهیل شود. جستجو در آیسی
family

سیسوگ‌شاپ | فروشگاه محصولات Quectel

فروشگاه سیسوگ مجموعه ای متمرکز بر تکنولوژی های مبتنی بر IOT و ماژول های M2M نظیر GSM، GPS، LTE، NB-IOT، WiFi، BT و ... جایی که با تعامل فنی و سازنده، بهترین راهکارها انتخاب می شوند. برو به فروشگاه سیسوگ
family

سیسوگ فروم | محلی برای پاسخ پرسش‌های شما

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

سیکار | اولین مرجع متن باز ECU در ایران

بررسی و ارائه اطلاعات مربوط به ECU (واحد کنترل الکترونیکی) و نرم‌افزارهای متن باز مرتبط با آن برو به سیکار
become a writer
نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
become a writer
نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله

خانواده سیسوگ

سیسوگ‌شاپ

فروشگاه محصولات Quectel

پالت
سیسوگ فروم

محلی برای پاسخ پرسش‌های شما

سیسوگ جابز
سیسوگ
سیسوگ فروم
سی‌کار

اولین مرجع متن باز ECU در ایران

سیسوگ مگ
آی‌سی

موتور جستجوی قطعات الکترونیکی

سیسوگ آکادمی
پالت

بازار خرید و فروش قطعات الکترونیک

دیدگاه ها

become a writer
نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
become a writer
نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله