Оглавление:

Récupérer Les Codes Infra-Rouge Et 433 МГц: 4 шага
Récupérer Les Codes Infra-Rouge Et 433 МГц: 4 шага

Видео: Récupérer Les Codes Infra-Rouge Et 433 МГц: 4 шага

Видео: Récupérer Les Codes Infra-Rouge Et 433 МГц: 4 шага
Видео: Télécommande universelle, pour portail ou garage automatique. 2024, Июль
Anonim
Recupérer Les Codes Infra-Rouge Et 433 МГц
Recupérer Les Codes Infra-Rouge Et 433 МГц

Le but est d’afficher les code des télécommandes du style commande de lampe, porte de garage и autre fonctionnant sous 433 mhz (RX433) mais aussi ceux des télécommandes infra-rouge de télévision au autre.

On pourra donc ensuite, grâce à une autre montage, envoyer ces codes et piloter n’importe quoi!

Шаг 1: Le Montage

Le Montage
Le Montage

Простой, на Arduino Nano, приемник инфракрасного излучения и приемник 433 МГц.

Шаг 2: Le Code Arduino

// InfraRouge

#включают

int recvPin = 11; // вывод Arduino для приемника InfraRouge (TOSP4838)

IRrecv irrecv (recvPin);

// RX433

#включают

RCSwitch mySwitch = RCSwitch ();

decode_results результаты;

установка void ()

{

Serial.begin (9600);

irrecv.enableIRIn ();

irrecv.blink13 (true); // упомянем внутренние светодиодные лампы InfraRouge

mySwitch.enableReceive (0); // Приемник RX433 (XY-MK-5V) на вывод 2 Arduino Uno et Nano

}

// сообщение кодов InfraRouge

void ircode (decode_results * результаты)

{

// Panasonic

if (results-> decode_type == PANASONIC) {

Serial.print (результаты-> адрес, HEX);

Serial.print (":");

}

Serial.print (результаты-> значение, HEX);

}//пустота

// объявление кодов кодировок

недействительное кодирование (decode_results * результаты)

{

switch (results-> decode_type) {

дефолт:

case UNKNOWN: Serial.print («Инконну»); перерыв;

case NEC: Serial.print («NEC»); перерыв;

case SONY: Serial.print («СОНИ»); перерыв;

корпус RC5: Serial.print («RC5»); перерыв;

корпус RC6: Serial.print («RC6»); перерыв;

case DISH: Serial.print ("БЛЮДО"); перерыв;

case SHARP: Serial.print ("SHARP"); перерыв;

case JVC: Serial.print («JVC»); перерыв;

корпус SANYO: Serial.print («SANYO»); перерыв;

корпус MITSUBISHI: Serial.print («MITSUBISHI»); перерыв;

case SAMSUNG: Serial.print («SAMSUNG»); перерыв;

корпус LG: Serial.print («LG»); перерыв;

case WHYNTER: Serial.print ("WHYNTER"); перерыв;

case AIWA_RC_T501: Serial.print ("AIWA_RC_T501"); перерыв;

case PANASONIC: Serial.print ("PANASONIC"); перерыв;

case DENON: Serial.print («Denon»); перерыв;

}

}

// дамп результатов

void dumpInfo (decode_results * results)

{

// Проверяем, не переполнен ли буфер

if (results-> overflow) {

Serial.println («Слишком длинный ИК-код. Отредактируйте IRremoteInt.h и увеличьте RAWBUF»);

возвращение;

}

// Показать стандарт кодировки

Serial.print ("Кодировка:");

кодировка (результаты);

Serial.println ("");

// Показать код и длину

Serial.print ("Код:");

ircode (результаты);

Serial.print ("(");

Serial.print (результаты-> биты, DEC);

Serial.println ("биты)");

}

//состав

void dumpRaw (decode_results * результаты)

{

// Распечатать необработанные данные

Serial.print ("Время [");

Serial.print (результаты-> rawlen-1, DEC);

Serial.println ("]:");

for (int i = 1; i rawlen; i ++) {

беззнаковый длинный x = результаты-> rawbuf * USECPERTICK;

if (! (i & 1)) {// даже

Serial.print ("-");

если (x <1000) Serial.print ("");

если (x <100) Serial.print ("");

Serial.print (x, DEC); Серийный принт (x, DEC);

} else {// нечетное

Serial.print ("");

Serial.print ("+");

если (x <1000) Serial.print ("");

если (x <100) Serial.print ("");

Serial.print (x, DEC); Серийный принт (x, DEC);

если (я rawlen-1) Serial.print (","); // ',' не нужно для последнего

}

если (! (i% 8)) Serial.println ("");

}

Serial.println (""); // Новая линия

}

//+=============================================================================

// Выгрузить структуру decode_results.

//

void dumpCode (decode_results * результаты)

{

// Начать объявление

Serial.print ("целое число без знака"); // тип переменной

Serial.print ("rawData ["); // имя массива

Serial.print (результаты-> rawlen - 1, DEC); // размер массива

Serial.print ("] = {"); // Начать объявление

// Дамп данных

for (int i = 1; i rawlen; i ++) {

Serial.print (результаты-> rawbuf * USECPERTICK, DEC);

если (я rawlen-1) Serial.print (","); // ',' не требуется на последнем

если (! (i & 1)) Serial.print ("");

}

// Конец объявления

Serial.print ("};"); //

// Комментарий

Serial.print ("//");

кодировка (результаты);

Serial.print ("");

ircode (результаты);

// Новая линия

Serial.println ("");

// Теперь дамп "известных" кодов

if (results-> decode_type! = НЕИЗВЕСТНО) {

// У некоторых протоколов есть адрес

if (results-> decode_type == PANASONIC) {

Serial.print ("unsigned int addr = 0x");

Serial.print (результаты-> адрес, HEX);

Serial.println (";");

}

// Все протоколы имеют данные

Serial.print ("unsigned int data = 0x");

Serial.print (результаты-> значение, HEX);

Serial.println (";");

}

}

пустой цикл ()

/ *********************************************** * InfraRouge ***************************************** /

{

decode_results результаты; // Где-нибудь для хранения результатов

if (irrecv.decode (& results)) {// Захватываем ИК-код

dumpInfo (& результаты); // Вывод результатов

dumpRaw (& результаты); // Вывод результатов в формате RAW

dumpCode (& результаты); // Вывод результатов в виде исходного кода

Serial.println (""); // Пустая строка между записями

irrecv.resume (); // Готовимся к следующему значению

}

/ *********************************************** *** RX433 ******************************************* /

если (mySwitch.available ())

{

int value = mySwitch.getReceivedValue ();

Serial.println («RX433»);

if (значение == 0) {

Serial.print («Кодаж инконну»);

} еще

{

Serial.print («Reçu»);

Serial.print (mySwitch.getReceivedValue ());

Serial.print ("/");

Serial.print (mySwitch.getReceivedBitlength ());

Serial.print ("бит");

Serial.print ("Protocole:");

Serial.println (mySwitch.getReceivedProtocol ());

}

mySwitch.resetAvailable ();

} // RX433

}//петля

Шаг 3: Infos Sur Les Codes Infra-Rouge

Il y a plusieurs protocoles:

NEC: 32 бита (подробности протокола)

Sony: 12 или 20 бит (подробности протокола) (Общие сведения о кодах дистанционного управления Sony IR).

RC5: 12 бит (подробности протокола)

RC6: 20 или 36 бит (подробности протокола)

Залейте Sony и RC5 / 6, передача уже 3 раза!

ВНИМАНИЕ: библиотека IRremote.h не похожа на кодексы для 32-битных кодов. Les RC6, 36 doivent donc êtres envoyer en raw, qui prennent plus de taille mémoire.

L’envoie des codes se fera avec la librairie IRremote.h

Пример: (0x девантный код файла) и другие биты irsend.sendNEC (0xA55A38C7, 32);

Шаг 4: информация о Sur Codes RX433

L’envoie se fera avec la librairie RCSwitch.h

Пример mySwitch.send (1975778, 24);

На peut facilement piloter avec cela des prises commandés.

Рекомендуемые: