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.
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:
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;">4>
__CONFIG( 0x3F09 );
No response to “Comunicación inalámbrica entre PICs a 434MHz.”
Publicar un comentario