

Una red de malla se caracteriza esencialmente por una tipología en la que todos los nodos en la infraestructura de red se comunican directamente entre ellos, dinámicamente, sin tener en cuenta ningún jerárquico. Por lo tanto, los nodos cooperan entre sí, para derrotar los datos de manera eficiente. Esta falta de dependencia entre nosotros permite a cada uno participar en la transmisión y recepción de información entre ellos. Las redes de malla se pueden organizar dinámicamente a través de su capacidad de autoconfiguración, lo que permite la distribución dinámica de los flujos de información, especialmente en situaciones de falla en uno de estos nudos.

Clone Este repositorio: $ git clone https://github.com/daeynasvistas/LoRa-Mesh/
Uso de VisualStudio Code (Platformio):
2.1. Puede abrir la pasta ESP32 y la pasta Arduino en proyectos separados.
// 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);
}Para configurar, debe cambiar main.cpp e incluir sensores que predice. ESP32 incluye libra para BME y Arduino para DHT11
El proyecto utiliza el #include Pound <Arduinojson.h> para construir JSON que se envía en cada nodo, incluida o cambiando las que desea.
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 como máximo en la mesa de los vecinos ... o simplemente cambie la matriz dinámica
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 Este es el resultado con Serial.print en el fregadero del nodo, donde vienen todos los sensores de todos los nodos. El fregadero del nodo es responsable de enviar JSON ... por Lora (Gateway), por MQTT o el método que prefiera










