IRblaster
ฝัง
- เผยแพร่เมื่อ 13 ก.ย. 2024
- Пульт дистанционного управления по ИК-диапазону на ESP8266 с поддержкой Web, MQTT и расписания.
Используются библиотеки PubSubClient из стандартного репозитория Arduino IDE и IRremoteESP8266 (github.com/mar....
Код примера копирования ИК-посылки: drive.google.c...
Код скетча ИК-пульта: drive.google.c...
В ролике прозвучали композиции "Promise" из "Silent Hill 2 OST" (Akira Yamaoka), "A time for us" из к/ф "Ромео и Джульетта" (The O'Neill Brothers) и "Спокойная ночь" (Виктор Цой).
Прекрасно!!! Что сказать, думал как обычно придется собирать по крупицам информацию, а тут все что нужно было и сразу. И чтение и запись (IR) Я тоже недавно "пересел" на ESP платформу и захотелось этакого Wi-Fi - IR гейта. И только начал искать, как этот ролик!!! Респект автору!!!
Спасибо за Ваш труд!
Спасибо, Алексей!!! Вчера до 3 ночи ( после основной работы) испытывал ваш код и схемное решение, на разных устройствах: ТВ LG, Кондиционер Daikin. Пульт TV LG сканируется на Ура и управление идет великолепно. Кондиционер Daikin сканируется, с переменным успехом. Управление вообще не как. Что помогло мне ( Может еще кому-то то же поможет) . Анализ схем управления IR - показала что R = 100 Ом - многовато. IR работает редко и в импульсном режиме. У меня дальность на ТВ значительно возрастает при уменьшении R до 50 Om ( допаял второй параллельно в 100 Ом). Работает даже, направляя светодиод в другую сторону от ТВ, т.е. на отраженном сигнале. В схемах я видел, что некоторые ставят чуть ли не 5,6 Ом. Я думаю Светодиод сгорит, если случайно его зажечь на долгое время, а в импульсе и Транзистор справляется и светодиод не успевает сгореть. С кондиционером решение взял из той же что и Вы библиотеки IRremoteESP8266. У автора есть пример для данного кондиционера тоже. Еще раз Спасибо за Ваш код. Как всегда кстати.
В большинстве китайских пультов токоограничением не парятся, но там правда и питание 3 В.
А так да, в короткоимпульсном режиме можно превышать пределы по току до поры до времени. :) Т.е. можно запитать ИК-диод от 3.3 В и обойтись без резистора совсем.
А с кондеями надо увеличивать время распознавания посылки, моих 45 мс для них видимо мало, но тогда обычные пульты могут хуже распознаваться. С другой стороны, читать пульты можно на отдельном скетче с высокой толерантностью к длине посылки, а сами коды заливать через веб-интерфейс.
ок, спасибо за идею. Попробую еще поиграться временем распознавания посылки
Alex Morozov а импульсы диодов вы ШИМом залняете при перелач частота вроде как должна быть 38.5кГц, если не ошибаюсь.
Я как выше написал, у меня напрямую нормально уже год работает. Может и правда повезло с диодом. :) Правда долгим свечением первый диод спалил сразу (не к той ноге подключил).
Привет! Очень полезное для меня видео, спасибо за библиотеки и Ваш код!
Домучал я все-таки этот бластер. Собрал на esp-01. Nodemcu стало жалко. К стати, обратил внимание, что на esp-01 небыло ни одного ложного считывания кодов с любого пульта. У меня их тьма. Автору еще раз спасибо!
Спасибо за прекрасное устройство для Majordomo!
Да классно, но можно еще добавить больше пультов для обучения и используя только одну раскладку клавиш в вебморде, просто переключая пульты. Так же можно добавить режим конвертора кодов, например что бы можно было сделать из любого не нужного ИК пульта универсальный пульт, просто с его клавиатуры переключать конвертацию кодов на др. пульт.
Из "конвертера" кодов одного пульта на другой от товарища Букреева и родилась идея этого проекта (он использовал Ардуину и хардкодил коды кнопок в скетче). Но у нас же мощь вай-фая, а значит можно на веб-морду на телефоне все возложить.
Я взял из старого пульта ИК светодиод вместе с транзистором и сопротивлениями (запитывается 3,3в) там токоограничивающий резистор 1,5 ом, работает отлично и даже отраженным от стен сигналом.
Спасибо за интересный код ! А передатчик ( инфракрасный светодиод, транзистор ну и обвязку ) можно взять из того же пульта ))) по стоимости они все равно стоят копейки и там уже все оптимально подобрано...
Отличное устройство! Вот только б текущее время на главную страничку вынести как это на страничке настройки времени.. ну это можно и самому как домашнее задание )
Я такую же штуку сделал, мне повезло с диодом. :) Подключил на прямую к ноге МК и 5 метров легко (больше просто размер комнаты не позволял), даже от стены хорошо принимали приборы. Тут с ними же еще вопрос направления, у них угол свечения до 40 градусов по моему, попробуй прямо на приемник направить и отходить (если не пробовал). :)
Эх, еще бы андроид приложение под этот проект.
У светодиодов узкая направленность, нужно направлять в сторону устройства, Даже не все телевизоры не воспринимают отраженный сигнал от стен с родными пультами, а вот направленный напрямую дальность сразу становится большой!
Спасибо! То, что надо!
Спасибо за полезные видео. Слышал ли что то о Bluetooth Mesh? Как по мне идея интересная технология, интересует твое мнение о ней.
Не слышал и не понимаю, какое это имеет отношение к ролику.
к видео никакого отношения, но ета технология релизнулась окло двух месяцев назад, позволяет строить сети по принципу паутины и поддерживает подписку на события как MQTT видел о ней онлайн презентацию, вот и решил узнать твое мнение о том стоит ли на нее обращать внимание или нет.
Добрый день.
Возникла трудность с часовым поясом.
При установке будильника время надо устанавливать по гринвичу, а отображает время правильно + часовой пояс.
В какой строчку надо приплюсовать часовой пояс чтобы будильник выставлять по местному времени?
По хорошему надо уходить от получения времени от SDK, а то китайцы опять что-то поменяют. Пока они начали судя по всему возвращать время в GMT, а часовой пояс используют только для преобразования времени в строку.
Попробуйте изменить в файле ESPWeb.cpp
uint32_t ESPWebBase::getTime() {
if ((WiFi.getMode() == WIFI_STA) && (*_ntpServer1 || *_ntpServer2 || *_ntpServer3) && ((! _lastNtpTime) || (_ntpUpdateInterval && (millis() - _lastNtpUpdate >= _ntpUpdateInterval)))) {
uint32_t now = sntp_get_current_timestamp();
if (now > 1483228800UL) { // 01.01.2017 0:00:00
_lastNtpTime = now;
последнюю строку на
_lastNtpTime = now + _ntpTimeZone * 3600;
Алексей, спасибо вам за труды, я часто пересматриваю ваши видео и многие из них скачал на всякий случай - если вдруг что с ютюбом ). Есть просьбы к вам... если вы можете оказать услугу за указанное вами вознаграждение... Как с вами связаться по этому вопросу!?
Вроде где-то должен быть адрес для связи, но я свой и так светил неоднократно в разных видео, так что пишите на moonfox2006@gmail.com
Alex Morozov я вам отправил письмо, надеюсь вы его получили!
Добрый день! Подскажите, ESP_IRblaster поддерживает 64 битные посылки? Настраиваю для сплит системы, какой таймаут не ввожу, пишет "IR sequence too big!". IRxerox показывает длину посылки 211. Для любой другой бытовой техники у меня все прекрасно отрабатывает, но кондиционер победить не могу
Код делался во времена, когда IRremoteESP8266 оперировала 32-х битными кодами, для новых версий библиотеки просто приведение к uint32_t используется, надо код чуть исправить.
@@alexmorozov73 спасибо, разобрался
Блин круто! То что искал! А как то это от соседей можно запоролить?
Установить пароль для простого пользователя в настройках WiFi, тогда на главную страницу будет не попасть. Да и пароль администратора сменить на что-то более криптостойкое.
Alex Morozov я про то, чтоб открыть порт в инет. Мне нужно управлять техникой дома по ик не из дома.( кондер и робот-пылесос) Сеть общегородская, постоянно кто-то сканирует порты, начнут баловаться включая все подряд.
CloudMQTT в помощь.
What is wifi SSID and password for WiFi configuration
Тут применялся модуль esp1? Если использовать esp12e, то будет больше памяти? Спасибо!
Где вы ESP1 увидели? Это ESP12 с 4 МБ флеша. И на что памяти не хватает?
It's not working please help
Здравствуйте! Уменьшается heap, из-за чего периодические перезагрузки. Какая может быть причина?
Вероятно кривая версия пакета поддержки Arduino для ESP8266. Попробуйте или обновить на крайнюю, или если уже она, то откатить на какую-нибудь 2.4.2 и посмотреть, что будет с кучей.
спасибо, откат на 2.4.2 помог
Hi ! i want send code hex for IR to server . but I using command
client.send("atime", (uint32_t)results->value, "rawBufLen" ); is error .please help me. thanks a lot !
Доброго времени суток, возникает такой вопрос... а что если за место ик приемника присоединить приемник на 433 мгц... передатчик тоже на 433... клонирование радиочастотных пультов заработает? Допустим что код не динамический. Или Библиотеки не увидят другие тайминги?
Если заменить библиотеку IRremote на RCSwitch и чуть поменять код... Особенно если посмотреть код для Sonoff с д/у... Только зачем такие сложности? :)
например, ворота открывать))) ну это так... просто идеи
добавьте еще какой-нибудь кошелёк
Наконец- то нормальная русская речь, я не расист, но когда шокают, хэкают и картавят, как-то не по себе...
Я вообще-то картавлю :)
Здравствуйте. Повторил ваш код все работает, но столкнулся с проблемой что после перерыва питания все настройки кнопок удаляются как можно это исправить?
Вы кнопку Save на странице Remote Setup не забыли нажать после добавления кодов?
Вся сохраненная конфигурация восстанавливается при перезагрузке.
А почему ты пишешь код страничек прям в теле скетча, формируя длинную строку? А не в виде нормальных текстов и располагая их в файловой системе. Я давно столкнулся (ещё на ардуине), что если формировать страничку в виде строки лезут косяки с отображением и непонятной не стабильной работой.
Чтобы связь была однозначной, а не тут забыл и там не вспомнил - а в итоге почему-то не работает. И потом, я использую вставку в код страниц констант, которые уж точно завязаны на скетч. А если при каждом старте формировать страницы в SPIFFS, то флеш долго не проживет.
Alex Morozov вот что мне нравится у тебя - это глубокое понимание того, что делаешь и как и умение это обьяснить... А если sd шилд прикрутить? Проект то растет, страничек все больше...
Проще от библиотеки ESP8266WebServer отказаться в пользу формирования страниц построчно, а не строковым объектом единовременно. Потеряем длину в байтах в заголовке HTTP, зато забудем о проблемах с памятью.
Мне при портировании на Mega так и пришлось сделать - вроде работает.
у меня почему-то при попытки считать код пульта ESP перезагружается
Версии поддержки ESP8266 для Arduino IDE, бутлоадера и библиотеки IRremoteESP8266 актуальные?
странно что светик не такой дальнобойный и почему он на видео у вас светится постоянно? может дело в этом? на камеру без сигнала светик светится не должен
Вы принимаете за свечение отблеск встроенного синего светодиода, который "дышит", показывая режим работы вай-фай.
нет, посмотри на 18 минуте, чётко видно что он светится, отблески от синего тоже видны но гораздо слабее
Спорить бессмысленно, вы полностью игнорируете наличие люминисцентной лампы в 40 см. сверху стола и глянцевую поверхность белого радиоприемника. Можете мне не верить, но прикрытый непрозрачной преградой светодиод не светится сам на камеру телефона от слова "совсем".
вот от лампы сверху может быть
Собрал схему эту, но не увидел саркировок запчастей крому транзистора. Купил ик диод sfh485-2 приемник tsop2136, но и собрал на nodemcu. Результат - не заработало. В nodemcu нет +5 вольт, может дело в этом? Либо там есть +5 вольт, но я не знаю какая нога. Я начинающий любитель. на 3,3 вольта может нужно собрать без резисторов и транзистора?
ИК-приемник судя по маркировке на 36 кГц, а пульты работают на 38, не факт что будет читать.
В NodeMCU есть 5 В естественно, при питании от USB это VU.
ИК диод будет работать и от 3.3 В с меньшим резистором или вовсе без него, но без транзистора ESP не даст достаточной силы тока.
Alex Morozov понял спасибо! Да прочитал сейчас, он на 36 кгц. завтра куплю другой.
И ИК-диод не на 940 нм, а на 880, т.е. тоже не подойдет. :)
Alex Morozov тоже куплю, спасибо!
Alex Morozov диод с приемником поменял все заработало, спасибо! Только при сканировании кода цифры лезут самопроивольно. Инога успеваю записать с кнопки. Через 5 минут мой nodencu зависает почему то.
Цой навеял фильм "Дурак" 2014
Здравствуйте может кто подскажет при компиляции ошибки сыпит...
C:\Users\Bones\Desktop\ESP_IRblaster\ESP_IRblaster\ESP_IRblaster.ino: In function 'void setup()':
ESP_IRblaster:1596:6: error: 'virtual void ESPIRBlaster::setup()' is protected
void setup() {
^
ESP_IRblaster:1601:14: error: within this context
app->setup();
^
C:\Users\Bones\Desktop\ESP_IRblaster\ESP_IRblaster\ESP_IRblaster.ino: In function 'void loop()':
ESP_IRblaster:1603:6: error: 'virtual void ESPIRBlaster::loop()' is protected
void loop() {
^
ESP_IRblaster:1604:13: error: within this context
app->loop();
^
exit status 1
'virtual void ESPIRBlaster::setup()' is protected
Или переименуйте по коду методы класса setup и loop (например добавьте _ в начало или конец имени) или компиллируйте под PlatformIO.
@@alexmorozov73 Спасибо за ответ уже сделал, работает))Не подскажите ик светодиот постоянно светить должен??Вроде все работает отлично, но через камеру видно что ик светодиот светит постоянно..Получается с D8 постоянно идет питание и коллектор открыт постоянно..видимо очень маленькое но открыть хватает
Вроде не должен светодиод гореть постоянно. Попробуйте его с ноги D8 переместить (и в коде подправить) на другую ногу, а то D8 через 10К на землю притянут, D3 и D4 через 10К к VCC тоже не очень варианты. Или резистор к базе транзистора попробуйте подобрать побольше.
не Яндекс