grove HP206C and Grove barometer

Hello

I have an arduino uno, a grove shield and two grove sensors :

first : Grove - Temperature&Humidity Sensor (High-Accuracy & Mini) TH02 sensor

second one : Grove - Barometer (High-Accuracy) Sensor features a HP206C high-accuracy chip to detect barometric pressure ,Altimeter and temperature.



I’ve a problem when I want to use the 2 grove sensors together.

They both communicate with I2C bus.



If I download the HP20x_demo.ino program with only the appropriate sensor HP206C : no problem, it works

If I download the TH02_demo program with only the appropriate sensor TH02 : no problem, it works



If I download the HP20x_demo.ino program with the two sensors linked to the I2C : problem, it doesn’t work.

The message is “HP20x_dev isn’t available” and I can’t start the loop program.



If I download the TH02_demo program program with the two sensors linked to the I2C : it works. ( the data from TH02 are good)

I try a test program to verify the I2C adress, no problem, the two sensors are well detected . 0X40 and 0X76 adress.



I change the supply voltage from 3.3V to 5 V : it doesn’t change my problem.

Can you help to find a way to resolve that ?



thanks

Hi there,



i try it and see the same error on HP20x_demo.ino, it returns ret as 0 and stop the looping. i already feedback to software team about the issue.



here is the temporary solution. please disable all the items related with ret = HP20x.isAvailable(), thanks.


[code]/*

  • Demo name : HP20x_dev demo
  • Usage : I2C PRECISION BAROMETER AND ALTIMETER [HP206C hopeRF]
  • Author : Oliver Wang from Seeed Studio
  • Version : V0.1
  • Change log : Add kalman filter 2014/04/04
    */

#include <HP20x_dev.h>
#include “Arduino.h”
#include “Wire.h”
#include <KalmanFilter.h>
unsigned char ret = 0;

/* Instance */
KalmanFilter t_filter; //temperature filter
KalmanFilter p_filter; //pressure filter
KalmanFilter a_filter; //altitude filter

void setup()
{
Serial.begin(9600); // start serial for output

Serial.println(“HP20x_dev demo by seeed studio\n”);
Serial.println(“Calculation formula: H = [8.5(101325-P)]/100 \n”);
/* Power up,delay 150ms,until voltage is stable /
delay(150);
/
Reset HP20x_dev */
HP20x.begin();
delay(100);

/* Determine HP20x_dev is available or not /
/
ret = HP20x.isAvailable();
if(OK_HP20X_DEV == ret)
{
Serial.println(“HP20x_dev is available.\n”);
}
else
{
Serial.println(“HP20x_dev isn’t available.\n”);
}
*/
}

void loop()
{
char display[40];
//if(OK_HP20X_DEV == ret)
//{
Serial.println("------------------\n");
long Temper = HP20x.ReadTemperature();
Serial.println(“Temper:”);
float t = Temper/100.0;
Serial.print(t);
Serial.println(“C.\n”);
Serial.println(“Filter:”);
Serial.print(t_filter.Filter(t));
Serial.println(“C.\n”);

  long Pressure = HP20x.ReadPressure();
  Serial.println("Pressure:");
  t = Pressure/100.0;
  Serial.print(t);
  Serial.println("hPa.\n");
  Serial.println("Filter:");
  Serial.print(p_filter.Filter(t));
  Serial.println("hPa\n");
  
  long Altitude = HP20x.ReadAltitude();
  Serial.println("Altitude:");
  t = Altitude/100.0;
  Serial.print(t);
  Serial.println("m.\n");
  Serial.println("Filter:");
  Serial.print(a_filter.Filter(t));
  Serial.println("m.\n");
  Serial.println("------------------\n");
  delay(1000);
//}

}
[/code]

Ok thanks a lot to have resoved my problem

I’am going to test that solution tomorrow.

To day I tried the same sketch with a new sensor I bought.

The same problem appeared obviously now I read your answer.

If you find a solution or have an answer to your request, how can I know the result ?

On this forum ?

Hi,



I will post the solution in the forum. thanks.

Hi there,

The library for Grove_Barometer_HP20x just made a mistake for isAvailable() function, I have deleted this function. Inside this function it used to read CMPS_EN bit as chip status indication, actually this register bit is to determine whether to enable compensation or not.