Arduino UNO R4 - Sensor de CO2 SCD40
Neste guia, vamos aprender como usar o sensor de CO2 SCD40 com o Arduino UNO R4 WiFi ou Minima para descobrir quanto dióxido de carbono há no ar ao redor da sua mesa. Uma sala cheia de gente se enche aos poucos de CO2, e níveis altos nos deixam cansados. Com este projeto você pode ver o número e saber quando abrir uma janela. Em detalhes, vamos aprender:
- Como o SCD40 mede o CO2 real e o que seus quatro pinos fazem.
- Como conectar o módulo SCD40 aos pinos I2C do Arduino UNO R4.
- Como escrever um programa para o Arduino UNO R4 que lê o CO2 em ppm e classifica o ar como Good, Moderate ou Poor.
- Como ler os valores extras de temperatura e umidade do mesmo sensor.

Hardware Necessário
Or you can buy the following kits:
| 1 | × | DIYables STEM V4 IoT Starter Kit (Arduino included) | |
| 1 | × | DIYables STEM V4B IoT Starter Kit (Arduino included) | |
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Sobre o Sensor de CO2 SCD40
O SCD40 é um pequeno sensor da Sensirion (parte da família SCD4x). Muitos sensores baratos de "qualidade do ar" apenas adivinham o nível de CO2 a partir de outros gases. Por exemplo, o MQ2 do nosso tutorial Arduino UNO R4 - Sensor de Gás reage a muitos gases ao mesmo tempo. O SCD40 mede o próprio CO2, usando um método chamado NDIR fotoacústico: uma pequena luz infravermelha pulsa dentro do sensor, o CO2 absorve parte dessa luz e cria um "som" de pressão muito pequeno, e um microfone o capta. Mais CO2 dá um som mais forte.
| SCD40 | |
|---|---|
| Tensão de alimentação | 2.4V a 5.5V |
| Interface | I2C, endereço 0x62 |
| Faixa de saída | 0 a 40,000 ppm |
| Precisão | ±(50 ppm + 5% da leitura), de 400 a 2,000 ppm |
| Nova leitura | 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 sensor tem Autocalibração Automática (ASC), e ela vem ligada por padrão. Ele espera ver ar fresco, com nível de ar livre (cerca de 400 ppm), pelo menos uma vez por semana, de preferência por uma hora ou mais. Uma sala que é arejada de vez em quando é suficiente. Além disso, as primeiras leituras depois de ligar podem ficar um pouco fora enquanto o sensor esquenta.
O que os números significam:
| CO2 (ppm) | Qualidade do ar |
|---|---|
| Cerca de 400 | Ar fresco ao ar livre |
| 400 - 1000 | Bom ar em ambientes internos |
| 1000 - 2000 | Abafado, abra uma janela |
| Acima de 2000 | Ruim, pode causar dor de cabeça ou sonolência |

O módulo SCD40 tem quatro pinos:
- Pino VCC (pode estar identificado como VIN): conecte ao 5V ou 3.3V do Arduino UNO R4.
- Pino GND: conecte ao GND (0V).
- Pino SCL: clock I2C, conecte ao pino SCL do Arduino UNO R4.
- Pino SDA: dados I2C, conecte ao pino SDA do Arduino UNO R4.
A maioria dos módulos SCD40 já tem resistores de pull-up do I2C na placa, então não é preciso adicioná-los por conta própria.
Diagrama de Ligação
O Arduino UNO R4 tem seu barramento I2C principal em A4 (SDA) e A5 (SCL). Os mesmos dois sinais também saem nos pinos SDA e SCL do conector perto do pino AREF, então você pode usar qualquer um dos lugares.

This image is created using Fritzing. Click to enlarge image
Veja A melhor forma de alimentar o Arduino Uno R4 e outros componentes.
| Módulo SCD40 | Arduino UNO R4 |
|---|---|
| VCC | 5V |
| GND | GND |
| SCL | SCL (A5) |
| SDA | SDA (A4) |
※ Nota:
O conector Qwiic do Arduino UNO R4 WiFi é um barramento I2C diferente (Wire1) e trabalha com 3.3V. Este guia usa os pinos normais e Wire, então funciona do mesmo jeito no WiFi e no Minima.
Como Programar o Sensor SCD40
- Inclua as bibliotecas.
- Crie um objeto do sensor SCD40.
- Inicie o barramento I2C e conecte o sensor no endereço 0x62:
- Inicie a medição periódica:
- Verifique se uma nova leitura está pronta e depois leia:
Toda função da biblioteca retorna um código de erro. Quando ele não é 0, errorToString() o transforma em um texto legível, e o código o imprime no Serial Monitor.
Código Arduino UNO R4 - CO2 do SCD40
Passos Rápidos
Siga estas instruções passo a passo:
- Se esta é a primeira vez que você usa o Arduino Uno R4 WiFi/Minima, consulte o tutorial sobre como configurar o ambiente para o Arduino Uno R4 WiFi/Minima no Arduino IDE.
- Ligue os componentes conforme o diagrama fornecido.
- Conecte a placa Arduino Uno R4 ao seu computador usando um cabo USB.
- Abra o Arduino IDE no seu computador.
- Selecione a placa Arduino Uno R4 apropriada (por exemplo, Arduino Uno R4 WiFi) e a porta COM.
- Clique no ícone Libraries no lado esquerdo do Arduino IDE.
- Digite "SCD4x" na caixa de pesquisa e encontre a biblioteca Sensirion I2C SCD4x da Sensirion.
- Clique no botão Install. Quando o IDE pedir para instalar a dependência Sensirion Core, clique em Install All.
- Search for Sensirion I2C SCD4x created by Sensirion and click the Install button.
- Copie o código acima e cole no Arduino IDE.
- Clique no botão Upload para fazer o upload do código para o Arduino UNO R4.
- Abra o Serial Monitor e espere cerca de 5 segundos pelo primeiro valor.
- Respire devagar na direção do sensor por alguns segundos e veja o número subir e depois cair de novo.
Uma nova linha aparece a cada cerca de 5 segundos, porque é essa a frequência com que o SCD40 faz uma nova medição.
※ Nota:
Se você só vê mensagens de erro, verifique primeiro os fios SDA e SCL. É fácil trocá-los por engano.
Lendo Temperatura e Umidade do SCD40
O SCD40 também tem seu próprio sensor de temperatura e umidade dentro dele. O chip o usa para corrigir o valor de CO2, e você também pode lê-lo. Na verdade, readMeasurement() já retorna os três valores em uma só chamada. O primeiro sketch simplesmente não os imprimiu. O código abaixo imprime CO2, temperatura e umidade em uma linha.
Passos Rápidos
- Mantenha a mesma ligação.
- Copie o código acima e cole no Arduino IDE.
- Clique no botão Upload para fazer o upload do código para o Arduino UNO R4.
- Abra o Serial Monitor.
A temperatura pode marcar um pouco mais que a da sala, porque o sensor e a placa esquentam um pouco enquanto trabalham.