فهرست مطالب:
- مرحله 1: مرور اجمالی مدار
- مرحله 2: مرور مختصر نرم افزار
- مرحله 3: محتوای بسته I2C
- مرحله 4: دستیابی به کدهای کنترل از راه دور (ui32Data)
- مرحله 5: چگونه دستگاه برده I2C خود را آزمایش کنید
- مرحله 6: طراحی خود را کوچک کنید
- مرحله 7: نتیجه گیری
- مرحله 8: منابع مورد استفاده
تصویری: کنترل از راه دور مادون قرمز I2C با آردوینو: 8 مرحله (همراه با تصاویر)
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:57
این دستورالعمل نحوه ایجاد کنترل از راه دور جهانی با استفاده از I2C برای رابط را توضیح می دهد.
چقدر عجیب می گویید ، با استفاده از یک دستگاه برده I2C؟
بله ، یک دستگاه برده I2C.
این به این دلیل است که زمان بندی دقیق بسته های IR بسیار سخت است و اگر آردوینو معمولی کارهای دیگری را همزمان انجام دهد ، با آن مشکل پیدا می کند. بهتر است بار محاسباتی را با اختصاص فعالیتهای زمانبندی شدید به پردازنده های اختصاصی در صورت امکان توزیع کنید (بهتر است این کار را در سخت افزار انجام دهید). با توجه به اینکه I2C یک روش ارتباطی مستند و قوی بین IC ها است ، من این را به عنوان رابط انتخاب کردم.
معرفی
همانطور که در بالا ذکر شد ، این دستورالعمل نحوه کنترل لوازم خانگی مانند تلویزیون ، پخش کننده DVD و ماهواره و غیره را با استفاده از کتابخانه IRremote در آردوینو توضیح می دهد.
با یک مثال طراحی ، آردوینو را به یک ماژول کنترل از راه دور برده I2C (تصویر 1 بالا) با مدار آزمایش نمونه اولیه (تصویر 2 بالا) خاتمه می دهد و در ادامه به جزئیات چگونگی کوچک کردن طراحی خود به حداقل اجزای مورد نیاز می پردازد. در طرح دیگری تعبیه شده است در مورد من ، من از این دستگاه جاسازی شده در دستگاه کنترل از راه دور IoT Universal استفاده می کنم که در اطراف ESP8266-12E قرار دارد.
به چه قطعاتی نیاز دارم؟
برای ساختن مدار نشان داده شده در مرحله 1 (فرستنده IR) به قطعات زیر نیاز دارید:
- 2 عدد مقاومت 10K
- 1 عدد مقاومت 390R
- 1 عدد مقاومت 33R
- 1 عدد مقاومت 3K8
- 1 عدد LED قرمز
- 1 تخفیف IR Led TSAL6400
- 1 ترانزیستور BC337
- 1 خازن 220uF
- 1 تخفیف برای آردوینو اونو
برای ساختن مدار نشان داده شده در مرحله 4 (گیرنده مادون قرمز) به قطعات زیر نیاز دارید:
- 1 مقاومت 10K
- 1 تخفیف TSOP38328
- 1 خازن 220uF
- 1 تخفیف برای آردوینو اونو
برای ساختن مدار نشان داده شده در مرحله 5 (مدار آزمایش برده) به قطعات زیر نیاز دارید.
- 4 مقاومت 10K
- 2 مقاومت 390R خاموش
- 1 عدد مقاومت 33R
- 1 عدد مقاومت 3K8
- 2 خاموش LED قرمز
- 1 تخفیف IR LED TSAL6400
- 1 ترانزیستور BC337
- 1 خازن 220uF
- 2 دکمه SPST
- 2 تخفیف برای آردوینو Unos
برای ساختن مدار نشان داده شده در مرحله 6 (طراحی کوچک شده) به قطعات زیر نیاز دارید.
- 3 عدد مقاومت 10K
- 1 عدد مقاومت 270R
- 1 عدد مقاومت 15R
- 4 مقاومت 1K خاموش
- 1 عدد LED قرمز
- 1 تخفیف IR LED TSAL6400 یا TSAL5300
- 1 ترانزیستور BC337
- 1 خازن 220 ولت الکترولیتی @ 6.3 ولت
- 1 خازن الکترولیتی خازن 1000uF @ 6.3 ولت
- 2 خازن 0.1uF
- 2 عدد خازن 22pF
- 1 عدد Xtal با سرعت 16 مگاهرتز
- 1 تخفیف ATMega328P-PU
توجه: همچنین برای برنامه ریزی ATMega328P به یک دستگاه FTDI نیاز خواهید داشت
به چه مهارتهایی نیاز دارم؟
- حداقل تسلط بر لوازم الکترونیکی ،
- آشنایی با آردوینو و IDE آن ،
- یک کم صبر،
- برخی از درک I2C مفید خواهد بود (برای جزئیات کلی کتابخانه I2C/Wire به اینجا مراجعه کنید).
موضوعات تحت پوشش
- مرور مختصر مدار ،
- مرور مختصر نرم افزار ،
- محتوای بسته I2C ،
- به دست آوردن کدهای کنترل از راه دور (ui32Data) ،
- چگونه دستگاه I2C Slave خود را آزمایش کنید ،
- کوچک کردن طرح خود ،
- نتیجه،
- مراجع استفاده شده است.
سلب مسئولیت
مانند همیشه ، شما از این دستورالعمل ها با مسئولیت خود استفاده می کنید و از آنها پشتیبانی نمی شود.
مرحله 1: مرور اجمالی مدار
هدف مدار انتقال کدهای کنترل از راه دور IR است. طراحی آن بسیار ساده و کاملاً ساده است.
هنگامی که ترانزیستور Q1 a BC337 NPN از طریق منطقی از Arduino PWM O/P D3 به Resistor R5 روشن می شود ، جریان از طریق Leds 1 و 2 عبور می کند. به ترتیب فقط توسط مقاومت بالاست R3 و R4 به ترتیب محدود می شود. Q1 برای افزایش جریان عبوری از دیود IR (IF Max = 100mA) تا بیش از آنچه که Arduino O/P قادر به تامین 40mA @ +5v ~ است ، استفاده می شود.
خازن C1 a 220uF Electrolytic مقداری تثبیت را فراهم می کند و از افت ریل منبع تغذیه توسط نیروی 1 و 2 Leds جلوگیری می کند.
مقاومت R1 و R2 کشش I2C هستند.
مرحله 2: مرور مختصر نرم افزار
مقدمه
برای کامپایل موفقیت آمیز این کد منبع ، به کتابخانه اضافی زیر نیاز دارید.
IRremote.h
- توسط: z3t0
- هدف: کتابخانه از راه دور مادون قرمز برای آردوینو: ارسال و دریافت سیگنال های مادون قرمز با چندین پروتکل
- از:
مرور کلی کد
همانطور که در تصویر 1 بالا نشان داده شده است ، هنگام راه اندازی کد ، ورودی/خروجی میکرو کنترلر را پیکربندی می کند ، سپس وضعیت پرچم نرم افزار داخلی "bFreshDataFlag" را بررسی می کند. هنگامی که این پرچم تنظیم می شود ، کنترل کننده خط "Busy" (ارسال پین داده D4 کم) را تأیید می کند و به حالت eBUSY حرکت می کند و دستورات دکمه را که در uDataArray نگهداری می شود ، می خواند و داده های تعدیل شده IR را به LED IR ارسال می کند. دنباله انتقال
هنگامی که داده های ذخیره شده در uDataArray به طور کامل ارسال شد ، وضعیت 'eIDLE' از سر گرفته می شود و خط 'مشغول' لغو می شود (ارسال پین داده D4 بالا). اکنون دستگاه آماده دریافت فشارهای بیشتر دکمه است که پایان دنباله انتقال را مشخص می کند.
دریافت داده های فشار دکمه IR
وقتی داده ها از طریق I2C به کنترل از راه دور مادون قرمز ارسال می شوند ، وقفه ای ایجاد می کند و فراخوانی عملکرد ()
پس از فعال شدن داده های دریافتی I2C ، به ترتیب در بافر 'uDataArray ' نوشته می شود.
در هنگام دریافت داده ، اگر انتهای دنباله توسط استاد (bFreshData! = 0x00) نشان داده شود ، "bFreshDataFlag" تنظیم می شود ، بنابراین شروع دنباله انتقال را نشان می دهد.
تصاویر 2… 3 نمونه ای از یک دنباله بسته معمولی را نشان می دهد.
توجه: کد منبع کامل در اینجا موجود است
مرحله 3: محتوای بسته I2C
قالب بسته کنترل ارسال شده به slave در I2C در تصویر 1 آمده است ، معنی هر فیلد در زیر آمده است
معنی فیلدهای بسته کنترل
بایت bEncoding؛
-
رمزگذاری کنترل از راه دور IR ،
- RC6 (آسمان) = 0 ،
- SONY = 1 ،
- SAMSUNG = 2 ،
- NEC = 3 ،
- ال جی = 4
uint32_t ui32Data؛
نمایش شش ضلعی جریان داده دوتایی IR 4 بایت داده (طولانی بدون علامت) ، LSByte… MSByte
بایت bNumberOfBitsInTheData؛
تعداد بیت در داده ها (حداکثر 32). محدوده = 1… 32
بایت bPulseTrainRepeats؛
چند بار تکرار این قطار نبض. محدوده = 1… 255. به طور معمول 2… 4 تکرار. ممکن است بخواهید این مورد را برای دستورات روشن/خاموش تمدید کنید زیرا دستگاه دریافت کننده برای دریافت سیگنال روشن شدن نیاز به چند تکرار قطار پالس اضافی دارد
بایت bDelayBetweenPulseTrainRepeats؛
تأخیر بین تکرارهای این قطار پالس. محدوده = 1… 255mS به طور معمول 22mS… 124mS
بایت bButtonRepeats؛
فشار دادن مکرر یک دکمه را شبیه سازی می کند (اما از کد تغییر یافته مانند ریموت اپل پشتیبانی نمی کند ، فقط کد دکمه را تکرار می کند). محدوده = 1… 256. پیش فرض = 1
uint16_t ui16DelayBetweenButtonRepeats؛
تأخیر بین تکرارهای دکمه (int بدون امضا). 2 بایت در کل LSByte… MSByte. محدوده = 1… 65535mS پیش فرض = 0 میلی ثانیه
بایت bFreshData؛
-
داده های تازه یک مقدار غیر صفر آخرین نوشته شده ، دنباله IR TX را فعال می کند. محدوده 0x00… 0xFF
- بسته های کنترل بیشتری در راه است = 0
- این بسته کنترل نهایی است = مقدار غیر صفر 1 ، 2 ،… 255
به استفاده از دستورالعمل کامپایلر '_packed_' توجه کنید. این امر برای اطمینان از این است که داده ها بسته به بایت در حافظه صرف نظر از سیستم مورد استفاده (Uno ، Due ، ESP8266 و غیره). این بدان معناست که اتحاد بین registerAllocationType و dataArrayType فقط به صورت متوالی نیاز دارد که از یک بسته کنترل به صورت بایت خارج شده و نرم افزار TX/RX را ساده کند.
مرحله 4: دستیابی به کدهای کنترل از راه دور (ui32Data)
به سه روش می توانید کد کلید مربوط به کنترل از راه دور را بدست آورید.
- از طریق شمارش بیت با اسیلوسکوپ ،
- آن را در یک وب سایت جستجو کنید ،
- آن را مستقیماً از جریان داده در نرم افزار رمزگشایی کنید.
از طریق شمارش بیت با محدوده
این یک روش کارآمد نیست زیرا زمان زیادی طول می کشد و به طور بالقوه به بیش از یک بار نیاز دارد ، اما می تواند بسیار دقیق باشد. همچنین در اعتبارسنجی بصری کدهای بدست آمده از روشهای 2 و 3 ، همچنین در تعیین هرگونه ویژگی از راه دور مفید است. به عنوان مثال هنگام نگه داشتن یک دکمه در ریموت اپل IR. ریموت در ابتدا یک دنباله فرمان صادر می کند و سپس آن را با یک دنباله فشرده مکرر 0xF دنبال می کند….
آن را در یک وب سایت جستجو کنید
پایگاه داده کد کنترل از راه دور در وب سایت کنترل از راه دور مادون قرمز لینوکس منبع خوبی است.
با این حال ، نکته منفی این است که ممکن است مجبور شوید چند کد را امتحان کنید تا کد مناسب را پیدا کنید. همچنین ممکن است مجبور شوید برخی از نمایش کدها را برای تبدیل آنها به شکل معادل شانزدهم تفسیر کنید.
آن را مستقیماً از جریان داده رمزگشایی کنید
با استفاده از مدار تصویر 1 بالا همراه با نمونه کتابخانه IRremote 'IRrecvDumpV2.ino' می توان جریان داده را مستقیماً از راه دور رمزگشایی کرد. تصویر 2 یک ریموت رمزگشایی شده تلویزیون Samsung را برای فشار دادن دکمه روشن/خاموش در پنجره پایانه Arduino IDE نشان می دهد.
گیرنده/فرستنده ترکیبی
تصاویر 3 و 4 بالا راه حلی را نشان می دهند که امکان دریافت و انتقال فرمان IR را برای نمونه سازی آسان فراهم می کند.
برای رمزگشایی فشارهای دکمه کنترل از راه دور IR ، باید Arduino را با مثال 'IRrecvDumpV2.ino' همراه با کتابخانه IRremote فلش کنید.
همچنین در صورت فرمان IR م equallyثر است. چراغ قرمز به عنوان نشانگر بصری دستگاه در حال کار است.
مرحله 5: چگونه دستگاه برده I2C خود را آزمایش کنید
با استفاده از کد منبع در اینجا و مداری که در تصویر 1 نشان داده شده است ، "Master" Arduino را با "IR_Remote_Sim_Test.ino" و "Slave" Arduino را با "IR_Remote_Sim.ino" برنامه ریزی کنید.
با فرض اینکه شما یک تلویزیون سونی Bravia ، یک جعبه Sky HD و یک ساندبار BT سونی دارید ، دکمه 1 را فشار دهید تا تلویزیون شما به BBC1 تغییر کند (کانال 101). دکمه 2 را فشار دهید و نوار صدا شما بی صدا می شود. دوباره فشار دهید تا نادیده گرفته شود.
در حین اجرای دنباله انتقال IR ، LED3 روشن می شود که نشان می دهد برده مشغول است و LED1 به طور خطی با فرایند انتقال IR چشمک می زند.
البته اگر سیستم سرگرمی مشابه بالا را ندارید ، می توانید برده را با 'IRrecvDumpV2.ino' برنامه ریزی مجدد کنید ، دستورات مورد علاقه خود را رمزگشایی کنید ، سپس آنها را برای 'IR_Remote_Sim_Test.ino' برای برنامه خود برنامه ریزی کنید. سناریوی داده شده
تصویر 2 نمای کلی نرم افزار تست سطح سیستم بین Master و Slave را نشان می دهد.
مرحله 6: طراحی خود را کوچک کنید
بسیار خوب ، بنابراین با فرض اینکه این دستورالعمل را دنبال کرده اید ، تکیه بر دو Arduinos برای کنترل دستگاه های خانگی خود ، کارآمدترین استفاده از سهام Arduino شما نیست. در نتیجه اگر مدار نشان داده شده در تصویر بالا را بسازید و دستورالعمل های اینجا را برای برنامه نویسی ATMega328P با 'IR_Remote_Sim.ino' دنبال کنید ، می توانید کل سیستم را به حداقل اجزا کاهش دهید. این به شما امکان می دهد طرح خود را در سیستم دیگری جاسازی کنید.
مرحله 7: نتیجه گیری
راه حل پایدار است و خوب کار می کند ، چند هفته است که بدون هیچ مشکلی در سیستم دیگری جاسازی شده است.
من Arduino Uno R3 را به عنوان دستگاهی انتخاب کردم که دارای RAM کافی باشد تا بتوانم یک بافر دکمه با عمق مناسب داشته باشم. من به اندازه بافر 20 بسته (MAX_SEQUENCES) رضایت دادم.
سپر Hybrid TX/RX که من ساختم هنگام رمزگشایی کنترل از راه دور سونی و Sky نیز بسیار مفید بود. اگرچه من مجبور هستم گاهی اوقات از محدوده دیجیتالی خود برای بررسی نرم افزار رمزگشایی شده دستور IR همان چیزی که از IR دریافت می شود (TSOP38328) استفاده کنم.
تنها کاری که می توانستم متفاوت انجام دهم این بود که از مدار درایو جریان ثابت برای چراغ IR استفاده کنم ، همانطور که در تصویر 2 در بالا نشان داده شده است.
نکته دیگری که باید به آن توجه شود این است که همه فرستنده های IR با 38KHz مدوله نمی شوند ، TSOP38328 برای 38KHz بهینه شده است.
مرحله 8: منابع مورد استفاده
IRRemote.h
- توسط: z3t0
- هدف: کتابخانه از راه دور مادون قرمز برای آردوینو: ارسال و دریافت سیگنال های مادون قرمز با چندین پروتکل
- از:
کتابخانه از راه دور IR
- z3t0.github.io/Arduino-IRremote/
- https://arcfn.com/2009/08/multi-protocol-infrared-remote-library.html
سنسور گیرنده مادون قرمز (مادون قرمز) - TSOP38238 (معادل)
https://cdn-shop.adafruit.com/datasheets/tsop382.pdf
برای جلوگیری از پر کردن ساختار داده به مرزهای کلمه
- https://github.com/esp8266/Arduino/issues/1825
- https://github.com/tuanpmt/esp_bridge/blob/master/modules/include/cmd.h#L15
- https://stackoverflow.com/questions/11770451/the-meaning-of-attribute-packed-aligned4
منبع خوب جزئیات از راه دور IR
https://www.sbprojects.com/knowledge/ir/index.php
I2C
- https://playground.arduino.cc/Main/WireLibraryDetailedReference
- https://www.arduino.cc/fa/Reference/WireSend
پایگاه داده از راه دور IR
- https://www.lirc.org/
- https://lirc-remotes.sourceforge.net/remotes-table.html
برگه BC337
https://www.onsemi.com/pub/Collateral/BC337-D. PDF
برگه اطلاعات 1N4148
https://www.vishay.com/docs/81857/1n4148.pdf
توصیه شده:
تلویزیون از راه دور جهانی - Ardiuino ، مادون قرمز: 5 مرحله
Universal TV Remote - Ardiuino ، Infrared: Hello! در این دستورالعمل ، من به شما نشان می دهم که چگونه می توانید ریموت جهانی خود را بسازید و برنامه ریزی کنید که با بیشتر مواردی که از ریموت مادون قرمز استفاده می کنند کار کند و همچنین & quot؛ گوش دادن & quot؛ و رمزگشایی سیگنال مادون قرمز ارسال شده توسط سایر موارد
کنترل از راه دور دستگاه تهویه مطبوع مادون قرمز تلفن همراه DIY تولید: 7 مرحله
کنترل از راه دور سیستم تهویه مطبوع مادون قرمز تلفن همراه DIY: در تابستان گرم ، هنگامی که به خانه یا محل کار می روید ، می خواهید کولر را روشن کنید اما برای مدتی نمی توانید کنترل از راه دور را پیدا کنید. این یک چیز بسیار آزاردهنده است. در عصری که این تلفن همراه ترک نمی شود ، آیا می توانید از تلفن همراه به عنوان
تستر کنترل از راه دور مادون قرمز با استفاده از TSOP4838: 5 مرحله
تستر کنترل از راه دور مادون قرمز با استفاده از TSOP4838: در اینجا نحوه ساخت یک مدار تستر کنترل از راه دور ساده آمده است. کافی است مراحل زیر را دنبال کنید تا به کمتر از 5 دقیقه برسید. اگر کار کرد ، لطفاً ویدیوی ما را لایک کنید و در نظرات به ما بگویید
مادون قرمز از راه دور و گیرنده مادون قرمز (TSOP1738) با آردوینو: 10 مرحله
گیرنده مادون قرمز و گیرنده مادون قرمز (TSOP1738) با آردوینو: این برنامه برای مبتدیان آردوینو مناسب است. این یکی از پروژه های قبلی من با آردوینو است. از درست کردنش خیلی لذت بردم و امیدوارم شما هم خوشتون بیاد. جذاب ترین ویژگی این پروژه & ldquo؛ کنترل بی سیم & rdquo ؛. و این
کنترل از راه دور سایه/کنترل از راه دور: 5 مرحله
Shadow/Remote Control Activated Leds: آیا تا به حال خواسته اید یک نور فعال شده در شب یا سایه ایجاد کنید؟ خوب .. در اینجا یک دستورالعمل وجود دارد ، اما یک مورد اضافی وجود دارد: می توانید آن را با کنترل RF از راه دور فعال کنید. این بسیار قدرتمند است ، من می توانم اتاق سوراخ خود را روشن کنم