user54920: In my situation, I have a map divided into multiple parts, each part could have about 20 to 100 Arduinos that they should send information from time to time to the master. How could I do this? 
Second problem. How could I use the other Arduinos to send the info from Arduino that are so far from the Master?
Example in part 1: Arduino X is 500 meters far away from the master. How could use the other to send the information?
Can I do this with NodeMcu or such equipment with built-in WiFi?

user54311: I think you should start with using Wifi modules and you use an esp-01 too instead of NodeMCU. Once you are familiar with esp-01's, you will find them as good as NodeMCU. Esp-01's only lack multiple pins when compared to NodeMCU. 
And for communication between arduino and esp-01, use serial ports- 0 and 1. 
Here is example code-
For Master Arduino 
int temp;
int hum;

void setup(){
 Serial.begin(115200);
 delay(2000);
}
void loop() {

 temp = random(0,100);
 hum = random(100,200); 
 Serial.print(temp);
 Serial.println('t');
 delay(2000);
 Serial.print(hum);
 Serial.println('h');
 delay(2000);
 Serial.flush();
}

For Slave Esp or any other slave arduino -
String inString = "";    // string to hold input

float temp = 0,hum = 0;

boolean newtemp=false, newhum=false;

void setup() {
  Serial.begin(115200);
  Serial.println("ESP 8266 - 01 Module is ready to receive codes from Master Arduino");
 }

void loop() {
  // Read serial input:
  while (Serial.available() > 0) {
    int inChar = Serial.read();

    if (inChar != '\n') { 

      if (inChar == 't')
      newtemp = true;

      if (inChar == 'h')
      newhum = true;

      inString += (char)inChar;
    }
    else {
      Serial.print("Input string: ");
      Serial.println(inString);
      if ( newtemp == true ) {
      temp = inString.toFloat();
      Serial.print("Received Temperature:");
      Serial.println(temp);   
      newtemp = false;
      }
      if ( newhum == true ) {
      hum = inString.toFloat();
      Serial.print("Received Humidity:");
      Serial.println(hum);
      newhum = false;   
      }  
      inString = "";
    }
  }
}

Pin connections - 
Master Arduino TX -- Slave board RX

user30341: This is a classical application for LoRa technology, not WiFi.  Designing a LoRa mesh is no simple task, though.
Check this post, or this other post

54920: <p>In my situation, I have a map divided into multiple parts, each part could have about 20 to 100 Arduinos that they should send information from time to time to the master. How could I do this? </p>

<p>Second problem. How could I use the other Arduinos to send the info from Arduino that are so far from the Master?</p>

<p>Example in part 1: Arduino X is 500 meters far away from the master. How could use the other to send the information?</p>

<p>Can I do this with NodeMcu or such equipment with built-in WiFi?</p>
 54311: <p>I think you should start with using Wifi modules and you use an esp-01 too instead of NodeMCU. Once you are familiar with esp-01's, you will find them as good as NodeMCU. Esp-01's only lack multiple pins when compared to NodeMCU. </p>

<p>And for communication between arduino and esp-01, use serial ports- 0 and 1. </p>

<p>Here is example code-
For Master Arduino </p>

<pre><code>int temp;
int hum;

void setup(){
 Serial.begin(115200);
 delay(2000);
}
void loop() {

 temp = random(0,100);
 hum = random(100,200); 
 Serial.print(temp);
 Serial.println('t');
 delay(2000);
 Serial.print(hum);
 Serial.println('h');
 delay(2000);
 Serial.flush();
}
</code></pre>

<p>For Slave Esp or any other slave arduino -</p>

<pre><code>String inString = "";    // string to hold input

float temp = 0,hum = 0;

boolean newtemp=false, newhum=false;

void setup() {
  Serial.begin(115200);
  Serial.println("ESP 8266 - 01 Module is ready to receive codes from Master Arduino");
 }

void loop() {
  // Read serial input:
  while (Serial.available() &gt; 0) {
    int inChar = Serial.read();

    if (inChar != '\n') { 

      if (inChar == 't')
      newtemp = true;

      if (inChar == 'h')
      newhum = true;

      inString += (char)inChar;
    }
    else {
      Serial.print("Input string: ");
      Serial.println(inString);
      if ( newtemp == true ) {
      temp = inString.toFloat();
      Serial.print("Received Temperature:");
      Serial.println(temp);   
      newtemp = false;
      }
      if ( newhum == true ) {
      hum = inString.toFloat();
      Serial.print("Received Humidity:");
      Serial.println(hum);
      newhum = false;   
      }  
      inString = "";
    }
  }
}
</code></pre>

<p>Pin connections - </p>

<p>Master Arduino TX -- Slave board RX</p>
 30341: <p>This is a classical application for <code>LoRa</code> technology, not WiFi.  Designing a <code>LoRa</code> mesh is no simple task, though.</p>

<p>Check <a href="https://nootropicdesign.com/projectlab/2018/10/20/lora-mesh-networking/" rel="nofollow noreferrer">this post</a>, or <a href="https://forum.arduino.cc/index.php?topic=515565.0" rel="nofollow noreferrer">this other post</a></p>
