Obsah:
2025 Autor: John Day | [email protected]. Naposledy změněno: 2025-01-13 06:57
Nejčastěji se však jedná o kódy příkazů k lampe, porte de garage a autre fonctionnant sous 433 MHz (RX433) mais aussi ceux des télécommandes infra-rouge de télévision au autre.
Naleznete vlastní encuite, grâce à une autre montage, envoyer ces codes et piloter n’importe quoi!
Krok 1: Le Montage
Jednoduché, Arduino Nano, bezdiodové přijímače infračerveného záření a přijímače 433 MHz.
Krok 2: Le Code Arduino
// InfraRouge
#zahrnout
int recvPin = 11; // pin Arduino pour récepteur InfraRouge (TOSP4838)
IRrecv irccv (recvPin);
// RX433
#zahrnout
RCSwitch mySwitch = RCSwitch ();
decode_results výsledky;
neplatné nastavení ()
{
Serial.begin (9600);
unbcv.enableIRIn ();
unbcv.blink13 (true); // všechny LED diody interne lors de l'envoie InfraRouge
mySwitch.enableReceive (0); // Recepteur RX433 (XY-MK-5V) sur pin 2 de Arduino Uno et Nano
}
// přidělení kódů InfraRouge
neplatný ircode (decode_results *výsledky)
{
// Panasonic
if (results-> decode_type == PANASONIC) {
Serial.print (výsledky-> adresa, HEX);
Serial.print (":");
}
Serial.print (výsledky-> hodnota, HEX);
} // neplatné
// kódování kódů kódů
neplatné kódování (decode_results *výsledky)
{
switch (results-> decode_type) {
výchozí:
případ NEZNÁMÝ: Serial.print ("Inconnu"); přestávka;
případ NEC: Serial.print ("NEC"); přestávka;
pouzdro SONY: Serial.print („SONY“); přestávka;
případ RC5: Serial.print ("RC5"); přestávka;
případ RC6: Serial.print ("RC6"); přestávka;
případ DISH: Serial.print ("DISH"); přestávka;
případ SHARP: Serial.print ("SHARP"); přestávka;
případ JVC: Serial.print ("JVC"); přestávka;
případ SANYO: Serial.print ("SANYO"); přestávka;
případ MITSUBISHI: Serial.print ("MITSUBISHI"); přestávka;
pouzdro SAMSUNG: Serial.print („SAMSUNG“); přestávka;
pouzdro LG: Serial.print ("LG"); přestávka;
případ WHYNTER: Serial.print ("WHYNTER"); přestávka;
případ AIWA_RC_T501: Serial.print ("AIWA_RC_T501"); přestávka;
případ PANASONIC: Serial.print ("PANASONIC"); přestávka;
případ DENON: Serial.print ("Denon"); přestávka;
}
}
// skládka les résultats
neplatné dumpInfo (decode_results *výsledky)
{
// Zkontrolujte, zda vyrovnávací paměť přeteče
if (results-> overflow) {
Serial.println ("IR kód příliš dlouhý. Upravit IRremoteInt.h a zvýšit RAWBUF");
vrátit se;
}
// Zobrazit kódovací standard
Serial.print ("Encodage:");
kódování (výsledky);
Serial.println ("");
// Zobrazit kód a délku
Serial.print ("Kód:");
ircode (výsledky);
Serial.print ("(");
Serial.print (výsledky-> bity, DEC);
Serial.println ("bity)");
}
//struktura
neplatné dumpRaw (decode_results *výsledky)
{
// Tisk nezpracovaných dat
Serial.print ("Časování [");
Serial.print (výsledky-> rawlen-1, DEC);
Serial.println ("]:");
pro (int i = 1; i rawlen; i ++) {
nepodepsané dlouhé x = výsledky-> rawbuf * USECPERTICK;
if (! (i & 1)) {// sudý
Serial.print ("-");
if (x <1000) Serial.print ("");
if (x <100) Serial.print ("");
Serial.print (x, DEC);
} else {// liché
Serial.print ("");
Serial.print ("+");
if (x <1000) Serial.print ("");
if (x <100) Serial.print ("");
Serial.print (x, DEC);
if (i rawlen-1) Serial.print (","); // ',' u posledního není potřeba
}
if (! (i % 8)) Serial.println ("");
}
Serial.println (""); // Nový řádek
}
//+=============================================================================
// Vyhoďte strukturu decode_results.
//
neplatný dumpCode (decode_results *results)
{
// Zahájení deklarace
Serial.print ("unsigned int"); // typ proměnné
Serial.print ("rawData ["); // název pole
Serial.print (výsledky-> rawlen - 1, DEC); // velikost pole
Serial.print ("] = {"); // Zahájení deklarace
// Vyprázdnění dat
pro (int i = 1; i rawlen; i ++) {
Serial.print (výsledky-> rawbuf * USECPERTICK, DEC);
if (i rawlen-1) Serial.print (","); // ',' u posledního není potřeba
if (! (i & 1)) Serial.print ("");
}
// Konec deklarace
Serial.print ("};"); //
// Komentář
Serial.print ("//");
kódování (výsledky);
Serial.print ("");
ircode (výsledky);
// Nový řádek
Serial.println ("");
// Nyní vyhoďte „známé“kódy
if (results-> decode_type! = NEZNÁMÝ) {
// Některé protokoly mají adresu
if (results-> decode_type == PANASONIC) {
Serial.print ("unsigned int addr = 0x");
Serial.print (výsledky-> adresa, HEX);
Serial.println (";");
}
// Všechny protokoly mají data
Serial.print ("unsigned int data = 0x");
Serial.print (výsledky-> hodnota, HEX);
Serial.println (";");
}
}
prázdná smyčka ()
/******************************************************* *InfraRouge ***************************************
{
decode_results výsledky; // Někde pro uložení výsledků
if (unbcv.decode (& results)) {// Popadněte IR kód
dumpInfo (& výsledky); // Výstup výsledků
dumpRaw (& výsledky); // Výstup výsledků ve formátu RAW
dumpCode (& výsledky); // Výstup výsledků jako zdrojový kód
Serial.println (""); // Prázdný řádek mezi položkami
unbcv.resume (); // Připravte se na další hodnotu
}
/******************************************************* *** RX433 *****************************************
if (mySwitch.available ())
{
int hodnota = mySwitch.getReceivedValue ();
Serial.println ("RX433");
if (hodnota == 0) {
Serial.print ("Codage nonnu");
} jinak
{
Serial.print („Reçu“);
Serial.print (mySwitch.getReceivedValue ());
Serial.print (" /");
Serial.print (mySwitch.getReceivedBitlength ());
Serial.print ("bit");
Serial.print ("Protocole:");
Serial.println (mySwitch.getReceivedProtocol ());
}
mySwitch.resetAvailable ();
} // RX433
}//smyčka
Krok 3: Infos Sur Les Codes Infra-Rouge
Všechny protokoly plusieurs:
NEC: 32 bitů (podrobnosti o protokolu)
Sony: 12 nebo 20 bitů (podrobnosti o protokolu) (informace o IR dálkových kódech Sony.)
RC5: 12 bitů (podrobnosti o protokolu)
RC6: 20 nebo 36 bitů (podrobnosti o protokolu)
Pour Sony et RC5/6, chaque transmission doit opakují 3 fois!
POZOR: 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 codes se fera avec la librairie IRremote.h
Příklad: (0x devant le code) et le nombre de bits irsend.sendNEC (0xA55A38C7, 32);
Krok 4: Infos Sur Codes RX433
L'envoie se fera avec la librairie RCSwitch.h
Příklad mySwitch.send (1975778, 24);
Pilot na letišti usnadnil velení.