MotionMote with BME280

Started by ulli, August 21, 2016, 12:22:41 PM

ulli

How is your experience with the accuracy of the bme280 in the MotionMote R3?

I am asking because It is covered from the moteino and everything is in a box.
Do you really measureally the room temperature and humidity?

Felix

I have a MotionMote R3 in testing for a few weeks with a Panasonic PIR, and it includes the BME280. The readings are very stable, no issues.
The moteino is on top of it at around 1/2" (1.5cm) and there is a vent cutout in all the MotionMote casings so air can freely flow in/out.
It's very accurate from what I can tell. And actually it's very much in agreement with the Si7021.
And of course everything is really low power.

ulli

#2
Are there somewhere the electric circuit files available for the R3?

Additionally:
Why do not you measure the battery voltage with the internal function?
e.g.
unsigned long getVCC(void) {

  unsigned long result;
  byte saveADMUX;
  byte saveADCSRA;
  byte saveADCSRB;

		
	saveADMUX = ADMUX;
  saveADCSRA = ADCSRA;
  saveADCSRB = ADCSRB;
  // Read 1.1V reference against AVcc
  // set the reference to Vcc and the measurement to the internal 1.1V reference
  // REFS1 REFS0          --> 0 1, AVcc internal reference -Selects AVcc external reference
  // MUX3 MUX2 MUX1 MUX0  --> 1110 1.1V (VBG)         -Wählt den Kanal 14, um die Bandgap-Spannung zu messen
  
  ADMUX = (1<<REFS0) | (1<<MUX3) | (1<<MUX2) | (1<<MUX1);
  ADCSRA = (1<<ADEN) | (1<<ADPS2) | (1<<ADPS1) | (1<<ADPS0);
	ADCSRB=0;
  TIMING::delay(20); // Wait for Vref to settle
	
	//first measurement is most of the time slightly wrong
  ADCSRA |= (1<<ADSC);
  while(ADCSRA & (1<<ADSC)); //measuring
  TIMING::delay(50); // Wait for Vref to settle
	ADCSRA |= (1<<ADSC);
  while(ADCSRA & (1<<ADSC)); //measuring

  uint8_t low  = ADCL; // must read ADCL first - it then locks ADCH
  uint8_t high = ADCH; // unlocks both
  result = (high<<8) | low;
  result = 1125300L / result; // Calculate Vcc (in mV); 1125300 = 1.1*1023*1000 (because...= 3300*1023/3 since 1.1 is exactly 1/3 of 3.3V)
	
	ADMUX = saveADMUX;
	ADCSRA = saveADCSRA;
	ADCSRB = saveADCSRB; 
  return result;
}

Felix

#3
I guess not yet, I have to put it up on the MMote page.
The BME280  max input voltage is 3.6v so on the MotionMote it takes regulated 3.3v from the Moteino.

DS here: https://ae-bst.resource.bosch.com/media/_tech/media/datasheets/BST-BME280_DS001-11.pdf