Scd30

De MediaWiki do Campus São José
Revisão de 14h39min de 5 de junho de 2020 por Fernando.m01 (discussão | contribs)
Ir para navegação Ir para pesquisar

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.

800 px

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 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);