Нужна помощь по радиомодулю и ИК передатчику
- Войдите на сайт для отправки комментариев
Доброго времени суток! Нужна помощь реально разбирающихся людей в этой теме. Решил сделать умный дом на базе ардуино и готовых моделей.
Есть такая штучка http://www.aliexpress.com/item/Keyless-Entery-Door-Lock-Remote-Control-S... а так же есть несколько таких комплектов http://www.ebay.com/itm/261041100836?ssPageName=STRK:MEWNX:IT&_trksid=p3... Для программирования использовалась библиотека VirtualWare и её примеры. Пробовал принимать сигнал и от пульта и на одной плате ставить передатчик и приемник, но все без толку. Где-то что-то делаю не так, а что именно не могу разобраться. Так же есть проблема с посылкой полученного от пульта ИК сигнала. В этом все я новичок и пока все делаю по примерам.
В общем, нужен человек, который бы смог помочь разобраться с этими и другими проблемами, которые, скорее всего, будут возникать. Можем договорится на постоянную помощь или даже обучение некоторым вещам (не безвозмездно конечно).
Если кто-то сможет помочь в этом жду вас в личку.
Это не ИК. Потому с ик пульта ничего не получите. Про радиоканал расскажут те, кто знает.
То что это не ИК знаю. Я, наверное, не так выразился. По ИК - это как бы отдельная задача. Есть ИК приемник, удалось получить код с пульта и включать/выключать светодиод по нажатию разных кнопок. А как послать этот же код телику (от него использовал пульт) пока не разобрался. Только не могу понять причина в неправильном подключении передатчика, его выборе (есть пару модулей) или программе.
P.S. только увидел, что тут нету личных сообщений. Поэтому просьба откликнуться просто в тему.
С nehidd работаю совместно, поэтому хотел бы обратить внимание "не безвозмездно конечно" - научиться хочется, поэтому совсем не безвозмездно :). Можте кому-то и наши знания оптимизаторов помогут. Надеюсь ктонибудь, кто разбирается - откликнется.
В форуме много тем по ИК, поищите. Если в двух словах, то у каждого бренда своя кодировка. Есть библиотека IRremote, можно использовать её для начала. Во всяком случае можно посмотреть исходники.
А как послать этот же код телику (от него использовал пульт) пока не разобрался. Только не могу понять причина в неправильном подключении передатчика, его выборе (есть пару модулей) или программе.
А как вы посылаете этот же код телику можете описать? И что за передатчик? Там-же вроде одного инфракрасного диода достаточно.
А как послать этот же код телику (от него использовал пульт) пока не разобрался. Только не могу понять причина в неправильном подключении передатчика, его выборе (есть пару модулей) или программе.
А как вы посылаете этот же код телику можете описать? И что за передатчик? Там-же вроде одного инфракрасного диода достаточно.
C помощью указанной выше библиотке. Сначала получаю код кнопки с помощью одного скетча, потом посылаю его обратно. В IRremote есть примеры.
Но у меня возникла проблема с посылкой сигнала с помощью sendRaw. Например, телику четко посылается код через sendNec, а тот же код кнопки, но уже посланный sendRaw (посылаю уже, как массив полученных данныы) не хочет работать совсем. Может кто сталкивался с этим?
Сталкивался, разница в интервалах между посылками...
Сталкивался, разница в интервалах между посылками...
Как решали, если не секрет? Я делаю это так:
unsigned int powerOn[68] = {4818,8900,......};
irsend.sendRaw(powerOn, 68, 32);
Пробовал много разных вариантов и никакого результата. Может поделитесь опытом? :)
nehidd, зачем Вам это нужно? (sendRaw), sendNEC же работает.
Могу сказать, что если теликом или подобной аппаратурой управлять, то проблем нет, все протоколы описаны. А если кондиционером, например, то протоколы не описаны, потому в таких случаях RAW может и поможет, только не с этой библиотекой, она не очень точно (а это не всегда и нужно) измеряет интервалы.
Мне как раз кондиционером и надо управлять, но я уже понял, что задача это не всегда решаемая.
"nehidd, зачем Вам это нужно? (sendRaw), sendNEC же работает." - я просто думал, что делаю что-то не так с посылкой через Raw и поэтому не получается управлять тюнером и кондишкой.
Я так и подумал, тогда это не совсем тривиальная проблема. В какой то из тем я уже по этому поводу писал, есть мысли, но время ограничено только вечерами, потому не так скоро получается, как хотелось бы ;)
Еще, если у Вас реальные цифры:
То это ни под какой протокол не подходит. http://www.sbprojects.com/knowledge/ir/xsat.php здесь есть про протоколы, если инетересно.
Если хотите универсальности, придётся свою библиотеку писать, с концептуально иным подходом.
Записываем в буффер pulseln()ы, ищем повторяющиеся последовательности, находим конкретные тайминги, конкретной функции, конкретного устройства, которые потом можем легко воспроизвести и управлять любым устройством. Ну а в одном, конкретном случае, можно выгрузить последовательность через ком порт, и по искать самому в екселе.
Я так и подумал, тогда это не совсем тривиальная проблема. В какой то из тем я уже по этому поводу писал, есть мысли, но время ограничено только вечерами, потому не так скоро получается, как хотелось бы ;)
Еще, если у Вас реальные цифры:
То это ни под какой протокол не подходит. http://www.sbprojects.com/knowledge/ir/xsat.php здесь есть про протоколы, если инетересно.
Цифры реальные, полученный через примр библиотеки DUMP. мне тоже кажется, что с ними что-то не так, иначе бы телик работал. т.к. через NEC все работает отлично. У меня есть еще ТВ тюнер с неопознанным протоколом, там тоже глухо.
К сожалению в этом новичок и пока вряд ли смогу вычислить нужные значения.
Вот полный код
все коды начинаются примерно с одинаковых порядков чисел
А по радио модулю можете что-то сказать? На вид там все просто и примеры есть, а работать никак не хочет. Готов 500р. заплатить за дельный совет.
У Вас явно первое число 4818 - это из 0 элемента массива, оно - лишнее для кода, а если взять остальное, то остается код NEC. В 0 элементе хранится длительность паузы, до начала кода. Её выводить не нужно.
sendRaw считает, что первое число - это MARK, уберите его и всё получится. У Вас сейчас выводится "инверсный" код, вместо MARK - SPACE и наоборот. Попробуйте.
У Вас явно первое число 4818 - это из 0 элемента массива, оно - лишнее для кода, а если взять остальное, то остается код NEC. В 0 элементе хранится длительность паузы, до начала кода. Её выводить не нужно.
sendRaw считает, что первое число - это MARK, уберите его и всё получится. У Вас сейчас выводится "инверсный" код, вместо MARK - SPACE и наоборот. Попробуйте.
СПАСИБО ОГРОМНОЕ!!!! Да, действительно, убрал первую цифру и заработало. Тюнер конечно не четко, но там и с пульта не всегда получается, надо целиться. А посылаемый на него сигнал почему-то выключает на нем звук (пробовал 2 разных кода). Но и это круто!
P.S. Кондишка так и не заработала, но до этого, видимо, я еще не дорос.
Пока у меня осталась вообще не решена задача с радиомодулями(((
Кстати, в sendRaw можно задать частоту. Это может помочь для кондиционера, попробуйте ему скормить коды (без 0 элемента!) и третий параметр 56 (это частота 56 КГц). Возможно это сработает, кто знает. Отпишите результат, если попробуете.
УРААА! Все заработало! В общем проблема была в буфере, у меня длина в 228 получается. Я менял буфер на 200 и получал 200, но думал - это максимальная, как в в другой теме указано, а потом поставил 300 и получил уже все данные, которые отправились без проблем на частоте 36КГц. Еще раз большое спасибо за помощь!
nehidd, выложи код - тема уже встрачалась и может помочь другим.
Еще, уточни частоту (36 или 56) и тип кондиционера, чтобы совсем было понятно.
Вот код. Там через монитор вводится 1 - включается кондиционер, 2 - телевизор. Кондиционер Arvin. Частоту подобрал перебором и она оказалась 36КГц. Кондиционер включается ровно на тех параметрах, на которых была записана кнопка включения.
Отлично, хороший пример для подражания. Вопрос, проблема решена, информацией поделился ;)
nehidd, насколько возможно разобрать код на составляющие чтобы не запоминать все комбиначии пульта, а составлять их самостоятельно и отправлять ?
Объясните пожалуйста, почему длина = 228 ?
разобрался...по примеру
With that i got the RAW data from my Samsung remote control which was following
That HEX code didnt work at all, so i moved on to raw code. The first thing to do with the raw code is to remove the first numeric-value AND convert all negatives to positive values as following code shows:
And then send that code as RAW to the device:
Ну вот и я, наконец-то победил свой кондей!
Сперва как обычно, сграбил с пульта ИК-код с помощью примера IRrecvDump в библиотеке IRremote
и получил вот такой ИК-код
далее подкорректировал ИК-код как в примерах выше, залил скетч в ардуинку с полученным ИК-кодом и стал отпралвть его на ИК-диод, но кондишен упорно его игонорировал...
Сграбил ИК-код с ардуинки, с помощью IRrecvDump и получил в общем-то такой-же кода как с оригинального пульта.
После, еще нескольких подобных безрезультатных опытов пришел к выводу, что надо грабить ИК-код другим способом, не с помощью библиотеки IRremote.
На параллельном форуме нашел хороший пример и с помощью этого примера сразу сграбил ИК-код с пульта и с ардуинки, для их сравнения.
вот что получил 1-пульт 2-ардуинка
как оказалось, в конце ИК-кода с пульта всегда присутствовала некая серия нулей, а в ИК-коде с ардуинки их почему-то не было... видимо - это какое-то "слово" об окончании ИК-команды.
Тогда я предположил, что библиотека IRremote увидев в конце кода данную серию нулей решала, что ИК-код закончился и как бы обрезала его.... В общем я просто увеличил длинну ИК-кода и в место [132]-которую определила библиотека, я постаивл [133] и все сразу заработало - появилась серия недастающих нулей в ИК-коде и кондей стал бесприкословно выполнять ИК-команду Вкл-Выкл от ардуинки ))
Марка кондея McQuay.
Прошу помощи распознать что за пульт такой.В общем то сам пульт от вентилятора фирмы AEG,но вот его код ну никак через raw не хочет слаться.
Здравствуйте, устал уже разбираться и никак не пойму в чем дело. Китайские пистолеты для лазертага. Примники на частоте 38, спойокно принимают любые сигналы, но считать сам сигнал адекватно не получается каждый раз разные коды и всегда UNKNOWN Сравнивал уже по всякому. Друг с другом пистолеты работают корректно и все понимают, но смоделировать сигнал не получается. Тут два варианта кодов просканированных граббером из IR-Remote, в чем их отличие, и что надо изменить, чтобы их корректно считать?
Protocol=UNKNOWN Data=0xCC014102 (32 bits)
Result in internal ticks (50 us) - always without trailing gap
rawData[41]:
+ 32, - 8 + 8, - 8 + 6, - 10 + 8, - 8
+ 8, - 15 + 8, - 16 + 8, - 15 + 8, - 15
+ 7, - 9 + 8, - 8 + 8, - 8 + 7, - 9
+ 15, - 8 + 8, - 9 + 8, - 7 + 8, - 8
+ 16, - 8 + 7, - 9 + 8, - 7 + 16, - 15
+ 7
Result in microseconds - without trailing gap for IRremote versions >= 3.*
rawData[41]:
+1600, - 400 + 400, - 400 + 300, - 500 + 400, - 400
+ 400, - 750 + 400, - 800 + 400, - 750 + 400, - 750
+ 350, - 450 + 400, - 400 + 400, - 400 + 350, - 450
+ 750, - 400 + 400, - 450 + 400, - 350 + 400, - 400
+ 800, - 400 + 350, - 450 + 400, - 350 + 800, - 750
+ 350
Result as internal ticks (50 us) array - always without trailing gap
uint8_t rawTicks[41] = {32,8, 8,8, 6,10, 8,8, 8,15, 8,16, 8,15, 8,15, 7,9, 8,8, 8,8, 7,9, 15,8, 8,9, 8,7, 8,8, 16,8, 7,9, 8,7, 16,15, 7}; // Protocol=UNKNOWN Data=0xCC014102 (32 bits)
Result as microseconds array - with trailing gap for IRremote versions 2.*
uint16_t rawData[42] = {21810, 1600,400, 400,400, 300,500, 400,400, 400,750, 400,800, 400,750, 400,750, 350,450, 400,400, 400,400, 350,450, 750,400, 400,450, 400,350, 400,400, 800,400, 350,450, 400,350, 800,750, 350}; // Protocol=UNKNOWN Data=0xCC014102 (32 bits)
Pronto Hex as string
char ProntoData[] = "0000 006D 0015 0000 003E 000F 000F 000F 000C 0013 000F 000F 000F 001D 000F 001F 000F 001D 000F 001D 000D 0011 000F 000F 000F 000F 000D 0011 001D 000F 000F 0011 000F 000D 000F 000F 001F 000F 000D 0011 000F 000D 001F 001D 000D 0806 "
Protocol=UNKNOWN Data=0x9F5121E0 (32 bits)
Result in internal ticks (50 us) - always without trailing gap
rawData[41]:
+ 31, - 8 + 8, - 9 + 7, - 8 + 8, - 8
+ 8, - 16 + 7, - 16 + 7, - 16 + 7, - 17
+ 8, - 8 + 8, - 8 + 6, - 10 + 7, - 9
+ 15, - 8 + 8, - 8 + 6, - 10 + 7, - 9
+ 15, - 8 + 8, - 8 + 7, - 9 + 15, - 16
+ 8
Result in microseconds - without trailing gap for IRremote versions >= 3.*
rawData[41]:
+1550, - 400 + 400, - 450 + 350, - 400 + 400, - 400
+ 400, - 800 + 350, - 800 + 350, - 800 + 350, - 850
+ 400, - 400 + 400, - 400 + 300, - 500 + 350, - 450
+ 750, - 400 + 400, - 400 + 300, - 500 + 350, - 450
+ 750, - 400 + 400, - 400 + 350, - 450 + 750, - 800
+ 400
Result as internal ticks (50 us) array - always without trailing gap
uint8_t rawTicks[41] = {31,8, 8,9, 7,8, 8,8, 8,16, 7,16, 7,16, 7,17, 8,8, 8,8, 6,10, 7,9, 15,8, 8,8, 6,10, 7,9, 15,8, 8,8, 7,9, 15,16, 8}; // Protocol=UNKNOWN Data=0x9F5121E0 (32 bits)
Result as microseconds array - with trailing gap for IRremote versions 2.*
uint16_t rawData[42] = {21438, 1550,400, 400,450, 350,400, 400,400, 400,800, 350,800, 350,800, 350,850, 400,400, 400,400, 300,500, 350,450, 750,400, 400,400, 300,500, 350,450, 750,400, 400,400, 350,450, 750,800, 400}; // Protocol=UNKNOWN Data=0x9F5121E0 (32 bits)
Pronto Hex as string
char ProntoData[] = "0000 006D 0015 0000 003C 000F 000F 0011 000D 000F 000F 000F 000F 001F 000D 001F 000D 001F 000D 0021 000F 000F 000F 000F 000C 0013 000D 0011 001D 000F 000F 000F 000C 0013 000D 0011 001D 000F 000F 000F 000D 0011 001D 001F 000F 0806 "
спойокно принимают любые сигналы, но считать сам сигнал адекватно не получается каждый раз разные коды и всегда UNKNOWN
Когда в сигнала мусор это не "спокойно принимают".
Датчик в виде модуля с обвязкой, любые пульты, с любого расстояние код декодируют абсолютно спокойно, без всякого мусора. И про разные коды в данном варианте - с расстояния " в упор" , хотя остальные работают с 10 метров. Ключевой вопрос поэтому не в приемниках, а именно в сигнале с самих пистолетов, если код разбить на RAW, то его можно отправлять/принимать. НО тут как я понимаю в принципе у пистолетов есть вариабельность в таймингах, вопрос в каких и где
Ну если Вы читать не умеете, то Вам в шопу. А если умеете, то опубликуйте Ваши претензии к ардуинке правильно
считать сам сигнал адекватно не получается
если код разбить на RAW, то его можно отправлять/принимать.
Путаетесь в показаниях.
Я поэтому и скинул массивы с данными сигналов, т.е. они "верные", но этот протокол не читается как стандартный и тут два варианта этого сигнала, я пытаюсь понять чем они отличаются и как сделать, чтобы узнать все допуски у этого сигнала, чтобы сделать из него протокол или хотя бы понять логику их отправки и сделать подобие протокола. Я попросил глянуть профессиональным взглядом людей на эти два сигнала и предположить и ли достоверно сказать, чем они отличаются и какая тут закономерность.
А если уж Вы такой умный так продемонстрируйте свой ум, либо не занимайте свое и мое время на бесполезные комментарии)
А если уж Вы такой умный так продемонстрируйте свой ум, либо не занимайте свое и мое время на бесполезные комментарии)
Ваша квалификация недостаточна, чтобы суметь отличить полезный комментарий от бесполезного. Поэтому, если Вы чего-то не поняли, это совершенно не означает, что данный комментарий был бесполезным. Вам следовало бы затратить некоторые усилия и все-таки попытаться его понять. Иначе какой смысл помещать на форум вопросы, если Вы не желаете обдумывать полученные ответы?
Дело не в квалификации) Под бесполезным комментарием я подразумевал не ответ форумчанина, а комментарий про "путаетесь в показаниях", я не вижу в этой фразе ничего, для чего нужна хоть какая-то квалификация, а также ничего полезного к обдумыванию, это просто личное сообщение с нотками хамства.
И я уже затратил усилия, обдумал и написал ответ на него ответ, что считаю, что дело в другом. Что я уже предположил вариант приема "мусора", но это не так. Приемник абсолютно исправный и работает с любыми источниками корректно, кроме этих пистолетов. И что дело именно в них и в их каком-то тайминге, который они шлют по особому из-за чего библиотека его воспринимает некорректно и попросил помощи, скинув варианты таймингов, чтобы понять где "собака зарыта", так как здесь действительно моей квалификации не хватает.
не совсем понимаю, могу поподробнее описать проблему и что было сделано и как работает
Приемник абсолютно исправный и работает с любыми источниками корректно, кроме этих пистолетов.
Это значит, что приемник с пистолетами несовместим, дятел. Как тебе еще сказать?
Да, именно поэтому я и сказал, что приемник исправен и совместим)) ПРИЕМНИК ИЗ САМОГО ПИСТОЛЕТА, как он может быть несовместим с пистолетами, если он в них стоит?))) он принимает корректно коды любых пультов и декодирует их в IT-Remote на базовой частоте 38. Это абсолютно такой же приемник, он работает с пультами и с обычными и между самими пистолетами.
Если отправлять чисто те тайминги "карказябры", которые получается разбить на чистый RAW сигнал, он также на них реагирует. И даже если взять несколько вариантов этих карказябров, пистолет также на них реагиурует , как будто в него попадают с другого пистолета(т.е. на все 3 разных варианта таймингов, а их можент быть и 10 и 100 и 1000).
Вопрос именно в какой-то паузе RAW сигнала, стартовой, конечной, может диапазон какого-то тайминга от и до он шлет я хз, т.е. именно в том - что шлют сами пистолеты.
Просто иди на хуй. Серьезно. В первом сообщении не работает с пистолетами, в следующем работает, потом опять не работает, потом опять работает. Иди-иди.