AQE Sensor Interface Shield vicatcu

aqe-sensor-interface-shield / libraries / EggBus / examples / PollEggBus_EPA / PollEggBus_EPA.ino

2.8 KB · raw

#include <stdint.h>
#include <DHT.h>
#include "Wire.h"
#include "EggBus.h"

EggBus eggBus;

#define DHTPIN 17 //analog pin 3
#define DHTTYPE DHT22  
DHT dht(DHTPIN, DHTTYPE);

void setup(){
  Serial.begin(9600);
  Serial.println(F("Air Quality Egg - EPA Serial Build v1.0"));
  Serial.println(F("======================================================================\r\n"));
  Serial.println(F("Timestamp, Sensor Type, Sensor Value, Sensor Units, Sensor Resistance"));
  Serial.println(F("----------------------------------------------------------------------"));  
}

void loop(){
  uint8_t   egg_bus_address;
  float i_scaler = 0.0;
  uint32_t r0 = 0;
  uint32_t measured_value = 0;
  
  eggBus.init();
    
  while((egg_bus_address = eggBus.next())){
    uint8_t numSensors = eggBus.getNumSensors();
    for(uint8_t ii = 0; ii < numSensors; ii++){
      Serial.print(millis(), DEC);
      Serial.print(F(", "));      
      
      Serial.print(eggBus.getSensorType(ii));
      Serial.print(F(", "));
      
      i_scaler = eggBus.getIndependentScaler(ii);      
      measured_value = eggBus.getSensorIndependentVariableMeasure(ii);
      r0 = eggBus.getSensorR0(ii);
      
      Serial.print(eggBus.getSensorValue(ii), 8);          
      Serial.print(F(", "));      

      Serial.print(eggBus.getSensorUnits(ii));            
      Serial.print(F(", "));      
      
      if(measured_value == 0xffffffff){
        Serial.print(F("OPEN CIRCUIT"));
      }
      else{
        Serial.print(measured_value * i_scaler * r0, 8);
      }      
      
      Serial.println();
    }
  }

  Serial.print(millis(), DEC);
  Serial.print(F(", "));      
  
  Serial.print("Humidity");
  Serial.print(F(", "));
  float currHumidity = getHumidity();
  Serial.print(currHumidity, 8);
  Serial.print(F(", "));      

  Serial.println(F("%, n/a"));
  delay(2500);



  Serial.print(millis(), DEC);
  Serial.print(F(", "));      
  
  Serial.print("Temperature");
  Serial.print(F(", "));
  float currentTemperature = getTemperature();
  Serial.print(currentTemperature, 8);
  Serial.print(F(", "));      

  Serial.println(F("degrees C, n/a"));
  delay(2500);

  Serial.println();
}

void printAddress(uint8_t * address){
  for(uint8_t jj = 0; jj < 6; jj++){
    if(address[jj] < 16) Serial.print("0");
    Serial.print(address[jj], HEX);
    if(jj != 5 ) Serial.print(":");
  }
  Serial.println();
}

//--------- DHT22 humidity ---------
float getHumidity(){
  float h = dht.readHumidity();
  if (isnan(h)){
    //failed to get reading from DHT    
    delay(2500);
    h = dht.readHumidity();
    if(isnan(h)){
      return -1; 
    }
  } 
  else return h;
}

//--------- DHT22 temperature ---------
float getTemperature(){
  float t = dht.readTemperature();
  if (isnan(t)){
    //failed to get reading from DHT
    delay(2500);
    t = dht.readTemperature();
    if(isnan(t)){
      return -1; 
    }
  } 
  return t;
}