GY-BMP280-3.3 Módulo Sensor de Pressão Arduino (SPI)
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.
Conteudo
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