Кондиционер и ИК передатчик из Ардуино.
- Войдите на сайт для отправки комментариев
Ср, 21/05/2014 - 17:39
Не как не могу заставить работать Подобрать код дя работы с кондиционером Panasonic.
Изначально считывается RAW(132)
Unknown encoding: 9DCF5C22 (32 bits) Raw (132): 2864,3450,-1650,500,-400,450,-1250,400,-450,450,-450,400,-450,450,-450,450,-450,450,-400,450,-400,450,-400,500,-400,450,-400,500,-400,450,-1250,450,-450,450,-400,450,-400,500,-400,450,-400,500,-400,450,-400,500,-1250,450,-1250,450,-1250,450,-400,500,-400,450,-1250,450,-400,500,-400,450,-450,450,-400,500,-400,450,-400,450,-400,450,-450,450,-400,450,-450,450,-400,500,-400,450,-400,500,-400,450,-400,450,-400,500,-400,450,-450,450,-400,500,-400,500,-350,500,-350,500,-400,450,-400,500,-400,450,-400,500,-400,450,-450,450,-400,450,-400,500,-1200,500,-1200,450,-450,450,-450,450,-400,450,-450,450,-400,450,
убираю первый символ и непонятно остается то меньше чем 132.
На всякий случай делаю несколько...
И ничего не работает!
#include <IRremote.h> // это скачанная библиотека int i; IRsend irsend; unsigned int powerOn0[133]= {3450,1650,500,400,450,1250,400,450,450,450,400,450,450,450,450,450,450,400,450,400,450,400,500,400,450,400,500,400,450,1250,450,450,450,400,450,400,500,400,450,400,500,400,450,400,500,1250,450,1250,450,1250,450,400,500,400,450,1250,450,400,500,400,450,450,450,400,500,400,450,400,450,400,450,450,450,400,450,450,450,400,500,400,450,400,500,400,450,400,450,400,500,400,450,450,450,400,500,400,500,350,500,350,500,400,450,400,500,400,450,400,500,400,450,450,450,400,450,400,500,1200,500,1200,450,450,450,450,450,400,450,450,450,400,450}; unsigned int powerOn1[132]= {3450,1650,500,400,450,1250,400,450,450,450,400,450,450,450,450,450,450,400,450,400,450,400,500,400,450,400,500,400,450,1250,450,450,450,400,450,400,500,400,450,400,500,400,450,400,500,1250,450,1250,450,1250,450,400,500,400,450,1250,450,400,500,400,450,450,450,400,500,400,450,400,450,400,450,450,450,400,450,450,450,400,500,400,450,400,500,400,450,400,450,400,500,400,450,450,450,400,500,400,500,350,500,350,500,400,450,400,500,400,450,400,500,400,450,450,450,400,450,400,500,1200,500,1200,450,450,450,450,450,400,450,450,450,400,450}; unsigned int powerOn2[131]= {3450,1650,500,400,450,1250,400,450,450,450,400,450,450,450,450,450,450,400,450,400,450,400,500,400,450,400,500,400,450,1250,450,450,450,400,450,400,500,400,450,400,500,400,450,400,500,1250,450,1250,450,1250,450,400,500,400,450,1250,450,400,500,400,450,450,450,400,500,400,450,400,450,400,450,450,450,400,450,450,450,400,500,400,450,400,500,400,450,400,450,400,500,400,450,450,450,400,500,400,500,350,500,350,500,400,450,400,500,400,450,400,500,400,450,450,450,400,450,400,500,1200,500,1200,450,450,450,450,450,400,450,450,450,400,450}; //unsigned int powerOn3[130]= {3450,1650,500,400,450,1250,400,450,450,450,400,450,450,450,450,450,450,400,450,400,450,400,500,400,450,400,500,400,450,1250,450,450,450,400,450,400,500,400,450,400,500,400,450,400,500,1250,450,1250,450,1250,450,400,500,400,450,1250,450,400,500,400,450,450,450,400,500,400,450,400,450,400,450,450,450,400,450,450,450,400,500,400,450,400,500,400,450,400,450,400,500,400,450,450,450,400,500,400,500,350,500,350,500,400,450,400,500,400,450,400,500,400,450,450,450,400,450,400,500,1200,500,1200,450,450,450,450,450,400,450,450,450,400,450}; void setup() { delay (3000); Serial.begin(9600); } void loop() { delay (5000); irsend.sendRaw(powerOn0, 133, 38); delay (4000); irsend.sendRaw(powerOn1, 132, 38); delay (4000); irsend.sendRaw(powerOn2, 131, 38); delay (4000); //irsend.sendRaw(powerOn3, 129, 38); //delay (4000); }
Помогите!!!
Тут все прочитал http://arduino.ru/forum/apparatnye-voprosy/nuzhna-pomoshch-po-radiomodulyu-i-ik-peredatchiku#comment-form
Если потом считывать с пульта и Ардуино, то:
Unknown encoding: 9DCF5C22 (32 bits) с пульта постоянно ОДИНАКОВЫЙ
а с АРДУИНО всегда разный
Если потом считывать с пульта и Ардуино, то:
Unknown encoding: 9DCF5C22 (32 bits) с пульта постоянно ОДИНАКОВЫЙ
а с АРДУИНО всегда разный
Считывать чем? Какие IR? На какой частоте они работают? Откуда известно, что частота именно 38, а не другая? Какие сомнения, что первый байт нужно откинуть? А зяглянуть в примеры библиотеки и найти как там используется метод sendRaw лень? В примере IRrecord есть такой метод и там явно показано, какие данные используются для отправки кода с помощью sendRaw.
Таких тем уже на форуме есть и может нет решения, но изжевана тема изрядно. Просто одно и тоже каждый раз объяснять приходится и каждый сомневается
https://github.com/ToniA/arduino-panasonic-heatpump-controller
Так везде же откидывают первое число! Во всех примерах что я видел! Считываю тоже Ардуинкой. Частота 38, так как видел пример на забугорном сайте https://github.com/itamaro/home-control-arduino и там кондей от Панасоника на 38 частоте.
Но в примере вообще мне ничего не понятно. Я почти все темы с форума прочитал, но так видимо и не понял. Я пробую уже целый месяц, как только не извращялся. Частоту подбирал аж до 70.
Написал, потому что уже мозги закипели...
Тема может и изжована, вот только конечный результат у многих по моему ощущению получается "на шару".
И правильно, какждый раз и говорю, что нужно отбрасывать первое число.
Посмотрите на строки 5-7 Вашего скетча. На первый взгляд все три массива одной и той же длины (я скроллил вправо до конца массивов), а в описании стоит разная длина. Либо установить правильную длину, либо рассчитайте её, оставив размер массива "неопределенным". Расчитывается просто, например, так unsigned int len = sizeof( powerOn0 ) / sizeof( unsigned int );
Просто благодаря таким мелочам в "эфир" уйдет мусор, либо совсем не то, что Вы ждете, а потому весь результат насмарку.
IR должны быть одинаковые, что на пульте, что на Ардуине (частота модуляции), потому что иначе с пульта будет читать стабильно, с Ардуины - нет. Легко, я в этом убеждался на практике. Потому и передатчик и приемник должны работать на одной частоте.
На шару или нет. У вас, например, если две Ардуины и Вы можете поэкспериментировать, не насилуя кондиционер, добиться сначала чтобы с пульта или с Ардуины приходил один и тот же код.
Спасибо тебе огромное мил человек!!!
У меня почему-то даже с родного пульта приходит разный код в RAW (Unknown encoding: 9DCF5C22 (32 bits) с пульта постоянно ОДИНАКОВЫЙ)... первый раз шестое число 400, а потом 450, потом опять 400 или седмое число 1300 , потом 1270 итд. Пробовал три разных ИК приемника, результат один и тот же. А вот с другой Ардуины которая посылает сигнал Unknown encoding: 9DCF5C22 совпадает не часто. Raw вообще разный.
Длину установил разную специально, так как непонятка с первым числом и в одном из примеров тут http://arduino.ru/forum/apparatnye-voprosy/nuzhna-pomoshch-po-radiomodulyu-i-ik-peredatchiku#comment-39581 увеличили длину на 1 и у парня всё заработало, вот и я извращаюсь.
Сделал!!! Взял отсюда 3 библиотеки https://github.com/ToniA/arduino-heatpumpir
И запустил через heatpumpIR[0]->send(irSender, POWER_ON, MODE_COOL, FAN_5, 17, VDIR_AUTO, HDIR_AUTO);
Теперь меняю эти значения и всё работает.
Удовлетворение 0%, так как самое обидное, что не понимаю как всё работает. Буду осваивать программирование...
p.s. Уже приципил датчик DS18b20 - всё работает, вот только вся система мне за ночь батарейку 2200мА посадила.
не знаю, поможет ли, но с год назад я долго мучался с кондиционерами Samsung и General
позже я узнал, что большинство кондиционеров отправляют 3 разных пакета на одно нажатие кнопки, так как там каждый раз отправялется режим, температура, направление и сила ветродуйки и прочее.
так вот библиотека IRremote, которую вы используете, не в состоянии сосканировать код с кондиционера, так как считает код завершенным после первой посылки и не обращает никакого внимания на следующие две.
Так что, сканировать надо другим скетчем. В результате мои коды выглядят сейчас вот так
Не обращайте внимания, на то, что числа маленькие, они умышленно поделены на 100, чтобы меньше занимать памяти в ардуине
И что это за скетч? название можно плиз ....
не помню где брал, потом еще вносил изменения
на почту вышлю
не могли бы ли Вы куда нибудь выложить скетч?
тоже интересует вопрос... тоже бьюсь с кондиционером...
тоже бьюсь с кондиционером...
завали ега из ПЗРК, сколько можно терпеть.
Вот держите
Trainer спасибо!
Trainer, а не поделитесь своим скетчем управления кондиционером? можно на почту, если так Вам удобнее.
good_mail(злой_пес)rambler.ru
А какой смысл в нем? Скетч сканера, который выше, выведет вам в монитор порта команду управления в RAW-формате.
Далее с помощю библиотеки IRremote отправляете команду вкратце вот так:
Ну, я надеюсь вы поняли, что нельзя таким образом именно управлять кондиционером, тоесть нельзя например регулировать температуру.
можно запомнить какой то определенный режим (режим работы кондиционера, температура, режим работы заслонки, сила ветродуйки),
и отправкой этой команды привести кондиционер в определенный режим.
В моем случае я использую несколько предустановок:
1 Выключен
2 Охлаждение
3 Максимальное охлаждение
4 Нагрев
5 Максимальный нагрев
6 Проветривание
Trainer, да, я понимаю про режимы.
А скетч попросил у Вас в надежде узреть там что то упущенное мною.
Скетч для считывания сигнала с пульта дал мне вот такой результат (это включение кондиционера):
Пробовал отправлять именно в таком виде... пробовал двукратное отправление... пробовал двукратное, но во второй пачке убирал 8820... пока что успехов не принесло ((
Ну не знаю тогда. Считывали скетчем который давал? ИК-передатчик точно работает?
Можно еще подключить к звуковой карте ИК-приемник и посмотреть как в действительности выглядит сигнал, и сколько реально в нем посылок, хотя скетч не должен ничего отрезать, даже если например держать кнопку громкости на пульте от телевизора, он будет долго сыпать цифрами и на повторы ему начихать.
С радостью бы попробовал сам, но ни у кого из знакомых именно Panasonic-a нет.
PS в этом топике есть ссылка на управление панасоником, так вот на вскидку они там отправляют код длиной толи 182 толи 188
Разными считывал, в том числе и тем, который Вы давали. Передатчик проверялся регулярно камерой телефона - мигает, потом проверялся второй ардуиной на прием - принимает.
Как раз подумываю о подключении к звуковой карте, вот только задача... как потом его интерпретировать в массив периодов?
У меня не Панасоник, у меня Gree, хотя кто их разберет с чего этот Gree слизан.
ну можно и интерпретировать, но думаю вам это не нужно.
я бы сделал так: вопревых сграбил звуковой картой один и тот же сигнал несколько раз, сопоставил, чтобы убедиться что он каждый раз одинковый. Вовторых там вы увидите сколько реально пакетов (между ними будут длинные разрывы) и посчитаете сколько реально марков и спейсов передается. Считать их длительности нет особого смысла у вас там одни и теже цифры в основном 500 и 1500 (ну или 600 и 1600) спокойненько можете выписать все на бумажку, то что они чуть чуть разные не принципиально, это погрешность, не бойтесь их округлить (посмотрите на мой код)
Trainer, хорошо, попробую так сделать. Напишу о результатах.
По информации из инета, я полагал, что кодирование сигнала происходит за счет низкого уровня, т.е. за счет минимумов на изображении. В таком случае эта пауза считается как пауза или же все таки нет?
На изображении насчитал 69 максимумов и 68 минимумов, включая длинный, который, все же похоже является паузой. При подсчете не учитывал первые максимум и минимум, те, которые, якобы, обозначают начало посылки.
Кстати, при считывании пульта с помощью IRrecvDump этого длинного минимума в массиве нет, а при считывании скетчем, преложенным ув. Trainer этот минимум есть, и имеет он длинну аж 19460 или около того.
ИТОГО имеем 139 значений в массиве, так же как и в результатах использования скетча от Trainer, т.е. казалось бы результат в 139 символов подтвержден, но кондиционер молчит как партизан.
Добавлено:
Сейчас вручную еще раз пересчитал пики на картинке... вручную написал предполагаемый массив, получилось вот это:
кондей молчит...
а должен работать...
А этот скетч у вас работает?
из него теоретически вручную можно РАВ собрать и сравнить с тем что у вас получилось при оцифровке,
если, конечно, у вас не другой протокол какой нибудь
Нет, этот у меня не работает...
я даже списывался с автором на предмет команды, но он мне мол ответил, что вон там есть скетч, который перебирает некоторые режимы...
короче у меня кондей и его проигнорировал...
чую, что ошибка где то на поверхности, но вариантов пока не осталось куда копать...
частоты пробовал от 30 до 56... может железо (в частности диод) чем то не подходит, но пробовал штуки три, два одинаковых и один какой то из местного магазина, зеленоватого оттенка...
Сграбил сигнал пульта с помощью звуковой карты, но на другом компе. Удивительно, но максимумы и минимумы поменялись местами, хотя их набор остался тот же. Т.е. получили как бы перевернутую картинку. Максимумы стали минимумами и наоборот.
Как я понимаю в RAW массиве интервалов чередуется горение и "молчание" передающего ИК диода.
Как бы попробовать заставить работать его по перевернутой схеме? Может быть в этом дело?
Дабы не создавать новую тему, позволю спросить здесь. Да и тему стоит обновить. Или все уже разобрались и спокойно управляют кондеем с Ардуины? ;)
Меня интересует: для полноценной работы нужно два усттройства: приемник для считывния кодов, и передатчик для отправки сигнала в ик-приемник кондея? Или один?
Приемник нашел: http://www.ebay.com/itm/130964527002?ssPageName=STRK:MEWNX:IT&_trksid=p3984.m1497.l2649 подойдет такой?
Нужно ли еще такой покупать для передачи сигнала в ик-приемник кондея: http://www.ebay.com/itm/110950917804?ssPageName=STRK:MEWNX:IT&_trksid=p3984.m1497.l2649
И еще, такой трансивер что будет делать? Отсылать или принимать сигнал? Не совсем разобрался. http://www.ebay.com/itm/Electronic-Bricks-Infrared-Sensor-IR-Transmitter-Module-DC-5V-/191237976710?pt=UK_BOI_Electrical_Components_Supplies_ET&hash=item2c86abf286
На последнем написано,что это передатчик.
Приёмник - они различаются частотой, как правило в маркировке две последних цифры. В этом вроде 38.
Передатчик точно нужен (2 ссылка, или, если лень навеску добавлять,то третья ссылка). А приёмник - смотря для чего.
Помогите не могу разобраться.
Подключаю ИК приемник и ИК передатчик к ардуине, а что дальше делать не знаю. Считал коды кнопок пульта от телика, так же от пульта колонок. Хочу управлять пультом ТВ пультом колонок. У Осипова беру вот такой скетч
Меняю на свои кнопки но ничего не получается. Я думаю проблема в
У меня у пульта оно другое же должно быть да?
я не в тему написал. Но может все таки поможете?
пульт от колонок микролаб, как узнать его секретный код?
секретный define код?
секретный define код?
секретный define код?
секретный define код?
Это ж надо 4 раза простебался....
Протокол пульта как узнать?
боьше никто не занимается управлялкой кондишина??
Все уже зауправляли и сидят под ним прохлаждаются.
А в чем вопрос?
есть примеры программ? Ну те, что давно в инете лежат - я видел, там больше недостатков.
У меня исключительно под свои нужды. Одна прога через HTTP шлет сигнал, вторая через Vera и MySensors отсылает 2 сигнала. Включить и выключить кондей. Работает на "глючной" библиотеке IRLib.
Код через Ethernet шилд.
Код для MySensors
можно более детальное обьяснение: что делают эти два кода?
В первом открываешь в браузере http://192.168.0.200/?0x00012345
И он в кондей отправляет этот код.
Второй - работает через шлюз Vera от MicasaVerde и ардуиновский шлюз. Надо курить mysensors.org
Работает по принципу реле. Включил, Выключил. Соответственно коды включения я заменил на коды от своего кондиционера, предварительно считав их с родного пульта.
PS: Вообще тут такие специалисты сидят с яйцами до колен, что мне даже стыдно свой чайниковский код выкладывать, собранный по примерам из интернетов. ;)
спасибо. а чем считывалось?
а еще вопрос - удобно ли удаленно управлять, может достаточно приехать и включить?
Считывал стандартной прогой из комлпекта скетчей к Arduino IDE
IRrecvDump
Вариант управления выбирает каждый сам по своему удобству и усмотрению. У меня шиншиллы живут. Для них приходится и удаленно включать, когда никого дома нет. Сами они не догадаются.
боьше никто не занимается управлялкой кондишина??
День потратил на изучение управление кондиционером с помощью ir и arduino. В итоге кондиционер сдался.
Вопросы, которые были сняты:
1. Как с помощью UNO реализовать ВКЛ\ВЫКЛ кондиционера.
2. Изменение состояния кондиционера (изменение температуры, режима работы и т.д.)
Инструменты: UNO + IR-диод + tsop(остался от lasertag) или CHQ1858 из набора
В итоге:
-частота работы передачтика/приемник - 38кГц. Пришлось выпаять ir-диод из пульта и заменить имеющимся (брал UNO + старт набор у китайцев), что бы доказать себе возможность работы;
-сигнал грабил стандартными примерами библиотеки IRremote.h. Сигналы от пульта телевизора, аудиоцентра и т.д. легко грабились и управлялись. С сигналом от кондиционера пришлось более подробно изучить передачу сигнала по ir(жаль нет осциллографа :( ). Оказалось, что длина сигнала от пульта кондиционера длинее, чем например от телевизора. Стандартные настройки библиотеки IRremote.h рубят значение буфера приема сигнала "Length of raw duration buffer" не более 100, остальное отсекает. В моем случае, сигнал ВКЛ кондиционера составляет 227. Значение буфера было увеличено на 300 "#define RAWBUF 300"
После отправки RAW кондиционеру он пикнул и включился. Код ниже.
Дальше дело за фантацией и возможностями...
Интересно. А у меня как назло все проще получилось. И передатчик сразу на 38кГц подошел, и код в нормальном виде считался. Вот только выставлять температуру я еще не пробовал. Выставил один раз температуру и только вкл/выкл делаю.
боьше никто не занимается управлялкой кондишина??
Мучаю cooper&hunter команды возпроизвожу. Ща разбираю протокол...
При помощи сканера получил 2 последовательности для включения и выключение кондиционера. Кондиционер Sensei.
проблема в том, что на команду включения кондиционер включился, но выключить его не получается. Может у кого есть какие соображения на этот счет? Спасибо.
labor, Я любые коды снимаю логическим анализатором. И без всяких библиотек, по полученной картинке, сразу пишу программу.
почитал тут , посмотрел на ютуб https://www.youtube.com/watch?v=Ez2rbGADazs , заработало , RAWBUF незабываем увеличивать, остальное не критично , даже то что при нажатии на ВКЛЮчение несколько раз (с одними и теми же параметрами на пульте) код немного отличался