TL;DR – من میخواستم به محض اینکه پخش موسیقی روی Apple TV از iPhone را شروع کردم، همه اجزای AV من روشن شوند و ورودیها را تغییر دهند، بنابراین Apple TV را باز کردم و یک سنسور فتوسل را به Arduino Uno متصل کردم. چند ال ای دی مادون قرمز را سیم کشی کرد، کدی نوشت و آن را انجام داد. اینجا در عمل است.
مشکل
وقتی میخواهم با سیستم AV خود به موسیقی گوش دهم، روی iPhone/Pad خود Airplay را میزنم (در iTunes/pandora/spotify) و Apple TV من روشن میشود و شروع به پخش میکند، اما اجزای دیگر این کار را نمیکنند. باید هزاران ریموت را بگردم تا ریموت تلویزیون روشن شود و منبع HDMI را عوض کنم، سپس برای کنترل از راه دور گیرنده AV برای برق و منبع و بلندگو را انتخاب کنم. ظرافت Airplay در این مرحله از بین می رود.
یافتن راه حل
اول، آنچه را که فکر می کردم راه حل من است، HDMI CEC، پیدا کردم. این استاندارد (در تئوری) به شما امکان میدهد همه دستگاهها را از یک کنترل از راه دور کنترل کنید و باعث میشود دستگاههایی مانند تلویزیون به فعالیتهای پورتهای HDMI گوش دهند و به طور خودکار منبع را روشن و تغییر دهند. این ایده عالی بود، اما متأسفانه در این مرحله اجرای این استاندارد چندپاره به نظر میرسد و هر سازنده نسخه اختصاصی خود را دارد. تلویزیون ال جی من نسخه خودش را داشت اما هیچ یک از اجزای دیگر من با آن نسخه کار نمی کرد. همچنین، طبق آنچه من پیدا کردم، هیچ نسخه ای از Apple TV هنوز از این پشتیبانی نمی کند.
پس از مطالعه در انجمن ها، افرادی را پیدا کردم که با Apple TV و یکی از اینها موفقیت داشتند ، بنابراین آن را امتحان کردم. همه دستگاههای HDMI خود را به آن وصل کردم، اما با روشن کردن خودکار یا انتخاب ورودی خودکار شانسی نداشتم، بنابراین دوباره به صفحه طراحی برگشتم.
در این مرحله، من به برد Ardunio UNO خود نگاه کردم و متوجه شدم که این یک کار عالی برای میکروکنترلر کوچک با تعدادی ورودی (برای گوش دادن به روشن شدن Apple TV) و خروجی ها (برای ارسال سیگنال های IR) است. چند جستجوی سریع شک من را تایید کرد. افراد زیادی با آردوینوهای خود سیگنال های IR ارسال می کنند.
بنابراین، ارسال سیگنالهای IR به تفصیل پوشش داده شده است، و موارد بیشتری در مورد پیادهسازی خاص من در زیر وجود دارد، اما تشخیص روشن شدن Apple TV هنوز مشکلی بود که باید حل شود.
حسگر روشن شدن تلویزیون اپل
اگر تلویزیون Apple TV وصل شود، همیشه در حالت آماده به کار است که به آن امکان میدهد در شبکه محلی محلی تبلیغ کند و وقتی دستگاهی با آن پخش میشود روشن شود. برای درک وضعیت آن، از نظر تئوری میتوانید کشش جریان را بررسی کنید و به دنبال آستانه بگردید، با این فرض که انرژی بیشتری در زمان استفاده مصرف میکند و نه در حالت آماده به کار. من وارد بررسی جزئیات این راه حل نشدم، اما ممکن است آن را بیشتر بررسی کنم. راه دیگر ممکن است تشخیص ترافیک شبکه باشد، ممکن است بسته خاصی وجود داشته باشد که وقتی دستگاه از حالت آماده به کار خارج می شود، ارسال می شود، اما راه اندازی فعلی آردوینو من این بود که مستقل باشد و به LAN من متصل نباشد، بنابراین باید منتظر دیگری بود. نسخه
سپس به چراغ برق فکر کردم، آیا نمی توانم آن برق هایی که led و ولتاژ را حس می کنند را به سیم ببندم؟ این راه حل شامل اتصال فیزیکی دو مدار است که کمی خارج از منطقه راحتی من به نظر می رسید. من هنوز ایده استفاده از LED پاور را دوست داشتم، بنابراین با استفاده از یک سنسور نور، یک فتوسل ساده به ذهنم رسید، اما موضوع نور محیط باعث شد به این فکر کنم که آیا میتواند به طور قابل اعتماد تفاوت را تشخیص دهد. پس از نصب فتوسل در واحد Apple TV، به سختی نور محیط وارد می شود، و بدون توجه به شرایط نوری خارج از کیس، به طور قابل اعتمادی led را حس می کند. این به سادگی روشن یا خاموش کردن نیست، زیرا با فشار دادن دکمههای کنترل از راه دور، چراغ خاموش میشود، بنابراین مجبور شدم آستانهای را کدگذاری کنم تا سیستم را از فعال کردن و خاموش کردن اشتباه رویدادها جلوگیری کنم.
بنابراین در این مرحله می توانم به طور قابل اعتمادی وضعیت Apple TV را حس کنم و هر اقدامی را که لازم است انجام دهم. حالا من فقط باید به آردوینو چند قابلیت IR بدهم.
سیگنالینگ مادون قرمز
همه تجهیزات AV، جدید و قدیمی، معمولا دارای سنسور IR هستند و هر کنترل IR دارای یک LED IR برای شلیک نور پالسی IR است. ریموتها طوری برنامهریزی شدهاند که آن LED مادون قرمز را با نرخ بسیار بالایی پالس کنند (تقریباً 38 کیلوهرتز استاندارد اکثر ریموتها یا 38000 پالس در ثانیه است). این پالس را مدولاسیون می نامند و حسگر روی دستگاه گیرنده باید آن سیگنال را دمودوله کند تا آن را رمزگشایی کند و بسته به کد دریافتی اقدام کند. فراتر از این پالس 38 کیلوهرتز، سیگنالهای IR از توالی روشن/خاموش درست مانند هر انتقال باینری دیگر تشکیل شدهاند، اما این پالس در محدوده میلیثانیه اتفاق میافتد. این مدولاسیون باعث می شود که نور IR سرگردان بر سیگنال های خاصی که از فرستنده های IR می آیند تأثیر نگذارد.