Transmetteur infrarouge (KY-005)

Transmetteur infrarouge (KY-005)

Code produit: KY005
Qté en Stock : 6
  • $1.99



Une diode électroluminescente qui émet dans le domaine de l'infrarouge. En fonction de la tension d'entrée, des résistances en série sont nécessaires.

Données techniques



Vf 1,1V
If 20mA
Longueur d'onde d'émission 940nm (lumière invisible)

Les désignations (Vf et If) font référence à la tension directe et au courant direct de la diode électroluminescente.

Résistances de série:



Rf (3,3V) 120Ω

(par exemple, lorsqu'il est utilisé avec des microcontrôleurs basés sur un noyau de CPU ARM, comme le Raspberry-Pi).



Rf (5V) 220Ω

(par exemple, lorsqu'il est utilisé avec des microcontrôleurs basés sur Atmel Atmega comme Arduino).

La désignation (Rf) fait référence à la résistance en série requise devant la DEL en fonction de la tension appliquée.

*Sur la carte, il y a la possibilité de souder directement la résistance requise. **L'emplacement pour souder la résistance est directement au-dessus des broches de connexion sur le PCB. Dans ce cas, on peut utiliser la broche du milieu, qui contient alors la résistance.



Exemple de code Arduino


Baudrate der seriellen Ausgabe sollte auf 115200 gestellt werden sonst funktioniert das Fernbedienungs Beispiel nicht

Exemple de code ON/OFF

Affectation des broches Arduino

Arduino Récepteur
Pin 3 Signal
5V +V
Masse GND

Cet exemple de code montre comment une LED peut être alternativement allumée pendant quatre secondes puis éteinte pendant deux secondes à l'aide d'une broche de sortie définissable.

int Led = 13;
 
void setup ()
{
  pinMode (Led, OUTPUT); // Déclaration de la broche de sortie LED
}
 
void loop () //Boucle de programme principale
{
  digitalWrite (Led, HIGH); // la LED est activée
  delay (4000); // Temporisation de 4 secondes
  digitalWrite (Led, LOW); // la LED est déactivée
  delay (2000); // Temporisation de 2 secondes
}

Exemple de code de télécommande


Arduino Récepteur
Pin 2 Signal
5V +V
Masse GND
Arduino Émetteur
Pin 3 Signal
Masse* GND+Résistance
Masse GND
  • *Uniquement si la résistance série a été soudée sur le module et n'est pas connectée devant le module.

En utilisant les deux modules capteurs KY-005 et KY-022, il est possible de construire un système télécommande infrarouge + récepteur infrarouge. Pour ce faire, deux Arduinos sont nécessaires en plus des deux modules. Ceux-ci agissent alors comme un émetteur et comme un récepteur des signaux. Il est seulement important de savoir ce que le récepteur des signaux de la console série émet et ce que l'émetteur envoie, car cela doit correspondre.

Pour l'exemple de code suivant, une bibliothèque supplémentaire est nécessaire :

Arduino-IRremote par Ken Shirriff | publié sous la licence MIT.

La bibliothèque n'est pas incluse dans le paquet et doit être copiée dans le dossier "library" avant de démarrer l'IDE Arduino.

Il se trouve par défaut dans le chemin suivant de votre installation Windows :

C:\User[nom d'utilisateur]\Documents\Arduino\Librairies

Avec les systèmes de transmission infrarouge, il existe différents protocoles dans lesquels les données peuvent être envoyées. Dans l'exemple suivant, le protocole NEC est utilisé pour l'envoi à l'aide de l'exemple SimpleSender modifié et de l'exemple SimpleReceiver modifié - la bibliothèque utilisée "Arduino-IRremote" s'occupe indépendamment de la conversion en séquence de données correcte. Cependant, il existe d'autres protocoles/encodages au sein de la bibliothèque - ceux-ci sont identifiés dans la documentation/code de la bibliothèque. Documentation.

Afin d'utiliser le code qui suit maintenant, il y a quelques éléments importants à garder à l'esprit. Tout d'abord, vous devez ouvrir l'exemple déjà existant de la bibliothèque car il ouvre un fichier très important qui est nécessaire pour la réception. Pour ouvrir cet exemple, allez dans Fichier -> Exemples -> IRremote -> SimpleReceiver. Une fois que vous avez fait cela, il suffit de remplacer le code de l'exemple par le code ci-dessous pour le récepteur. Après cela, il vous suffit de sélectionner l'Arduino auquel vous avez connecté votre récepteur. Pour ce faire, allez dans Outils -> Port -> COM. Il est important que vous sélectionniez le COM auquel est connecté votre premier Arduino qui servira plus tard de récepteur. Dans cet exemple, il est possible de modifier les lignes 88 à 93.

Code pour le récepteur

/*
 * SimpleReceiver.cpp
 *
 * Demonstrates receiving NEC IR codes with IRrecv
 *
 *  Copyright (C) 2020-2021  Armin Joachimsmeyer
 *  armin.joachimsmeyer@gmail.com
 *
 *  This file is part of Arduino-IRremote https://github.com/Arduino-IRremote/Arduino-IRremote.
 *
 *  MIT License
 */

/*
 * Specify which protocol(s) should be used for decoding.
 * If no protocol is defined, all protocols are active.
 */
//#define DECODE_DENON        // Includes Sharp
//#define DECODE_JVC
//#define DECODE_KASEIKYO
//#define DECODE_PANASONIC    // the same as DECODE_KASEIKYO
//#define DECODE_LG
#define DECODE_NEC          // Includes Apple and Onkyo
//#define DECODE_SAMSUNG
//#define DECODE_SONY
//#define DECODE_RC5
//#define DECODE_RC6

//#define DECODE_BOSEWAVE
//#define DECODE_LEGO_PF
//#define DECODE_MAGIQUEST
//#define DECODE_WHYNTER

//#define DECODE_DISTANCE     // universal decoder for pulse width or pulse distance protocols
//#define DECODE_HASH         // special decoder for all protocols

#include <Arduino.h>

/*
 * Define macros for input and output pin etc.
 */
#include "PinDefinitionsAndMore.h"

#include <IRremote.h>

void setup() {
    Serial.begin(115200);
    // Just to know which program is running on my Arduino
    Serial.println(F("START " __FILE__ " from " __DATE__ "\r\nUsing library version " VERSION_IRREMOTE));

    /*
     * Start the receiver, enable feedback LED and take LED feedback pin from the internal boards definition
     */
    IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK, USE_DEFAULT_FEEDBACK_LED_PIN);

    Serial.print(F("Ready to receive IR signals at pin "));
    Serial.println(IR_RECEIVE_PIN);
}

void loop() {
    /*
     * Check if received data is available and if yes, try to decode it.
     * Decoded result is in the IrReceiver.decodedIRData structure.
     *
     * E.g. command is in IrReceiver.decodedIRData.command
     * address is in command is in IrReceiver.decodedIRData.address
     * and up to 32 bit raw data in IrReceiver.decodedIRData.decodedRawData
     */
    if (IrReceiver.decode()) {

        // Print a short summary of received data
        IrReceiver.printIRResultShort(&Serial);
        if (IrReceiver.decodedIRData.protocol == UNKNOWN) {
            // We have an unknown protocol here, print more info
            IrReceiver.printIRResultRawFormatted(&Serial, true);
        }
        Serial.println();

        /*
         * !!!Important!!! Enable receiving of the next value,
         * since receiving has stopped after the end of the current received data packet.
         */
        IrReceiver.resume(); // Enable receiving of the next value

        /*
         * Finally, check the received data and perform actions according to the received command
         */
        if (IrReceiver.decodedIRData.command == 0x34) {
            Serial.println("Signal received");
        } else if (IrReceiver.decodedIRData.command == 0x36) {
            Serial.println("Signal received and it is a different one this time around");
        } else {
            Serial.println("Signal received but sadly not the correct one");
        }
    }
}
C++

Là encore, pour utiliser le code suivant, il faut tenir compte de quelques éléments importants. Tout d'abord, vous devez ouvrir l'exemple existant de la bibliothèque, car un fichier très important est ouvert et est nécessaire pour l'envoi. Pour ouvrir cet exemple, allez dans Fichier -> Exemples -> IRremote -> SimpleSender. Une fois que vous avez fait cela, il suffit de remplacer le code de l'exemple par le code ci-dessous pour l'émetteur. Ensuite, il vous suffit de sélectionner l'Arduino auquel vous avez connecté votre émetteur. Vous procédez comme suit : vous allez dans Outils -> Port -> COM. Il est important que vous sélectionniez le COM auquel est connecté votre deuxième Arduino qui servira plus tard d'émetteur. Dans cet exemple, il est possible de modifier les lignes 49 à 58.

Après avoir configuré votre émetteur, il est important de revenir au COM avec le bon port pour obtenir la sortie série de l'Arduino récepteur.

Code de l'émetteur

/*
   SimpleSender.cpp

    Demonstrates sending IR codes in standard format with address and command
    An extended example for sending can be found as SendDemo.

    Copyright (C) 2020-2021  Armin Joachimsmeyer
    armin.joachimsmeyer@gmail.com

    This file is part of Arduino-IRremote https://github.com/Arduino-IRremote/Arduino-IRremote.

    MIT License
*/
#include <Arduino.h>

/*
   Define macros for input and output pin etc.
*/
#include "PinDefinitionsAndMore.h"

//#define SEND_PWM_BY_TIMER
//#define USE_NO_SEND_PWM

#include <IRremote.h>

void setup() {
  pinMode(LED_BUILTIN, OUTPUT);

  Serial.begin(115200);

  // Just to know which program is running on my Arduino
  Serial.println(F("START " __FILE__ " from " __DATE__ "\r\nUsing library version " VERSION_IRREMOTE));

  /*
     The IR library setup. That's all!
  */
  IrSender.begin(IR_SEND_PIN, ENABLE_LED_FEEDBACK); // Specify send pin and enable feedback LED at default feedback LED pin

  Serial.print(F("Ready to send IR signals at pin "));
  Serial.println(IR_SEND_PIN);
}

/*
   Set up the data to be sent.
   For most protocols, the data is build up with a constant 8 (or 16 byte) address
   and a variable 8 bit command.
   There are exceptions like Sony and Denon, which have 5 bit address.
*/
uint16_t sAddress = 0x0102;
uint8_t sCommand = 0x34;

uint16_t sAddress1 = 0x0101;
uint8_t sCommand1 = 0x35;

uint16_t sAddress2 = 0x0103;
uint8_t sCommand2 = 0x36;

uint8_t sRepeats = 0;

void loop() {

  Serial.println(F("Send NEC with 16 bit address"));
  Serial.flush();

  // Results for the first loop to: Protocol=NEC Address=0x102 Command=0x34 Raw-Data=0xCB340102 (32 bits)
  IrSender.sendNEC(sAddress, sCommand, sRepeats);
  delay(1000);
  IrSender.sendNEC(sAddress1, sCommand1, sRepeats);
  delay(1000);
  IrSender.sendNEC(sAddress2, sCommand2, sRepeats);

  /*
     If you cannot avoid to send a raw value directly like e.g. 0xCB340102 you must use sendNECRaw()
  */
  //    Serial.println(F("Send NECRaw 0xCB340102"));
  //    IrSender.sendNECRaw(0xCB340102, sRepeats);

  delay(1000);  // delay must be greater than 5 ms (RECORD_GAP_MICROS), otherwise the receiver sees it as one long signal
}

Écrire une critique

Remarque: HTML n`est pas traduit!
    Mal           Bien
Captcha