Indoor Environment Monitoring

Indoor Environment Monitoring

Experimental introduction

In this experiment we will use three modules to collect data such as light, temperature, humidity and atmospheric pressure. At the same time, the data is sent and displayed on the LCD12854 through the serial port.

Experimental Materials

1X  Adeept UNO Board

1X  DHT-11 Module

1X  Photoresistor Module

1X  Barometer Module

1X  LCD12864 Module

1X  Breadboard

Some jumpers

Experimental connection diagram

Experiment code

/***********************************************************
File name:   AdeeptLCD12864.ino
Website: www.adeept.com
E-mail: support@adeept.com
Author: Tom
Date: 2019/03/20 
***********************************************************/
#include <Adeept_LCD12864RSPI.h>
#include <Adeept_DHT11.h>
#include <Adeept_BMP180.h>
#define AR_SIZE( a ) sizeof( a ) / sizeof( a[0] )
Adeept_DHT11 Adeept_dht11;
Adeept_BMP180 Adeept_bmp180(0x77);//I2C address of BMP180
#define DHT11PIN 2  //Set the digital 2 to the S pin

int photoresistorPin = 0;          // photoresistor  connected to analog pin 0
unsigned char show0[]=" photoresistor";         //Test the code
unsigned char show1[]=" analog:       ";     
unsigned char show2[]=" www.adeept.com";  
unsigned char show3[]="DHT11 sensor";      
unsigned char show4[]="Humi:       %";    
unsigned char show5[]="Temp:       %";
unsigned char show6[]="   Pressure  ";       
unsigned char show7[] = "Pr:          Pa ";
unsigned char show8[] = "Atm:       ";
unsigned char show9[] = "Alti:        M  ";
   

int btnpin1 = 12;           //Set the digital 12 to button module interface 
int btnpin2 = 13;           //Set the digital 13 to button module interface      

int pageNumber = 1;
void setup()
{
    pinMode(photoresistorPin, INPUT);//Set analog 0 port mode, the INPUT for the input
    Serial.begin(9600);   //opens serial port, sets data rate to 9600 bps
    Adeept_bmp180.begin();
    pinMode(btnpin1,INPUT); //Set digital 12 port mode, the INPUT for the input
    pinMode(btnpin2,INPUT); //Set digital 13 port mode, the INPUT for the input
    Adeept_12864.Initialise(); // The screen is initialized
    delay(100);
}
void loop()
{
    double dataphotoresistor = 0;
    char strphotoresistor[5];
    double temphumidity = 0;
    double tempTemperature = 0;
    char strhumidity[5];
    char strTemperature[5];
    char strPressure[7];
    char strAtm[3];
    char strAltitude[5];
   
    dataphotoresistor = analogRead(photoresistorPin);
    Serial.print("photoresistor: "); //send data to the serial monitor
    Serial.println(dataphotoresistor); //send data to the serial monitor

    Adeept_dht11.read(DHT11PIN);
    temphumidity = Adeept_dht11.humidity;
    Serial.print("humidity: "); //send data to the serial monitor
    Serial.print(temphumidity); //send data to the serial monitor
    Serial.println("%"); //send data to the serial monitor

    tempTemperature = Adeept_dht11.temperature;
    Serial.print("temperature: "); //send data to the serial monitor
    Serial.print(tempTemperature); //send data to the serial monitor
    Serial.println("C"); //send data to the serial monitor

    double dataTemperature = Adeept_bmp180.GetTemperature(); //MUST be called first
    float dataPressure = Adeept_bmp180.GetPressure();
    float dataAtm = dataPressure / 101325; // "standard atmosphere"
    float dataAltitude = Adeept_bmp180.calcAltitude(dataPressure); //Uncompensated caculation - in Meters

    Serial.print("Temperature: "); //send data to the serial monitor
    Serial.print(dataTemperature); //send data to the serial monitor
    Serial.println("C"); //send data to the serial monitor

    Serial.print("Pressure: "); //send data to the serial monitor
    Serial.print(dataPressure); //send data to the serial monitor
    Serial.println("Pa"); //send data to the serial monitor

    Serial.print("Atm: "); //send data to the serial monitor
    Serial.println(dataAtm); //send data to the serial monitor

    Serial.print("Altitude: "); //send data to the serial monitor
    Serial.print(dataAltitude); //send data to the serial monitor 
    Serial.println("M"); //send data to the serial monitor 

//photoresistor->LCD12864
    if(pageNumber==1){
      dtostrf(dataphotoresistor,4,0,strphotoresistor);//Converts a floating-point number to a string
      Adeept_12864.DisplayString(0,0,show0,AR_SIZE(show0));//Display: photoresistor
      delay(50);
      Adeept_12864.DisplayString(1,0,show1,AR_SIZE(show1));//Display: analog: 
      delay(50);
      Adeept_12864.DisplayString(1,4,(unsigned char *)strphotoresistor,4);//Display photoresistor data
      delay(50);
      Adeept_12864.DisplayString(3,0,show2,AR_SIZE(show2));//Display: www.adeept.com
    }

//humidity&temperature->LCD12864
    if(pageNumber==2){
      dtostrf(temphumidity,5,2,strTemperature);//Converts a floating-point number to a string
      dtostrf(tempTemperature,5,2, strhumidity );//Converts a floating-point number to a string
      Adeept_12864.DisplayString(0,1,show3,AR_SIZE(show3));//Display: DHT11 sensor
      delay(50);
      Adeept_12864.DisplayString(1,1,show4,AR_SIZE(show4));//Display: Humi:     %
      delay(50);
      Adeept_12864.DisplayString(1,4,(unsigned char *)strTemperature,5);//Display humidity data  
      delay(50);
      Adeept_12864.DisplayString(2,1,show5,AR_SIZE(show5));//Display: Temp:     C
      delay(50);
      Adeept_12864.DisplayString(2,4,(unsigned char *)strhumidity,6);//Display temperature data
      delay(50);
      Adeept_12864.DisplayString(3,0,show2,AR_SIZE(show2));//Display: www.adeept.com
    }

//Pressure->LCD12864
    if(pageNumber==3){
      dtostrf(dataPressure, 6, 2, strPressure); //Converts a floating-point number to a string
      dtostrf(dataAtm, 2, 2, strAtm); //Converts a floating-point number to a string
      dtostrf(dataAltitude, 4, 2, strAltitude); //Converts a floating-point number to a string
      Adeept_12864.DisplayString(0, 0, show6, AR_SIZE(show6)); //Display: Temp:      C
      Adeept_12864.DisplayString(1, 0, show7, AR_SIZE(show7)); //Display: Pr:        Pa
      delay(10);
      Adeept_12864.DisplayString(1, 2, (unsigned char *)strPressure, 8); //Display temperature data
      delay(10);
      Adeept_12864.DisplayString(2, 0, show8, AR_SIZE(show8)); //Display: Atm:         Pa
      delay(10);
      Adeept_12864.DisplayString(2, 2, (unsigned char *)strAtm, 4); //Display temperature data
      delay(10);
      Adeept_12864.DisplayString(3, 0, show9, AR_SIZE(show9)); //Display: Altitude:     M
      delay(10);
      Adeept_12864.DisplayString(3, 3, (unsigned char *)strAltitude, 6); //Display temperature data  
    }
  if(digitalRead(btnpin1)==LOW)              //Detection button interface to low
  {   
      delay(10);                              //Delay 10ms for the elimination of key leading-edge jitter
      if(digitalRead(btnpin1)==LOW)           //Confirm button is pressed
      {        
        pageNumber++;
        if(pageNumber>=3){pageNumber=3;}
        Adeept_12864.CLEAR();//Clear screen
        delay(100);
      }
   }
  if(digitalRead(btnpin2)==LOW)              //Detection button interface to low
  {   
      delay(10);                              //Delay 10ms for the elimination of key leading-edge jitter
      if(digitalRead(btnpin2)==LOW)           //Confirm button is pressed
      {     
        pageNumber--;
        if(pageNumber<=1){pageNumber=1;}
        Adeept_12864.CLEAR();//Clear screen
        delay(100);
      }
   }  
    delay(100);//0.1S

}

Experimental phenomena

Press the two buttons to control the LCD12864 to display page turning, switch display information such as illumination, temperature and humidity.

Leave a Reply