Innholdsfortegnelse:
2025 Forfatter: John Day | [email protected]. Sist endret: 2025-01-13 06:58
Le but est d'afficher les codes 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.
På pourra donc ensuite, grâce à une autre montage, envoyer ces codes and piloter n’importe quoi!
Trinn 1: Le Montage
Enkel, un Arduino Nano, une diode réceptrice infra-rouge et un récepteur 433 mhz.
Trinn 2: Le Code Arduino
// InfraRouge
#inkludere
int recvPin = 11; // pin Arduino pour récepteur InfraRouge (TOSP4838)
IRrecv irrecv (recvPin);
// RX433
#inkludere
RCSwitch mySwitch = RCSwitch ();
resultater for dekoderesultater;
ugyldig oppsett ()
{
Serial.begin (9600);
irrecv.enableIRIn ();
irrecv.blink13 (true); // allume la LED interne lors de l'envoie InfraRouge
mySwitch.enableReceive (0); // Récepteur RX433 (XY-MK-5V) på pin 2 av Arduino Uno et Nano
}
// affichage des codes InfraRouge
ugyldig irkode (dekoderesultater *resultater)
{
// Panasonic
if (results-> decode_type == PANASONIC) {
Serial.print (resultat-> adresse, HEX);
Serial.print (":");
}
Serial.print (resultater-> verdi, HEX);
}//tomrom
// afficahge des codes encodés
ugyldig koding (dekoderesultater *resultater)
{
bytte (resultater-> dekode_type) {
misligholde:
sak UKjent: Serial.print ("Inconnu"); gå i stykker;
case NEC: Serial.print ("NEC"); gå i stykker;
case SONY: Serial.print ("SONY"); gå i stykker;
sak RC5: Serial.print ("RC5"); gå i stykker;
sak RC6: Serial.print ("RC6"); gå i stykker;
case DISH: Serial.print ("DISH"); gå i stykker;
sak SHARP: Serial.print ("SHARP"); gå i stykker;
sak JVC: Serial.print ("JVC"); gå i stykker;
sak SANYO: Serial.print ("SANYO"); gå i stykker;
sak MITSUBISHI: Serial.print ("MITSUBISHI"); gå i stykker;
sak SAMSUNG: Serial.print ("SAMSUNG"); gå i stykker;
etui LG: Serial.print ("LG"); gå i stykker;
case WHYNTER: Serial.print ("WHYNTER"); gå i stykker;
sak AIWA_RC_T501: Serial.print ("AIWA_RC_T501"); gå i stykker;
sak PANASONIC: Serial.print ("PANASONIC"); gå i stykker;
sak DENON: Serial.print ("Denon"); gå i stykker;
}
}
// dump les résultats
void dumpInfo (dekoderesultater *resultater)
{
// Sjekk om bufferen overløp
if (resultater-> overløp) {
Serial.println ("IR -kode for lang. Rediger IRremoteInt.h og øk RAWBUF");
komme tilbake;
}
// Vis kodingsstandard
Serial.print ("Koding:");
koding (resultater);
Serial.println ("");
// Vis kode og lengde
Serial.print ("Kode:");
ircode (resultater);
Serial.print ("(");
Serial.print (resultater-> bits, DEC);
Serial.println ("bits)");
}
//struktur
void dumpRaw (dekode_resultater *resultater)
{
// Skriv ut rådata
Serial.print ("Timing [");
Serial.print (resultater-> rawlen-1, DEC);
Serial.println ("]:");
for (int i = 1; i rawlen; i ++) {
usignert lang x = resultater-> rawbuf * USECPERTICK;
if (! (i & 1)) {// even
Serial.print ("-");
hvis (x <1000) Serial.print ("");
hvis (x <100) Serial.print ("");
Serial.print (x, DEC);
} annet {// merkelig
Serial.print ("");
Serial.print ("+");
hvis (x <1000) Serial.print ("");
hvis (x <100) Serial.print ("");
Serial.print (x, DEC);
hvis (i rawlen-1) Serial.print (","); // ',' ikke nødvendig for den siste
}
if (! (i % 8)) Serial.println ("");
}
Serial.println (""); // Ny linje
}
//+=============================================================================
// Dump ut strukturen decode_results.
//
void dumpCode (decode_results *results)
{
// Start erklæringen
Serial.print ("unsigned int"); // variabel type
Serial.print ("rawData ["); // matrisenavn
Serial.print (resultater-> rawlen - 1, DEC); // matrisestørrelse
Serial.print ("] = {"); // Start erklæringen
// Dump data
for (int i = 1; i rawlen; i ++) {
Serial.print (resultater-> rawbuf * USECPERTICK, DEC);
hvis (i rawlen-1) Serial.print (","); // ',' ikke nødvendig på den siste
hvis (! (i & 1)) Serial.print ("");
}
// Avslutt erklæringen
Serial.print ("};"); //
// Kommentar
Serial.print ("//");
koding (resultater);
Serial.print ("");
ircode (resultater);
// Ny linje
Serial.println ("");
// Dump nå "kjente" koder
if (results-> decode_type! = UKjent) {
// Noen protokoller har en adresse
if (results-> decode_type == PANASONIC) {
Serial.print ("unsigned int addr = 0x");
Serial.print (resultat-> adresse, HEX);
Serial.println (";");
}
// Alle protokoller har data
Serial.print ("usignerte int data = 0x");
Serial.print (resultater-> verdi, HEX);
Serial.println (";");
}
}
hulrom ()
/************************************************ *InfraRouge ****************************************/
{
resultater for dekoderesultater; // Et sted å lagre resultatene
if (irrecv.decode (& results)) {// Ta en IR -kode
dumpInfo (& resultater); // Legg ut resultatene
dumpRaw (& results); // Legg ut resultatene i RAW -format
dumpCode (& resultater); // Skriv ut resultatene som kildekode
Serial.println (""); // Tom linje mellom oppføringer
irrecv.resume (); // Forbered deg på neste verdi
}
/************************************************ *** RX433 *******************************************/
hvis (mySwitch.available ())
{
int verdi = mySwitch.getReceivedValue ();
Serial.println ("RX433");
hvis (verdi == 0) {
Serial.print ("Codage inconnu");
} annet
{
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
}//Løkke
Trinn 3: Informasjon Sur Les Codes Infra-Rouge
Il y a plusieurs protokoller:
NEC: 32 bits (protokolldetaljer)
Sony: 12 ou 20 bits (protokolldetaljer) (Forstå Sony IR -fjernkoder.)
RC5: 12 bits (protokolldetaljer)
RC6: 20 ou 36 bits (protokolldetaljer)
Hell Sony et RC5/6, chaque transmission doit être répétés 3 fois!
OBS: 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
Eksempel: (0x devant le code) et le nombre de bits irsend.sendNEC (0xA55A38C7, 32);
Trinn 4: Informasjon Sur Codes RX433
L’envoie se fera avec la librairie RCSwitch.h
Eksempel på mySwitch.send (1975778, 24);
På peut facilement piloter avec cela des prises commandés.