Arduino data to NodeMCU(esp8266)

Hello, I’m looking for help,

I managed to recover the data from my microphone on my Arduino Uno, but I want to share this data received with 3 NodeMCU via Wi-FiFi, so I don’t know if it’s possible but I had the idea to transfer my data to a NodeMCU first so that it can be shared with the other 3 via Wi-Fi, so I’d like to know if we can, and how to send data from the Arduino Uno port to a NodeMCU via cable, I hope you have understood my concern, and that you would have a solution :grin:

A Serial link would be the simplest

What was that picture of the Serial monitor meant to show ? Firstly, please do not post screen shots when you could have copied and pasted the output here and secondly, without seeing you sketch we have no idea what you are doing and how you are going about it

The Screenshot represents the data recorded from the microphone, here is my code:

#define FASTLED_ESP8266_RAW_PIN_ORDER
#include <FastLED.h>

#define num_leds 30
#define PIN 7
#define brightness 100     // can set it 0-255
#define sensitivity 1     // can set it 0-10, recommended at 5

CRGB leds[num_leds];

void setup() {
  Serial.begin(9600);
  FastLED.addLeds<WS2811, PIN, GRB>(leds, num_leds);
  FastLED.setBrightness(brightness);
}

void loop() {
  int x = analogRead(0);
  x = (x * sensitivity);
  int y = analogRead(1);
  y=y-0;
  int d;
  Serial.println(y);
  //Serial.println(y);
  int c = 0;
  if (y <= 300 && y > 0) {
    if (y > 0 && y < 50) { //2nd up
      c = ((y - 0) * (255 / 50));
      leds[(num_leds/2)] = CRGB(255, c, 0);
    }
    else if (y >= 50 && y < 100) { //1st down
      c = ((y - 100) * (-255 / 50));
      leds[(num_leds/2)] = CRGB(c, 255, 0);
    }
    else if (y >= 100 && y < 150) { //3rd up
      c = ((y - 100) * (255 / 50));
      leds[(num_leds/2)] = CRGB(0, 255, c);
    }
    else if (y >= 150 && y < 200) {//2nd down
      c = ((y - 200) * (-255 / 50));
      leds[(num_leds/2)] = CRGB(0, c, 255);
    }
    else if (y >= 200 && y < 250) {//1st up
      c = ((y - 200) * (255 / 50));
      leds[(num_leds/2)] = CRGB(c, 0, 255);
    }
    else if (y >= 250 && y <= 300) {//3rd down
      c = ((y - 300) * (-255 / 50));
      leds[(num_leds/2)] = CRGB(255, 0, c);
    }
    else {
      leds[(num_leds/2)] = CRGB(101, 195, 206);
    }
  }
  else if (y > 300 && y <= 950) {
    if (y > 300 && y < 400) { //2nd up
      c = ((y - 300) * (255 / 100));
      leds[(num_leds/2)] = CRGB(255, c, 0);
    }
    else if (y >= 400 && y < 500) { //1st down
      c = ((y - 500) * (-255 / 100));
      leds[(num_leds/2)] = CRGB(c, 255, 0);
    }
    else if (y >= 500 && y < 600) { //3rd up
      c = ((y - 500) * (255 / 100));
      leds[(num_leds/2)] = CRGB(0, 255, c);
    }
    else if (y >= 600 && y <700) {//2nd down
      c = ((y - 700) * (-255 / 100));
      leds[(num_leds/2)] = CRGB(0, c, 255);
    }
    else if (y >= 700 && y < 800) {//1st up
      c = ((y - 700) * (255 / 100));
      leds[(num_leds/2)] = CRGB(c, 0, 255);
    }
    else if (y >= 800 && y < 950) {//3rd down
      c = ((y - 950) * (-255 / 150));
      leds[(num_leds/2)] = CRGB(255, 0, c);
    }
    else {
      leds[(num_leds/2)] = CRGB(229, 89, 231 );
    }
  }
  else {
    int a = y;
    int d;
    while (y > 1000) {
      y = analogRead(1);
      if (a >= 100 && a < 250) { //2nd up
        d = ((a - 100) * (255 / 150));
        leds[(num_leds/2)] = CRGB(0, 0, 0);
      }
      else if (a >= 250 && a < 400) { //1st down
        d = ((a - 400) * (-255 / 150));
        leds[(num_leds/2)] = CRGB(0, 0, 0);
      }
      else if (a >= 400 && a < 550) { //3rd up
        d = ((a - 400) * (255 / 150));
        leds[(num_leds/2)] = CRGB(0, 0, 0);
      }
      else if (a >= 550 && a < 700) {//2nd down
        d = ((a - 700) * (-255 / 150));
        leds[(num_leds/2)] = CRGB(0, 0, 0);
      }
      else if (a >= 700 && a < 850) {//1st up
        d = ((a - 700) * (255 / 150));
        leds[(num_leds/2)] = CRGB(0, 0, 0);
      }
      else if (a >= 850 && a < 1000) {//3rd down
        d = ((a - 1000) * (-255 / 150));
        leds[(num_leds/2)] = CRGB(229, 89, 231 );
      }
      else {
        leds[(num_leds/2)] = CRGB(0, 0, 0);
      }
      FastLED.show();
      delay(60);
      fill_solid( leds, num_leds, leds[(num_leds/2)]);
      a = a + 0;
      if (a > 1023){
        a = 0;
      }
    }
  }
  FastLED.show();
  delay(10);
  for (int z = num_leds; z > (num_leds/2); z--) {
    leds[z] = leds[z - 1];
  }
  for (int z = 0; z < (num_leds/2); z++) {
    leds[z] = leds[z + 1];
  }
}

I understood that the SPI method was the best and fastest in terms of transfer speed, even after reading some tutorial I still remain blocked, I can’t find how to recover the data from the microphone to transfer them to the NodeMCU.
Do you have a solution for me?[quote="UKHeliBob, post:2, topic:862126, full:true"]

A Serial link would be the simplest

What was that picture of the Serial monitor meant to show ? Firstly, please do not post screen shots when you could have copied and pasted the output here and secondly, without seeing you sketch we have no idea what you are doing and how you are going about it
[/quote]

If you have printed it then you have already "recovered" it, haven't you ?

I don't quite understand what you mean, could you do a more detailed question, I'm sorry but English is not my native language.

I would just use a simple Serial connection, but you should consider the format in which you want to send and receive. The value you are sending is 10-bit, so you would need 2 bytes minimum, or you can use separators.
Reliability is an issue of course.

In a way, you have these values, you can print them to the Serial monitor.

if the serial connection is simpler and the data from the microphone is transmitted to the NodeMCU in a few ms, then that's fine for me.

my wish is to recover them and send it to the NodeMCU

Printing them to the Serial port is recovering them, Now if you connect Arduino TX to nodeMCU RX and nodeMCU TX to Arduino RX you can try to receive them on the nodeMCU side. You will have to 'parse' those values, and store them somehow in variables that can be displayed on a webpage or posted on a page. It is possible (likely) that you may want to send the values in a slightly different way, that might make it easier to receive. Check out Serial input basics for possible methods.

Keep in mind that a nodeMCU is a 3.3v device and the Arduino is a 5v device. Although in most cases the nodeMCU's RX-pin (GPIO 3) is 5v tolerant. (if it is, that is the only pin that is 5v tolerant) Not all nodeMCU's are the same, so first try the Arduino TX to nodeMCU RX via a voltage divider.
Arduino TX -> 1K -> nodeMCU RX -> 1K -> 1K -> GND
To reduce the logic voltage level from 5v to something nearing 3.3v
If you find that you can send from nodeMCU to Arduino but not the other way, you can try it without the divider.