Innehållsförteckning:
2025 Författare: John Day | [email protected]. Senast ändrad: 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 och piloter n’importe quoi!
Steg 1: Le Montage
Enkelt, Arduino Nano, une diode réceptrice infra-rouge et un récepteur 433 mhz.
Steg 2: Le Code Arduino
// InfraRouge
#omfatta
int recvPin = 11; // pin Arduino pour récepteur InfraRouge (TOSP4838)
IRrecv irrecv (recvPin);
// RX433
#omfatta
RCSwitch mySwitch = RCSwitch ();
resultat avkodningsresultat;
void setup ()
{
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) sur pin 2 de Arduino Uno et Nano
}
// affichage des codes InfraRouge
void ircode (decode_results *results)
{
// Panasonic
if (results-> decode_type == PANASONIC) {
Serial.print (resultat-> adress, HEX);
Serial.print (":");
}
Serial.print (resultat-> värde, HEX);
}//tomhet
// afficahge des codes encodés
ogiltig kodning (avkodningsresultat *resultat)
{
switch (resultat-> avkodningstyp) {
standard:
fall okänt: Serial.print ("Inconnu"); ha sönder;
fall NEC: Serial.print ("NEC"); ha sönder;
case SONY: Serial.print ("SONY"); ha sönder;
fall RC5: Serial.print ("RC5"); ha sönder;
fall RC6: Serial.print ("RC6"); ha sönder;
fodral DISH: Serial.print ("DISH"); ha sönder;
fall SHARP: Serial.print ("SHARP"); ha sönder;
fall JVC: Serial.print ("JVC"); ha sönder;
fall SANYO: Serial.print ("SANYO"); ha sönder;
fodral MITSUBISHI: Serial.print ("MITSUBISHI"); ha sönder;
fall SAMSUNG: Serial.print ("SAMSUNG"); ha sönder;
fodral LG: Serial.print ("LG"); ha sönder;
fall WHYNTER: Serial.print ("WHYNTER"); ha sönder;
fall AIWA_RC_T501: Serial.print ("AIWA_RC_T501"); ha sönder;
fodral PANASONIC: Serial.print ("PANASONIC"); ha sönder;
fall DENON: Serial.print ("Denon"); ha sönder;
}
}
// dump les résultats
void dumpInfo (avkodningsresultat *resultat)
{
// Kontrollera om bufferten flödade över
if (resultat-> överflöde) {
Serial.println ("IR -kod för lång. Redigera IRremoteInt.h och öka RAWBUF");
lämna tillbaka;
}
// Visa kodningsstandard
Serial.print ("Kodning:");
kodning (resultat);
Serial.println ("");
// Visa kod och längd
Serial.print ("Kod:");
ircode (resultat);
Serial.print ("(");
Serial.print (resultat-> bitar, DEC);
Serial.println ("bitar"));
}
//strukturera
void dumpRaw (avkodningsresultat *resultat)
{
// Skriv ut rådata
Serial.print ("Timing [");
Serial.print (resultat-> rawlen-1, DEC);
Serial.println ("]:");
för (int i = 1; i rawlen; i ++) {
osignerad lång x = resultat-> rawbuf * USECPERTICK;
om (! (i & 1)) {// även
Serial.print ("-");
if (x <1000) Serial.print ("");
if (x <100) Serial.print ("");
Serial.print (x, DEC);
} annat {// udda
Serial.print ("");
Serial.print ("+");
if (x <1000) Serial.print ("");
if (x <100) Serial.print ("");
Serial.print (x, DEC);
if (i rawlen-1) Serial.print (","); // ',' behövs inte för den sista
}
if (! (i % 8)) Serial.println ("");
}
Serial.println (""); // Ny linje
}
//+=============================================================================
// Dumpa ut decode_results -strukturen.
//
void dumpCode (decode_results *results)
{
// Starta deklaration
Serial.print ("unsigned int"); // variabel typ
Serial.print ("rawData ["); // matrisnamn
Serial.print (resultat-> rawlen - 1, DEC); // matrisstorlek
Serial.print ("] = {"); // Starta deklaration
// Dumpdata
för (int i = 1; i rawlen; i ++) {
Serial.print (resultat-> rawbuf * USECPERTICK, DEC);
if (i rawlen-1) Serial.print (","); // ',' behövs inte på den sista
if (! (i & 1)) Serial.print ("");
}
// Avsluta deklaration
Serial.print ("};"); //
// Kommentar
Serial.print ("//");
kodning (resultat);
Serial.print ("");
ircode (resultat);
// Ny linje
Serial.println ("");
// Släpp nu "kända" koder
if (results-> decode_type! = UNKNOWN) {
// Vissa protokoll har en adress
if (results-> decode_type == PANASONIC) {
Serial.print ("unsigned int addr = 0x");
Serial.print (resultat-> adress, HEX);
Serial.println (";");
}
// Alla protokoll har data
Serial.print ("unsigned int data = 0x");
Serial.print (resultat-> värde, HEX);
Serial.println (";");
}
}
void loop ()
/************************************************* *InfraRouge ******************************************/
{
resultat avkodningsresultat; // Någonstans att lagra resultaten
if (irrecv.decode (& resultat)) {// Ta en IR -kod
dumpInfo (& resultat); // Mata ut resultaten
dumpRaw (& resultat); // Mata ut resultaten i RAW -format
dumpCode (& resultat); // Mata ut resultaten som källkod
Serial.println (""); // Tom rad mellan poster
irrecv.resume (); // Förbered dig på nästa värde
}
/************************************************* *** RX433 ********************************************/
om (mySwitch.available ())
{
int värde = mySwitch.getReceivedValue ();
Serial.println ("RX433");
if (värde == 0) {
Serial.print ("Codage inconnu");
} annat
{
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
}//slinga
Steg 3: Information Sur Les Codes Infra-Rouge
Il y a plusieurs -protokoll:
NEC: 32 bitar (protokolldetaljer)
Sony: 12 eller 20 bitar (protokolldetaljer) (Förstå Sony IR -fjärrkoder.)
RC5: 12 bitar (protokolldetaljer)
RC6: 20 ou 36 bits (protokolldetaljer)
Häll 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
Exempel: (0x devant le code) et le nombre de bits irsend.sendNEC (0xA55A38C7, 32);
Steg 4: Information om surkoder RX433
L’envoie se fera avec la librairie RCSwitch.h
Exempel på mySwitch.send (1975778, 24);
På peut facilement piloter avec cela des prises commandés.