Nodemcu amica arduino uno blynk 2.0

send data to from arduino to nodemcu, data is from a turbidty sensor , i am receiving the vales on the nodemcu serial monitor but nothing on blynk 2.0

#define BLYNK_DEVICE_NAME "ds18b20"
#define BLYNK_AUTH_TOKEN "emExKG6X2o7bmg8JSzR4JRVyAUFH1-9C"

#define BLYNK_PRINT Serial
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp8266.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <Wire.h>

#define ONE_WIRE_BUS D2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

#define TdsSensorPin A0
#define VREF 3.3      // analog reference voltage(Volt) of the ADC
#define SCOUNT  30           // sum of sample point
int analogBuffer[SCOUNT];    // store the analog value in the array, read from ADC
int analogBufferTemp[SCOUNT];
int analogBufferIndex = 0,copyIndex = 0;
float averageVoltage = 0,tdsValue = 0,temperature = 25;

char auth[] = "emExKG6X2o7bmg8JSzR4JRVyAUFH1-9C";

char ssid[] = "*********";  // type your wifi name
char pass[] = "*********";  // type your wifi password

BlynkTimer timer;

//String voltage;

void sendSensor()
  // Request temperature to all devices on the data line
  Serial.print("Celsius temperature: ");
  //We can connect more than one IC on the same data wire. 0 refers to the first IC on the wire
  Serial.print(" - Fahrenheit temperature: ");
  int tempC=sensors.getTempCByIndex(0);
  int tempF=sensors.getTempFByIndex(0);

  static unsigned long analogSampleTimepoint = millis();
  if(millis()-analogSampleTimepoint > 40U)     //every 40 milliseconds,read the analog value from the ADC
     analogSampleTimepoint = millis();
     analogBuffer[analogBufferIndex] = analogRead(TdsSensorPin);    //read the analog value and store into the buffer
     if(analogBufferIndex == SCOUNT) 
         analogBufferIndex = 0;
   static unsigned long printTimepoint = millis();
   if(millis()-printTimepoint > 800U)
      printTimepoint = millis();
        analogBufferTemp[copyIndex]= analogBuffer[copyIndex];
      averageVoltage = getMedianNum(analogBufferTemp,SCOUNT) * (float)VREF / 1024.0; // read the analog value more stable by the median filtering algorithm, and convert to voltage value
      float compensationCoefficient=1.0+0.02*(temperature-25.0);    //temperature compensation formula: fFinalResult(25^C) = fFinalResult(current)/(1.0+0.02*(fTP-25.0));
      float compensationVolatge=averageVoltage/compensationCoefficient;  //temperature compensation
      tdsValue=(133.42*compensationVolatge*compensationVolatge*compensationVolatge - 255.86*compensationVolatge*compensationVolatge + 857.39*compensationVolatge)*0.5; //convert voltage value to tds value
      //Serial.print("V   ");
      Serial.print("TDS Value:");

   //int sdata = voltage.toInt();
   //Serial.print("voltage= ");
   //voltage ="";
  // You can send any value at any time.
  // Please don't send more that 10 values per second.
    Blynk.virtualWrite(V1, tempC);
    Blynk.virtualWrite(V2, tdsValue);
int getMedianNum(int bArray[], int iFilterLen) 
      int bTab[iFilterLen];
      for (byte i = 0; i<iFilterLen; i++)
      bTab[i] = bArray[i];
      int i, j, bTemp;
      for (j = 0; j < iFilterLen - 1; j++) 
      for (i = 0; i < iFilterLen - j - 1; i++) 
        if (bTab[i] > bTab[i + 1]) 
        bTemp = bTab[i];
            bTab[i] = bTab[i + 1];
        bTab[i + 1] = bTemp;
      if ((iFilterLen & 1) > 0)
    bTemp = bTab[(iFilterLen - 1) / 2];
    bTemp = (bTab[iFilterLen / 2] + bTab[iFilterLen / 2 - 1]) / 2;
      return bTemp;

void setup()

  Blynk.begin(auth, ssid, pass);
  timer.setInterval(1000L, sendSensor);

  while (!Serial) {
void loop()
  if (Serial.available()){
   char data =;
   //voltage = voltage + data;

When you say “nothing” do you mean that the values that are being serial printed here:

aren’t appearing in Blynk. or that the tempC and tdsValue values arent appearing in Blynk?

Your sketch is a total mess as far as Blynk is concerned, it breaks many of the Blynk rules, and the concept of sending data from one device to another via serial connections is a bad one - especially when that same serial port is also used for debugging.

TBH, you’d be better going back to the drawing board with this.


i am only getting tds and temp and the value sent from arduino i am not getting

That makes sense. Because you are doing nothing with these values, other than printing them to your serial monitor, when they arrive.


okay may you please advise me accordingly as to what im supposed to do

As I said before, I think your whole concept is flawed.
I’d advise you to build the project around a single controller, maybe an ESP32 and use a level shifter if your turbidity sensors won’t work with 3.3v logic levels.


noted with thanks