
Table des matières:
2025 Auteur: John Day | [email protected]. Dernière modifié: 2025-01-23 14:46

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 celles des télécommandes infra-rouge de la télévision au autre.
On pourra donc ensuite, grâce à un autre montage, envoyer ces codes et piloter n'importe quoi !
Étape 1: Le Montage

Simple, un Arduino Nano, une diode réceptrice infra-rouge et un récepteur 433 mhz.
Étape 2: Le Code Arduino
//InfraRouge
#comprendre
int recvPin = 11; //pin Arduino pour récepteur InfraRouge (TOSP4838)
IRrecv irrecv(recvPin);
//RX433
#comprendre
RCSwitch monSwitch = RCSwitch();
decode_results résultats;
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
annuler l'ircode (decode_results *results)
{
// Panasonic
if (results->decode_type == PANASONIC) {
Serial.print(résultats->adresse, HEX);
Serial.print(":");
}
Serial.print(résultats->valeur, HEX);
}//annuler
// afficahge des codes encodés
encodage vide (decode_results *results)
{
switch (results->decode_type) {
défaut:
case INCONNU: Serial.print("Inconnu"); Pause;
case NEC: Serial.print("NEC"); Pause;
case SONY: Serial.print("SONY"); Pause;
case RC5: Serial.print("RC5"); Pause;
case RC6: Serial.print("RC6"); Pause;
case DISH: Serial.print("DISH"); Pause;
case SHARP: Serial.print("SHARP"); Pause;
case JVC: Serial.print("JVC"); Pause;
case SANYO: Serial.print("SANYO"); Pause;
case MITSUBISHI: Serial.print("MITSUBISHI"); Pause;
case SAMSUNG: Serial.print("SAMSUNG"); Pause;
cas LG: Serial.print("LG"); Pause;
case POURQUOI: Serial.print("WHYNTER"); Pause;
case AIWA_RC_T501: Serial.print("AIWA_RC_T501"); Pause;
case PANASONIC: Serial.print("PANASONIC"); Pause;
case DENON: Serial.print("Denon"); Pause;
}
}
// vidage des résultats
void dumpInfo (decode_results *results)
{
// Vérifie si le buffer a débordé
if (résultats-> débordement) {
Serial.println("Code IR trop long. Modifiez IRremoteInt.h et augmentez RAWBUF");
revenir;
}
// Afficher la norme d'encodage
Serial.print("Encodage: ");
encodage(résultats);
Serial.println("");
// Afficher le code et la longueur
Serial.print("Code: ");
ircode(résultats);
Serial.print(" (");
Serial.print(results->bits, DEC);
Serial.println(" bits)");
}
//structure
void dumpRaw (decode_results *results)
{
// Imprimer les données brutes
Serial.print("Timing[");
Serial.print(results-> rawlen-1, DEC);
Serial.println("]: ");
pour (int i = 1; i rawlen; i++) {
non signé long x = résultats->rawbuf * USECPERTICK;
if (!(i & 1)) { // pair
Serial.print("-");
if (x < 1000) Serial.print(" ");
if (x < 100) Serial.print(" ");
Serial.print(x, DEC);
} else { // impair
Serial.print(" ");
Serial.print("+");
if (x < 1000) Serial.print(" ");
if (x < 100) Serial.print(" ");
Serial.print(x, DEC);
if (i rawlen-1) Serial.print(", "); //', ' pas nécessaire pour le dernier
}
if (!(i % 8)) Serial.println("");
}
Serial.println(""); // Nouvelle ligne
}
//+=============================================================================
// Videz la structure decode_results.
//
void dumpCode (decode_results *results)
{
// Début de la déclaration
Serial.print("unsigned int "); // type de variable
Serial.print("rawData["); // nom du tableau
Serial.print(results-> rawlen - 1, DEC); // taille du tableau
Serial.print("] = {"); // Début de la déclaration
// Vider les données
pour (int i = 1; i rawlen; i++) {
Serial.print(results->rawbuf * USECPERTICK, DEC);
if (i rawlen-1) Serial.print(", "); // ', ' pas nécessaire sur le dernier
if (!(i & 1)) Serial.print(" ");
}
// Fin de la déclaration
Serial.print("};"); //
// Commenter
Serial.print(" // ");
encodage(résultats);
Serial.print(" ");
ircode(résultats);
// Nouvelle ligne
Serial.println("");
// Maintenant, videz les codes "connus"
if (results->decode_type != UNKNOWN) {
// Certains protocoles ont une adresse
if (results->decode_type == PANASONIC) {
Serial.print("unsigned int addr = 0x");
Serial.print(résultats->adresse, HEX);
Serial.println(";");
}
// Tous les protocoles ont des données
Serial.print("données entières non signées = 0x");
Serial.print(résultats->valeur, HEX);
Serial.println(";");
}
}
boucle vide ()
/****************************************************** * InfraRouge ******************************************/
{
decode_results résultats; // Quelque part pour stocker les résultats
if (irrecv.decode(&results)) { // Saisir un code IR
dumpInfo(&results); // Sortir les résultats
dumpRaw(&results); // Sortir les résultats au format RAW
dumpCode(&results); // Sortir les résultats sous forme de code source
Serial.println(""); // Ligne vide entre les entrées
irrecv.resume(); // Préparer la prochaine valeur
}
/****************************************************** *** RX433 **************************************************/
if (mySwitch.available())
{
valeur int = mySwitch.getReceivedValue();
Serial.println("RX433");
si (valeur == 0) {
Serial.print("Code inconnu");
} autre
{
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
}//boucle
Étape 3: Infos Sur Les Codes Infra-Rouge
Il y a plusieurs protocoles:
NEC: 32 bits (détails du protocole)
Sony: 12 ou 20 bits (détails du protocole) (Comprendre les codes des télécommandes IR Sony.)
RC5: 12 bits (détails du protocole)
RC6: 20 ou 36 bits (détails du protocole)
Pour Sony et RC5/6, chaque transmission doit être répétée 3 fois !
ATTENTION: la librairie IRremote.h ne semble pas pouvoir envoyer des codes codés sur plus de 32bits. Les RC6, 36 doivent donc être envoyés en raw, qui prennent plus de taille mémoire.
L'envoie des codes se fera avec la librairie IRremote.h
Exemple: (0x devant le code) et le nombre de bits irsend.sendNEC(0xA55A38C7, 32);
Etape 4: Infos Sur Codes RX433
L'envoie se fera avec la librairie RCSwitch.h
Exemple mySwitch.send(1975778, 24);
On peut facilement piloter avec cela des prises commandées.
Conseillé:
Gérez 100 appareils dans les applications, les organisations, les rôles et les utilisateurs Ubidots : 11 étapes

Gérer 100 appareils dans les applications, les organisations, les rôles et les utilisateurs d'Ubidots : à cette occasion, j'ai décidé de tester la fonctionnalité de la plate-forme IoT Ubidots pour la gestion des utilisateurs dans le cas où elle aurait de nombreux appareils pour plusieurs organisations ou entreprises sous la même Plateforme Ubidots. Information du maire : vous
Comment récupérer les contacts perdus de l'iPhone 5 ? : 3 étapes

Comment récupérer les contacts perdus de l'iPhone 5 ? : La semaine dernière, lorsque j'essayais de mettre à niveau mon iPhone 5 vers iOS 9.2.1, quelque chose de mal est arrivé à l'iPhone. J'ai perdu tous mes contacts sur iphone 5 ! C'est une catastrophe ! Parce que j'ai enregistré de nombreuses informations de contacts importants sur l'iphone, y compris certains partenaires commerciaux
Récupérer les batteries lithium-ion : 8 étapes

Récupération des batteries lithium-ion : Si vous êtes comme moi, alors vous cherchez toujours une excuse pour économiser de l'argent, bricoler ou déconstruire quelque chose qui semble intéressant. J'ai trouvé un moyen de satisfaire tout ce qui précède ! J'ai une affinité pour les batteries lithium-ion. Ils sont de toutes formes et
Récupérer les batteries Lipo : 5 étapes

Récupération des batteries Lipo : C'EST UN HACK DE BRICOLAGE DANGEREUX NE LE FAITES PAS SI VOUS NE SAVEZ PAS CE QUE VOUS FAITES. Les batteries Lipo lorsqu'elles sont utilisées pendant une longue période, de mauvaise qualité ou utilisées sans entretien, les cellules ont perdu leur efficacité. Normalement, la cellule qui sera la plus touchée est en positif
Récupérer les clips de batterie 9V des batteries mortes : 10 étapes

Récupérez les clips de batterie 9V à partir de batteries mortes : vous pouvez utiliser le dessus d'une vieille pile 9V comme clip de batterie 9V pour divers projets électroniques. Le "pince 9V" est également utilisé sur certains supports de batterie de tensions assorties (c'est-à-dire une batterie 4AA.) Voici comment faire une belle version fil-plomb… (Ceci est