Scd30
Sensor de Dióxido de Carbono (CO2), temperatura e umidade SCD30
O sensor SCD30 permite a medição precisa do dióxido de carbono. Juntamente com a tecnologia de medição NDIR para detecção de CO2, o sensor SCD30 mede umidade e temperatura também no mesmo sensor.
O dióxido de carbono é um indicador chave da qualidade do ar interno. Graças a novos padrões de energia e melhor isolamento, as casas tornaram-se cada vez mais eficientes em termos de energia, mas a qualidade do ar no interior dos ambientes pode se deteriorar rapidamente. A ventilação ativa é necessária para manter um ambiente interno confortável e saudável e para melhorar o bem-estar e a produtividade dos habitantes. O SCD30 oferece monitoramento preciso e estável de CO2, temperatura e umidade. Isso permite que o desenvolvimento de soluções que aumentam a eficiência energética e simultaneamente apoiam o bem-estar.
- Para saber mais sobre o sensor SCD30, consulte sua documentação no link: SCD30 - Sensor Module for HVAC and Indoor Air Quality Applications.
- Acesse o datasheet no link: Datasheet Sensirion SCD30 Sensor Module.
- Para saber mais sobre a interface de comunicação do sensor acesse: Interface Description Sensirion SCD30 Sensor Module.
- Para usar o sensor com a placa NodeMCU DEVKIT V1.0 siga os passos descritos na próxima seção.
NodeMCU DEVKIT V1.0 e sensor SCD30
Comunicação I2C usando os pinos padrão D1(GPIO 5) e D2(GPIO 4)
Usando os pinos padrões do NodeMCU para a comunicação I2C faça as seguintes ligações entre o sensor SCD30 e a placa NodeMCU
[[Arquivo: | 800 px]]
Abaixo a relação entre os pinos do sensor e da placa
SCD30 / NODEMCU 1.0 ESP8266-12E SDA / GPIO 4 - D2 SCL / GPIO 5 - D1 VCC / 3.3V GND / GND
Observe no código como programar no Arduino IDE para extrair os dados do sensor. Adaptado de SCD30 BasicReadings
#include <Wire.h>
#include "SparkFun_SCD30_Arduino_Library.h"
SCD30 airSensor;
bool flag=true;
byte count = 0;
void setup(){
Serial.begin(115200);
Wire.begin();
for (byte i = 8; i < 120; i++){
Wire.beginTransmission(i);
if (Wire.endTransmission() == 0){
Serial.print("Found I2C Device: ");
Serial.print(" (0x");
Serial.print(i, HEX);
Serial.println(")");
count++;
delay(1);
}
}
Serial.print("\r\n");
Serial.println("Finish I2C scanner");
Serial.print("Found ");
Serial.print(count, HEX);
Serial.println(" Device(s).");
if (airSensor.begin() == false){
Serial.println("Air sensor not detected. Please check wiring. Freezing...");
flag=false;
}
}
void loop(){
if(flag){
if (airSensor.dataAvailable()){
Serial.print("co2(ppm):");
Serial.print(airSensor.getCO2());
Serial.print(" temp(C):");
Serial.print(airSensor.getTemperature(), 1);
Serial.print(" humidity(%):");
Serial.print(airSensor.getHumidity(), 1);
Serial.println();
}
else
Serial.println("Waiting for new data");
}
delay(4000);
}
Comunicação SPI usando outros pinos
Usando outros pinos para a comunicação I2C você deve passar os GPIOs em Wire.begin(SDA, SCL) e fazer as seguintes ligações entre o sensor SCD30 e a placa NodeMCU. No exemplo usamos os GPIOs 14 e 12.
[[Arquivo: | 800 px]]
Abaixo a relação entre os pinos do sensor e da placa
SCD30 / NODEMCU 1.0 ESP8266-12E SDA / GPIO 14 - D5 SCL / GPIO 12 - D6 VCC / 3.3V GND / GND
Observe no código como declarar os GPIOs.
Wire.begin(14,12);
ou use
Wire.begin(D5, D6);