Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
03.01.2019, 19:30
|
|
Прописка
Регистрация: 07.09.2014
Сообщений: 136
Сказал спасибо: 18
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
|
Как управлять с ардуино кондиционером
есть кондиционер которым нужно управлять с ардуино
библиотека iRemote протокол не понимает
нашел статью https://m.habr.com/post/419797/
взял код
Нажмите, чтобы открыть спойлер
Код:
|
// IR приемник подключается на D2
unsigned int timerValue; // значение таймера
unsigned int data_m[250];
byte i=0;
byte n=0;
byte temp;
byte k=0;
byte x,y;
byte m1=0;
byte dat[4][12];
byte temp2=0;
char s[5];
void setup() {
Serial.begin(115200); // инициализируем последовательный порт, скорость 9600
// установки таймера 1
TCCR1A = 0;
attachInterrupt(0, inter_1, CHANGE); // привязываем 0-е прерывание к функции inter_1
TCCR1B = 2; // разрешение работы таймера с делителем 8
Serial.println("Start");
pinMode(2, INPUT);
}
void loop() {
temp=TIFR1&0x01; // проверяем бит переполнения таймера
if (temp!=0)
{
TIFR1=0x01; // очистить флаг переполнения
if (i!=0)
{
if (k==0) // проверка что в последнем байте нет данных и установка метки FF как признак конца команды
{dat[y][x]=0xFF;}
else
{dat[y][x+1]=0xFF;
dat[y][x]=m1;
}
/* while (n‹=i) // вывод на компьютер
{
Serial.print(n,DEC);
Serial.print("=");
Serial.print(data_m[n],DEC);
Serial.print("\t");
if ((n&B00000011)==0) { Serial.println(" ");}
n++;
}*/
for (int i1 = 0; i1 ‹ 3; i1++) {
for (int j = 0; j ‹ 9; j++) {
sprintf(s, "%02X ", dat[i1][j]);
Serial.print(s);
//dat[i1][j]=0;
}
Serial.println("");
}
if ((dat[0][3]&0x0F)==0x2) Serial.print("Cool ");
if ((dat[0][3]&0x0F)==0x0) Serial.print("Heat ");
if ((dat[0][3]&0x0F)==0x3) Serial.print("Dry ");
if ((dat[0][3]&0x0F)==0x04) Serial.print("Vent ");
if ((dat[0][2]&0x03)==0x0) Serial.print("Vent=Auto ");
if ((dat[0][2]&0x03)==0x1) Serial.print("Vent=Max ");
if ((dat[0][2]&0x03)==0x2) Serial.print("Vent=Mid ");
if ((dat[0][2]&0x03)==0x3) Serial.print("Vent=Min ");
temp=((dat[0][3]&0xF0)››4)+18;
Serial.print("T=");
Serial.print(temp,DEC);
sprintf(s, " Time=%02d:%02d ",(dat[1][0]&0x7F),(dat[1][1]&0x7F));
Serial.print(s);
Serial.print(" C=");
temp=(dat[1][6]);
Serial.println(temp,DEC);
Serial.println("End");
// очистить массив
for (int i1 = 0; i1 ‹ 3; i1++) {
for (int j = 0; j ‹ 9; j++) {dat[i1][j]=0;}
}
}
i=0; // очистить адрес первого значения в массиве
n=0;
k=0;
m1=0;
x=0;
y=0;
}
}
void inter_1()
{
timerValue = (unsigned int)TCNT1L››1 | ((unsigned int)TCNT1H ‹‹ 7); // чтение таймера с одновременным делением на 2, т.к. кварц 16мгц, предделитель 8 и еще нужно разделить на 2
if (digitalRead(2)==0)
{
data_m[i]=timerValue;
i++;
if ((timerValue›4400)&&(timerValue‹4700)) {m1=0; k=0;}
if ((timerValue›7500)&&(timerValue‹8500))
{if (k==0) // проверка что в последнем байте нет данных и установка метки FF как признак конца команды
{dat[y][x]=0xFF;}
else
{dat[y][x+1]=0xFF;
dat[y][x]=m1;
}
x=0; y++; }
if ((timerValue›1500)&&(timerValue‹1800)) {m1=(m1››1)+0x80; k++;}
if ((timerValue›450)&&(timerValue‹800)) {m1=m1››1; k++;}
if (k›=8)
{k=0;
dat[y][x]=m1;
x++;
m1=0;
}
}
TCNT1H = 0; // сброс таймера
TCNT1L = 0;
} |
он считывает данные вроде бы правильно но не известно как их отправлять кондиционеру
__________________
Самое главное умение - умение радоваться жизни.
|
|
|
|
03.01.2019, 23:14
|
|
Модератор
Регистрация: 04.08.2010
Адрес: Москва СЗАО
Сообщений: 11,257
Сказал спасибо: 11,170
Сказали Спасибо 3,858 раз(а) в 2,928 сообщении(ях)
|
Re: реверс инжиниринг кондиционера
AVRkin, и где тут громко заявленное в названии темы?
Установите lirc и там разберитесь, потом перенесете в МК.
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при весьма малом числе вариантов…
|
|
|
|
04.01.2019, 00:08
|
|
Вид на жительство
Регистрация: 08.12.2018
Сообщений: 466
Сказал спасибо: 2
Сказали Спасибо 105 раз(а) в 71 сообщении(ях)
|
Re: реверс инжиниринг кондиционера
неужто ардуинщики не могут додуматься осцил в 1кратный режим поставить, щелкнуть туда пультом, посмотреть тайминги и потом их же в ардуине воспроизвести?
или чо? в ардуине нет таких функций шоли?
|
|
|
|
04.01.2019, 11:30
|
|
Почётный гражданин KAZUS.RU
Регистрация: 21.11.2006
Адрес: АКТАУ Казахстан
Сообщений: 4,754
Сказал спасибо: 706
Сказали Спасибо 2,880 раз(а) в 1,193 сообщении(ях)
|
Re: реверс инжиниринг кондиционера
На кой там вообще ардуина упала?
__________________
Ну и ничего что подруга змея зато крыс и мышей не будет.
|
|
|
|
04.01.2019, 13:18
|
|
Модератор
Регистрация: 04.08.2010
Адрес: Москва СЗАО
Сообщений: 11,257
Сказал спасибо: 11,170
Сказали Спасибо 3,858 раз(а) в 2,928 сообщении(ях)
|
Re: реверс инжиниринг кондиционера
Таки некоторое количество представителей Homo sapiens желает все проверить на собственном опыте. Стоит помочь им пройти этот путь с минимумом приключений, а там они сами решат как им дальше развиваться.
В качестве тестовой платформы и средства изучения вполне имеет право на существование…
"Дорогу осилит идущий"(c)
AVRkin, а что известно про протокол управления тем кондиционером и команды для него?
Собственно на сайте lirc много данных про разные устройства. Можно ещё поискать нужное в описаниях разных IR передатчиков и приложений для смартфонов/планшетов, типа ZaZa remote.
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при весьма малом числе вариантов…
Последний раз редактировалось mike-y-k; 04.01.2019 в 13:25.
|
|
|
|
04.01.2019, 13:35
|
|
Заблокирован
Регистрация: 16.03.2005
Сообщений: 5,918
Сказал спасибо: 560
Сказали Спасибо 9,145 раз(а) в 2,892 сообщении(ях)
|
Re: реверс инжиниринг кондиционера
Сообщение от mike-y-k
|
Стоит помочь им пройти этот путь с минимумом приключений,
|
...А вот это, одно из самых распространенных заблуждений.
|
|
|
|
05.01.2019, 01:25
|
|
Прописка
Регистрация: 07.09.2014
Сообщений: 136
Сказал спасибо: 18
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
|
Re: Как управлять с ардуино кондиционером
я написал рекордер сигнала, там очень длинные посылки
сё заработало)
__________________
Самое главное умение - умение радоваться жизни.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 12:25.
|
|