Arduino Nano - Sensor de CO2 SCD40
Este tutorial ensina você a usar o Arduino Nano para ler o nível de dióxido de carbono (CO2) de um ambiente com o sensor SCD40. Em detalhes, vamos aprender:
- Como conectar o Arduino Nano ao módulo sensor de CO2 SCD40 por I2C
- Como programar o Arduino Nano para ler a concentração de CO2 em ppm e julgar se o ar está fresco ou abafado
- Como ler os valores de temperatura e umidade que o mesmo módulo também fornece

Sugerimos:
- Utilizar o SCD40 (este tutorial) quando você precisa do valor real de CO2, por exemplo para saber quando abrir uma janela em uma sala de aula ou escritório.
- Utilizar um sensor de gás MQ2 se você quer apenas detectar fumaça ou vazamentos de gás inflamável.
Hardware Necessário
Or you can buy the following kits:
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Sobre o Sensor de CO2 SCD40
Pinagem do Sensor de CO2 SCD40
O SCD40 da Sensirion mede o CO2 real com sensoriamento NDIR fotoacústico. Dentro de sua pequena câmara, uma luz infravermelha pisca ligando e desligando. O CO2 absorve parte dessa luz e cria um minúsculo "som" de pressão, que um microfone embutido capta: quanto mais CO2, mais forte o sinal. Como ele mede o próprio gás, seu valor é muito mais confiável do que a estimativa "eCO2" de sensores como o MQ135 ou o CCS811.
| 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 valor a cada 5 segundos (a cada 30 segundos no modo de baixo consumo) |
| 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 a 3.3V |

O módulo SCD40 tem quatro pinos:
- Pino VCC: deve ser conectado ao VCC (5V ou 3.3V)
- Pino GND: deve ser conectado ao GND (0V)
- Pino SDA: linha de dados I2C, deve ser conectado ao pino SDA do Arduino Nano (A4)
- Pino SCL: linha de clock I2C, deve ser conectado ao pino SCL do Arduino Nano (A5)
A maioria das placas breakout SCD40 já tem resistores de pull-up I2C, então nenhum resistor extra é necessário.
※ Nota:
A disposição dos pinos em um módulo pode variar de um fabricante para outro. Algumas placas indicam o VCC como VIN. É essencial sempre consultar os rótulos impressos no módulo ao usá-lo. Observe com atenção!
Como Ler o Valor de CO2
O CO2 é medido em ppm (partes por milhão). A tabela abaixo é um guia simples para o ar em ambientes internos:
| Nível de CO2 | Significado |
|---|---|
| Cerca de 400 ppm | Ar fresco externo |
| 400 a 1000 ppm | Bom ar interno |
| 1000 a 2000 ppm | Ar abafado, abra uma janela |
| Acima de 2000 ppm | Ar ruim, dor de cabeça ou sonolência são possíveis |
O SCD40 tem Autocalibração Automática (ASC), que vem ATIVADA por padrão. Ela assume que o sensor vê ar fresco, de nível externo (cerca de 400 ppm), pelo menos uma vez por semana, idealmente por uma hora ou mais. Então, ventile o ambiente de vez em quando. Além disso, as primeiras leituras após ligar podem ser menos precisas enquanto o sensor aquece.
Diagrama de Ligação
O módulo SCD40 conversa com o Arduino Nano por I2C, então ele usa os pinos A4 (SDA) e A5 (SCL) do Arduino Nano.

This image is created using Fritzing. Click to enlarge image
Veja A melhor forma de alimentar o Arduino Nano e outros componentes.
| Módulo SCD40 | Arduino Nano |
|---|---|
| VCC | 5V |
| GND | GND |
| SDA | A4 |
| SCL | A5 |
Como Programar o Sensor de CO2 SCD40
- O primeiro passo é incluir as bibliotecas:
- Declare um objeto SCD4x:
- No setup(), inicie o barramento I2C e conecte o sensor no endereço 0x62:
- Faça um início limpo e depois comece a medição periódica:
- No loop(), verifique se um novo valor está pronto e depois leia-o:
- Toda função retorna um código de erro. Quando ele não é 0, pode ser convertido em texto:
Código Arduino Nano para o Sensor de CO2 SCD40
O código abaixo imprime o valor de CO2 em ppm, seguido de uma palavra simples (Good, Moderate ou Poor) com base na tabela guia acima.
Passos Rápidos
- Se esta é a primeira vez que você usa o Arduino Nano, veja como configurar o ambiente para o Arduino Nano na Arduino IDE.
- Ligue os componentes como mostrado no diagrama.
- Conecte a placa Arduino Nano ao seu computador usando um cabo USB.
- Abra a Arduino IDE no seu computador e selecione a placa Arduino Nano e sua porta COM.
- Clique no ícone Libraries na barra à esquerda da 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á solicitado que você instale a dependência. Clique no botão Install All para instalar a biblioteca Sensirion Core.
- Copie o código acima e cole-o na Arduino IDE.
- Clique no botão Upload para fazer o upload do código para o Arduino Nano.
- Abra o Serial Monitor e defina o baud rate como 9600.
- Respire suavemente em direção ao sensor, a uma curta distância, e observe o valor subir; depois deixe-o se estabilizar.
Uma nova linha aparece a cada 5 segundos, aproximadamente, porque é com essa frequência que o SCD40 faz uma nova medição.
Lendo a Temperatura e a Umidade do SCD40
O SCD40 também tem seu próprio sensor de temperatura e umidade. O sensor o usa internamente para corrigir o valor de CO2, mas você também pode lê-lo. Na verdade, readMeasurement() já retorna os três valores de uma só vez, então o código só precisa imprimi-los.
Código Arduino Nano para o SCD40 - CO2, Temperatura e Umidade
Passos Rápidos
- Mantenha a mesma ligação.
- Copie o código acima e abra-o na Arduino IDE.
- Clique no botão Upload para fazer o upload do código para o Arduino Nano.
- Abra o Serial Monitor.
※ Nota:
O valor de temperatura serve principalmente para ajudar na medição de CO2, então pode diferir um pouco de um termômetro de ambiente. Para uma leitura dedicada de temperatura e umidade, um sensor como o DHT22 é uma escolha melhor.
Conhecimento Adicional
Vamos comparar o SCD40 e o sensor de gás MQ2.
| SCD40 | MQ2 | |
|---|---|---|
| O que mede | CO2 real em ppm | nível geral de GLP, fumaça, álcool, metano etc. |
| Método de detecção | NDIR fotoacústico | elemento de óxido metálico aquecido |
| Saída | digital (I2C) | tensão analógica e limiar digital |
| Dados extras | temperatura e umidade | nenhum |
| Aquecimento | algumas leituras | 5-10 minutos (24-48 horas se ficou guardado por muito tempo) |
É evidente que o SCD40 é a escolha certa para qualidade do ar interno e ventilação, enquanto o MQ2 é feito para alarmes de vazamento de gás e fumaça.