Kazalo:
2025 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 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.
On pourra donc ensuite, grâce à une autre montaža, odposlanec ces code et piloter n’importe quoi!
Korak: Le Montage
Enostaven, brez Arduino Nano, brez diode sprejemnik infrardeče barve in sprejemnik 433 mhz.
2. korak: Le Code Arduino
// InfraRouge
#vključi
int recvPin = 11; // zatič Arduino za sprejemnik InfraRouge (TOSP4838)
IRrecv irecv (recvPin);
// RX433
#vključi
RCSwitch mySwitch = RCSwitch ();
decode_results rezultati;
void setup ()
{
Serial.begin (9600);
unrecv.enableIRIn ();
unrecv.blink13 (true); // allume la LED internet lors de l'envoie InfraRouge
mySwitch.enableReceive (0); // Récepteur RX433 (XY-MK-5V) sur pin 2 de Arduino Uno et Nano
}
// affichage des code InfraRouge
void ircode (decode_results *rezultati)
{
// Panasonic
if (rezultati-> decode_type == PANASONIC) {
Serial.print (rezultati-> naslov, HEX);
Serial.print (":");
}
Serial.print (rezultati-> vrednost, HEX);
} // nično
// afficahge des code encodés
kodiranje praznine (decode_results *rezultati)
{
switch (rezultati-> decode_type) {
privzeto:
ohišje UNKNOWN: Serial.print ("Inconnu"); zlom;
ohišje NEC: Serial.print ("NEC"); zlom;
ohišje SONY: Serial.print ("SONY"); zlom;
ohišje RC5: Serial.print ("RC5"); zlom;
ohišje RC6: Serial.print ("RC6"); zlom;
etui DISH: Serial.print ("DISH"); zlom;
ohišje SHARP: Serial.print ("SHARP"); zlom;
ohišje JVC: Serial.print ("JVC"); zlom;
ohišje SANYO: Serial.print ("SANYO"); zlom;
etui MITSUBISHI: Serial.print ("MITSUBISHI"); zlom;
ohišje SAMSUNG: Serial.print ("SAMSUNG"); zlom;
etui LG: Serial.print ("LG"); zlom;
ohišje WHYNTER: Serial.print ("WHYNTER"); zlom;
ohišje AIWA_RC_T501: Serial.print ("AIWA_RC_T501"); zlom;
ohišje PANASONIC: Serial.print ("PANASONIC"); zlom;
ohišje DENON: Serial.print ("Denon"); zlom;
}
}
// dump les résultats
void dumpInfo (decode_results *rezultati)
{
// Preverite, ali je medpomnilnik prepoln
if (rezultati-> prelivanje) {
Serial.println ("IR koda predolga. Uredite IRremoteInt.h in povečajte RAWBUF");
vrnitev;
}
// Prikaži standard kodiranja
Serial.print ("Encodage:");
kodiranje (rezultati);
Serial.println ("");
// Pokaži kodo in dolžino
Serial.print ("Koda:");
ircode (rezultati);
Serial.print ("(");
Serial.print (rezultati-> bitovi, DEC);
Serial.println ("bitov"));
}
// struktura
void dumpRaw (decode_results *rezultati)
{
// Natisni surove podatke
Serial.print ("Čas [");
Serial.print (rezultati-> rawlen-1, DEC);
Serial.println ("]:");
for (int i = 1; i rawlen; i ++) {
brez podpisa dolgi x = rezultati-> rawbuf * USECPERTICK;
if (! (i & 1)) {// celo
Serial.print ("-");
if (x <1000) Serial.print ("");
if (x <100) Serial.print ("");
Serijski.tisk (x, DEC);
} else {// liho
Serial.print ("");
Serial.print ("+");
if (x <1000) Serial.print ("");
if (x <100) Serial.print ("");
Serijski.tisk (x, DEC);
if (i rawlen-1) Serial.print (","); // ',' za zadnjo ni potrebno
}
if (! (i % 8)) Serial.println ("");
}
Serial.println (""); // Nova vrstica
}
//+=============================================================================
// Odstranite strukturo decode_results.
//
void dumpCode (decode_results *rezultati)
{
// Začni deklaracijo
Serial.print ("unsigned int"); // spremenljivka
Serial.print ("rawData ["); // ime polja
Serial.print (rezultati -> surovo - 1, DEC); // velikost matrike
Serial.print ("] = {"); // Začni deklaracijo
// Izpis podatkov
for (int i = 1; i rawlen; i ++) {
Serial.print (rezultati-> rawbuf * USECPERTICK, DEC);
if (i rawlen-1) Serial.print (","); // ',' na zadnjem ni potrebno
if (! (i & 1)) Serial.print ("");
}
// Konec deklaracije
Serial.print ("};"); //
// Komentiraj
Serial.print ("//");
kodiranje (rezultati);
Serial.print ("");
ircode (rezultati);
// Nova vrstica
Serial.println ("");
// Zdaj izpustite "znane" kode
if (rezultati-> decode_type! = NEPOZNATO) {
// Nekateri protokoli imajo naslov
if (rezultati-> decode_type == PANASONIC) {
Serial.print ("unsigned int addr = 0x");
Serial.print (rezultati-> naslov, HEX);
Serial.println (";");
}
// Vsi protokoli imajo podatke
Serial.print ("nepodpisani int podatki = 0x");
Serial.print (rezultati-> vrednost, HEX);
Serial.println (";");
}
}
void loop ()
/*********************************************** *InfraRouge ****************************************/
{
decode_results rezultati; // Nekje za shranjevanje rezultatov
if (unrecv.decode (& results)) {// Zgrabi kodo IR
dumpInfo (& rezultati); // Iznesite rezultate
dumpRaw (& rezultati); // Rezultate iznesite v formatu RAW
dumpCode (& rezultati); // Rezultate iznesite kot izvorno kodo
Serial.println (""); // Prazna vrstica med vnosi
unrecv.resume (); // Pripravite se na naslednjo vrednost
}
/*********************************************** *** RX433 ********************************************/
if (mySwitch.available ())
{
int vrednost = mySwitch.getReceivedValue ();
Serial.println ("RX433");
če (vrednost == 0) {
Serial.print ("Codage inconnu");
} drugo
{
Serial.print ("Reçu");
Serial.print (mySwitch.getReceivedValue ());
Serial.print (" /");
Serial.print (mySwitch.getReceivedBitlength ());
Serial.print ("bit");
Serial.print ("Protokol:");
Serial.println (mySwitch.getReceivedProtocol ());
}
mySwitch.resetAvailable ();
} // RX433
} // zanka
3. korak: Infos Sur Les Codes Infra-Rouge
Protokoli Il y a plusieurs:
NEC: 32 bitov (podrobnosti o protokolu)
Sony: 12 ali 20 bitov (podrobnosti o protokolu) (Razumevanje kod za daljinsko upravljanje Sony IR.)
RC5: 12 bitov (podrobnosti o protokolu)
RC6: 20 ali 36 bitov (podrobnosti protokola)
Nalijte Sony et RC5/6, prenos v obliki črke do 3 ètre étre répétés!
POZOR: la librairie IRremote.h ne semble pas pouvoir odposlanec des kod kode sur plus de 32bit. 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
Primer: (0x devant le code) et le nombre de bits irsend.sendNEC (0xA55A38C7, 32);
4. korak: Infos Sur Codes RX433
L’envoie se fera avec la librairie RCSwitch.h
Na primer mySwitch.send (1975778, 24);
Pilot na peut facilementu avec cela des prises commandés.