Este projecto vai explicar como podes utilizar o sensor barométrico BMP280. Com ele podes obter as seguintes informações para a tua estação meteorológica.
- temperatura
- pressão atmosférica
- altitude (é necessário introduzir no código a pressão diária ao nível do mar, podes obter essa informação em https://www.wunderground.com através da localidade onde se encontra o sensor)
Neste projecto os dados vão ser apresentados através do Serial Monitor. Em projectos futuros iremos utilizar um LCD e um TFT Monitor para fazermos a leitura dos mesmos.
Antes de mais, deves instalar a biblioteca adafruit_sensor no teu IDE para que o programa funcione devidamente.
BIBLIOTECA ADAFRUIT_BMP280
Deves também instalar a biblioteca adafruit-bmp280 no teu IDE para que possas utilizar o sensor.
Vais a https://learn.adafruit.com/adafruit-bmp280-barometric-pressure-plus-temperature-sensor-breakout/wiring-and-test e faz o download do ficheiro Adafruit_BMP280_Library-master.zip.
Extrai o conteúdo (pasta Adafruit_BMP280_Library-master), altera o nome da pasta para Adafruit_BMP280 e coloca-o na pasta de instalação do arduino \Arduino\libraries
MATERIAL
- arduino uno
- breadboard
- jumpers
- Sensor barométrico BMP280 (adquirido aqui)
- Datasheet do sensor aqui.
- portátil
- cabo usb (ligação do arduino ao portátil)
- multímetro (opcional)
LIGAÇÕES
O sensor pode ser ligado ao arduino por I2C ou SPI. Neste caso foi ligado por SPI.
Atenção!! Este sensor deve estar ligado aos 3.3V do arduino!!!
CÓDIGO
Para fazeres o upload do código para o arduino vai a Ficheiro>Exemplos>Adafruit BMP280 Library> bmp280test
A seguir clica em CTRL+U ou apenas na seta para a direita (canto superior esquerdo).
Para verificares se está a funcionar clica em CTRL+SHIFT+M ou apenas em Monitor Série (canto superior direito).
/*************************************************************************** This is a library for the BMP280 humidity, temperature & pressure sensor Designed specifically to work with the Adafruit BMEP280 Breakout ----> http://www.adafruit.com/products/2651 These sensors use I2C or SPI to communicate, 2 or 4 pins are required to interface. Adafruit invests time and resources providing this open source code, please support Adafruit andopen-source hardware by purchasing products from Adafruit! Written by Limor Fried & Kevin Townsend for Adafruit Industries. BSD license, all text above must be included in any redistribution ***************************************************************************/ #include <Wire.h> #include <SPI.h> #include <Adafruit_Sensor.h> #include <Adafruit_BMP280.h> #define BMP_SCK 13 #define BMP_MISO 12 #define BMP_MOSI 11 #define BMP_CS 10 //Adafruit_BMP280 bme; // I2C //Adafruit_BMP280 bme(BMP_CS); // hardware SPI Adafruit_BMP280 bme(BMP_CS, BMP_MOSI, BMP_MISO, BMP_SCK); void setup() { Serial.begin(9600); Serial.println(F("BMP280 test")); if (!bme.begin()) { Serial.println(F("Could not find a valid BMP280 sensor, check wiring!")); while (1); } } void loop() { Serial.print(F("Temperature = ")); Serial.print(bme.readTemperature()); Serial.println(" *C"); Serial.print(F("Pressure = ")); Serial.print(bme.readPressure()); Serial.println(" Pa"); Serial.print(F("Approx altitude = ")); Serial.print(bme.readAltitude(1019)); // this should be adjusted to your local forcase Serial.println(" m"); Serial.println(); delay(2000); }
VIDEO
No caso de uma placa Arduino Mega os pinos seriam os mesmos?
no mega 2560 tens:
– SCK – 52
– MISO – 50
– MOSI – 51
– CS – 53
Rafael, muito obrigado!
se eu fosse escrever o mesmo código para 2 sensores trabalhando junto, como faria?
Uma opção seria conectar um por SPI e outro por I2C.
Vê aqui como ligar https://learn.adafruit.com/adafruit-bmp280-barometric-pressure-plus-temperature-sensor-breakout/wiring-and-test
Boas. Tenho tudo como está, já verifiquei os fios e continua a dar a mesma mensagem de erro “BMP280 test
Could not find a valid BMP280 sensor, check wiring!”. Estou convencido de que a razão é por ser um sensor chinês, se fosse da adafruit, secalhar passava. abrs