Je crois que je sais d'où vient le problème, on dirait que ça vient d'un conflit de paquets. Ce qui expliquerait pourquoi ça marche avec deux LoRa mais pas trois.
Reprenons mon réseau :
En passant par le serial, j'ai remarqué que les LoRa ne reçoivent que les paquets d'un seul LoRa (bien sur celui qui n'est pas pour lui). Par exemple, LoRa 1 reçoit que les paquets de LoRa 2 et pas ceux de LoRa 3.
Quand on envoie un paquet LoRa, on écrit dans le paquet valeur par valeur. "dest" est l'ID du LoRa destinataire (ici 1 parce que LoRa 3 envoie à LoRa 1).
LoRa.beginPacket();
LoRa.write(sender);
LoRa.write(dest);
LoRa.write(counter);
LoRa.print(mybase64.result());
LoRa.endPacket();
Et quand on reçoit, on lit valeur par valeur dans le même ordre. Chaque LoRa.read() lit une valeur. "rdest" est la valeur qui stocke l'ID de destination.
rsender = LoRa.read();
rdest = LoRa.read();
rid = LoRa.read();
for (int i = 0; i < packetSize; i++)
{
//récupération des caractères du message et stockage de ceux-ci dans la variable
packet[i] = (char)LoRa.read();
}
Donc quand le code arrive au "if" qui vérifie si le message est bien destiné au LoRa en question (si "rdest" est égal à 1), il n'affiche pas le paquet vu qu'il lui est pas destiné.
//check si le paquet entrant est pour lui
if(rdest == 1)
{
//affichage du message sur le OLED
display.clear();
display.setTextAlignment(TEXT_ALIGN_LEFT);
display.setFont(ArialMT_Plain_10);
display.drawString(0 , 0 , "Received from LoRa " + String(rsender));
display.drawString(0 , 11 , "ID = " + String(rid));
display.drawStringMaxWidth(0 , 26 , 128, "Message : " + String(cryptr));
display.drawString(0, 48, rssi);
display.display();
//affichage du message pour le serial
//Serial.println("Received from LoRa " + String(rsender));
//Serial.println("ID = " + String(rid));
//Serial.println("Message : " + String(cryptr));
//Serial.println(rssi);
delay(2000);
}
Je suis un peu coincé pour le coup, je vois pas comment faire en sorte qu'ils lisent les paquets des deux autres LoRa en alternant.
Au pire, je pourrais limiter mon réseau à 2 LoRa mais ce serait bien qu'il puisse y en avoir plus.