O objetivo desta aula é permitir fazer a leitura de dados, através de um sensor de pressão, e passa-los para um cartão de memória.
Estes dados poderão ser utilizados para análise e tratamento, por exemplo, através do Excel.
Para este projeto vamos precisar do seguinte material: Arduíno, BMP280, cartão SD, breadboard e 12 jumpers.
O circuito a utilizar é o seguinte:
Para terem uma noção mais precisa das ligações, elas são as seguintes:
- BMP280 (Sensor de pressão e temperatura): VIN - 5V; GND - GND; SCL - A5; SDA - A4.
- Cartão SD: GND - GND; +5 - 5V; CS (Chip Select) - 4; MOSI (SPI Data) - 11; SCK (Clock) - 13; MISO (SPI Data) - 12; GND - GND;
Vamos ver agora o código necessário para que o projeto funcione.
A primeira fase do projeto é fazer a leitura do sensor de pressão e temperatura.
Vai ser necessário incluir duas librarias:
- wire.h para ser possível a comunicação I2C. O I2C é um protocolo de barramento que permite, com os mesmos fios, ligar vários dispositivos no mesmo circuito. Tem a vantagem de reduzir o número de pinos necessários do Arduíno dado que utilizamos os meus fios para ligar 1 ou 20 dispositivos. Um dos dispositivos irá trabalhar como Master e todos os outros como Slave.
![]()
O Arduíno vem com pinos próprios para este tipo de ligação I2C. No caso do Uno os pinos são sempre o 4 (SDA - Serial Data, pino que transfere os dados) e 5 (SCL - Serial Clock, cria uma temporização entre os dispositivos).
- Adafruit_BMP085.h necessária para o sensor de pressão e temperatura. Havendo sensores mais atuais como o BMP180 e BMP280. No meu entender, esta libraria ainda continua dar melhor resposta aos nossos problemas.
Depois das librarias adicionadas criamos o objeto meuSensor e definimos algumas variáveis necessárias para armazenar leituras e cálculos:
No void setup() ligamos o monitor série e inicializamos o sensor:
Por último, no void loop(), lemos a temperatura em graus Celsius e a pressão. Transformamos a temperatura em Fahrenheit e imprimimos os valores obtidos no monitor série:
Estando esta parte concretizada, vamos agora pegar nestes dados e gravá-los num ficheiro no cartão de memória.
Para que o cartão de memória possa funcionar, acrescentaremos mais duas librarias:
- SD.h libraria que vai permitir ler e escrever nos cartões SD.
- SPI.h para a comunicação SPI (Serial Peripheral Interface), isto é, é um protocolo de dados série síncronos utilizado em microcontroladores para comunicação entre o microcontrolador e um ou mais periféricos. Este tipo de comunicações contém 4 ligações:
- MISO (Master IN Slave OUT) - Dados do Slave para Master;
- MOSI (Master OUT Slave IN) - Dados do Master para Slave;
- SCK (Serial Clock) - Clock de sincronização para transmissão de dados entre o Master e Slave;
- SS (Slave Select) - Seleciona o Slave que receberá os dados.
Em seguida, definimos a variável para o pino do Chip Select e uma outra, do tipo ficheiro, que servirá para o criar o ficheiro no cartão de memória.
No void setup() vamos acrescentar mais duas linhas: uma para indicar o pino 10 como saída (OUTPUT), este pino é reservado à libraria SD.h; uma segunda para inicializar o cartão de memória:
Para terminar o nosso projeto só falta escrever os dados num ficheiro no cartão. Deste modo, no void loop(), vamos escrever as instruções necessárias a este passo:
Os conceitos apreendidos nesta aula são importantes e aplicáveis a vários tipos de projetos como iremos ver nas próximas aulas com a utilização de GPS.
Espero que se sintam cada vez mais motivados para este tipo de aprendizagens.
Cá vos espero na próxima aula. Abraço,