Съдържание:

Инфрачервен бластер ESP-12: 7 стъпки
Инфрачервен бластер ESP-12: 7 стъпки

Видео: Инфрачервен бластер ESP-12: 7 стъпки

Видео: Инфрачервен бластер ESP-12: 7 стъпки
Видео: Underpants - Концовка Геноцида (СПОЙЛЕРЫ) 2024, Юли
Anonim
Инфрачервен бластер ESP-12
Инфрачервен бластер ESP-12

Инфрачервен бластер за дистанционно управление, използващ esp8266

Предава кодове за дистанционно управление, получени от мрежата, поддържащи множество устройства за изход.

Вградена проста уеб страница главно за тестване.

Нормалната употреба се осъществява чрез POST съобщения, които могат да идват от уеб страници или от гласово управление IFTTT / Alexa.

Поддържа детектор за активиране на Amazon Echo / Dot за заглушаване / успокояване веднага щом се произнесе дума за активиране.

Командите са или единични команди, или последователности. Последователностите могат да се съхраняват като именовани макроси, които след това могат да се използват като команди или в други последователности.

Скорошната история и списък с макроси могат да бъдат получени чрез уеб интерфейса

Поддържа OTA качване на нов фърмуер и използва библиотеката WifiManager за първоначална настройка на wifi

Стъпка 1: Хардуер

Хардуер
Хардуер
Хардуер
Хардуер

Използва следните компоненти

  • Модул ESP-12F
  • 3.3V регулатор (MP2307 мини долар регулатор)
  • MOSFET превключватели (AO3400)
  • Инфрачервен излъчвател (3 мм)
  • Светлозависим резистор GL2258 (допълнителен детектор за активност на Alexa)
  • Резистори
  • Кондензатор за отделяне (20uF)
  • USB женски контакт (за предпочитане спойка с втулка
  • 3 -пинова IC гнездова лента за Alexa детектор
  • Механични части (могат да бъдат отпечатани 3D)

Може да се сглоби в кутия за проекти ESP-12F

  • Прикрепете регулатора към USB конектора и го поставете в кутията
  • Направете IR драйвер върху малко парче vero платка (3 проводника, +5V, 0V вход за порта)
  • Свържете IR драйвера към USB +5V, 0V
  • Поставете 3 -пинов IC контакт в кутията за проекти, ако използвате Alexa детектор. Свържете към +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 използва скица на Arduino, налична в github

Това трябва да се коригира според местните условия и след това да се компилира в среда esp8266 Arduino.

Необходими са следните библиотеки, повечето са стандартни или могат да бъдат добавени. Последните две са включени в git.

  • ESP8266WiFi
  • ESP8266WebServer
  • FS.h
  • DNS сървър
  • ESP8266mDNS
  • ESP8266HTTPUpdateServer
  • ArduinoJson
  • BitTx (включен в Git)
  • BitMessages (включени в Git)

Елементите в скицата, които трябва да бъдат променени, включват

  • Код за оторизация за достъп до мрежата AP_AUTHID
  • Парола на Wfi мениджър WM_PASSWORD
  • парола за OTA за фърмуер update_password
  • Нови IR устройства / кодове на бутони (вижте по -късно)

След като това е направено, първо трябва да се качи с помощта на конвенционално серийно качване.

Тъй като се използва SPIFFS, паметта трябва да бъде подготвена чрез инсталиране и използване на инструмента за качване на данни за скица arduino ESP8266. Това ще качи папката с данни като първоначално съдържание на SPIFFS

Когато устройството не може да се свърже с локалната мрежа (както ще се случи за първи път), Wi -Fi мениджърът ще създаде точка за достъп (192.168.4.1). Свържете се с тази мрежа от телефон или таблет, след което отворете 192.168.4.1 Ще получите уеб интерфейс за свързване с локалния wifi. Следващите достъпи ще използват това. Ако локалната мрежа се промени, тя ще се върне към този режим на конфигуриране.

Последваща актуализация може да се извърши чрез компилиране на двоичен файл за експортиране в среда Arduino и след това достъп до OTA интерфейса на ip/фърмуер.

Стъпка 3: Добавете кодове на устройства / бутони

Забележка: Този раздел се е променил от предишния метод, където конфигурацията, която преди това е била компилирана в кода. Сега той използва файлове, които се зареждат от файловата система на SPIFF. Това прави много по -лесно качването на нови дефиниции.

Определенията на бутоните са включени във файла buttonnames.txt. Това е глобален списък с имена на всички дистанционни управления, тъй като много имена са често срещани. Както е предоставено, това съдържа подробности за дистанционното управление, което използвам. Могат да се добавят нови записи. Има място за общо 160 имена, но това може да се увеличи чрез коригиране на константи в bitMessages.h и прекомпилиране. Определените тук имена са имената, които трябва да се използват при изпращане на команди.

Всяко отдалечено устройство е дефинирано във файл, наречен dev_remotename. Състои се от конфигурационна секция в горната част и след това таблица за картографиране от имена на бутони до кодове, които представляват шестнадесетични низове, съдържащи битовете, които трябва да бъдат изпратени. Трябва да се дефинират само необходимите имена на бутони.

Разделът за конфигуриране в началото на файл с устройство съдържа параметри, които да се използват при изпращане на код. Първият запис е името на устройството, което се използва при изпращане на команда. Други параметри са описани в readme на кодовия сайт.

Повечето дистанционни управления принадлежат към една от 3 категории протоколи (nec, rc5 и rc6). nec е може би най -често срещаният и има проста структура на заглавието и време на битове. Има малък вариант на това, който се различава само по време на импулса на заглавката. rc5 и rc6 са протоколи, дефинирани от Philips, но използвани и от някои други производители. Те са малко по -сложни и по -специално rc6 има специално изискване за време за един от битовете.

За да уловя кодовете за ново дистанционно, използвам IR приемник (TSOP), който обикновено се използва с включени отдалечени приемници. Това прави основното декодиране и дава изход на логическо ниво. Обикновено се доставят с 3.5 мм жак с +5V, GND, DATA връзки. Аз пожертвах един, скъсих проводника и го пуснах през инвертиращ 3.3V буфер, за да захранвам GPIO щифт на Raspberry Pi.

След това използвам инструмент python rxir.py (в папката git tools) за улавяне на кодове. За да улесни използването на заснемането на голям брой бутони, инструментът използва файл с дефиниция на текст, за да дефинира бутоните на дистанционното и е само имената на бутоните в група на дистанционното. Например, може да има ново дистанционно за Sony и да се настроят 3 текстови файла, наречени sonytv-курсор, sonytv-номера, sonytv-playcontrols всеки със съответните имена на бутоните. Инструментът ще подкани за устройството (sonytv), секцията (курсор) и кой протокол да се използва (nec, nec1, rc5, rc6). След това той ще подкани последователно за всяко натискане на бутон и ще запише резултатите във файл sonytv-ircodes. Разделите могат да се повтарят, ако е необходимо, за да се провери дали снимките са добри. Битове от.ircode файла могат да бъдат редактирани в таблиците на BitDevices.

Стъпка 4: Уеб контрол и макроси

Основният уеб контрол е или единичен get, или json пост, който може да съдържа последователност.

Достъпът до /ir има 6 параметъра

  • auth - съдържащ кода за оторизация
  • устройство - името на отдалеченото устройство
  • параметър - името на бутона
  • bits - незадължителен брой битове
  • repeat - незадължителен брой повторения
  • чакане - забавяне в мсекунди, преди следващата команда да може да бъде изпълнена.

Устройството може също да бъде „нулево“, за да получи само забавяне, „макро“, за да използва макроса, посочен от параметъра, или „откриване“, за да използва функцията за откриване на Alexa (вижте по -късно).

Публикацията към /irjson се състои от json структура като

{

"auth": "1234", "команди": [{"device": "yamahaAV", "parameter": "hdmi4", "wait": "5000", "bits": "0", "repeat": "1"}, {"device": "yamahaAV", "parameter": "mute", "wait": "100", "bits": "0", "repeat": "1"}]

}

Последователността може да бъде с всякаква дължина, а устройствата могат да бъдат препратки към макроси.

Същата структура може да се използва за определяне на макроси. Просто включете макрос: „макроиме“, на най -високо ниво напр. след авт. Действителното съдържание се съхранява във файл, наречен macroname.txt

Макросите могат да бъдат изтрити, като ги дефинирате без "команди".

Други уеб команди

  • /наскоро (изброява скорошна активност)
  • /check (показва основно състояние)
  • / (зарежда уеб формуляр за изпращане на команди ръчно)
  • / редактиране (зарежда уеб формуляр за преглед на списъка с файлове и изтриване/ качване на файлове)
  • /edit? file = filename (преглед на съдържанието на конкретен файл)
  • /презареждане (презарежда имената на бутоните и файловете на устройството. Използвайте след смяна на някое от тях)

Стъпка 5: Гласов контрол на Alexa с помощта на IFTTT

Най -простият начин да използвате ir Blaster с Alexa е да използвате IFTTT като шлюз.

Първо пренасочете порта, използван към вашия бластер във вашия рутер, така че да е достъпен от интернет. Може да е добре да използвате dns услуга като Freedns, за да дадете на вашите рутери външно ip име и да улесните обработката, ако този ip се промени.

Настройте IFTTT акаунт и активирайте канала Maker Webhooks и канала Alexa. Когато направите това, ще трябва да влезете в сайта на Amazon, за да активирате достъпа по IFTT.

Създайте тригер за IF, като използвате канала на IFTTT Alexa, изберете действието въз основа на фраза и въведете желаната фраза (напр. Увеличаване на силата на звука).

Създайте действието, като изберете канала за създаване на уеб куки на Maker. Въведете в полето за URL нещо подобно

myip: port/irjson? plain = {"auth": "1234", "comm …

Това действие ще бъде изпратено до ir blaster, където ще се опита да изпълни увеличаване на макроса. Тук може да има конкретно устройство/бутони, ако се иска, но намирам за по -добре да дефинираме и използваме макроси, защото тогава последователността на действията може лесно да се промени само чрез предефиниране на макроса.

За всяка команда е необходим отделен аплет IFTTT.

Стъпка 6: Собствен гласов умение Alexa

Вместо IFTTT човек може да изгради персонализирано умение в развитието на Alexa. Това централизира цялата обработка на едно място и означава, че не е нужно да създавате отделни действия за всеки бутон.

Трябва да се регистрирате като разработчик на Amazon Alexa и да се регистрирате в ламбда услугата на конзолата Amazon AWS. Също така ще трябва да разгледате уроците, за да разберете малко процеса.

От страна на разработчика на Alexa трябва да създадете ново персонализирано умение, да въведете задействащата му дума и да създадете списък с командни думи като увеличаване на звука, ръководство и т.н.

След това Alexa изпраща фразата до програма, работеща в услугата lamda, която интерпретира фразата и прави URL извикване към Ir бластера, за да я изпълни.

Включих схемата за намерение на Alexa и ламбда функцията на конзолата, която използвам в git. URL адресът ще трябва да бъде променен, за да се позовава на подходящия ip и да има правилното разрешение. За да опростим, ламбда функциите извикват макрос, който има отделена от пробела малка буква на фразата. Той също така се опитва да премахне ключовата дума за задействане, която понякога може да бъде включена. Напр. blaster VOLUME up ще извика макрос, наречен volumeup, ако задействащата дума е blaster.

Стъпка 7: Alexa активирайте детектора

Въпреки че разпознаването на глас Echo / Dot е добро, понякога може да се обърка, ако звукът се възпроизвежда от например телевизор, освен ако не се приближите и не говорите силно.

За да подобря това, добавих детектор за активиране към моята точка. Веднага след като ключовата дума (Alexa се казва) пръстенът от светодиоди светва. Детекторът подава това в бластера, където ще използва макроса alexaon, за да заглуши телевизора, по същия начин в края на обработката на команда светлините изгасват и макросът alexaoff възстановява звука.

Командата „откриване“също може да се използва за включване и изключване на това. Така че например използвам първоначалния макрос за завъртане, за да активирам откриването, и макроса за изключване, за да го деактивирам. Това може да се използва и в макросите за действие, за да се поддържа истинска команда за изключване и включване на звука, която иначе би била проблематична.

Физическият детектор е светлозависим резистор, който веригата поддържа. Монтирам моята на Dot с 3D отпечатана скоба

Препоръчано: