friends,please check the below program .i am going to make a wireless monitoring system using softwareserial library and i am using a serial LCD disply.i made this code by referring various sites with my limited arduino coding skill.Thanks in advance
#include <SoftwareSerial.h>
#include<math.h>
//GAS SENSOR DETAILS
int GasSensorPin=2;
float Rl=20.0;
float approx=2373.315;
float Rs,Vout,count,ratio,GasConc;
int ppm;
//LIGHT SENSOR DETAILS
int LightSensorPin=3;
int LightADCreading;
double LuxCalc;
double Vldr,b,g,Rldr,LDRconst;
int lux;
//HUMIDITY SENSOR DETAILS
int HumiditySensorPin=4;
int HumidityADCReading;
int RelativeHumidity;
//TEMPERATURE SENSOR DETAILS
int TempSensorPin=5;
int TempADCReading;
float TemperatureCelsius;
//DEW POINT VALUES INITIALIZATION
int DewPoint;
double k,z;
//PIR SENSOR DETAILS
int HumanDetectPin=1;
int PIRADCReading;
double PIROUT;
int LED = 13; //LED on Arduino board
byte rx_data = 0; //variable to store receive data
SoftwareSerial mySerial(2, 3); // RX = pin D2, TX = pin D3
//MICROCONTROLLER INITIALIZATION
void setup()
{
pinMode(LED, OUTPUT);
mySerial.begin(9600);
}
//INTRODUCTION AND GAS SENSOR PRE HEATING
void loop()
{
mySerial.write(12);
delay(10);
mySerial.print("MuMo");
mySerial.write(148);
mySerial.print("Main Project");
delay(3000);
mySerial.write(12);
delay(10);
mySerial.print("LMCST");
mySerial.write(148);
mySerial.print("M.R.R.S");
delay(3000);
mySerial.write(12);
delay(10);
mySerial.print("Gas Sensor");
mySerial.write(148);
mySerial.print("Preheating......");
delay(3000);
//MAIN PROGRAM
Program:
TempADCReading=analogRead(TempSensorPin);
TemperatureCelsius=(500.0*TempADCReading)/1000.0;
PIRADCReading=analogRead(HumanDetectPin);
PIROUT=(PIRADCReading);
HumidityADCReading=analogRead(HumiditySensorPin);
RelativeHumidity=(HumidityADCReading/6.7);
LightADCreading=analogRead(LightSensorPin);
Vldr=(LightADCreading4.88)/1000.0;
Rldr=(((5.04.7)/Vldr)-4.7)*1000.0;
b=log(1000000.0)-log(Rldr);
if(Rldr<=100.0)
{
LDRconst=1.0;
}
else if(Rldr>100.0&&Rldr<=400.0)
{
LDRconst=1.06;
}
else if(Rldr>400.0&&Rldr<9000.0)
{
LDRconst=1.1;
}
else if(Rldr>=9000)
{
LDRconst=1.6;
}
g=b/LDRconst;
LuxCalc=exp(g);
if(Rldr>=1000000.0)
{
lux=0;
}
else
{
lux=LuxCalc;
}
z=(RelativeHumidity/100.0);
k=pow(z,0.125);
DewPoint=(k*(112.0+(0.9TemperatureCelsius))+(0.1TemperatureCelsius)-112.0);
count=analogRead(GasSensorPin);
Vout=(count4.88)/1000.0;
Rs=((5.0Rl)-(RlVout))/Vout;
ratio=Rs/approx;
GasConc=146.15(2.868-ratio)+10;
ppm=GasConc;
if(RelativeHumidity<=0.0||TemperatureCelsius<=0.0||lux<0||PIROUT<=0.0) //SYSTEM FAILURE CHECK
{
mySerial.write(12);
delay(10);
mySerial.print("System Error");
mySerial.write(148);
if(RelativeHumidity<=0) //HUMIDITY SENSOR FAILURE CHECK
{
mySerial.print("RH Sensor Fault");
}
else if(TemperatureCelsius<=0) //TEMPERATURE SENSOR FAILURE CHECK
{
mySerial.print("T Sensor Fault");
}
else if(lux<1) //LIGHT SENSOR FAILURE CHECK
{
mySerial.print("Lux Fault");
}
else if(PIROUT<=0.0) //PIR SENSOR FAILURE CHECK
{
mySerial.print("PIR Sensor Fault");
}
}
else
{
//TEMPERATURE DISPLAY
mySerial.write(12);
delay(10);
mySerial.print("Temp=");
mySerial.print(TemperatureCelsius);
mySerial.print("C");
//HUMAN DETECTION CHECK
if((PIROUT>=4))
{
mySerial.write(148);
mySerial.print("Human Not Found");
}
else
{
mySerial.print("Human Found");
delay(3000);
}
//RELATIVE HUMIDITY CHECK
mySerial.write(148);
mySerial.print("RH=");
mySerial.print(RelativeHumidity);
mySerial.print("%");
delay(3000);
//AMBIENT LIGHT CHECK
mySerial.write(12);
delay(10);
mySerial.print("Light=");
mySerial.print(lux);
mySerial.print(" Lux");
//DEW POINT CHECK
mySerial.write(148);
mySerial.print("Dew Pt=");
mySerial.print(DewPoint);
mySerial.print(" C");
delay(3000);
//GAS PRESENCE CHECK
mySerial.write(12);
delay(10);
if(ratio>=2.868)
{
mySerial.print("Gas=");
mySerial.print("0");
mySerial.print(" ppm");
}
else
{
mySerial.print("Gas=");
mySerial.print(ppm);
mySerial.print(" ppm");
}
}
delay(3000);
if(mySerial.available()) // check if UART receive data
{
rx_data = mySerial.read(); //store data received
if(rx_data == 'a') //if the character received is 'a'
digitalWrite(LED, HIGH);
else if ( rx_data == 'A') //if the character received is 'A'
digitalWrite(LED, LOW);
}
goto Program;
} // END PROGRAM
MuMo_SySTEM_Code_softserial.ino (4.31 KB)