RC Switch / ReceiveDemo_Simple no muestra datos en monitor serie

Estoy intentando leer los datos enviados por un dispositivo RF usando el ejemplo RC Switch / ReceiveDemo_Simple.

En resumen quiero hacer este proyecto:

Este es el codigo:

/*
  Example for receiving
  
  https://github.com/sui77/rc-switch/
  
  If you want to visualize a telegram copy the raw data and 
  paste it into http://test.sui.li/oszi/
*/

#include <RCSwitch.h>

RCSwitch mySwitch = RCSwitch();

void setup() {
  Serial.begin(9600);
  mySwitch.enableReceive(0);  // Receiver on interrupt 0 => that is pin #2
}

void loop() {
  if (mySwitch.available()) {
    output(mySwitch.getReceivedValue(), mySwitch.getReceivedBitlength(), mySwitch.getReceivedDelay(), mySwitch.getReceivedRawdata(),mySwitch.getReceivedProtocol());
    mySwitch.resetAvailable();
  }
}

El problema que tengo es que no me aparece nada en el Monitor Serie cuando activo el mando ( he probado varios )
He probado con los módulos receptor: XY -MK -5V y el CJR500 y nada

¿Alguna idea de que puede estar pasando?

Muchas gracias.

En principio no veo en el código ninguna instrucción para imprimir en el monitor serial. Tendrás que añadir algunos " Serial.print () " por algún lado.

1 Like

Ese ejemplo consta de 2 archivos, el que has publicado y "output.ino" que debes copiar en la misma carpeta del proyecto.

¿No te arrojó error al compilar por no estar definida la función output()?

Usa el ejemplo simple

Es lo mismo pero ves los print.

1 Like

He estado realizando algunas pruebas con los modulos.
Con el ReceiveDemo_Advanced no he consegudo que me muestre nada.
Respecto a lo que comenta post #3 no encuntro el segundo archivo "output.ino"

Así que he probado con el ReceiveDemo_Simple y tampoco logro que muestre nada.
Lo estoy probando con un Arduino UNO seleccionando su puerto correspondiente.
En principio lo tengo todo como debe pero algo hay que no logro que muestre en el monitor serie.

He llegado a pensar que los módulos RF no funcionasen a si que lo he conectado al osciloscopio y cuando pulso cualquier mando el modulo envía datos entiendo que al pin 2 del Arduino le tienen que estar llegando datos, es decir los módulos funcionan

Está en la misma carpeta del ejemplo ReceiveDemo_Advanced de la carpeta donde está instalada la librería.

Y yo te recomendé que usaras el ejemplo simple, mira el post#4

Respecto al post #3 ya encontre el archivo "output.ino" y lo guarde en la carpeta ReceiveDemo_Advanced, sin el archivo o con el me deja compilar y el resultado el mismo, no muestra nada.

post #7 Si la he probado, en el post#5 lo comento.
El resultado es el mismo, no muestra nada.
Como ves en las fotos de osciloscopio a la salida del módulo receptor tengo datos, los cuales llegan al pin 2 del Arduino Uno, pero no hoy manera, no los muestra.
Según he estado investigando la librería usa los protocolos:

  • SC5262 / SC5272
  • HX2262 / HX2272
  • PT2262 / PT2272
  • EV1527 / RT1527 / FP1527 / HS1527
  • Intertechno outlets
  • HT6P20X

Y el mando que uso, del cual quiero ver el código usa el protocolo Dynamic Code System.

Quizás por eso no muestra nada.

El codigo del ejemplo simple:

/*
  Simple example for receiving
  
  https://github.com/sui77/rc-switch/
*/

#include <RCSwitch.h>

RCSwitch mySwitch = RCSwitch();

void setup() {
  Serial.begin(9600);
  mySwitch.enableReceive(0);  // Receiver on interrupt 0 => that is pin #2
}

void loop() {
  if (mySwitch.available()) {
    
    Serial.print("Received ");
    Serial.print( mySwitch.getReceivedValue() );
    Serial.print(" / ");
    Serial.print( mySwitch.getReceivedBitlength() );
    Serial.print("bit ");
    Serial.print("Protocol: ");
    Serial.println( mySwitch.getReceivedProtocol() );

    mySwitch.resetAvailable();
  }
}

Como podría modificar el código para cambiar el pin 2 de entrada de datos por otro o que se os ocurre que podría probar.

La librería trabaja con interrupciones hardware así que lo único que puedes hacer es cambiar el pin 2 por el 3.
El pin 2 genera la interrupción 0, el 3 la interrupción 1.
Entonces para usar el pin 3 debes cambiar esta línea de setup()

mySwitch.enableReceive(0);  // Receiver on interrupt 0 => that is pin #2

por

mySwitch.enableReceive(1);  // Receptor en interrupcion 1 =>  pin #3

No son protocolos, son los chips codificadores/decodificadores que soporta la librería, tal como lo especifica la documentación (traducido):

Todo lo que necesita es un Arduino o Raspberry Pi, un transmisor AM de 315 / 433MHz y
 uno o más dispositivos con uno de los chipsets compatibles:
* SC5262 / SC5272
* HX2262 / HX2272
* PT2262 / PT2272
* EV1527 / RT1527 / FP1527 / HS1527
* Intertechno outlets
* HT6P20X

Lo acabo de modificar :

Simple example for receiving
  
  https://github.com/sui77/rc-switch/
*/

#include <RCSwitch.h>

RCSwitch mySwitch = RCSwitch();

void setup() {
  Serial.begin(9600);
  mySwitch.enableReceive(1);  // Receiver on interrupt 1 => that is pin #3
}

void loop() {
  if (mySwitch.available()) {
    
    Serial.print("Received ");
    Serial.print( mySwitch.getReceivedValue() );
    Serial.print(" / ");
    Serial.print( mySwitch.getReceivedBitlength() );
    Serial.print("bit ");
    Serial.print("Protocol: ");
    Serial.println( mySwitch.getReceivedProtocol() );

    mySwitch.resetAvailable();
  }
}

Pulso el mando y sigo sin recibir nada en el monitor serie.
Respecto a esos chips pensé que cada uno tendría su protocolo

¿Y qué te hizo suponer que cambiando de pin iba a funcionar distinto?

¿Te fijaste qué chip tiene el emisor y cuál el receptor para ver si son compatibles con la librería?

1 Like

Pues por experimentar.
No se que chip lleva el mando que uso.
Como comente en el post #8 esta librería solo vale para los chip:

  • SC5262 / SC5272
  • HX2262 / HX2272
  • PT2262 / PT2272
  • EV1527 / RT1527 / FP1527 / HS1527
  • Intertechno outlets
  • HT6P20X

De esto me he dado cuenta experimentando ya que el articulo de luisllamas del post #1 me dio a entender que esta librería mostraba en el monitor serie el código enviado de cualquier mando.

Doy por resuelta mi duda.
Gracias a todos por vuestra ayuda

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.