Emisor/Receptor Wireless nRF24L01+ Arduino
Vamos a ver como podemos
conectar 2 Arduinos mediante en un emisor/receptor Wireless nRF24L01+. Utilizando
la librería MirfSpiDriver o simplemente Mirf.
Conectamos los pins del módulo a las entradas digitales del
Arduino de la siguiente forma:
Módulo nRF24L01+
|
Arduino
|
Arduino Mega
|
VCC
|
3,3V
|
3,3V
|
GND
|
GND
|
GND
|
MISO
|
12
|
50
|
MOSI
|
11
|
51
|
SCK
|
13
|
52
|
CE
|
8
|
8
|
CSN
|
7
|
7
|
Una vez tengamos conectados los 2 módulos a cada uno de los Arduinos
que queremos conectar podemos probar con este ejemplo de un chat muy sencillo. Descargamos la librería Mirf de la web de Arduino.cc Descargar Mirf.zip (URL alternativa Descargar Mirf.zip) y la descomprimimos en el directorio del
IDE -> libraries.
// Emisor/Receptor Wireless nRF24L01+ // Conectamos el emisor de la siguiente forma: // Hardware SPI: // MISO -> D12 // MOSI -> D11 // SCK -> D13 // CE -> D8 // CSN -> D7 // Todas las entradas son Digitales // http://arubia45.blogspot.com.es/ #include <SPI.h> #include <Mirf.h> #include <nRF24L01.h> #include <MirfHardwareSpiDriver.h> char *cadena; String inputstring = ""; //cadena recibida desde el PC boolean input_stringcomplete = false; //cadena recibida completamente desde el PC void setup() { Mirf.spi = &MirfHardwareSpi; // inicio de la emision Mirf.init(); // Se envia un byte cada vez Mirf.payload = 1; // seleccionamos el canal Mirf.channel = 90; Mirf.config(); // 1MHz Mirf.configRegister(RF_SETUP,0x06); // Seleccionamos dirección Mirf.setTADDR((byte *)"TX_01"); Serial.begin(57600); Serial.println("Iniciando ..."); } // enviar cadena void transmit(const char *string) { byte c; for( int i=0 ; string[i]!=0x00 ; i++ ) { c = string[i]; Mirf.send(&c); while( Mirf.isSending() ) ; } } // enviar una secuancia CR/LF void transmitlf(void) { byte c; c = '\r'; Mirf.send(&c); while( Mirf.isSending() ) ; c = '\n'; Mirf.send(&c); while( Mirf.isSending() ) ; } //Evento de recepcion de caracteres desde el PC void serialEvent() { char inchar = (char)Serial.read(); // Añadimos el caracter recibido a la cadena inputstring += inchar; // Fin de la cadena, recibido <CR> if(inchar == '\r') {input_stringcomplete = true;} } void loop() { // Si se escribe algo por el puerto Serie lo envia. if (input_stringcomplete) { inputstring.toCharArray(cadena, 10); transmit(cadena); transmitlf(); Serial.print("Yo-> "); Serial.println(inputstring); input_stringcomplete = false; inputstring = ""; } // Esperando recepción byte c; if( Mirf.dataReady() ) { Mirf.getData(&c); Serial.print("El otro-> "); Serial.write(c); } }Bajar ejemplo (URL alternativa Bajar ejemplo)
Una vez tengamos cargados los
sketchs en los 2 Arduinos abrimos el Monitor Serial de ambos. Donde podremos
chatear entre ellos.
Hay que poner el terminal en modo
Retorno de Carro y a 57600 baudios.
Los 2 módulos wireless se
pueden comprar por menos de 2€, por ejemplo en eBay: comprar Ebay