112-Com sans fil Launchpad RPI RXTX
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