Comunicación inalámbrica entre PICs a 434MHz.

Para algunos de los proyectos de control se hace necesaria la comunicación entre microcontroladores de forma inalámbrica. Esta es una tarea relativamente sencilla si se hace con las herramientas adecuadas, tales como un buen par de radios, un buen compilador de micros, y un mejor algoritmo para el tráfico de la información.
En este proyecto se puede aprender de forma sencilla como establecer una comunicación inalámbrica entre dos microcontroladores, enviando un cuarteto de bits, que posteriormente se puede ver en el micro receptor. La implementación del sistema esta desarrollado con un par de micros PIC16F628A, y dos módulos de radio. La clave fundamental de este proyecto esta en el medio de transmisión que se utilice. En el comercio se pueden conseguir una gran gama de radios de trasmisión y recepción, con diferentes características como: costo, alcance, formas de modulación, y complejidad en el manejo entre otras.
Para establecer la comunicación entre los dos PIC trabajamos con el modulo USART de cada uno de los micros. Esto implica que uno de ellos será el transmisor y el otro el receptor.Estos micros los llamaremos, de aqui en adelante, TX y RX. En el micro TX se evalúan constantemente cuatro pines, en los cuales están instalados sendos pulsadores que son los cuatro bits de información que deseamos transmitir. Esta información es empaquetada y transmitida serialmente por la USART.


Para evitar los errores en los datos de llegada, es necesario implementar algún método que garantice la veracidad de la información. Para esto existen formas complejas de control de errores pero para este proyecto implementaremos un método muy sencillo conocido como redundancia, el cual consiste en transmitir repetidamente el mismo dato y verificar si el dato que llega en el micro RX es igual, para determinar que el dato no tiene errores.
En el micro RX están instalados cuatro LEDs que permiten ver el dato que llega de manera inalámbrica.
A continuación están los esquemático del proyecto:



Este es el código fuente en C de los micros TX y RX. El compilador utilizado es el CCS PICC de Hi-Tech, pero puede ser emigrado a cualquier otro compilador que trabaje en C:

Programa del MICRO TX


#include 

void TxSerial( char d_ ) // Función para transmitir
//un dato de forma serial
{
     TXREG = d_;  
     while( !TRMT );
}

void InicioSerial( void ) // Función d inicio de la USART
{
     TRISB1 = 1;
     TRISB2 = 0;
     TXSTA = 0x24;
     RCSTA = 0x90;
     BRGH = 1;    
// Configuración de la USART a 2400 bits por segundo
     SPBRG = 103;
}

void main( void ) // Funcion principal
{
    char DATO;
    INTCON = 0;  
// Configuración de las interrupciones
    TRISB = 0xFF;
// Se configuran los pines de los leds como salidas
    RBPU = 0;
// Se activan las resistencias PULL-UP
    InicioSerial();
// Función d inicio de la USART
    while(1)
    {
DATO = (~PORTB>>4)&15;
// Se guarda en la variable DATO el valor de los 4  pulsadores
TxSerial( 170 );
// Se transmite una bandera de inicio con la secuencia
//de bits: 10101010
TxSerial( DATO );
// Se transmite el dato de manera redundante. 8 veces
TxSerial( DATO );
TxSerial( DATO );
TxSerial( DATO );
TxSerial( DATO );
TxSerial( DATO );
TxSerial( DATO );
TxSerial( DATO );
    }
}

Programa del MICRO RX


#include 

// Declaración de variables de trabajo
char n=0;
char Trama[4]={1,2,3,4};
char DATO;

void InicioSerial( void )
// Función para la configuración de la USART.
{
     TRISB1 = 1;
     TRISB2 = 0;
     TXSTA = 0x24;
     RCSTA = 0x90;
     BRGH = 1;
     SPBRG = 103;
}

void interrupt VET( void )
// Vector de interrupciones.
{
 if( RCIF ) //Interrupción serial
 {
DATO = RCREG; //Lectura del buffer de entrada serial
switch( DATO ) // Se evalúa el dato que llega
{
case 170:for(n=0;n<4 4="" gie=" 1;<br />" intcon=" 0;" n="4;<br />" peie="1;" portb=" 0;" rcie="1;" rcif="0;" trisb=" 0x0F;">
__CONFIG( 0x3F09 );

No response to “Comunicación inalámbrica entre PICs a 434MHz.”