GYKQ-03 clonar IR con Arduino

Hola a todos/as
primeramente no sabría como clasificar este comentario y si lo hago en la sección o foro correcto

os comento y os pongo en situación a ver si alguien me puede dar una solución y/o ayudar-me
tengo una mando a distancia de aire acondicionado GYKQ-03 for TCL y el aire acondicionado es de FanWorld
aquí os dejo un link para que podaís ver como es el mando a distancia en cuestión


el echo esta en que quiero clonar y saber los codigos IR del mando con Arduino, porque desde hace cosa de , poco mas de 1 año, me domotice y ahun estoy trabajando en ello, mi piso (lo hice con el micro-controlador siemens logo 8 con web server, conbinado con algunos esp32 y arduino)
esta practica ( de clonar ) la he realizado anteriormente muchas veces con muchos otros dispositivos
el echo esta, en que, en esta ocasión, con este mando no consigo realizarlo.
pulsando cualquier tecla del mando, simpre me sale (en monitor serie de arduino) el mismo numero D3648000 infinidad de veces al pulsar una sola vez

he realizado varios programas distintos con arduino e incluso con esp8266 y esp32
he modificado la variación de los milisegundos de frecuencia
y siempre me da el mismo resultado

alguien me puede decir, si lleva un tipo de codificación, encriptación especial
o si el algún sitio web (cosa que no he encontrado) hay alguna relación de codigo raw ?

que forma hay para que pueda saber y clonar este mando ?

Gracias
 

Dr. Zoidberg

Well-known-Papá Pitufo
En este post está el link a la biblioteca IR para Arduino que yo he usado y te informa todo sobre la trama que se recibe:
Si no la has usado podrías probarla para ver si te trae información adicional que te sea útil.
 
Hay varios estándares de codificación de los mandos IR, si es una de ellas seguramente lo podrás duplicar.
Si es muy atípico, lo podrías capturar y repetir simplemente leyendo el pin del receptor y repitiéndolo.
 
Hola, y gracias por responder tant rapido :)
para tener mas información, yo utilizo este porograma de arduino pero aplicado en un ESP32 (que es lo mismo)

modifique el archivo IRremoteInt.h para ampliar el buffer de memeoria #define RAWBUF 101 a #define RAWBUF 400


Código:
#include <IRremote.h>

//------------------------------------------------------------------------------
// Tell IRremote which Arduino pin is connected to the IR Receiver (TSOP4838)
//
#if defined(ESP32)
int IR_RECEIVE_PIN = 15;
#else
int IR_RECEIVE_PIN = 11;
#endif
IRrecv IrReceiver(IR_RECEIVE_PIN);

//+=============================================================================
// Configure the Arduino
//

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

    Serial.begin(115200);   // Status message will be sent to PC at 9600 baud
#if defined(__AVR_ATmega32U4__) || defined(SERIAL_USB) || defined(SERIAL_PORT_USBVIRTUAL)
    delay(2000); // To be able to connect Serial monitor after reset and before first printout
#endif
    // Just to know which program is running on my Arduino
    Serial.println(F("START " __FILE__ " from " __DATE__));

    IrReceiver.enableIRIn();  // Start the receiver
    IrReceiver.blink13(true); // Enable feedback LED

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

//+=============================================================================
// Dump out the decode_results structure.
//
void dumpInfo() {
    // Check if the buffer overflowed
    if (IrReceiver.results.overflow) {
        Serial.println("IR code too long. Edit IRremoteInt.h and increase RAW_BUFFER_LENGTH");
        return;
    }

    IrReceiver.printResultShort(&Serial);

    Serial.print(" (");
    Serial.print(IrReceiver.results.bits, DEC);
    Serial.println(" bits)");
}

//+=============================================================================
// The repeating section of the code
//
void loop() {
    if (IrReceiver.decode()) {  // Grab an IR code
        dumpInfo();             // Output the results
        IrReceiver.printIRResultRawFormatted(&Serial);  // Output the results in RAW format
        Serial.println();                               // blank line between entries
        IrReceiver.printIRResultAsCArray(&Serial);      // Output the results as source code array
        IrReceiver.printIRResultAsCVariables(&Serial);  // Output address and data as source code variables
        IrReceiver.printIRResultAsPronto(&Serial);
        Serial.println();                               // 2 blank lines between entries
        Serial.println();
        IrReceiver.resume();                            // Prepare for the next value
    }
}

------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------

EL RESULTADO con el mando enviando para conectar a modo calor a 22 grados es esto

Protocol=PANASONIC Data=0x3648000 Address=0xC4D3 (48 bits)
rawData[227]:
     +3150, -1650     + 600, - 950     + 600, - 950     + 600, - 300
     + 550, - 300     + 600, - 250     + 600, - 950     + 600, - 300
     + 550, - 300     + 600, - 950     + 600, - 950     + 600, - 300
     + 550, -1000     + 600, - 250     + 600, - 300     + 550, -1000
     + 550, -1000     + 600, - 250     + 600, - 950     + 600, -1000
     + 550, - 300     + 600, - 250     + 600, - 950     + 600, - 300
     + 550, - 300     + 600, - 950     + 600, - 300     + 550, - 300
     + 600, - 250     + 600, - 300     + 550, - 300     + 600, - 250
     + 600, - 300     + 550, - 300     + 600, - 250     + 600, - 300
     + 600, - 250     + 600, - 250     + 600, - 300     + 600, - 250
     + 600, - 300     + 550, - 300     + 600, - 250     + 600, - 950
     + 600, - 300     + 550, - 300     + 600, - 950     + 600, - 300
     + 550, - 300     + 600, - 950     + 600, - 300     + 550, - 300
     + 600, - 250     + 600, - 300     + 550, - 300     + 600, - 250
     + 600, - 300     + 550, -1000     + 600, - 250     + 600, - 250
     + 600, -1000     + 550, - 300     + 550, - 300     + 600, - 300
     + 550, - 300     + 550, -1000     + 550, - 350     + 550, -1000
     + 550, - 300     + 550, - 300     + 600, - 300     + 550, - 300
     + 550, - 350     + 550, - 300     + 550, - 300     + 550, - 350
     + 550, - 300     + 550, - 300     + 550, - 350     + 550, - 300
     + 550, - 300     + 600, - 300     + 550, - 300     + 550, - 300
     + 600, - 300     + 550, - 300     + 550, - 300     + 600, - 300
     + 550, - 300     + 550, - 350     + 550, - 300     + 550, - 300
     + 550, - 350     + 550, - 300     + 550, - 300     + 550, - 350
     + 550, - 300     + 550, - 300     + 600, - 300     + 550, - 300
     + 550, - 300     + 600, - 300     + 550, - 300     + 550, - 300
     + 600, - 300     + 550, - 300     + 550, - 350     + 550, - 300
     + 550, -1000     + 550, - 300     + 600, - 300     + 550, -1000
     + 550, - 300     + 550

uint16_t rawData[227] = {3150,1650, 600,950, 600,950, 600,300, 550,300, 600,250, 600,950, 600,300, 550,300, 600,950, 600,950, 600,300, 550,1000, 600,250, 600,300, 550,1000, 550,1000, 600,250, 600,950, 600,1000, 550,300, 600,250, 600,950, 600,300, 550,300, 600,950, 600,300, 550,300, 600,250, 600,300, 550,300, 600,250, 600,300, 550,300, 600,250, 600,300, 600,250, 600,250, 600,300, 600,250, 600,300, 550,300, 600,250, 600,950, 600,300, 550,300, 600,950, 600,300, 550,300, 600,950, 600,300, 550,300, 600,250, 600,300, 550,300, 600,250, 600,300, 550,1000, 600,250, 600,250, 600,1000, 550,300, 550,300, 600,300, 550,300, 550,1000, 550,350, 550,1000, 550,300, 550,300, 600,300, 550,300, 550,350, 550,300, 550,300, 550,350, 550,300, 550,300, 550,350, 550,300, 550,300, 600,300, 550,300, 550,300, 600,300, 550,300, 550,300, 600,300, 550,300, 550,350, 550,300, 550,300, 550,350, 550,300, 550,300, 550,350, 550,300, 550,300, 600,300, 550,300, 550,300, 600,300, 550,300, 550,300, 600,300, 550,300, 550,350, 550,300, 550,1000, 550,300, 600,300, 550,1000, 550,300, 550};  // Protocol=PANASONIC Data=0x3648000 Address=0xC4D3
uint16_t address = 0xC4D3;
uint16_t data = 0x3648000;

Pronto Hex: 0000 006D 0072 0000 0079 003F 0017 0025 0017 0025 0017 000C 0015 000C 0017 000A 0017 0025 0017 000C 0015 000C 0017 0025 0017 0025 0017 000C 0015 0026 0017 000A 0017 000C 0015 0026 0015 0026 0017 000A 0017 0025 0017 0026 0015 000C 0017 000A 0017 0025 0017 000C 0015 000C 0017 0025 0017 000C 0015 000C 0017 000A 0017 000C 0015 000C 0017 000A 0017 000C 0015 000C 0017 000A 0017 000C 0017 000A 0017 000A 0017 000C 0017 000A 0017 000C 0015 000C 0017 000A 0017 0025 0017 000C 0015 000C 0017 0025 0017 000C 0015 000C 0017 0025 0017 000C 0015 000C 0017 000A 0017 000C 0015 000C 0017 000A 0017 000C 0015 0026 0017 000A 0017 000A 0017 0026 0015 000C 0015 000C 0017 000C 0015 000C 0015 0026 0015 000D 0015 0026 0015 000C 0015 000C 0017 000C 0015 000C 0015 000D 0015 000C 0015 000C 0015 000D 0015 000C 0015 000C 0015 000D 0015 000C 0015 000C 0017 000C 0015 000C 0015 000C 0017 000C 0015 000C 0015 000C 0017 000C 0015 000C 0015 000D 0015 000C 0015 000C 0015 000D 0015 000C 0015 000C 0015 000D 0015 000C 0015 000C 0017 000C 0015 000C 0015 000C 0017 000C 0015 000C 0015 000C 0017 000C 0015 000C 0015 000D 0015 000C 0015 0026 0015 000C 0017 000C 0015 0026 0015 000C 0015 258F

es un protocolo de PANASONIC de 48 bits

y el programa que utilizo para enviar la señal mediante un arduino uno es
------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------

uint16_t engegar_aire[227] = {3150,1650, 600,950, 600,950, 600,300, 550,300, 600,250, 600,950, 600,300, 550,300, 600,950, 600,950, 600,300, 550,1000, 600,250, 600,300, 550,1000, 550,1000, 600,250, 600,950, 600,1000, 550,300, 600,250, 600,950, 600,300, 550,300, 600,950, 600,300, 550,300, 600,250, 600,300, 550,300, 600,250, 600,300, 550,300, 600,250, 600,300, 600,250, 600,250, 600,300, 600,250, 600,300, 550,300, 600,250, 600,950, 600,300, 550,300, 600,950, 600,300, 550,300, 600,950, 600,300, 550,300, 600,250, 600,300, 550,300, 600,250, 600,300, 550,1000, 600,250, 600,250, 600,1000, 550,300, 550,300, 600,300, 550,300, 550,1000, 550,350, 550,1000, 550,300, 550,300, 600,300, 550,300, 550,350, 550,300, 550,300, 550,350, 550,300, 550,300, 550,350, 550,300, 550,300, 600,300, 550,300, 550,300, 600,300, 550,300, 550,300, 600,300, 550,300, 550,350, 550,300, 550,300, 550,350, 550,300, 550,300, 550,350, 550,300, 550,300, 600,300, 550,300, 550,300, 600,300, 550,300, 550,300, 600,300, 550,300, 550,350, 550,300, 550,1000, 550,300, 600,300, 550,1000, 550,300, 550};  // Protocol=PANASONIC Data=0x3648000 Address=0xC4D3

#include <IRremote.h>
int button = 12;
char buttonState = LOW;
IRsend irsend;
int khz=38;   //canviar la frequencia
void setup() {
  Serial.begin(9600);
  pinMode(button, INPUT);
}
void loop() {
  buttonState=digitalRead(button);
  if(buttonState==HIGH){
    Serial.println("boto apretat");
               irsend.sendRaw(engegar_aire, sizeof(engegar_aire)/sizeof(int), khz);
       delay(3000);
     }
    delay(100);
  }


y no funciona!
alguine ve algun error o fallo que se me pueda passar por alto ?
 
Última edición:
hola de nuevo..
he revisado e investigado el porque no funciona
me he dado cuenta de que al enviar la señal IR por medio de esp8266 en vez de enviar esto

Protocol=PANASONIC Data=0x3648000 Address=0xC4D3 (48 bits)
rawData[227]: y los numeros que le preceden......

me envía lo mismo pero modificado

Protocol=PANASONIC Data=0x3648000 Address=0xC4D3 (48 bits)
rawData[113]: y con los numeros que le preceden


la diferencia esta en rawData[227] y rawData[113]

alguien me sabría decir el porque me canvía este valor automaticamente, cuando lo tengo configurado con 227 ?

que significa 227 y 113 ?
 

Dr. Zoidberg

Well-known-Papá Pitufo
alguien me sabría decir el porque me caMBIA este valor automaticamente, cuando lo tengo configurado con 227 ?
Por que en el readme dice esto:
- ESP32 (receive only)
- ESP8266 is supported in a fork based on an old codebase that isn't as recent, but it works reasonably well given that perfectly timed sub millisecond interrupts are different on that chip. See crankyoldgit/IRremoteESP8266
Será por eso???
 
Última edición:
Uff !! perdón por el " caMBIA " se me ha colado 😅😅

probaré el ejemplo del enlace que me facilita a ver si me funciona con esp32 y/o esp8266
ya que me interesa enviar IR con esp8266 para terminar mi proyecto, ya que tengo bastantes esp8266 y los tengo que ir utilizando todos
 
Arriba