Analog Value (rain sensor FC-37) are not readable when im connect with blynk iot esp32

Hello i got problem with my project with esp32 ,bh1750 ,bme280 , and rain sensor, especially with rain sensor FC-37 . Before I entered the blynk iot code, and put the function of the rain sensor (rain_get) in the void loop, the analog value could be read, but after I entered the blynk iot code the rain sensor analog value immediately read 0, there is no problem with value from bh1750 and bme 280 the value can be read , what should I do?

#define BLYNK_TEMPLATE_ID           "TMPL6D7uYM_Kw"
#define BLYNK_TEMPLATE_NAME         "App Kanopy"
#define BLYNK_AUTH_TOKEN            ""

#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>

char ssid[] = "";
char pass[] = "";

#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>
#include <BH1750.h>

#define SDA_1 19
#define SCL_1 18
#define SDA_2 17
#define SCL_2 16

#define POWER_PIN 25
#define AO_PIN 12


Adafruit_BME280 bme; // I2C
BH1750 bh; 
TwoWire I2Cone = TwoWire(0);
TwoWire I2Ctwo = TwoWire(1);
BlynkTimer timer;

int rainAnalog;
float rainVoltage;

unsigned long delayTime;

void sendSensor()
{
  bme_get();
  bh_get();
  rain_get();
}

void setup() {
  Serial.begin(9600);
  Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
  pinMode(POWER_PIN, OUTPUT);  // configure the power pin pin as an OUTPUT
  cek_i2c();
  delayTime = 1000;
  Serial.println();
  timer.setInterval(1000L, sendSensor);
}


void loop() { 
  Blynk.run();
  timer.run();
  rain_get();
  delay(delayTime);
}

void cek_i2c() {
  Serial.println(F("Sensor test"));

  I2Cone.begin(SDA_1, SCL_1, 100000);
  if (!bme.begin(0x76, &I2Cone)) {
    Serial.println("Could not find a valid BME280 sensor, check wiring!");
    while (1);
  }

  I2Ctwo.begin(SDA_2, SCL_2, 100000);
  if (!bh.begin(BH1750::CONTINUOUS_HIGH_RES_MODE, 0x23, &I2Ctwo)) {
    Serial.println("Could not find a valid BH1750 sensor, check wiring!");
    while (1);
  }
}

void rain_get(){ 
  digitalWrite(POWER_PIN, HIGH);
  delay(10);
  rainAnalog = analogRead(AO_PIN);
  pinMode(AO_PIN, INPUT);
  digitalWrite(POWER_PIN, LOW);
  rainVoltage = rainAnalog * (5.0 / 1023.0);
  Serial.println(rainAnalog);
  Serial.println(rainVoltage);
  Blynk.virtualWrite(V9, rainAnalog);
}

void bh_get() {

  float light_level = bh.readLightLevel();
  float raw_level = bh.readRawLevel();
  Serial.print("Cahaya: ");
  Serial.println((light_level < 20) ? "Gelap" : "Terang");
  Serial.println((String)"Lux: "+light_level+" lx");
  Blynk.virtualWrite(V1, light_level);
}

void bme_get() {
  float temperature = bme.readTemperature();
  Serial.println((String)"Temperature = "+temperature+" *C");
  Blynk.virtualWrite(V0, temperature);
}

could you have a power supply problem?
when transmitting WiFi devices can pull a lot of power which if the power supply is powering a number of devices can cause problems with reduced voltage
try using an external power supply??
upload a schematic of the system showing devices and how they are powered?

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.