Manual
do
Maker
.
com
Esse sensor de pressão atmosférica MS5611 é o primeiro da linha "popular" que vejo para concorrer com o BMP180 ou BMP280. Além da medição da pressão atmosférica, ele também lê temperatura. Sua resolução é de 10cm na variação de altitude com tempo de conversão de 1ms. Consumo de 0.15uA e tensão entre 1.8 e 3.6V. Porém, na placa GY-63 tem um regulador linear LDO (Low DropOut) configurado para comportar a alimentação em 5V. O sensor de temperatura tem uma precisão com variação em torno de 0.8C. O nível lógico também está configurado para 5V, portanto pode ser utilizado tranquilamente em Arduino UNO, Nano, Mega, Leonardo - ou no caso desse artigo, estou usando a MH-Tiny, que tem o mesmo mapeamento de pinos do Arduino Nano e do qual já escrevi outros dois artigos, que você encontra aí na caixa de pesquisa ou no menu Arduino.
Agora que já vimos as características do sensor de pressão atmosférica MS5611 e o pinout da placa (que como citado, serão os mesmos pinos para as demais placas), podemos iniciar o código. O wiring já não é mais novidade há centenas de artigos, certo? SDA ->A4 e SCL->A5. VCC->5V e GND->GND.
A biblioteca utilizada foi a (olha só que surpresa) MS5611, que pode ser instalada pelo gerenciador de bibliotecas do Arduino IDE ou pelo PlatformIO usando sua IDE preferida. Não seja resistente a experimentar vscode com PlatformIO, será uma experiência muito agradável, se você usa só a IDE do Arduino atualmente.
Enfim, a biblioteca que escolhi é a mais utilizada. A única coisa que mudei em relação ao exemplo foi a criação do objeto como ponteiro, mas não se atenha aos detalhes, apenas experimente.
#include <Arduino.h>
#include "MS5611.h"
MS5611 *ms5611 = new MS5611(0x77); // 0x76 = CSB to VCC; 0x77 = CSB to GND
uint32_t start, stop, count;
void setup()
{
Serial.begin(115200);
Serial.print(__FILE__);
Serial.print("MS5611 lib version: ");
Serial.println(MS5611_LIB_VERSION);
bool b = ms5611->begin();
Serial.println(b ? "found" : "not found");
count = 0;
Serial.println("CNT\tDUR\tRES\tTEMP\tPRES");
delay(1000);
}
void loop()
{
start = micros();
int result = ms5611->read();
stop = micros();
Serial.print(count);
count++;
Serial.print("\t");
Serial.print(stop - start);
Serial.print("\t");
Serial.print(result);
Serial.print("\t");
Serial.print(ms5611->getTemperature(), 2);
Serial.print("\t");
Serial.print(ms5611->getPressure(), 2);
Serial.println();
delay(1000);
}
Compile, suba o código e abra a serial. Depois de provar o conceito, introduza sua aplicação. Particularmente, pretendo colocar em um robô, que estou há bastante tempo enrolando pra terminar o projeto, mas vai ser divertido usar esse sensor nele.
Usei um BMP180 para exemplificar a medição da carbonatação de cerveja. A pressão da garrafa é bem superior a 1 atmosfera, esse sensor não serve para esse propósito, mas é interessante o artigo.
Tem mais um experimento diferente que quero fazer com ele, vamos ver se para o próximo artigo relacionado sai um vídeo também.
E normalmente quando escrevo sobre sensores, eles vem da Curto Circuito, que é (na minha opinião) o lugar mais completo em relação a sensores. - Mas placas também não ficam pra menos; a MH-Tiny também é da Curto, seu valor é 30% menor que um Nano e a placa é preta com barra de pinos amarela. Lindona! Confira o artigo relacionado a ela.
Inscreva-se no nosso canal Manual do Maker no YouTube.
Também estamos no Instagram.
Autor do blog "Do bit Ao Byte / Manual do Maker".
Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.