Talaan ng mga Nilalaman:
2025 May -akda: John Day | [email protected]. Huling binago: 2025-01-13 06:58
Ngunit ang mga code ng code sa 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.
Sa pourra donc ensuite, grâce à une autre montage, mga envoyer ces code at piloter n’importe quoi!
Hakbang 1: Le Montage
Simple, un Arduino Nano, une diode réceptrice infra-rouge et un récepteur 433 mhz.
Hakbang 2: Le Code Arduino
// InfraRouge
# isama
int recvPin = 11; // pin Arduino pour récepteur InfraRouge (TOSP4838)
IRrecv irrecv (recvPin);
// RX433
# isama
RCSwitch mySwitch = RCSwitch ();
mga resulta sa pag-decode_resulta;
walang bisa ang pag-setup ()
{
Serial.begin (9600);
irrecv.enableIRIn ();
irrecv.blink13 (totoo); // 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 code InfraRouge
walang bisa ang ircode (decode_results * mga resulta)
{
// Panasonic
kung (resulta-> decode_type == PANASONIC) {
Serial.print (mga resulta-> address, HEX);
Serial.print (":");
}
Serial.print (mga resulta-> halaga, HEX);
} // walang bisa
// afficahge des code encodés
walang bisa ang pag-encode (decode_results * mga resulta)
{
switch (resulta-> decode_type) {
default:
kaso HINDI KILALA: Serial.print ("Inconnu"); pahinga;
kaso NEC: Serial.print ("NEC"); pahinga;
kaso SONY: Serial.print ("SONY"); pahinga;
kaso RC5: Serial.print ("RC5"); pahinga;
kaso RC6: Serial.print ("RC6"); pahinga;
kaso DISH: Serial.print ("DISH"); pahinga;
kaso SHARP: Serial.print ("SHARP"); pahinga;
kaso JVC: Serial.print ("JVC"); pahinga;
kaso SANYO: Serial.print ("SANYO"); pahinga;
kaso MITSUBISHI: Serial.print ("MITSUBISHI"); pahinga;
kaso SAMSUNG: Serial.print ("SAMSUNG"); pahinga;
kaso LG: Serial.print ("LG"); pahinga;
kaso WHYNTER: Serial.print ("WHYNTER"); pahinga;
kaso AIWA_RC_T501: Serial.print ("AIWA_RC_T501"); pahinga;
kaso PANASONIC: Serial.print ("PANASONIC"); pahinga;
kaso DENON: Serial.print ("Denon"); pahinga;
}
}
// dump les résultats
void dumpInfo (decode_results * mga resulta)
{
// Suriin kung umapaw ang buffer
kung (resulta-> overflow) {
Serial.println ("Masyadong mahaba ang IR code. I-edit ang IRremoteInt.h at dagdagan ang RAWBUF");
bumalik;
}
// Ipakita ang pamantayan ng Pag-encode
Serial.print ("Encodage:");
pag-encode (mga resulta);
Serial.println ("");
// Ipakita ang Code at haba
Serial.print ("Code:");
ircode (mga resulta);
Serial.print ("(");
Serial.print (mga resulta-> mga piraso, DEC);
Serial.println ("bit)");
}
// istraktura
void dumpRaw (decode_results * mga resulta)
{
// Print Raw data
Serial.print ("Oras [");
Serial.print (mga resulta-> rawlen-1, DEC);
Serial.println ("]:");
para sa (int i = 1; i rawlen; i ++) {
unsigned mahabang x = mga resulta-> rawbuf * USECPERTICK;
kung (! (i & 1)) {// kahit
Serial.print ("-");
kung (x <1000) Serial.print ("");
kung (x <100) Serial.print ("");
Serial.print (x, DEC);
} iba pa {// kakaiba
Serial.print ("");
Serial.print ("+");
kung (x <1000) Serial.print ("");
kung (x <100) Serial.print ("");
Serial.print (x, DEC);
kung (i rawlen-1) Serial.print (","); // ',' hindi kinakailangan para sa huling isa
}
kung (! (i% 8)) Serial.println ("");
}
Serial.println (""); // Bagong linya
}
//+=============================================================================
// Itapon ang istraktura ng decode_results.
//
void dumpCode (decode_results * mga resulta)
{
// Simulang deklarasyon
Serial.print ("unsigned int"); // variable type
Serial.print ("rawData ["); // pangalan ng array
Serial.print (mga resulta-> rawlen - 1, DEC); // laki ng array
Serial.print ("] = {"); // Simulang deklarasyon
// Data ng basura
para sa (int i = 1; i rawlen; i ++) {
Serial.print (mga resulta-> rawbuf * USECPERTICK, DEC);
kung (i rawlen-1) Serial.print (","); // ',' hindi kinakailangan sa huli
kung (! (i & 1)) Serial.print ("");
}
// Tapusin ang deklarasyon
Serial.print ("};"); //
// Komento
Serial.print ("//");
pag-encode (mga resulta);
Serial.print ("");
ircode (mga resulta);
// Bagong linya
Serial.println ("");
// Ngayon magtapon ng mga "kilalang" code
kung (resulta-> decode_type! = HINDI ALAM) {
// Ang ilang mga protokol ay may isang address
kung (resulta-> decode_type == PANASONIC) {
Serial.print ("unsigned int addr = 0x");
Serial.print (mga resulta-> address, HEX);
Serial.println (";");
}
// Lahat ng mga protocol ay may data
Serial.print ("unsigned int data = 0x");
Serial.print (mga resulta-> halaga, HEX);
Serial.println (";");
}
}
walang bisa loop ()
/ ***** * InfraRouge ***** ***** ***** ***** ***** **** /
{
mga resulta sa pag-decode_resulta; // Saanman upang maiimbak ang mga resulta
kung (irrecv.decode (& mga resulta)) {// Kumuha ng isang IR code
dumpInfo (& mga resulta); // Output ang mga resulta
dumpRaw (& mga resulta); // Output ang mga resulta sa format na RAW
dumpCode (& mga resulta); // Output ang mga resulta bilang source code
Serial.println (""); // Blangko linya sa pagitan ng mga entry
irrecv.resume (); // Maghanda para sa susunod na halaga
}
/ ***** *** RX433 ***** ***** ***** ***** ***** **** /
kung (mySwitch.available ())
{
int halaga = mySwitch.getReceivedValue ();
Serial.println ("RX433");
kung (halaga == 0) {
Serial.print ("Codage inconnu");
} iba pa
{
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
} // loop
Hakbang 3: Ang Infos Sur Les Codes Infra-Rouge
Ako ay isang mga plusieurs na protokol:
NEC: 32 bits (mga detalye ng protocol)
Sony: 12 o 20 bits (mga detalye ng protocol) (Pag-unawa sa mga malalayong code ng Sony IR.)
RC5: 12 bits (mga detalye ng protocol)
RC6: 20 o 36 bits (mga detalye ng protocol)
Ibuhos ang Sony et RC5 / 6, ang pagpapadala ng chaque ay dapat na gawin 3 beses!
ATTENTION: la librairie IRremote.h ne semble pas pouvoir envoyer des mga code 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 code se fera avec la librairie IRremote.h
Exemple: (0x devant le code) et le nombre de bits irsend.sendNEC (0xA55A38C7, 32);
Hakbang 4: Ang Infos Sur Codes RX433
L’envoie se fera avec la librairie RCSwitch.h
Exemple mySwitch.send (1975778, 24);
Sa peut facilement piloter avec cela des prises commandés.