cubecell and IIC sensors powered by Vext issue

 

http://community.heltec.cn/t/cubecell-vext-with-i2c-sensors/886/2

Testing on IIC sensor such as BME280/BMP280 and DH1750, and controlled by Vext, it seems there is a problem on IIC bus when power back the Vext.

The dirty solution is to add     Wire.begin(); and Wire.end();

so my structure is like this:(power related in red, IIC in green, sensors in blue)

  pinMode(Vext, OUTPUT);

  digitalWrite(Vext, LOW);

  delay(200);

 Wire.begin();

  if (!bme280.init()) {

    Serial.println("bme280 error!");

  }

  delay(100);

  temperature = bme280.getTemperature();

  pressure =  bme280.getPressure() / 100;

  humidity = bme280.getHumidity();

  if(lightMeter.begin()){

  Serial.println(F("BH1750 inited"));

  }

delay(100);// critical to get reading, but the first reading is always 0

  float lux = lightMeter.readLightLevel(true);

    Serial.print("Light: ");

  Serial.print(lux);

  Serial.println(" lx");

  Wire.end();

    digitalWrite(Vext, HIGH);// turn off the Vext

It still get me a strange behave on DH1750, no matter what delay I added(tested 5sec), the first reading after reset is always 0




留言

這個網誌中的熱門文章

Heltec ESP32+OLED+Lora, hardware testing

micro SD card for ESP32, on lolin32 with OLED and heltec 32 lora oled

Install Network Time Protocol(NTP) on BeagleBone with Angstrom linux and set local time zone