Inhoudsopgave:
2025 Auteur: John Day | [email protected]. Laatst gewijzigd: 2025-01-13 06:57
Het enige dat u kunt lezen is de code van de televisiecommando's van de stijl van de lamp, de poort van de garage en de originele functie van 433 mhz (RX433) met meer informatie over de infra-rouge van de televisie.
Op pourra donc ensuite, grâce à une autre montage, envoyer ces codes et piloter n'importe quoi!
Stap 1: Le Montage
Eenvoudig, zonder Arduino Nano, een diode-ontvanger infra-rouge en een ontvanger 433 mhz.
Stap 2: Le Code Arduino
//InfraRouge
#erbij betrekken
int recvPin = 11; //pin Arduino voor InfraRouge (TOSP4838)
IRrecv irrecv(recvPin);
//RX433
#erbij betrekken
RCSwitch mijnSwitch = RCSwitch();
decode_results resultaten;
ongeldige instelling ()
{
Serieel.begin(9600);
onrecv.enableIRIn();
irrev.blink13(true);//allume la LED interne lors de l'envoie InfraRouge
mySwitch.enableReceive(0); // Ontvanger RX433 (XY-MK-5V) op pin 2 van Arduino Uno en Nano
}
// affichage des codes InfraRouge
void ircode (decode_results *results)
{
// Panasonic
if (resultaten->decode_type == PANASONIC) {
Serial.print(resultaten->adres, HEX);
Serial.print(":");
}
Serial.print(resultaten->waarde, HEX);
}//leegte
// afficahge des codes encodes
ongeldige codering (decode_results *results)
{
switch (resultaten->decode_type) {
standaard:
geval ONBEKEND: Serial.print("Inconnu"); pauze;
geval NEC: Serial.print ("NEC"); pauze;
geval SONY: Serial.print ("SONY"); pauze;
geval RC5: Serial.print ("RC5"); pauze;
geval RC6: Serial.print ("RC6"); pauze;
geval DISH: Serial.print ("SCHOTEL"); pauze;
case SHARP: Serial.print("SHARP"); pauze;
geval JVC: Serial.print ("JVC"); pauze;
geval SANYO: Serial.print ("SANYO"); pauze;
geval MITSUBISHI: Serial.print ("MITSUBISHI"); pauze;
geval SAMSUNG: Serial.print ("SAMSUNG"); pauze;
behuizing LG: Serial.print ("LG"); pauze;
geval WHYNTER: Serial.print ("WHYNTER"); pauze;
geval AIWA_RC_T501: Serial.print ("AIWA_RC_T501"); pauze;
geval PANASONIC: Serial.print("PANASONIC"); pauze;
geval DENON: Serial.print("Denon"); pauze;
}
}
// dump les résultats
void dumpInfo (decode_results *results)
{
// Controleer of de buffer overstroomde
if (resultaten->overloop) {
Serial.println ("IR-code te lang. Bewerk IRremoteInt.h en verhoog RAWBUF");
opbrengst;
}
// Toon coderingsstandaard
Serial.print("Codage: ");
codering (resultaten);
Serieel.println("");
// Toon code & lengte
Serial.print("Code: ");
ircode(resultaten);
Serieel.print(" (");
Serial.print(resultaten->bits, DEC);
Serial.println ("bits)");
}
//structuur
void dumpRaw (decode_results * resultaten)
{
// Onbewerkte gegevens afdrukken
Serial.print("Timing[");
Serial.print(resultaten->rawlen-1, DEC);
Serieel.println("]: ");
voor (int i = 1; i rawlen; i++) {
unsigned long x = results->rawbuf * USECPERTICK;
if (!(i & 1)) { // even
Serieel.print("-");
if (x < 1000) Serial.print(" ");
if (x < 100) Serial.print(" ");
Serial.print(x, DEC);
} anders { // oneven
Serieel.print(" ");
Serieel.print("+");
if (x < 1000) Serial.print(" ");
if (x < 100) Serial.print(" ");
Serial.print(x, DEC);
if (i rawlen-1) Serial.print(", "); //', ' niet nodig voor de laatste
}
if (!(i % 8)) Serial.println("");
}
Serieel.println(""); // Nieuwe lijn
}
//+=============================================================================
// Dump de decode_results-structuur.
//
void dumpCode (decode_results *results)
{
// Aangifte starten
Serial.print("unsigned int "); // variabel type
Serial.print("rawData["); // arraynaam
Serial.print (resultaten->rawlen - 1, DEC); // matrixgrootte
Serieel.print("] = {"); // Aangifte starten
// Gegevens dumpen
voor (int i = 1; i rawlen; i++) {
Serial.print(resultaten->rawbuf * USECPERTICK, DEC);
if (i rawlen-1) Serial.print(", "); // ', ' niet nodig op de laatste
if (!(i & 1)) Serial.print(" ");
}
// Einde aangifte
Serieel.print("};"); //
// Opmerking
Serieel.print(" // ");
codering (resultaten);
Serieel.print(" ");
ircode(resultaten);
// Nieuwe lijn
Serieel.println("");
// Dump nu "bekende" codes
if (resultaten->decode_type != UNKNOWN) {
// Sommige protocollen hebben een adres
if (resultaten->decode_type == PANASONIC) {
Serial.print("unsigned int addr = 0x");
Serial.print(resultaten->adres, HEX);
Serieel.println(";");
}
// Alle protocollen hebben gegevens
Serial.print("unsigned int data = 0x");
Serial.print(resultaten->waarde, HEX);
Serieel.println(";");
}
}
lege lus ()
/************************************************** * InfraRouge *****************************************/
{
decode_results resultaten; // Ergens om de resultaten op te slaan
if (irrecv.decode(&results)) { // Pak een IR-code
dumpInfo(&resultaten); // Voer de resultaten uit
dumpRaw(&resultaten); // Voer de resultaten uit in RAW-formaat
dumpCode(&resultaten); // Voer de resultaten uit als broncode
Serieel.println(""); // Blanco regel tussen invoer
irrev.resume(); // Bereid je voor op de volgende waarde
}
/************************************************** *** RX433 *********************************************/
if (mySwitch.available())
{
int-waarde = mySwitch.getReceivedValue();
Serial.println("RX433");
als (waarde == 0) {
Serial.print("Codage inconnu");
} anders
{
Serial.print("Recu ");
Serial.print(mySwitch.getReceivedValue());
Serieel.print(" / ");
Serial.print(mySwitch.getReceivedBitlength());
Serial.print("bit ");
Serial.print("Protocole: ");
Serial.println(mySwitch.getReceivedProtocol());
}
mySwitch.resetAvailable();
}//RX433
}//lus
Stap 3: Info over codes Infra-Rouge
Il y a plusieurs protocollen:
NEC: 32 bits (protocoldetails)
Sony: 12 of 20 bits (protocoldetails) (Inzicht in Sony IR-afstandsbedieningscodes.)
RC5: 12 bits (protocoldetails)
RC6: 20 of 36 bits (protocoldetails)
Pour Sony et RC5/6, chaque transmissie doit être répétés 3 fois !
LET OP: de bibliotheek IRremote.h ne semble pas pouvoir envoyer des codes codes 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
Voorbeeld: (0x devant le code) en le nombre de bits irsend.sendNEC(0xA55A38C7, 32);
Stap 4: Info over codes RX433
L'envoie se fera avec la librairie RCSwitch.h
Voorbeeld mySwitch.send (1975778, 24);
Op peut facilement piloot avec cela des prises commandés.