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
Tags:
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:
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...
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por