Communication RX/TX sans fil entre Launchpad et RPI





Les montages sont décrits dans les chapitres:


Pour le LaunchPad  Com sans fil Launchpad Arduino

Pour le RPI Com sans fil nrf24l01


Pour le software, nous utiliserons dans le Raspberry est le programme utiliser dans le montage du RPI. Ce programme renvois ce qu'il a reçu.


Pour le LaunchPad nous allons augmenter la taille du buffer de la liaison série afin d'avoir un buffer de 32 bytes au lieu de 16 (Buffer identique au module nrf24l01). Pour cela, il faut aller dans la bibliothèque d'Energia  HardwareSerial.cpp. Chemin:C:\Program Files (x86)\energia-0101E0010\hardware\msp430\cores\msp430.


Ouvrir le fichier avec un éditeur et modifier: #define SERIAL_BUFFER_SIZE 16 par #define SERIAL_BUFFER_SIZE 32.



Charger le programme suivant:


#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[] = { 0xF0,0xF0,0xF0,0xF0,0xE2 };

const uint8_t rxaddr[] = { 0x73,0x65,0x72,0x76,0x31 };

char inbuf[32];

char Buffer[32];



void setup() {

 Serial.begin(9600); //Initialisation de la com serie


 SPI.begin(); //Initialisation de la liaison SPI

 SPI.setDataMode(SPI_MODE0);

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


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

 radio.setCRC(1,1);

 

 radio.setTXaddress((void*)txaddr);

 radio.setRXaddress((void*)rxaddr);

 radio.deepsleep();  // Mise en veille du module radio

 

}


void loop() {


 if (Serial.available() > 0) { // si des données entrantes sont présentes

      serialEvent();

     }

}


void serialEvent() {          //Lecture les données recu sur le port serie

 char Buffer[32] = "";

int x=0;

while (Serial.available()>0){

Buffer[x]=Serial.read();

delay(2);

x++;

if (x>31){

 break;

}

}

radio.print(Buffer); //envois des données recu

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

lecture();      // Lecture des données recu par le module RF

} //


void lecture(){ //programme lecture des donnees et envois vers la com serie

 int cpt=0;

 char inbuf[32]="";

 radio.enableRX();  // Marche du module RX

 delay(20);

 while (!radio.available(true)){

   delay(20);

   cpt++;

   if (cpt>100){

     break;

   }

 }

   

 if (radio.read(inbuf)) {

     Serial.println(inbuf);  //Envois vers liaison serie

 }

 radio.disableRX();  // Arret du module radio RX

}


Téléchargement du programme ici


Une fois charger dans votre LaunchPad. Ouvrir le moniteur série et Lancer le programme sur votre RPI.



Taper un texte sur le LaunchPad qui l'enverra au RPI et le RPI le renverra en suite.



Voici ce que reçoit le RPI.



Et ce que reçoit le LaunchPad.



Si le message dépasse les 32 Bytes il est envoyé en deux parties. Il ne peut pas dépasser 64 Bytes en une seule fois.



Mise à jour 14/12/2013



Créé avec HelpNDoc Personal Edition: Générateur d'aide complet