terça-feira, 18 de janeiro de 2011

RFM12B Module

Devido à elevada taxa de banditismo decidi criar um alarme para casa. Vai consistir em mini módulos de rádio frequência cada um na sua posição criando uma rede sem fios entre si e trocando informações com o coordenador dessa rede. Inicialmente a topologia de rede vai ser em estrela mas futuramente será modificada para árvore ou talvez mesh.



Muito resumidamente, quando for detectada alguma intrusão os mini módulos comunicam com o coordenador, e este através de um modem GSM, envia uma SMS para o usuário que ocorreu uma intrusão e indica qual o sitio dessa intrusão. Para já criei três placas para testar os módulos e criar vários parâmetros que depois servirão para construir a rede, com os módulos que serão muito mais pequenos que as placas que estão na seguinte imagem. As placas seguinte são só para desenvolvimento. O transceiver usado foi o RFM12B da HopeRF devido a sua simplicidade de implementação e tamanho. Estes módulos comunicam através do interface SPI tornando-se assim fáceis de usar.

Download do .pdf com documentação relativa ao RFM12B da HopeRF.

Placas de demonstração e desenvolvimento dos módulos


Possíveis NÓS SLAVE feitos em EagleCAD 3D ( RFM12B - Controlador - DC/DC )


Possível NÓ MASTER feito em EagleCAD 3D

Para começar decidi fazer um programa demonstração que consiste apenas em um módulo master enviar um pacote para um módulo slave. Se for um determinado pacote o slave envia uma resposta ao master a confirmar o pacote correcto e o master toma uma acção (Neste caso acender um LED). O Programa foi desenvolvido usando o MPLAB C18 e pode ser descarregado aqui. O .zip contem os três ficheiros essenciais. A biblioteca rfm12b.h tem que ser sempre incluída no projecto do C18.
slave.c/master.c -> Código do slave/master que usa a biblioteca rfm12b.h
rfm12b.h -> Biblioteca que contem as funções que inicializam e comunicam com o RFM12B
void EnviaCMD( unsigned int );     //Envia comando para o RFM12B
void EnviaBYTE( unsigned int );    //Envia byte a ser transmitido
unsigned char RecebeBYTE( void );  //Recebe byte transmitido
void Delay1KTCYx( unsigned char );
void Delay10KTCYx( unsigned char );


Em construção...

Sem comentários:

Enviar um comentário