¿Comunicación de Pic a Pic con el módulo inalámbrico 434mhz?

1

Quiero transmitir datos de un Pic18f2550 a otro utilizando un módulo inalámbrico de 434 mhz. pero no funciona en absoluto.

Los siguientes son los circuitos para Tx y Rx respectivamente.

el código para la parte Tx se proporciona a continuación. escrito en MikroC v8.2

void tx_data(char);

#define FREQ 20000000
#define baud 9600
#define spbrg_value (((FREQ/64)/baud)-1)    // Refer to the formula for Baud rate calculation in Description tab


void main()
{
    SPBRG=spbrg_value;      // Fill the SPBRG register to set the Baud Rate
    RCSTA.SPEN=1;           // To activate Serial port (TX and RX pins)
    TXSTA.TXEN=1;           // To enable transmission
    RCSTA.CREN=1;           // To enable continuous reception
    TRISA=0;
    TRISB=255;

    while(1)
    {
        tx_data(PORTB);
        delay_ms(100);
        LATA.LATA4=1;
        delay_ms(100);
        LATA.LATA4=0;
    }
}


void tx_data(char data1)
{
    TXREG=data1;                                     // Store data in Transmit register
    while(PIR1.TXIF==0);                             // Wait until TXIF gets low
}

y el código Rx

unsigned char rx_data(void);

#define FREQ 20000000
#define baud 9600
#define spbrg_value (((FREQ/64)/baud)-1)    


void main()
{
    unsigned int state;
    SPBRG=spbrg_value;      // Fill the SPBRG register to set the Baud Rate
    RCSTA.SPEN=1;           // To activate Serial port (TX and RX pins)
    TXSTA.TXEN=1;           // To enable transmission
    RCSTA.CREN=1;           // To enable continuous reception
    TRISB=0;

    while(1)
    {
       state=rx_data();
       PORTB=state;
    } //main loop while(1)!!
} //end main()


unsigned char rx_data(void)
{
    while(PIR1.RCIF==0);                           // Wait until RCIF gets low
    return RCREG;                                 // Retrieve data from reception register
}

¿Pero esta configuración no transmite / recibe datos? He intentado reemplazando el módulo inalámbrico con cables. Entonces funciona perfectamente ... tal vez el módulo de RF sea defectuoso ... pero eso es altamente improbable porque lo he probado con 10 pares de módulos de RF diferentes.

Entonces, ¿hay algún problema con el circuito o si se supone que el módulo de RF es defectuoso, hay alguna forma de comprobar que funciona?

ACTUALIZACIÓN:

como se me ha pedido, adjunto la imagen del módulo de RF que estoy usando ... no, no sé la parte. pero parece la siguiente imagen

También intenté conectar el receptor de RF en la placa USB-TTL para ver si se están transmitiendo datos ... pero no ... no se está transmitiendo nada. ¿Alguna ayuda?

    
pregunta Suraj Bhawal

1 respuesta

2

ACTUALIZACIÓN:

En primer lugar, para todos aquellos que no conocen estos módulos. Estos son módulos de comunicación inalámbrica, uno es Transmisor y amplificador; otro es el receptor. Estos módulos utilizan radiofrecuencia (RF) para transmitir / recibir datos utilizando ASK.

Estos están originalmente creados por (tal vez) SUMMIT Technology Co., Ltd. . Sin embargo, hay muchos módulos genéricos baratos presentes en el mercado (local), uno de los cuales es utilizado por OP.

El transmisor se conoce como ST-TX01-ASK & El receptor se conoce como ST-RX04-ASK .

La hoja de datos de ambos módulos se puede encontrar aquí:

Módulo transmisor ST-TX01-ASK

Módulo receptor ST-RX04-ASK

Ahora sobre la parte divertida (no tan).

Hahah, sí, tiene razón Los codificadores / decodificadores no se utilizan para reducir el ruido, pero se utilizan para inmunizar los datos contra el ruido (al lado de la codificación / decodificación de datos en esta aplicación). Explicaré "Cómo" más tarde. Los módulos Bluetooth están fácilmente disponibles desde INR 300 o superior en el mercado indio, por lo que son casi tan baratos como los módulos de RF y amp; mucho más confiable que estos módulos de RF de imitación (en su aplicación).

Antes de hablar más, me gustaría que leyeras las respuestas a esta pregunta http://goo.gl/uX15MO que es exactamente la misma pregunta que la tuya (si entiendes).

Como usted sabe, estos son módulos muy económicos y básicos y "no tienen un sofisticado protocolo incorporado para transmitir / recibir datos". Ahora, lo que Encoder específicamente HT12E hace aquí es la codificación que es "codificación Manchester". No solo esto ayuda a enviar / recibir datos a través de un mayor ruido, sino que también se adapta a la frecuencia / ancho de banda de estos módulos.

Por lo tanto, otra mejor solución sería utilizar la codificación / decodificación dentro del microcontrolador. La mejor codificación en este momento para usted es la misma que utiliza este codificador "Codificación Manchester". Pero incluso después de usar esta codificación con una transmisión de datos adecuada, su aplicación no es confiable / redundante. También hay una gran noticia para usted, ya que utiliza el compilador MikroC, la biblioteca para la codificación de Manchester ya está presente en él, por lo que no necesita implementarlo desde cero. Otra biblioteca popular es VirtualWire, pero desafortunadamente es para arduino, sí, puedes portarla.

El problema con UART al principio es su gran sensibilidad al ruido, ya que también podemos implementar la codificación de Manchester con tolerancia. En segundo lugar, su tasa de transmisión es alta (9600), & fuera del alcance de estos módulos de RF.

Descanso mi caso & espero que entiendas. Déjame saber si todavía necesitas / quieres saber algo.

Respuesta original:

Su enfoque parece correcto en teoría, pero en la práctica no es muy confiable. Permítanme explicarles, U (S) ART es un protocolo muy sensible al ruido, incluso no funciona con cables largos, por lo que se debe tener mucho cuidado al usarlo. En segundo lugar, la comunicación por RF en sí misma, es muy propensa al ruido y la amplificación; mayor distancia lo hace peor. Es por eso que los codificadores y amp; Los decodificadores se utilizan con este tipo de módulo de RF en general.

Lo que puedes hacer ahora mismo es tratar de reducir la velocidad en baudios al más bajo, como 600 o 1200. Agregar un capacitor donde sea necesario & intenta hacer que el código sea más redundante.

Incluso después de la improvisación anterior, no creo que el sistema sea confiable, así que me gustaría recomendarle que use Encoder & Decodificador con este módulo de RF y amp; implementar el software de esta manera.

De lo contrario, puede utilizar un mejor método de comunicación inalámbrica como Bluetooth, Zigbee o WiFi. Estos sistemas se adaptarán bien a sus necesidades.

    
respondido por el Anush

Lea otras preguntas en las etiquetas