GY-BMP280-3.3 Módulo Sensor de Pressão Arduino (SPI)

Tempo de leitura: 7 minutes

Este tutorial do módulo sensor de pressão GY-BMP280-3.3 Arduino mostra como conectar um módulo sensor de pressão ao Arduino e como ler a pressão e a temperatura do dispositivo.

As interfaces I²C ou SPI podem ser usadas para conectar o módulo ao Arduino. O módulo opera a partir de 3,3 V e não é tolerante a 5 V, por isso é importante conectá-lo corretamente a Arduinos de 5 V usando shifters de nível e 3,3 V para alimentação.

Para usar o módulo do sensor de pressão, uma biblioteca deve ser instalada na IDE do Arduino. Isso é feito facilmente, pois a biblioteca pode ser instalada a partir do IDE do Arduino sem a necessidade de uma instalação manual complicada.

A imagem abaixo mostra o módulo do sensor de pressão usado neste tutorial. Ele contém um sensor BMP280 da Bosch que pode medir tanto a pressão atmosférica quanto a temperatura. Consulte também a pinagem do módulo do sensor de pressão GY-BMP280-3.3 para a numeração dos pinos e o diagrama de circuito do módulo mostrado abaixo.

Conectando o Módulo Sensor de Pressão GY-BMP280-3.3 ao Arduino

Ao contrário de alguns outros módulos que utilizam o mesmo sensor BMP280, este módulo não possui regulador de tensão ou seletor de nível para facilitar o uso com sistemas de 5V. É um módulo apenas de 3,3V. A maneira mais fácil de operá-lo é usá-lo com um Arduino de 3,3 V, como um Arduino Due, Arduino Zero ou Arduino M0.

Software SPI refere-se ao uso do driver Arduino SPI para emular hardware SPI usando “bit banging”. Isso permite que um dispositivo SPI, como o sensor de pressão, seja conectado a qualquer pino do Arduino. Hardware SPI refere-se ao uso do dispositivo SPI de hardware real do chip microcontrolador no Arduino. Pinos específicos do Arduino devem ser usados ​​para SPI de hardware.

Ligação I²C para Arduino de 3,3 V

Um módulo sensor de pressão GY-BMP280-3.3 pode ser usado diretamente com um Arduino de 3,3 V, como um Arduino Due. A ligação I²C é a seguinte.

  • Pino 1 do módulo ao pino 3.3V do Arduino Due
  • Pino 2 do módulo ao pino GND do Arduino Due
  • Pino 3 do módulo para Arduino Due SCL (pino 21)
  • Pino 4 do módulo para Arduino Due SDA (pino 20)
  • Pino 5 do módulo – não conectado
  • Pino 6 do módulo para pino 1 do módulo (ou 3,3 V) – isso define o endereço I²C para 0x77

Abaixo está o diagrama de ligação conforme descrito acima.

Ligação I²C para 5V Arduino Uno

Um módulo de mudança de nível bidirecional pode ser usado para conectar os pinos I²C do módulo GY-BMP280-3.3 de 3,3 V a um Arduino de 5 V, como um Arduino Uno ou Arduino MEGA. A alimentação do módulo do sensor de pressão deve ser tomada do pino de 3,3 V do Arduino.

Alternativamente, um transistor como um 2N7000 N-Channel MOSFET pode ser usado para fazer um deslocador de nível bidirecional como mostrado abaixo.

 

Deslocador de nível bidirecional do transistor

No circuito acima, para níveis lógicos 1, quando 3,3 V é aplicado ao pino 3,3 V_Lógico esquerdo, 5 V aparece no pino 5 V_Lógico direito. Para níveis lógicos 0, quando 0V ou GND é aplicado ao pino esquerdo, 0V ou GND aparece no pino direito.

Por outro lado, quando 5V é aplicado ao pino direito, 3,3V aparece no pino esquerdo. Quando 0V ou GND é aplicado ao pino direito, 0V ou GND aparece no pino esquerdo.

Deslocador de nível bidirecional com transistor 2N7000 para Arduino Uno I²C

Um único transistor 2N7000 e um resistor de 10k são necessários por pino I²C ao conectar um Arduino de 5V ao módulo do sensor de pressão de 3,3V. Apenas um resistor de 10k é necessário porque o módulo já possui um resistor de pull-up de 10k em cada pino I²C. Na imagem acima, o resistor à esquerda da linha tracejada vertical (R1) é encontrado no módulo do sensor de pressão.

O circuito abaixo mostra como conectar o módulo do sensor de pressão a um Arduino Uno usando os pinos I²C. A pinagem do MOSFET 2N7000 N-Channel em um pacote TO-92 também é mostrada.

Módulo Sensor de Pressão GY-BMP280-3.3 Conectado ao Arduino Uno


2N7000 MOSFET de canal N, pacote TO-92

Ligação SPI de software para Arduino de 3,3 V

A ligação SPI usando o software SPI é a seguinte ao usar os pinos padrão do sketch de teste. Quaisquer pinos podem ser usados ​​com o software SPI, mas se forem diferentes dos abaixo, eles devem ser alterados no sketch para corresponder.

  • Pino do módulo 1 ao pino Arduino Due 3.3V
  • Pino do módulo 2 ao pino GND do Arduino Due
  • Pino do módulo 3 (SCK) para Arduino Due pino 13
  • Pino do módulo 4 (SDI) para Arduino Due pino 11
  • Pino do módulo 5 (CSB ou CS) para Arduino Due pino 10
  • Pino 6 do módulo (SDO) para Arduino Due pino 12

Abaixo está o diagrama de ligação conforme descrito acima.

Diagrama de ligação SPI do módulo sensor de pressão Arduino Due GY-BMP280-3.3

 

Ligação SPI de hardware para Arduino de 3,3 V

Os pinos SPI de hardware são um pouco difíceis de conectar no Arduino, pois são encontrados nos pinos SPI (cabeçalho de 6 pinos) encontrados perto do meio da placa e não em nenhum dos conectores na borda da placa. A pinagem do cabeçalho SPI é mostrada abaixo.

SPCK na imagem é o mesmo que SCK no módulo. MISO é o mesmo que SDO e MOSI é o mesmo que SDI. Qualquer pino pode ser usado para a seleção do chip (pino CS ou CSB no módulo), mas deve ser alterado de acordo com o esboço do Arduino. Consulte a pinagem do módulo do sensor de pressão GY-BMP280-3.3 para ver quais pinos devem ser conectados ao conector Arduino Due SPI.

Ligação SPI para 5V Arduino Uno

Novamente, o módulo deve ser alimentado a partir do pino 3.3V do Arduino e dos seletores de nível usados ​​para os pinos SPI. Use um módulo de deslocamento de nível ou use um deslocamento de nível de transistor para cada linha SPI, conforme mostrado na seção Arduino I²C acima.

Os pinos SPI do hardware Arduino Uno são encontrados no cabeçalho ICSP, mas também nos pinos digitais 10 a 13 da seguinte forma:

  • Pino 13 do Arduino Uno – SCK se conecta ao pino SCK do módulo de pressão
  • Pino 12 do Arduino Uno – MISO se conecta ao pino SDO do módulo de pressão
  • Pino 11 do Arduino Uno – MOSI se conecta ao pino SDO do módulo de pressão
  • Pino 10 do Arduino Uno – SS conecta-se ao pino CSB do módulo de pressão

 

Instale o driver BMP280 Arduino

Abra o IDE do Arduino e use o menu superior para navegar até Sketch → Include Library → Manage Libraries… que abrirá a caixa de diálogo Library Manager.

Na caixa de diálogo Library Manager, insira BMP280 no campo de filtro para encontrar o driver BMP280 conforme mostrado na imagem abaixo.

Caixa de diálogo do gerenciador de biblioteca IDE do Arduino

 

Clique no item Adafruit BMP280 Library e, em seguida, use o botão de instalação que aparece para instalá-lo. Clique também no item I2C-Sensor-Lib iLib e instale-o para comunicações I²C com o módulo BMP280.

Testando o Módulo de Pressão com Arduino

Quando a biblioteca do driver BMP280 é instalada no Arduino IDE, um esboço de teste está disponível no item de menu Exemplos que pode ser usado para testar o módulo do sensor de pressão BMP280. Encontre o esboço de teste no IDE do Arduino selecionando Arquivo → Exemplos → Biblioteca Adafruit BMP280 → bmp280test no menu superior.

Teste de Interface I²C

Por padrão, o sketch de teste usa a interface I²C, portanto, nenhuma alteração no esboço é necessária. A biblioteca de drivers BMP280 acessa o sensor no endereço I²C 0x77, que é o endereço do módulo se a ligação descrita acima estiver correta.

Para executar o sketch de teste, basta carregá-lo no Arduino e, em seguida, abrir a janela Arduino IDE Serial Monitor para ver a pressão, altitude e temperatura lidas no sensor. Certifique-se de que a janela Serial Monitor esteja configurada para usar uma taxa de transmissão de 9600.

Teste de Interface SPI

Abra o mesmo sketch de teste usado para o I²C acima no Arduino IDE selecionando Arquivo → Exemplos → Biblioteca Adafruit BMP280 → bmp280test no menu superior.

Software SPI

Para software SPI, comente a linha I2C perto do topo do esboço de teste e remova o comentário da linha que especifica os pinos do software SPI, conforme mostrado no código abaixo.

#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)

Os pinos SPI de software padrão são definidos na parte superior deste código. Se você estiver usando pinos diferentes, altere os números dos pinos aqui.

Hardware SPI

Para hardware SPI, o módulo do sensor de pressão deve ser conectado aos pinos de hardware SPI do Arduino que está sendo usado. Na parte superior do sketch de teste, comente a linha I2C e descomente a linha que especifica apenas a linha de seleção do chip, conforme mostrado no código abaixo.

#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);

BMP_CS tem um número de pino padrão de 10 conforme definido próximo ao topo deste código. Se você estiver usando um pino diferente para a seleção de chip SPI, altere-o aqui. Os outros números de pinos definidos na parte superior deste código não são usados ​​quando o SPI de hardware é selecionado porque o SPI de hardware é encontrado apenas em pinos Arduino específicos.

As leituras na Monitor