فهرست مطالب:

ESP-12 Infra Red Blaster: 7 مرحله
ESP-12 Infra Red Blaster: 7 مرحله

تصویری: ESP-12 Infra Red Blaster: 7 مرحله

تصویری: ESP-12 Infra Red Blaster: 7 مرحله
تصویری: My journey of making a PERFECT! Universal IR Blaster 👀 2024, جولای
Anonim
ESP-12 Infra Red Blaster
ESP-12 Infra Red Blaster

بلستر کنترل از راه دور مادون قرمز با استفاده از esp8266

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

ساخته شده در صفحه وب ساده عمدتا برای آزمایش.

استفاده عادی از طریق پیام های POST است که می تواند از صفحات وب یا از کنترل صوتی IFTTT / Alexa باشد.

پشتیبانی از آشکارساز Echo / Dot فعال آمازون برای قطع / خاموش شدن به محض گفتن کلمه فعال.

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

تاریخچه اخیر و لیست ماکروها ممکن است از طریق رابط وب به دست آید

از بارگذاری OTA سیستم عامل جدید پشتیبانی می کند و از کتابخانه WifiManager برای راه اندازی wifi اولیه استفاده می کند

مرحله 1: سخت افزار

سخت افزار
سخت افزار
سخت افزار
سخت افزار

از اجزای زیر استفاده می کند

  • ماژول ESP-12F
  • تنظیم کننده 3.3V (تنظیم کننده مینی باک MP2307)
  • سوئیچ های MOSFET (AO3400)
  • ساطع کننده مادون قرمز (3 میلی متر)
  • مقاومت وابسته به نور GL2258 (آشکارساز فعالیت اختیاری الکسا)
  • مقاومت ها
  • جدا کردن خازن (20uF)
  • سوکت USB USB (ترجیحاً لحیم کاری مناسب با آستین
  • نوار سوکت IC 3 پین برای آشکارساز الکسا
  • قطعات مکانیکی (قابل چاپ سه بعدی)

می تواند در جعبه پروژه ESP-12F مونتاژ شود

  • تنظیم کننده را به کانکتور USB متصل کرده و در جعبه قرار دهید
  • درایور IR را روی قطعه کوچک تخته vero (3 سیم ، +5V ، ورودی دروازه 0V) تنظیم کنید
  • درایور IR را به USB +5V ، 0V وصل کنید
  • در صورت استفاده از آشکارساز الکسا ، سوکت IC 3 پین را در جعبه پروژه وارد کنید. برای ورودی به +3.3V ، 0V و سیم متصل شوید
  • ESP-12F را با 2.2K از GPIO15 به GND ، EN به Vdd ، 4K7 GPIO13 به Vdd ، ورودی Alexa به GPIO13 ، درایور IR به GPIO14 ، 0V و Vdd تا 3.3V تشکیل دهید.
  • در صورت لزوم ، آشکارساز Alexa را تشکیل دهید و بافر پشتیبانی کنید.

توجه داشته باشید که اگر برنامه ای برای برنامه نویسی سریال یا تسهیلات موقت مانند این برای اتصال به پورت های سریال داشته باشید ، برنامه ریزی ESP-12F آسان تر است.

برنامه نویسی بعدی را می توان با استفاده از به روز رسانی OTA داخلی انجام داد.

مرحله 2: نرم افزار

ir Blaster از طرح آردوینو موجود در github استفاده می کند

این باید متناسب با شرایط محلی تنظیم شود و سپس در محیط esp8266 Arduino کامپایل شود.

کتابخانه های زیر مورد نیاز است ، اکثر آنها استاندارد هستند یا می توانند اضافه شوند. دو مورد آخر در git گنجانده شده است.

  • ESP8266WiFi
  • ESP8266WebServer
  • FS.h
  • DNSServer
  • ESP8266mDNS
  • ESP8266HTTP سرور به روز رسانی
  • آردوینوجسون
  • BitTx (شامل Git)
  • BitMessages (شامل Git)

موارد موجود در طرح قابل تغییر عبارتند از:

  • کد مجوز برای دسترسی به وب AP_AUTHID
  • رمز عبور مدیر WFI WM_PASSWORD
  • سیستم عامل رمز عبور OTA update_password
  • دستگاههای IR جدید / کدهای دکمه (بعداً ببینید)

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

با استفاده از SPIFFS ، حافظه را باید با نصب و استفاده از ابزار بارگذاری arduino ESP8266 Sketch Data آماده کنید. با این کار پوشه داده ها به عنوان محتوای اولیه SPIFFS بارگذاری می شود

هنگامی که دستگاه نمی تواند به شبکه محلی متصل شود (همانطور که اولین بار اتفاق می افتد) ، مدیر Wifi یک نقطه دسترسی ایجاد می کند (192.168.4.1). از طریق تلفن یا رایانه لوحی به این شبکه متصل شوید و سپس به 192.168.4.1 بروید و یک رابط وب برای اتصال به وای فای محلی دریافت خواهید کرد. دسترسی های بعدی از این استفاده خواهد کرد. اگر شبکه محلی تغییر کند ، به این حالت پیکربندی باز می گردد.

به روز رسانی بعدی ممکن است با کامپایل یک فایل باینری صادراتی در محیط آردوینو و سپس دسترسی به رابط OTA در ip/firmware انجام شود.

مرحله 3: کدهای دستگاه / دکمه را اضافه کنید

توجه: این بخش نسبت به روش قبلی که پیکربندی قبلاً در کد کامپایل شده بود تغییر کرده است. اکنون از فایل هایی استفاده می کند که از سیستم پرونده SPIFF بارگیری می شوند. این کار بارگذاری تعاریف جدید را بسیار ساده تر می کند.

تعاریف دکمه در فایل buttonnames.txt گنجانده شده است. این یک لیست جهانی از نام ها در تمام ریموت های مورد استفاده است ، زیرا بسیاری از نامها متداول هستند. همانطور که ارائه شده است این شامل جزئیات مربوط به ریموت هایی است که من استفاده می کنم. نوشته های جدید را می توان اضافه کرد. درمجموع برای 160 نام فضا وجود دارد اما با تنظیم ثابت در bitMessages.h و کامپایل مجدد می توان این نام را افزایش داد. اسامی تعریف شده در اینجا اسامی هستند که هنگام ارسال دستورات باید استفاده شوند.

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

بخش پیکربندی در ابتدای فایل دستگاه شامل پارامترهایی است که هنگام ارسال کد باید استفاده شود. اولین ورودی ، نام devicen است که هنگام ارسال یک فرمان استفاده می شود. پارامترهای دیگر در readme در سایت کد توضیح داده شده است.

بیشتر ریموت ها به یکی از 3 دسته پروتکل (nec ، rc5 و rc6) تعلق دارند. nec احتمالاً رایج ترین است و ساختار هدر ساده و زمان بندی بیت دارد. یک نوع کوچک از آن وجود دارد که فقط در زمان بندی نبض هدر متفاوت است. rc5 و rc6 پروتکل هایی هستند که توسط فیلیپس تعریف شده اند اما توسط برخی دیگر از تولیدکنندگان نیز مورد استفاده قرار می گیرند. آنها کمی پیچیده تر هستند و به طور خاص rc6 برای یکی از بیت ها نیاز به زمان بندی خاصی دارد.

برای ضبط کدهای یک ریموت جدید ، از گیرنده مادون قرمز (TSOP) استفاده می کنم که معمولاً با گیرنده های راه دور وصل می شود. این رمزگشایی اولیه را انجام می دهد و یک خروجی سطح منطقی می دهد. آنها معمولاً دارای جک 3.5 میلی متری با اتصالات +5V ، GND ، DATA هستند. من یکی را قربانی کردم ، سرب را کوتاه کردم و آن را از طریق بافر معکوس 3.3 ولت قرار دادم تا پین GPIO را با رزبری پای تغذیه کنم.

سپس از ابزار python rxir.py (در پوشه git tools) برای ضبط کدها استفاده می کنم. برای سهولت استفاده از ضبط تعداد زیادی دکمه ، ابزار از یک فایل تعریف متن برای تعریف دکمه های کنترل از راه دور استفاده می کند و فقط نام دکمه های یک گروه در کنترل از راه دور است. به عنوان مثال ، یکی ممکن است یک ریموت جدید سونی داشته باشد و یکی 3 فایل متنی به نام sonytv-cursor ، sonytv-numbers ، sonytv-playcontrols هر یک با نام دکمه های مربوطه تنظیم کند. این ابزار برای دستگاه (sonytv) ، بخش (مکان نما) و از کدام پروتکل استفاده کنید (nec، nec1، rc5 ، rc6). سپس به صورت متوالی برای هر دکمه فشار داده و نتایج را در یک فایل sonytv-ircodes می نویسد. در صورت لزوم برای بررسی خوب بودن عکس ها ، بخش ها را می توان تکرار کرد. بیت های فایل.ircodes را می توان در جداول BitDevices ویرایش کرد.

مرحله 4: کنترل وب و ماکروها

کنترل اصلی وب یا یک دریافت واحد یا یک پست json است که ممکن است دارای یک دنباله باشد.

get to /ir دارای 6 پارامتر است

  • author - حاوی کد مجوز
  • دستگاه - نام دستگاه از راه دور
  • پارامتر - نام دکمه
  • بیت - تعداد بیت اختیاری
  • تکرار - تعداد تکرار اختیاری
  • منتظر بمانید - تاخیر در ثانیه قبل از اجرای دستور بعدی.

این دستگاه همچنین می تواند "تاخیر" داشته باشد تا فقط یک تاخیر دریافت کند ، "ماکرو" برای استفاده از ماکرو اشاره شده توسط پارامتر ، یا "تشخیص" برای استفاده از ویژگی تشخیص الکسا (بعداً مراجعه کنید).

پست به /irjson از ساختار json مانند تشکیل شده است

{

"auth": "1234" ،

"دستورات": [{"device": "yamahaAV" ، "parameter": "hdmi4" ، "wait": "5000" ، "bit": "0" ، "repeat": "1"} ،

}

دنباله می تواند هر طول داشته باشد و دستگاه ها ممکن است مرجع کلان باشند.

ممکن است برای تعریف ماکروها از همین ساختار استفاده شود. فقط کلان را وارد کنید: "نام کلان" ، در سطح بالا به عنوان مثال پس از author محتویات واقعی در فایلی به نام macroname.txt ذخیره می شود

ماکروها را می توان با تعریف آنها بدون "دستور" حذف کرد.

سایر دستورات وب

  • /اخیر (لیست فعالیت های اخیر)
  • /چک (وضعیت اولیه را نشان می دهد)
  • / (یک فرم وب را برای ارسال دستی دستورات بارگذاری می کند)
  • / ویرایش (بارگذاری یک فرم وب برای مشاهده لیست فایل ها و حذف/ بارگذاری فایل ها)
  • /edit؟ file = filename (مشاهده محتویات یک فایل خاص)
  • /بارگذاری مجدد (نام دکمه ها و فایل های دستگاه را بارگیری مجدد کنید. پس از تغییر هر یک از این موارد استفاده کنید)

مرحله 5: کنترل صدا Alexa با استفاده از IFTTT

ساده ترین راه استفاده از ir Blaster با Alexa استفاده از IFTTT به عنوان دروازه است.

ابتدا پورت مورد استفاده برای بلاستر خود را در روتر خود به جلو ارسال کنید تا از طریق اینترنت قابل دسترسی باشد. این می تواند خوب باشد که از سرویس dns مانند freedns برای نامگذاری ip خارجی روترهای خود استفاده کنید و در صورت تغییر این IP کار با آن آسان تر شود.

یک حساب IFTTT تنظیم کنید و کانال Maker Webhooks و کانال Alexa را فعال کنید. وقتی این کار را انجام می دهید برای فعال کردن دسترسی IFTT باید وارد سایت آمازون شوید.

با استفاده از کانال IFTTT Alexa یک ماشه IF ایجاد کنید ، عمل را بر اساس یک عبارت انتخاب کنید و عبارت مورد نظر خود را وارد کنید (به عنوان مثال حجم صدا).

با انتخاب کانال Maker webhooks اقدام را ایجاد کنید. چیزی شبیه به قسمت URL وارد کنید

myip: port/irjson؟ plain = {"auth": "1234"، "comm…

این عمل به ir blaster ارسال می شود و در آنجا سعی می کند حجم دهی کلان را اجرا کند. اگر بخواهید می توانید یک دستگاه/دکمه خاص در اینجا داشته باشید ، اما من بهتر می دانم که ماکروها را تعریف و استفاده کنم زیرا در این صورت توالی عملکرد را می توان به سادگی با تعریف مجدد کلان تغییر داد.

برای هر فرمان یک اپلت IFTTT جداگانه مورد نیاز است.

مرحله ششم: مهارت صوتی بومی الکسا

به جای IFTTT می توان یک مهارت سفارشی در توسعه Alexa ایجاد کرد. این همه پردازش را در یک مکان متمرکز می کند و به این معنی است که نیازی نیست برای هر دکمه اقدامات جداگانه ایجاد کنید.

شما باید به عنوان توسعه دهنده Amazon Alexa ثبت نام کنید و باید در سرویس lambda کنسول AWS Amazon ثبت نام کنید. شما همچنین باید به آموزش ها نگاه کنید تا کمی این روند را درک کنید.

در سمت توسعه دهنده Alexa شما باید یک مهارت سفارشی جدید ایجاد کنید ، کلمه راه اندازی آن را وارد کرده و لیستی از کلمات فرمان مانند افزایش صدا ، راهنما و غیره ایجاد کنید.

سپس الکسا این عبارت را به برنامه ای که روی سرویس lamda اجرا می شود ارسال می کند و این عبارت را تفسیر می کند و با یک آدرس اینترنتی به Ir blaster تماس می گیرد تا عمل کند.

من الگوی Alexa قصد و عملکرد کنسول lambda را که در git استفاده می کنم قرار داده ام. URL باید برای ارجاع به IP مناسب و دارای مجوز مناسب اصلاح شود. برای ساده تر بودن ، توابع لامبدا ماکرو را صدا می زند که دارای نسخه کوچک این عبارت است. همچنین سعی می کند کلمه کلیدی ماشه ای را که گاهی می تواند شامل شود حذف کند. به عنوان مثال. blaster VOLUME up اگر کلمه ماشه بلاستر باشد کلان به نام حجم دهی صدا می کند.

مرحله 7: Alexa Activate Detector

اگرچه تشخیص صدا Echo / Dot خوب است ، اما اگر صدا از تلویزیون پخش شود ، گاهی اوقات گیج می شود مگر اینکه نزدیک شوید و با صدای بلند صحبت کنید.

برای بهبود این امر ، یک آشکارساز فعال به نقطه خود اضافه کردم. به محض کلمه کلیدی (الکسا گفته می شود) حلقه LED ها روشن می شود. آشکارساز آن را به بلستر وارد می کند و از ماکرو alexaon برای خاموش کردن تلویزیون استفاده می کند ، به همین ترتیب در پایان پردازش فرمان چراغ ها خاموش می شوند و ماکرو alexaoff صدا را بازیابی می کند.

برای روشن و خاموش کردن این دستور می توان از دستور “detection” نیز استفاده کرد. بنابراین برای مثال من از ماکرو Turnon اولیه برای فعال کردن تشخیص و ماکرو Turnoff برای غیرفعال کردن آن استفاده می کنم. این همچنین می تواند در ماکروهای اکشن برای پشتیبانی از یک کوماند بی صدا و بیصدا استفاده شود که در غیر این صورت مشکل ساز خواهد بود.

آشکارساز فیزیکی یک مقاومت وابسته به نور است که مدار از آن پشتیبانی می کند. من با یک براکت پرینت سه بعدی ، معدن را روی نقطه سوار می کنم

توصیه شده: