Problema de enlace ISM RF

0

He establecido un enlace de RF utilizando TWS-CS-2 como transmisor y AM-HRR3-433 como receptor.

La frecuencia portadora: 433.92MHz.

Tipo de modulación: PREGUNTE

ATtiny25 para generar y decodificar la señal codificada de Manchester.

El código se probó con dos ATtinys conectados directamente y funcionó a la perfección.

Luego probé la comunicación inalámbrica y empezaron a suceder cosas extrañas.

Tengo dos tipos de señal (dos números de cuatro dígitos). Uno siempre se recibe y se ve en un monitor de serie, el otro no se puede ver la mayor parte del tiempo.

Agradecería cualquier ayuda.


ACTUALIZACIÓN

Usé la biblioteca de Manchester de enlace

y Arduino Uno Rev.3 como ISP

código Tx

    #include <Manchester.h>

#define TxPin 2
short int switch_on = 1678;
short int switch_off = 8435; // !!!Signal that is not detected most of the time
short int flag;
short int ON_Button;
short int OFF_Button;


void setup()
{
  man.setupTransmit(TxPin, MAN_1200);
  pinMode(3,OUTPUT);
}


void loop() {
  ON_Button = digitalRead(0);
  OFF_Button = digitalRead(1);

  if(ON_Button==OFF_Button){digitalWrite(3, LOW);return;}

  if(ON_Button==HIGH) {flag=1;digitalWrite(3, HIGH);}
  if(OFF_Button==HIGH) {flag=2;digitalWrite(3, HIGH);}

  if(flag==1)
  man.transmit(switch_on);
  if(flag==2)
  man.transmit(switch_off);
}

código Rx

    #include <Manchester.h>

#define RX_PIN 2

void setup() {
  man.setupReceive(RX_PIN, MAN_1200);
  man.beginReceive();
  pinMode(0,OUTPUT);
  digitalWrite(0,LOW);
}

void loop() {
  if (man.receiveComplete()) {
    short int m = man.getMessage();
    man.beginReceive();
    if(m==1678){digitalWrite(0,HIGH);}
    if(m==8435){digitalWrite(0,LOW);} // !!!Signal that is not detected most of the time
    m = 0;
  }
}
    
pregunta ivan

1 respuesta

1

Problema resuelto. Resultó que la velocidad de datos era demasiado alta para mi receptor.

Cambié de 1200 bps a 300 bps.

Ahora todo funciona sin problemas.

    
respondido por el ivan

Lea otras preguntas en las etiquetas