Arduino - Sensor de CO2 SCD40
Neste tutorial, vamos aprender:
- O que é o sensor de CO2 SCD40 e como ler o valor de CO2 em ppm
- Como conectar o módulo do sensor de CO2 SCD40 ao Arduino via I2C
- Como programar o Arduino para verificar se o ar de uma sala está bom, abafado ou ruim
- Como ler a temperatura e a umidade do mesmo módulo SCD40

Quando muitas pessoas ficam em uma sala fechada, o nível de CO2 sobe. O CO2 alto nos deixa cansados e lentos para pensar. Com um SCD40 e um Arduino Uno, podemos ver esse número e saber quando é hora de abrir uma janela.
Hardware Necessário
Or you can buy the following kits:
| 1 | × | DIYables STEM V3 Starter Kit (Arduino included) | |
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Sobre o Sensor de CO2 SCD40
O SCD40 é um pequeno sensor de CO2 fabricado pela Sensirion. Ele mede a quantidade real de dióxido de carbono no ar. Isso é diferente de sensores de gás baratos, como a série MQ (veja Arduino - Sensor de Gás), que apenas estimam a qualidade do ar. Como ele funciona? Dentro do sensor, uma pequena luz infravermelha pisca. O gás CO2 absorve essa luz e cria uma onda de pressão muito pequena, como um som. Um microfone minúsculo ouve esse som. Quanto mais CO2, mais alto o som. Esse método se chama NDIR fotoacústico.

| SCD40 | |
|---|---|
| Tensão de Operação | 2.4V a 5.5V |
| Interface | I2C (endereço 0x62) |
| Faixa de Saída de CO2 | 0 a 40,000 ppm |
| Precisão de CO2 | ±(50 ppm + 5% da leitura), de 400 a 2,000 ppm |
| Taxa de Leitura | um novo valor a cada 5 segundos |
| Precisão de Temperatura | ±0.8°C (15°C a 35°C) |
| Precisão de Umidade | ±6 %RH (15°C a 35°C, 20 a 65 %RH) |
| Corrente Média | cerca de 15 mA |
O módulo SCD40 tem quatro pinos:
- Pino VCC: precisa ser conectado ao VCC (5V ou 3.3V)
- Pino GND: precisa ser conectado ao GND (0V)
- Pino SDA: o pino de dados I2C. Ele precisa ser conectado ao pino SDA do Arduino
- Pino SCL: o pino de clock I2C. Ele precisa ser conectado ao pino SCL do Arduino
A maioria dos módulos SCD40 já tem resistores de pull-up para as linhas I2C, então não precisamos adicionar nenhum.
O Que Significa o Valor de CO2?
O sensor fornece o CO2 em ppm (partes por milhão). Podemos usar este guia simples:
| Nível de CO2 | Qualidade do Ar |
|---|---|
| Cerca de 400 ppm | Ar fresco ao ar livre |
| 400 a 1,000 ppm | Bom ar em ambientes internos |
| 1,000 a 2,000 ppm | Abafado, abra uma janela |
| Acima de 2,000 ppm | Ruim, pode causar dor de cabeça ou sonolência |
※ Nota:
- O SCD40 se calibra sozinho automaticamente (Automatic Self-Calibration). Para isso funcionar, o sensor precisa ver ar fresco (cerca de 400 ppm) pelo menos uma vez por semana, por exemplo perto de uma janela aberta por uma hora.
- As primeiras leituras depois de ligar podem ser menos precisas. Dê alguns minutos a ele.
Diagrama de Ligação
No Arduino Uno, os pinos I2C são A4 (SDA) e A5 (SCL).

This image is created using Fritzing. Click to enlarge image
Tabela de ligação do Módulo SCD40 e do Arduino Uno
| Módulo SCD40 | Arduino Uno |
|---|---|
| VCC | → 5V |
| GND | → GND |
| SDA | → A4 |
| SCL | → A5 |
Como Programar o Sensor de CO2 SCD40
- Inclua as bibliotecas:
- Declare um objeto SCD4x:
- Inicialize o I2C e o sensor:
- Inicie a medição. Depois disso, o sensor faz uma nova leitura a cada 5 segundos:
- Verifique se uma nova leitura está pronta:
- Leia os valores. A função sempre fornece três valores juntos:
Código Arduino - Sensor de CO2 SCD40
O código abaixo imprime o nível de CO2 e uma palavra simples para a qualidade do ar: Good, Moderate ou Poor.
Passos Rápidos
- Conecte o Arduino ao PC por um cabo USB
- Abra o Arduino IDE, selecione a placa e a porta corretas
- Vá até o ícone Libraries na barra esquerda do Arduino IDE.
- Pesquise “SCD4x” e encontre a biblioteca Sensirion I2C SCD4x da Sensirion
- Clique no botão Install para instalar a biblioteca.
- Search for Sensirion I2C SCD4x created by Sensirion and click the Install button.
- Será pedido que você instale a dependência da biblioteca "Sensirion Core"
- Clique no botão Install All para instalá-la também.
- Copie o código acima e abra com o Arduino IDE
- Clique no botão Upload no Arduino IDE para fazer o upload do código para o Arduino
- Abra o Serial Monitor. O primeiro valor chega após cerca de 5 segundos.
- Respire devagar perto do sensor, ou feche a porta de uma sala pequena, e veja o CO2 subir.
O salto para 1362 ppm acontece quando respiramos no sensor. Depois de pouco tempo, o valor volta a cair.
Lendo Temperatura e Umidade do SCD40
O SCD40 também tem um sensor de temperatura e umidade embutido. Ele os usa para corrigir o valor de CO2, mas nós também podemos lê-los. Eles vêm da mesma chamada readMeasurement(), então não precisamos de nenhuma ligação extra nem de outra biblioteca. O código abaixo imprime os três valores.
Passos Rápidos
- Mantenha a mesma ligação de cima
- Copie o código acima e abra com o Arduino IDE
- Clique no botão Upload no Arduino IDE para fazer o upload do código para o Arduino
- Veja o resultado no Serial Monitor
※ Nota:
O SCD40 não foi feito para ser um termômetro de alta precisão. Se você só precisa de temperatura e umidade, o tutorial Arduino - DHT22 é uma escolha mais simples.