Communication sans fil entre Launchpad et Arduino



Voici un montage permettant de faire communiquer un LaunchPad et un Arduino avec un nrf24l01+.


Le nRF24L01+:


Le Nordic nRF24L01 + est un émetteur-récepteur  2Mbps RF IC de l'ISM 2,4 GHz à faible consommation. Le Nordic nRF24L01 + intègre un émetteur-récepteur RF 2.4GHz complet, synthétiseur RFet une antenne. Spécification du produit ici




Raccordement:



Raccordement sur Arduino UNO:


NRF24   Arduino

1 GND-> GND

2 VCC-> 3.3V

3 CE -> 7

4 CSN-> 6

5 SCK -> 13

6 MOSI -> 11

7 MISO -> 12

8 IRQ-> 2



Raccordement sur le Launchpad:


NRF24   LaunchPad

1 GND-> GND

2 VCC-> 3.3V

3 CE -> P2.0

4 CSN-> P2.1

5 SCK -> P1.5

6 MOSI -> P1.7

7 MISO -> P1.6

8 IRQ-> P2.2


Télécharger la librairie Enrf24.zip qui fonctionne pour l'Arduino et le LaunchPad ici ou sur le site https://github.com/spirilis/Enrf24

Installer la bibliothèque pour le LaunchPad et pour l'arduino.


Programme de réception sur l'Arduino:


#include <Enrf24.h>

#include <nRF24L01.h>

#include <string.h>

#include <SPI.h>


Enrf24 radio(7, 6, 2);

const uint8_t rxaddr[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0x01 };


void dump_radio_status_to_serialport(uint8_t);


void setup() {

 Serial.begin(9600);


 SPI.begin();

 SPI.setDataMode(SPI_MODE0);

 SPI.setBitOrder(1); // MSB-first

 

 radio.begin();  // Defaults 1Mbps, channel 0, max TX power

 dump_radio_status_to_serialport(radio.radioState());


 radio.setRXaddress((void*)rxaddr);

 

 radio.enableRX();  // Start listening

}


void loop() {

 char inbuf[33];

 

 dump_radio_status_to_serialport(radio.radioState());  // Should show Receive Mode


 while (!radio.available(true))

   ;

 if (radio.read(inbuf)) {

   Serial.print("Received packet: ");

   Serial.println(inbuf);

 }

}


void dump_radio_status_to_serialport(uint8_t status)

{

 Serial.print("Enrf24 radio transceiver status: ");

 switch (status) {

   case ENRF24_STATE_NOTPRESENT:

     Serial.println("NO TRANSCEIVER PRESENT");

     break;


   case ENRF24_STATE_DEEPSLEEP:

     Serial.println("DEEP SLEEP <1uA power consumption");

     break;


   case ENRF24_STATE_IDLE:

     Serial.println("IDLE module powered up w/ oscillators running");

     break;


   case ENRF24_STATE_PTX:

     Serial.println("Actively Transmitting");

     break;


   case ENRF24_STATE_PRX:

     Serial.println("Receive Mode");

     break;


   default:

     Serial.println("UNKNOWN STATUS CODE");

 }

}


Téléchargement du code ici



Programme d'émission sur LaunchPad:


#include <Enrf24.h>

#include <nRF24L01.h>

#include <string.h>

#include <SPI.h>


Enrf24 radio(P2_0, P2_1, P2_2);  // P2.0=CE, P2.1=CSN, P2.2=IRQ

const uint8_t txaddr[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0x01 };


const char *str_on = "ON"; // Message que l on envois

const char *str_off = "OFF"; // Message que l on envois


void dump_radio_status_to_serialport(uint8_t);


void setup() {

 Serial.begin(9600);


 SPI.begin();

 SPI.setDataMode(SPI_MODE0);

 SPI.setBitOrder(1); // MSB-first


 radio.begin();  // Defaults 1Mbps, channel 0, max TX power

 dump_radio_status_to_serialport(radio.radioState());


 radio.setTXaddress((void*)txaddr);

}


void loop() {

 Serial.print("Sending packet: ");

 Serial.println(str_on);

 radio.print(str_on);

 radio.flush();  // Force transmit (don't wait for any more data)

 dump_radio_status_to_serialport(radio.radioState());  // Should report IDLE

 delay(1000);


 Serial.print("Sending packet: ");

 Serial.println(str_off);

 radio.print(str_off);

 radio.flush();  //

 dump_radio_status_to_serialport(radio.radioState());  // Should report IDLE

 delay(1000);

}


void dump_radio_status_to_serialport(uint8_t status)

{

 Serial.print("Enrf24 radio transceiver status: ");

 switch (status) {

   case ENRF24_STATE_NOTPRESENT:

     Serial.println("NO TRANSCEIVER PRESENT");

     break;


   case ENRF24_STATE_DEEPSLEEP:

     Serial.println("DEEP SLEEP <1uA power consumption");

     break;


   case ENRF24_STATE_IDLE:

     Serial.println("IDLE module powered up w/ oscillators running");

     break;


   case ENRF24_STATE_PTX:

     Serial.println("Actively Transmitting");

     break;


   case ENRF24_STATE_PRX:

     Serial.println("Receive Mode");

     break;


   default:

     Serial.println("UNKNOWN STATUS CODE");

 }

}



Téléchargement du code ici


Une fois le transfert fait vers vos cartes, voici le résultat:





Mise à jour 27/10/2013

Créé avec HelpNDoc Personal Edition: Avantages d'un outil de création d'aide