jueves, 29 de septiembre de 2016

Driver nRF24L01 para arduino

En el post anterior vimos como conectar correctamente los pines del nRF24L01 y los Arduinos Nanos y Mega2560. La conexión de los pines pueden variar dependiendo de la configuración del driver. Pero la que usé en mi ejemplo, es casi como un "estándar", ya que ví varios ejemplos de otros desarrolladores, que lo configuraban como yo.

Vamos a ver las partes más importantes del driver.

En primer lugar en el archivo nRF24L01_RegisterMap.h se encuentra la declaración de los registros del módulo.


Lo primero que se debe hacer, en el main es llamar a la función rf_init() para inicializar el módulo.

1:  //inizialize rf tx   
2:  rf_init();  

Está función hace lo siguiente:

Lo que hace es setear como salida los pines CE y CSN definidos en nRF24L01_RegisterMap.h. Luego pone en cero CE y en uno CSN

Paso siguiente se llama a la función rf_config() en el cual se pasa como parámetro el canal de transmisión más el ancho del payload. Esta función realiza una serie de configuraciones necesarias y básicas para poder funcionar. Y luego se setea en modo RX, para que el módulo se ponga a escuchar.


Es importante setear correctamente las direcciones. Para el transmisor se utiliza las sigiuentes direcciones:

1:  uint8_t tx_address[5] = {0xE7,0xE7,0xE7,0xE7,0xE7};/**<Dirección del transmisor*/  
2:  uint8_t rx_address[5] = {0xD7,0xD7,0xD7,0xD7,0xD7};/**<Dirección del receptorr*/  

En el caso del receptor las direcciones son las siguientes:

1:  /*define addr*/  
2:  uint8_t tx_address[5] = {0xD7,0xD7,0xD7,0xD7,0xD7};  
3:  uint8_t rx_address[5] = {0xE7,0xE7,0xE7,0xE7,0xE7};  

Para ello se utiliza las siguientes función:

1:  //set the device addr  
2:  set_rx_address(rx_address);  
3:  set_tx_address(tx_address);  

Notese que las direcciones están cruzadas.

Transmisor

El código del transmisor se muestra a continuación.


Receptor

El código del receptor se muestra quedó de la siguiente manera.



En post posteriores se moestrará más detalle del código del módulo. Y se buscará complejizar el código.

El código del transmisor se lo puede descargar de aquí. Mientras que al código del receptor se lo descarga desde aquí.

No hay comentarios:

Publicar un comentario