

Un réseau de maillage est essentiellement caractérisé par une typologie dans laquelle tous les nœuds de l'infrastructure de réseau communiquent directement entre eux, dynamiquement, sans en tenir compte de manière hiérarchique. Ainsi, les nœuds coopèrent les uns avec les autres, afin de dérouter efficacement les données. Ce manque de dépendance entre nous permet à chacun de participer à la transmission et à la réception des informations entre eux. Les réseaux de maillage peuvent être organisés dynamiquement grâce à leur capacité à s'auto-configurer, permettant la distribution dynamique des flux d'information, en particulier dans les situations de défaillance dans l'un de ces nœuds.

Clone Ce référentiel: $ git clone https://github.com/daeynasvistas/LoRa-Mesh/
Utilisation du code VisualStudio (Platformo):
2.1. Vous pouvez ouvrir la pâte ESP32 et la pâte d'arduino dans des projets séparés.
// Este node e servidor
// 0 = Servidor internet
// 1 = Vizinho de servidor internet
// 2 = Vizinho com um Vizinho de um servidor internet
byte isServer = getIsServer();
String nodeFunction[ 4 ] = { " SINK " , " ESTRADA " , " CAMINHO " , " SOLTEIRO " }; if (msgCount> 10 )
{
message = sendTable ();
sendMessage (message, 255 ); if (msgCount> 10 )
{
message = sendTable ();
sendMessage (message, 255 );String nodeFunction[ 4 ] = { " SINK " , " ESTRADA " , " CAMINHO " , " SOLTEIRO " }; // Posicionamento dos servidores na mesh
switch (incomingMsgHand) {
case 0 :
// statements
if (! arrayIncludeElement (myServers,sender,maxTableArrayServers)){
Serial. println ( " Encontrei um SINK! " +sender);
arrayAddElement (myServers,sender,maxTableArrayServers);
display. drawString ( 0 , 32 , " NOVO: " + String (sender));
}
destination = sender;
break ;
case 1 :
// statements
if (! arrayIncludeElement (myNeighbours,sender,maxTableArrayVizinhos)){
Serial. println ( " Encontrei AUTOESTRADA para SINK! " +sender);
arrayAddElement (myNeighbours,sender,maxTableArrayVizinhos);
display. drawString ( 0 , 32 , " NOVO: " + String (sender));
}
if (isServer!= 0 ){
destination = sender;
}
break ;
case 2 :
// statements
Serial. println ( " Encontrei CAMINHO para SINK! " );
break ;
default :
// statements
break ;
} } else {
// enviar para mais próximo do SINK
destination = myNeighbours[ 0 ];
sendMessage (message, destination);
}Pour vous configurer, vous devez modifier Main.cpp et inclure des capteurs que vous prévoyez. ESP32 comprend une livre pour BME et Arduino pour DHT11
Le projet utilise le #include livre <arduinojson.h> Pour construire JSON qui est envoyé dans chaque nœud, il incluait ou changeait ceux que vous voulez.
void makeData (){
// add some values
array. add (MAC); // <- Lora MAC
array. add ( 1556969160 ); // <-- Timestamp
array. add (bme. readTemperature ());
array. add (bme. readHumidity ());
array. add (bme. readPressure () / 100 . 0F );
array. add ( 0 );
array. add ( 0 );
array. add ( 0 );
array. add ( 0 );
array. add ( 0 );
array. add ( 0 );
// serialize the array and send the result to Serial
// serialize the array and send the result to Serial
serializeJson (doc, Values);
serializeJson (doc, Serial);
Serial. println ( " " );
}32 comme maximum dans la table des voisins .. ou simplement changer le tableau dinamique
byte const maxTableArrayVizinhos = 32 ; // quantidade de vizinhos pode ser aumentada conform memoria dispo
byte myNeighbours[maxTableArrayVizinhos] = {}; // address of vizinhos directos
byte const maxTableArrayServers = 4 ; // quantidade de servidores ao qual tenho acesso pode ser aumentada
byte myServers[maxTableArrayServers] = {}; // address dos servidores que encontrei C'est le résultat avec Serial.print dans le nœud puits, où tous les capteurs de tous les nœuds viennent. Node Sinier est responsable de l'envoi de JSON ... par Lora (Gateway), par MQTT ou la méthode que vous préférez










