Kenan Aricabrandon son
Published © GPL3+

LoT Group 309 Project

A Data-collecting mote design that was used for the Lane Of Things Group 309.

IntermediateShowcase (no instructions)7 hours348
LoT Group 309 Project

Things used in this project

Hardware components

Altitude/Pressure Sensor Breakout MPL3115A2
SparkFun Altitude/Pressure Sensor Breakout MPL3115A2
×2
SparkFun Carbon Monoxide Sensor - MQ-7
×2
DHT22 Temperature Sensor
DHT22 Temperature Sensor
×2
LED (generic)
LED (generic)
×2
Photon
Particle Photon
×2
Breadboard (generic)
Breadboard (generic)
×2

Story

Read more

Custom parts and enclosures

Case

We did a simple design and made a case out of acrylic with small holes so that the sensor could sense the environment around with out it tracking the wrong data

Schematics

Fritzing Diagram

Code

309_main.ino

Arduino
Paste this into any .ino file and flash.
// This #include statement was automatically added by the Particle IDE.
#include <Adafruit_DHT.h>

#if !defined(PARTICLE)
 #include <Wire.h>
#endif
#include <Adafruit_BMP085.h>
// This #include statement was automatically added by the Particle IDE.

#include <Adafruit_DHT.h>

/*************************************************** 
  This is an example for the BMP085 Barometric Pressure & Temp Sensor

  Designed specifically to work with the Adafruit BMP085 Breakout 
  ----> https://www.adafruit.com/products/391

  These displays use I2C to communicate, 2 pins are required to  
  interface
  Adafruit invests time and resources providing this open source code, 
  please support Adafruit and open-source hardware by purchasing 
  products from Adafruit!

  Written by Limor Fried/Ladyada for Adafruit Industries.  
  BSD license, all text above must be included in any redistribution
 ****************************************************/

// Connect VCC of the BMP085 sensor to 3.3V (NOT 5.0V!)
// Connect GND to Ground
// Connect SCL to i2c clock - on '168/'328 Arduino Uno/Duemilanove/etc thats Analog 5, Particle on D1
// Connect SDA to i2c data - on '168/'328 Arduino Uno/Duemilanove/etc thats Analog 4, Particle on D0
// EOC is not used, it signifies an end of conversion
// XCLR is a reset pin, also not used here

const int mq7AOUTpin=A0;

int gasVal;

#define DHTPIN 4            // what pin we're connected to
#define DHTTYPE DHT22       // DHT 22 (AM2302)
DHT dht(DHTPIN, DHTTYPE);
double hum;                 // current hum
double temp;    
int bmpTemp;
int bmpPressure;
int bmpAltitude;
int SeaPressure;

Adafruit_BMP085 bmp;
  
void setup() {
  Serial.begin(9600);
  if (!bmp.begin()) {
	Serial.println("Could not find a valid BMP085 sensor, check wiring!");
	while (1) {}
  }
  pinMode(mq7AOUTpin, INPUT);
pinMode(DHTPIN, INPUT);
 Particle.variable("hum", hum);
    Particle.variable("temp", temp);
    Particle.variable("airQ", gasVal);
    Particle.variable("bmpTemp", bmpTemp);
        Particle.variable("bmpPressure", bmpPressure);
    Particle.variable("bmpAltitude", bmpAltitude);
    Particle.variable("SeaPressure", SeaPressure);

}
  
void loop() {
    Serial.print("Temperature = ");
    Serial.print(bmp.readTemperature());
    Serial.println(" *C");
    
    Serial.print("Pressure = ");
    Serial.print(bmp.readPressure());
    Serial.println(" Pa");
    
    // Calculate altitude assuming 'standard' barometric
    // pressure of 1013.25 millibar = 101325 Pascal
    Serial.print("Altitude = ");
    Serial.print(bmp.readAltitude());
    Serial.println(" meters");

    Serial.print("Pressure at sealevel (calculated) = ");
    Serial.print(bmp.readSealevelPressure());
    Serial.println(" Pa");

  // you can get a more precise measurement of altitude
  // if you know the current sea level pressure which will
  // vary with weather and such. If it is 1015 millibars
  // that is equal to 101500 Pascals.
    Serial.print("Real altitude = ");
    Serial.print(bmp.readAltitude(101500));
    Serial.println(" meters");
    
    gasVal= analogRead(mq7AOUTpin);//reads the analaog value from the CO sensor's AOUT pin


Serial.print("CO value: ");
Serial.println(gasVal);//prints the CO value
/////////////////////////////////////////////
double checkHum = dht.getHumidity();
    double checkTemp = dht.getTempFarenheit();
    
    if (checkHum > 0 && checkHum < 100)
        hum = checkHum;
        
    if (checkTemp > 32 && checkTemp < 100)
        temp = checkTemp;
        
      bmpTemp = bmp.readTemperature();
   bmpPressure = bmp.readPressure();
    bmpAltitude = bmp.readAltitude();
    SeaPressure = bmp.readSealevelPressure();    
    
    Serial.println();
    delay(500);
}

Credits

Kenan Arica

Kenan Arica

-1 projects • 0 followers
brandon son

brandon son

-1 projects • 0 followers

Comments

Add projectSign up / Login