Bonjour à tous,

Je suis actuellement sur un projet de pilotage a distance pour des mesure en mer. Sans entrer dans les détail, pour l'instant j'au une carte waspmote (genre d'arduino pro) qui m'envois une trame via un xbeepro et je récupère cette trame sur un pc (xbee également) avec un soft qui traite les données.

Tout ça marche trés bien (mis a part la distance de réception un peu faible qui est d'environ 100m)

Maintenant j'aimerais rajouter 3 arduino en créant entre toutes les carte un réseau digimesh

Chacune des cartes doivent émettre ou réceptionner des infos .

Seulement je ne suis pas sur du fonctionnement digimesh.

Ce que j'ai compris c'est que chaque xbee est a la fois relay/emeteur/recepteur.

Mais je ne vois pas comment envoyer un message a un arduino précisément sans perturber les autres étant donnée que tout les morceaux de code que je trouve ne contienne pas les adresse mac.

Sur mon système existant, mon boitier envoi au pc en précisant l'adresse mac. Les xbee étaient a l'origine configuré en 802 , je viens de les passer en digimesh tout marche très bien

Voici le code éméteur que j'ai actuellement (sur ma carte waspmote), ça ne ressemble pas ce que je trouve pour les configuration arduino

Code:
#include <WaspXBee802.h>
#include <WaspFrame.h>
#include <WaspGPS.h>
#include <WaspUART.h>
#include <ModbusMaster.h>
#include <Wasp485.h>

// Instantiate ModbusMaster object as slave ID 1, ID 3
ModbusMaster nodeFrame(RS485_COM, 1);
ModbusMaster nodeTool(RS485_COM, 3);

// Define one address for reading
#define address 0x02

// Define the number of bytes to read
#define bytesQty 0x02

//Define adresse Xbee computer
char RX_ADDRESS[] = "0013A200417EE9F7";
char WASPMOTE_ID[] = "";
#define TIMEOUT 1


uint8_t error;
bool status;
WaspUART uart=WaspUART();
char TOOL ;


void setup()
{USB.ON();
 GPS.ON();
 xbee802.ON(SOCKET1);
 frame.setID( WASPMOTE_ID );
 uart.setUART(SOCKET1);
 nodeFrame.begin(9600);
  nodeTool.begin(9600);
  W485.parityBit(ENABLED);
}


void loop()
{  USB.println("connect to gps");
    Utils.setMuxGPS();
    beginSerial(4800,SOCKET1);
    status = GPS.waitForSignal(TIMEOUT);

     nodeFrame.readHoldingRegisters(address, bytesQty);
    delay(200);
    nodeTool.readHoldingRegisters(address, bytesQty);
    
    if( status == true )
       {
        GPS.getPosition();
        frame.createFrame(ASCII);  
        frame.addSensor(SENSOR_GPS,GPS.convert2Degrees(GPS.latitude,GPS.NS_indicator),GPS.convert2Degrees(GPS.longitude,GPS.EW_indicator));
        closeSerial(SOCKET1);
       }
 //   beginSerial(9600,SOCKET1);
 //RES =(double)(TOOL[3]+((long int)CMMD_RXD[4]<<8)+((long int)CMMD_RXD[5]<<16)+((long int)CMMD_RXD[6]<<24)-m_xmin*100)*0.01;
 //TOOL = (nodeFrame.getResponseBuffer(0),HEX);
 //USB.println(TOOL);
 frame.createFrame(ASCII);
       frame.addSensor(SENSOR_GPS,GPS.convert2Degrees(GPS.latitude,GPS.NS_indicator),GPS.convert2Degrees(GPS.longitude,GPS.EW_indicator));
   frame.addSensor(SENSOR_BAT, PWR.getBatteryLevel()); 
     frame.addSensor(SENSOR_ULTRASOUND,(nodeFrame.getResponseBuffer(0)));
     frame.addSensor(SENSOR_ULTRASOUND,(nodeTool.getResponseBuffer(0)));
     
      //  closeSerial(SOCKET1);
        Utils.setMuxSocket1();
        //delay(100);
        beginSerial(115200,SOCKET1);
        USB.println( nodeFrame.getResponseBuffer(0),HEX);
        

   
    
    error = xbee802.send( RX_ADDRESS, frame.buffer, frame.length );   
           
    if( error == 0 )
         {
           USB.println(F("send ok"));
           closeSerial(SOCKET1);
         }
         else 
         {
          USB.println(F("send error"));
          closeSerial(SOCKET1);
         }
       USB.println(frame.buffer, frame.length );

        nodeFrame.clearResponseBuffer();
        nodeTool.clearResponseBuffer();

    
   }
Merci