Boas,

Estou tentando ligar um BME280, como o da figura, e está dando o erro "Could not find a valid BME280 sensor, check wiring!". O código que estou testando:

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

#define SEALEVELPRESSURE_HPA (1013.25)

Adafruit_BME280 bme; // I2C

void setup() {
Serial.begin(9600);
Serial.println(F("BME280 test"));

if (!bme.begin()) {
Serial.println("Could not find a valid BME280 sensor, check wiring!");
while (1);
}
}

void loop() {
Serial.print("Temperature = ");
Serial.print(bme.readTemperature());
Serial.println(" *C");

Serial.print("Pressure = ");

Serial.print(bme.readPressure() / 100.0F);
Serial.println(" hPa");

Serial.print("Approx. Altitude = ");
Serial.print(bme.readAltitude(SEALEVELPRESSURE_HPA));
Serial.println(" m");

Serial.print("Humidity = ");
Serial.print(bme.readHumidity());
Serial.println(" %");

Serial.println();
delay(2000);
}

Alguém tem alguma ideia do que poderá ser. Estou fazendo as ligações por I2C

Exibições: 3120

Responder esta

Respostas a este tópico

A maioria dos sensores necessitam de um delay antes de serem reconhecidos e também entre as leituras. Veja no manual deste qual deve ser esse delay.

Tente o seguinte:

void setup() {
Serial.begin(9600);
Serial.println(F("BME280 test"));

delay(3000);
if (!bme.begin()) {
Serial.println("Could not find a valid BME280 sensor, check wiring!");
while (1);
}
}

Ou aumente esse delay inicial.

Boa tarde José,

Obrigado, aumentei o delay até 60 segundos e continua o mesmo erro.

Abçs

Carlos Almeida

Oi CA, bom dia.

Você está ligando este sensor em 3,3V?

E acho que o inteface também deve ser equalisado.

Rui

Boa tarde Rui,

A ideia é ligar em 5v, mas testei em 3.3v e continua a dar o mesmo. Não entendi a sua observação de "o interface deve ser equalisado".

Abçs

Carlos Almeida

Vou tentar explicar com um exemplo.

Se você tiver um equipamento que só funciona em 110volts e você tem nas tomadas de sua casa apenas 220V, você não pode ligar, pois você irá queimar o equipamento, certo?

Então você precisa comprar um transformador de 220V para 110V, para assim poder ligar o aparelho.

O que eu quero dizer, você precisa compatibilizar os níveis de tensão, tanto nos pinos de comunicação quanto na alimentação, caso contrário você corre o risco de "retirar a fumaça mágica de dentro do componente" (queimar o componente).

O datasheet diz:

https://www.adafruit.com/datasheets/BST-BME280_DS001-10.pdf

Supply voltage

VDD main supply voltage range: 1.71 V to 3.6 V (alimentação)
VDDIO interface voltage range: 1.2 V to 3.6 V (comunicação)

O Arduino UNO, MEGA, Leonardo usa 5V em todos os pinos de comunicação e essa módulo usa 3.3V, então cuidado

Oi CA, 

como o modulo é para 3.3V, os pinos de interface também o são( 0 e +3.3V),

então faz-se necessário que sejam ajustados os níveis de voltagem entre ele e o

arduino, pois os pinos digitais do arduino são 0 e +5V. 

Equalisar = ajustar niveis.

Rui

Flavio e Rui, uma dúvida:

Se ele ligou o módulo em 5V, pelo menos uma vez, pode ter danificado e por isso não está mais sendo reconhecido?

Oi JAC, boa tarde.

Sim.

Concordo com você.

Existe sim grande probabilidade de ter queimado o modulo.

Rui

Se não queimou realmente, ele pode ter ficado com avarias nos circuitos internos e isso pode provocar um comportamento errático, aí talvez lógica de Fuzzy resolva. (brincadeira)

Estou a muito tempo também tentando fazer leitura de meu sensor BME280 também, sem muito resultado.

O problema é que tem muito sensor chines fabricando sabe-se lá com qual qualidade. Já comprei mais de um BME280 para ter certeza de que não era problema do sensor. Testei num arduino Leonardo, no Nano e até comprei um Mini, mas este ainda não testei.
Como sou teimoso utilizei vários sketch que consegui na web e também mais de 5 -library- diferentes. Só em uma delas consegui, finalmente fazer a leitura, mas mesmo assim sem ler -umidade-.

O sketch e -library- que estou usando eu consegui no Github para o módulo Grove BME 280.

(meu BME280 é genérico e só tem 4 pinos, para utilizar I2C)


Acesse:
http://wiki.seeedstudio.com/Grove-Barometer_Sensor-BME280/

Bom dia Lauro, 

O sensor BME280 é fabricado por um dos melhores fabricantes de sensores do mundo ! A BOSCH.

https://www.bosch-sensortec.com/bst/products/all_products/bme280

Existem vários modelos de placas com o sensor BME280. A sua placa é idêntica à que informou ?

http://wiki.seeedstudio.com/Grove-Barometer_Sensor-BME280/

Biblioteca do BME280 da ADAFRUIT:

https://github.com/adafruit/Adafruit_BME280_Library

Tutorial da ADAFRUIT:

https://learn.adafruit.com/adafruit-bme280-humidity-barometric-pres...

Tutorial da SPARKFUN:

https://learn.sparkfun.com/tutorials/sparkfun-bme280-breakout-hooku...

O sensor BME 280 pode usar dois tipos de interface I2C ou SPI. Qual interface pretende usar ?

Se for usar I2C, use o conector Branco. Os outros pinos são para interface SPI:

(veja que tem jumper de endereço - não precisa alterar) 

I2C endereço default = 0x76

No Módulo BME280 da Adafruit já tem um regulador interno de 3,3V e conversor bidirecional nas portas I2C. Suponho que o módulo da Groove seja similar. 

Monte com essas conexões :

 

Arduino       Grove-Barometer_Sensor-BME280
5V VCC
GND GND
SDA (A4) SDA
SCL (A5) SCL

Recomendo que use a Biblioteca da Groove :

https://github.com/Seeed-Studio/Grove_BME280

E execute o programa do exemplo:

bme280_example.ino

Se não funcionar, nos informe. Não tem como errar. 

Depois que eu vi que o seu módulo tem 4 pinos somente. 

Cuidado, parece que tem módulo falso - BMP/BME 280 ! BMP280 e BME280 são sensores distintos ! 

Envie uma foto do seu módulo (os dois lados) .

Se for esse módulo aqui, ele não tem regulador de tensão 3,3V e nem conversores bidirecional de nível de tensão !  Esse tutorial é para Raspberry PI. 

https://pypi.org/project/RPi.bme280/

VIN = conecte em um regulador de 3,3V 

Pinos SDA e SCL - use convesores BIDI 

https://learn.sparkfun.com/tutorials/bi-directional-logic-level-con...

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço