Obsah:
2025 Autor: John Day | [email protected]. Naposledy zmenené: 2025-01-13 06:58
Naše hlavné kódy pre lampu, porta de garage a autre fonctionnant sous 433 MHz (RX433) majú najväčšiu možnú požiadavku na infračervenú rádiu.
Na vlastnú päsť, montáž a montáž montáže, kódy vyslancov a pilotné správy!
Krok 1: Le Montage
Jednoduché, Arduino Nano, infračervené prijímače s diódami s frekvenciou 433 MHz.
Krok 2: Le Code Arduino
// InfraRouge
#zahrnúť
int recvPin = 11; // pin Arduino pour récepteur InfraRouge (TOSP4838)
IRrecv ircv (recvPin);
// RX433
#zahrnúť
RCSwitch mySwitch = RCSwitch ();
decode_results výsledky;
neplatné nastavenie ()
{
Serial.begin (9600);
unbcv.enableIRIn ();
unbcv.blink13 (true); // všetky vnútorné LED diódy InfraRouge
mySwitch.enableReceive (0); // Recepteur RX433 (XY-MK-5V) sur pin 2 de Arduino Uno et Nano
}
// pridanie kódov 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ódovanie kódov kódov
neplatné kódovanie (decode_results *výsledky)
{
switch (results-> decode_type) {
predvolené:
prípad NEZNÁMY: Serial.print ("Inconnu"); prestávka;
prípad NEC: Serial.print ("NEC"); prestávka;
prípad SONY: Serial.print („SONY“); prestávka;
prípad RC5: Serial.print ("RC5"); prestávka;
prípad RC6: Serial.print ("RC6"); prestávka;
prípad DISH: Serial.print ("DISH"); prestávka;
prípad SHARP: Serial.print ("SHARP"); prestávka;
prípad JVC: Serial.print ("JVC"); prestávka;
prípad SANYO: Serial.print ("SANYO"); prestávka;
prípad MITSUBISHI: Serial.print ("MITSUBISHI"); prestávka;
prípad SAMSUNG: Serial.print („SAMSUNG“); prestávka;
prípad LG: Serial.print ("LG"); prestávka;
prípad WHYNTER: Serial.print ("WHYNTER"); prestávka;
prípad AIWA_RC_T501: Serial.print ("AIWA_RC_T501"); prestávka;
prípad PANASONIC: Serial.print ("PANASONIC"); prestávka;
prípad DENON: Serial.print ("Denon"); prestávka;
}
}
// skládka les résultats
neplatné dumpInfo (decode_results *výsledky)
{
// Skontrolujte, či vyrovnávacia pamäť pretekala
if (results-> overflow) {
Serial.println ("IR kód je príliš dlhý. Upravte IRremoteInt.h a zvýšte RAWBUF");
návrat;
}
// Zobraziť štandard kódovania
Serial.print ("Encodage:");
kódovanie (výsledky);
Serial.println ("");
// Zobraziť kód a dĺžku
Serial.print ("Kód:");
ircode (výsledky);
Serial.print ("(");
Serial.print (výsledky-> bity, DEC);
Serial.println ("bity" ");
}
// štruktúra
neplatné dumpRaw (decode_results *výsledky)
{
// Tlač nespracovaných údajov
Serial.print ("Načasovanie [");
Serial.print (výsledky-> rawlen-1, DEC);
Serial.println ("]:");
for (int i = 1; i rawlen; i ++) {
bez znamienka x = výsledky-> rawbuf * USECPERTICK;
if (! (i & 1)) {// párne
Serial.print ("-");
if (x <1000) Serial.print ("");
if (x <100) Serial.print ("");
Serial.print (x, DEC);
} else {// nepárne
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 je potrebné pre posledný
}
if (! (i % 8)) Serial.println ("");
}
Serial.println (""); // Nový riadok
}
//+=============================================================================
// Vyprázdnite štruktúru decode_results.
//
neplatný dumpCode (decode_results *výsledky)
{
// Spustenie deklarácie
Serial.print ("nepodpísaný int"); // typ premennej
Serial.print ("rawData ["); // názov poľa
Serial.print (výsledky-> rawlen - 1, DEC); // veľkosť poľa
Serial.print ("] = {"); // Spustenie deklarácie
// Vypísanie údajov
for (int i = 1; i rawlen; i ++) {
Serial.print (výsledky-> rawbuf * USECPERTICK, DEC);
if (i rawlen-1) Serial.print (","); // ',' pri poslednom nie je potrebný
if (! (i & 1)) Serial.print ("");
}
// Vyhlásenie konca
Serial.print ("};"); //
// Komentovať
Serial.print ("//");
kódovanie (výsledky);
Serial.print ("");
ircode (výsledky);
// Nový riadok
Serial.println ("");
// Teraz vyhoďte „známe“kódy
if (results-> decode_type! = NEZNÁMY) {
// Niektoré protokoly majú adresu
if (results-> decode_type == PANASONIC) {
Serial.print ("unsigned int addr = 0x");
Serial.print (výsledky-> adresa, HEX);
Serial.println (";");
}
// Všetky protokoly majú údaje
Serial.print ("unsigned int data = 0x");
Serial.print (výsledky-> hodnota, HEX);
Serial.println (";");
}
}
prázdna slučka ()
/********************************************************************** *InfraRouge ***************************************
{
decode_results výsledky; // Niekde na uloženie výsledkov
if (unbcv.decode (& results)) {// Získať IR kód
dumpInfo (& výsledky); // Výstup výsledkov
dumpRaw (& výsledky); // Výstup výsledkov vo formáte RAW
dumpCode (& výsledky); // Výstup výsledkov ako zdrojový kód
Serial.println (""); // Prázdny riadok medzi položkami
unbcv.resume (); // Pripravte sa na ďalšiu hodnotu
}
/******************************************************************** *** RX433 *******************************************
ak (mySwitch.available ())
{
int hodnota = mySwitch.getReceivedValue ();
Serial.println ("RX433");
if (hodnota == 0) {
Serial.print ("Codage unfnu");
} inak
{
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
} // slučka
Krok 3: Infos Sur Les Codes Infra-Rouge
Vaše protokoly plusieurs:
NEC: 32 bitov (podrobnosti o protokole)
Sony: 12 alebo 20 bitov (podrobnosti o protokole) (Porozumenie kódom diaľkového ovládača Sony IR.)
RC5: 12 bitov (podrobnosti o protokole)
RC6: 20 alebo 36 bitov (podrobnosti o protokole)
Nalejte Sony a RC5/6, chaotický prenos do 3 opakovaní!
POZOR: la librairie IRremote.h ne sem pasportuje váš hlasový kód kódov plus 32 bitov. Les RC6, 36 doivent doncêres envoyer en raw, qui prennent plus de taille mémoire.
L'envoie des codes se fera avec la librairie IRremote.h
Príklad: (0x devant le code) a menné množstvo bitov irsend.sendNEC (0xA55A38C7, 32);
Krok 4: Infos Sur Codes RX433
L'envoie se fera avec la librairie RCSwitch.h
Príklad mySwitch.send (1975778, 24);
Pilotný výcvik na palubnej doske cela des prises veliteľov.