Info Box

by Cheeseyplatypus in Circuits > Sensors

382 Views, 1 Favorites, 0 Comments

Info Box

DAE3B938-8C6B-45D2-AA7A-9A14C35C6E91.jpeg
This box is capable of displaying: temperature, relative humidity, distance (in centimeters and inches), and gas values such as (smoke, butane, and co). Using only an arduino uno.
Any questions or comments will be responded to.

Supplies

Parts List

(1) arduino uno

(2)breadboard

(3)jumper wires

(4) 220 resistors 2x

(5) leds 2x (green and red)

(6)lcd screen 16x2 with I2C backpack

(7)dht11 humidity sensor

(8)MQ-2 Gas sensor

(9)Ultrasonic distance sensor

The Circuit

E50A2CF2-96E6-4449-A055-1615F214C416.png
Second step is putting together the circuit. See diagram.

Setting Up the Code

4F7A6693-1864-4664-900A-E089B1DF6D69.png
For the last step you need to copy and paste the code into the arduino IDE
and run the code.

Note: you may need to install additional libraries.

#include
#include
#include
#include

LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);

int pinDHT11 = 6;
SimpleDHT11 dht11;
const int buttonPin = 3;
const int trigPin = 9;
const int echoPin = 10;
long duration;
int distanceCm, distanceInch;
int Analog_Input = A0;
int lpg, co, smoke;
MQ2 mq2(Analog_Input);


int redLed = 4;
int greenLed = 3;


void setup() {

lcd.begin(16,2);
lcd.clear();
lcd.print("Starting Up In:3");
delay(1000);
lcd.clear();
lcd.print("Starting Up In:2");
delay(1000);
lcd.clear();
lcd.print("Starting Up In:1");
delay(1000);
lcd.clear();


pinMode(redLed, OUTPUT);
pinMode(greenLed, OUTPUT);

lcd.backlight();
mq2.begin();

pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}

void loop() {

// Create variables for DHT sensor output.
byte temperature = 0;
byte humidity = 0;

// Read sensor data and store results
// in temperature/humidity variables
dht11.read(pinDHT11, &temperature, &humidity, NULL);

// Print first line to LCD
lcd.setCursor(0,0);
lcd.print("Temp: ");
lcd.print(round(temperature));
lcd.print("C / ");
lcd.print(round(temperature * 1.8 + 32));
lcd.print("F "); // two extra spaces in case temps drop to single digits

// Print second line to LCD
lcd.setCursor(0,1);
lcd.print("Humidity: ");
lcd.print(humidity);
lcd.print("% "); // extra space in case humidity drops to single digit

// Delay 1 second because DHT11 sampling rate is 1HZ.
delay(2000);
lcd.clear();



digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);

duration = pulseIn(echoPin, HIGH);
distanceCm= duration*0.034/2;
distanceInch = duration*0.0133/2;

lcd.setCursor(0,0); // Sets the location at which subsequent text written to the LCD will be displayed
lcd.print("Distance: "); // Prints string "Distance" on the LCD
lcd.print(distanceCm); // Prints the distance value from the sensor
lcd.print("cm");
delay(10);
lcd.setCursor(0,1);
lcd.print("Distance: ");
lcd.print(distanceInch);
lcd.print("inch");
delay(2000);
lcd.clear();



float* values= mq2.read(false); //set it false if you don't want to print the values in the Serial
//lpg = values[0];
lpg = mq2.readLPG();
//co = values[1];
co = mq2.readCO();
//smoke = values[2];
smoke = mq2.readSmoke();
lcd.setCursor(0,0);
lcd.print("LPG:");
lcd.print(lpg);
lcd.print(" CO:");
lcd.print(co);
lcd.setCursor(0,1);
lcd.print("SMOKE:");
lcd.print(smoke);
lcd.print(" PPM");
delay(2000);
lcd.clear();

if (co > 69)
{
digitalWrite(redLed, HIGH);
digitalWrite(greenLed, LOW);

} else {
digitalWrite(redLed, LOW);
digitalWrite(greenLed, HIGH);

}

}