สอบถามผู้รู้ทีครับ เกี่ยวกับโปรเจค เครื่องวัดฝุ่น pm2.5 การส่งข้อมูลมันช้ามาก

เนื่องจากตอนนี้กำลังทำโปรเจค เกี่ยวกับวัดฝุ่นละอองในอากาศอยู่ครับ ตอนนี้กำลังติดปัญหาที่ ตัว node+censer แจ้งเตือนค่าช้ามาก อยากจะให้ไวกว่านี้ครับ ต้องแก้ที่ตรงไหนครับ

#include <LiquidCrystal_I2C.h>
#include <ESP8266WiFi.h>
#include <TridentTD_LineNotify.h>
#include <BlynkSimpleEsp8266.h>
#define BLYNK_PRINT Serial

LiquidCrystal_I2C lcd(0x27, 16, 2); //ถ้าจอไม่แสดงผล ให้ลองเปลี่ยน 0x3F เป็น 0x27
#define SSID        "Jamebiker_2G"      // บรรทัดที่ 11 ให้ใส่ ชื่อ Wifi ที่จะเชื่อมต่อ
#define PASSWORD    "109632499"     // บรรทัดที่ 12 ใส่ รหัส Wifi
#define LINE_TOKEN  "FI6QC5A1A8yVuD_DhMOzbgy1PvSEOG0C"   // บรรทัดที่ 13 ใส่ รหัส TOKEN ที่ได้มาจากข้างบน

char auth[] = "6btVwhc31moBMpHrW5Gp1F5tpQSEE2PG";
char ssid[] = "Jamebiker_2G";
char pass[] = "109632499";

// Choose program options.
//#define PRINT_RAW_DATA
#define USE_AVG

// Arduino pin numbers.
const int sharpLEDPin = D0; // Arduino digital pin 7 connect to sensor LED.
const int sharpVoPin = A0; // Arduino analog pin 5 connect to sensor Vo.
 
// For averaging last N raw voltage readings.
#ifdef USE_AVG
#define N 100
static unsigned long VoRawTotal = 0;
static int VoRawCount = 0;
#endif // USE_AVG

// Set the typical output voltage in Volts when there is zero dust.
static float Voc = 0.6;

// Use the typical sensitivity in units of V per 100ug/m3.
const float K = 0.5;
 
/////////////////////////////////////////////////////////////////////////////
#define PIN_UPTIME V3
BLYNK_READ(PIN_UPTIME)
{
  Blynk.virtualWrite(PIN_UPTIME, millis() / 1000);
}
// Helper functions to print a data value to the serial monitor.
void printValue(String text, unsigned int value, bool isLast = false) {
  Serial.print(text);
  Serial.print("=");
  Serial.print(value);
  if (!isLast) {
    Serial.print(", ");
  }
}
void printFValue(String text, float value, String units, bool isLast = false) {
  Serial.print(text);
  Serial.print("=");
  Serial.print(value);
  Serial.print(units);
  if (!isLast) {
    Serial.print(", ");
  }
}

BlynkTimer timer;

void myTimerEvent()
{
  // Record the output voltage. This operation takes around 100 microseconds.
    int VoRaw = analogRead(sharpVoPin);
 
    // Turn the dust sensor LED off by setting digital pin HIGH.
    digitalWrite(sharpLEDPin, HIGH);
  
    // Wait for remainder of the 10ms cycle = 10000 - 280 - 100 microseconds.
    delayMicroseconds(9620);
   
    // Print raw voltage value (number from 0 to 1023).
    #ifdef PRINT_RAW_DATA
    printValue("VoRaw", VoRaw, true);
    Serial.println("");
    #endif // PRINT_RAW_DATA
   
    // Use averaging if needed.
    float Vo = VoRaw;
    #ifdef USE_AVG
    VoRawTotal += VoRaw;
    VoRawCount++;
    if ( VoRawCount >= N ) {
      Vo = 1.0 * VoRawTotal / N;
      VoRawCount = 0;
      VoRawTotal = 0;
    } else {
      return;
    }
    #endif // USE_AVG
  
    // Compute the output voltage in Volts.
    Vo = Vo / 1024.0 * 5.0;
    printFValue("Vo", Vo*1000.0, "mV");
  
    // Convert to Dust Density in units of ug/m3.
    float dV = Vo - Voc;
    if ( dV < 0 ) {
      dV = 0;
      Voc = Vo;
    }
    float dustDensity = dV / K * 100.0;
    printFValue("DustDensity", dustDensity, "ug/m3", true);
    Serial.println(dustDensity);
    Serial.println("ug/m3");
    delayMicroseconds(100);
    lcd.setCursor(0, 0); // ไปที่ตัวอักษรที่ 4 บรรทัดที่ 0
    lcd.print(dustDensity);
    lcd.setCursor(2, 1); // ไปที่ตัวอักษรที่ 0 บรรทัดที่ 1
    lcd.print("ug/m3");
    // ตัวอย่างส่งข้อความ
    if (dustDensity>=10){
      LINE.notify(dustDensity);
      LINE.notify("ug/m3");
    }
    Blynk.virtualWrite(V0, dustDensity);
    Blynk.virtualWrite(V1, dustDensity/1000);
    Blynk.virtualWrite(V2, dustDensity);
    
    //Blynk.virtualWrite(V1, celsius); //sending to Blynk
}

void setup()
{
  // Set LED pin for output.
  pinMode(sharpLEDPin, OUTPUT);
 
  // Start the hardware serial port for the serial monitor.
  Serial.begin(9600);
 
  // Wait two seconds for startup.
  delay(2000);
  Serial.println("");
  Serial.println("GP2Y1014AU0F Demo");
  Serial.println("=================");
  lcd.init();
  lcd.backlight(); // เปิดไฟ backlight
  Serial.begin(9600); Serial.println();
  Serial.println(LINE.getVersion());

  WiFi.begin(SSID, PASSWORD);
  Serial.printf("WiFi connecting to %s\n",  SSID);
  while (WiFi.status() != WL_CONNECTED) {
    Serial.print(".");
    delay(400);
  }
  Serial.printf("\nWiFi connected\nIP : ");
  Serial.println(WiFi.localIP());

  // กำหนด Line Token
  LINE.setToken(LINE_TOKEN);
  Serial.begin(9600);
  Blynk.begin(auth, ssid, pass);
  timer.setInterval(1000L, myTimerEvent);
}

void loop()
{
  Blynk.run();
  timer.run(); // Initiates BlynkTimer
}

ขอบคุณครับ

แจ้งเตือน line หรอครับที่ช้า

แจ้ง update ที่ lcd ช้ากับส่งไปที่ blynk ข้าครับ แล้วก็ตอนนี้รับค่าฝุ่นไม่ค่อยได้

เช็คตรง serial มันทำงานตรงไหนครับ

ดูตรงไหนครับว่ามันช้า อธิบายหน่อย