Spisu treści:

Récupérer Les Codes Infra-Rouge Et 433mhz: 4 kroki
Récupérer Les Codes Infra-Rouge Et 433mhz: 4 kroki

Wideo: Récupérer Les Codes Infra-Rouge Et 433mhz: 4 kroki

Wideo: Récupérer Les Codes Infra-Rouge Et 433mhz: 4 kroki
Wideo: Télécommande Infra rouge 2/3 2024, Listopad
Anonim
Récupérer Les Codes Infra-Rouge Et 433mhz
Récupérer Les Codes Infra-Rouge Et 433mhz

Le but est d’afficher les code des télécommandes du style commande de lampe, porte de garage et 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, grace à une autre montage, envoyer ces code et piloter n’importe quoi!

Krok 1: Le Montage

Le Montage
Le Montage

Prosty, Arduino Nano, jednodiodowy odbiornik podczerwieni i odbiornik 433 MHz.

Krok 2: Le Code Arduino

//InfraRouge

#włączać

int recvPin = 11; //pin Arduino do gniazda InfraRouge (TOSP4838)

IRrecv nieodwoł(recvPin);

//RX433

#włączać

RCSwitch mójPrzełącznik = RCSwitch();

decode_results wyniki;

pusta konfiguracja ()

{

Serial.początek(9600);

nieodwoł.enableIRIn();

irrecv.blink13(true);//allume la LED infra lors de l'envoie InfraRouge

mySwitch.enableReceive(0); // Receptur RX433 (XY-MK-5V) na pin 2 Arduino Uno i Nano

}

// umieszczenie kodów InfraRouge

void ircode (decode_results *wyniki)

{

// Panasonic

if (results->decode_type == PANASONIC) {

Serial.print(wyniki->adres, HEX);

Serial.print(":");

}

Serial.print(wyniki->wartość, HEX);

}//próżnia

// afficahge des codes encodes

void kodowanie (decode_results *results)

{

przełącznik (wyniki->typ_dekodowania) {

domyślny:

przypadek NIEZNANY: Serial.print("Inconnu"); przerwa;

przypadek NEC: Serial.print("NEC"); przerwa;

case SONY: Serial.print("SONY"); przerwa;

przypadek RC5: Serial.print("RC5"); przerwa;

przypadek RC6: Serial.print("RC6"); przerwa;

case DISH: Serial.print("DISH"); przerwa;

case SHARP: Serial.print("SHARP"); przerwa;

case JVC: Serial.print("JVC"); przerwa;

przypadek SANYO: Serial.print("SANYO"); przerwa;

przypadek MITSUBISHI: Serial.print("MITSUBISHI"); przerwa;

sprawa SAMSUNG: Serial.print("SAMSUNG"); przerwa;

sprawa LG: Serial.print("LG"); przerwa;

case WHYNTER: Serial.print("WHYNTER"); przerwa;

sprawa AIWA_RC_T501: Serial.print("AIWA_RC_T501"); przerwa;

case PANASONIC: Serial.print("PANASONIC"); przerwa;

przypadek DENON: Serial.print("Denon"); przerwa;

}

}

// zrzuć wyniki

void dumpInfo (decode_results *results)

{

// Sprawdź, czy bufor się przepełnił

if (wyniki->przepełnienie) {

Serial.println("Kod IR jest za długi. Edytuj IRremoteInt.h i zwiększ RAWBUF");

powrót;

}

// Pokaż standard kodowania

Serial.print("Kodowanie: ");

kodowanie(wyniki);

Serial.println("");

// Pokaż kod i długość

Serial.print("Kod: ");

ircode(wyniki);

Serial.print(" (");

Serial.print(wyniki->bity, DEC);

Serial.println("bity)");

}

//Struktura

void dumpRaw (decode_results *results)

{

// Drukuj surowe dane

Serial.print("Czas [");

Serial.print(wyniki->rawlen-1, DEC);

Serial.println("]: ");

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

unsigned long x = results->rawbuf * USECPERTICK;

if (!(i i 1)) { // parzyste

Serial.print("-");

if (x < 1000) Serial.print(" ");

if (x < 100) Serial.print(" ");

Serial.print(x, DEC);

} inny { // nieparzysty

Serial.print(" ");

Serial.print("+");

if (x < 1000) Serial.print(" ");

if (x < 100) Serial.print(" ");

Serial.print(x, DEC);

if (i rawlen-1) Serial.print(", "); //', ' nie potrzebne dla ostatniego

}

if (!(i % 8)) Serial.println("");

}

Serial.println(""); // Nowa linia

}

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

// Zrzuć strukturę decode_results.

//

void dumpCode (decode_results *results)

{

// Rozpocznij deklarację

Serial.print("unsigned int "); // typ zmiennej

Serial.print("rawData["); // nazwa tablicy

Serial.print(wyniki->rawlen - 1, DEC); // rozmiar tablicy

Serial.print("] = {"); // Rozpocznij deklarację

// Zrzuć dane

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

Serial.print(wyniki->rawbuf * USECPERTICK, DEC);

if (i rawlen-1) Serial.print(", "); // ', ' nie potrzebne na ostatnim

if (!(i & 1)) Serial.print(" ");

}

// Końcowa deklaracja

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

// Komentarz

Serial.print(" // ");

kodowanie(wyniki);

Serial.print(" ");

ircode(wyniki);

// Nowa linia

Serial.println("");

// Teraz zrzuć "znane" kody

if (wyniki->typ_dekodowania != NIEZNANE) {

// Niektóre protokoły mają adres

if (results->decode_type == PANASONIC) {

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

Serial.print(wyniki->adres, HEX);

Serial.println(";");

}

// Wszystkie protokoły mają dane

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

Serial.print(wyniki->wartość, HEX);

Serial.println(";");

}

}

pusta pętla ()

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

{

decode_results wyniki; // Gdzieś do przechowywania wyników

if (irrecv.decode(&results)) { // Złap kod IR

dumpInfo(&wyniki); // wyślij wyniki

dumpRaw(&wyniki); // Prześlij wyniki w formacie RAW

dumpCode(&wyniki); // Wypisz wyniki jako kod źródłowy

Serial.println(""); // Pusta linia między wpisami

nieodzysk.wznowienie(); // Przygotuj się na następną wartość

}

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

jeśli (mySwitch.available())

{

int wartość = mySwitch.getReceivedValue();

Serial.println("RX433");

jeśli (wartość == 0) {

Serial.print("Kod inconnu");

} w przeciwnym razie

{

Serial.print("Reçu");

Serial.print(mySwitch.getReceivedValue());

Serial.print(" / ");

Serial.print(mySwitch.getReceivedBitlength());

Serial.print("bit");

Serial.print("Protokół: ");

Serial.println(mySwitch.getReceivedProtocol());

}

mójPrzełącznik.resetDostępny();

}//RX433

}//pętla

Krok 3: Infos Sur Les Codes Infra-Rouge

Protokoły plusieurs:

NEC: 32 bity (szczegóły protokołu)

Sony: 12 lub 20 bitów (szczegóły protokołu) (Zrozumienie kodów zdalnych Sony IR).

RC5: 12 bitów (szczegóły protokołu)

RC6: 20 lub 36 bitów (szczegóły protokołu)

Wlać Sony et RC5/6, transmisja chaque doit être répétés 3 fois!

UWAGA: la librairie IRremote.h ne semble pas pouvoir envoyer des codes codés sur plus de 32bits. Les RC6, 36 doivent donc êtres envoyer en raw, qui prennent plus de taille mémoire.

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

Przykład: (0x kod devant) i nazwa bitów irsend.sendNEC (0xA55A38C7, 32);

Krok 4: Informacje Sur Kody RX433

L'envoie se fera z biblioteką RCSwitch.h

Przykład mySwitch.send(1975778, 24);

Na peut facilement pilot avec cela des prises commandés.

Zalecana: