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