-
Notifications
You must be signed in to change notification settings - Fork 0
/
irsensor_oled_mq135.ino
95 lines (80 loc) · 2.24 KB
/
irsensor_oled_mq135.ino
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <MQUnifiedsensor.h>
//Sensor IR
int detectPin = 4;
bool detect = 0;
//option display
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
#define OLED_RESET -1 // Reset pin # (or -1 if sharing reset pin)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
//intialize
#define Board ("Arduino NANO")
#define Pin135 (32) //Analog input 2 of your arduino
//setup of sensor
#define RatioMQ135CleanAir (3.6) //RS / R0 = 10 ppm
#define ADC_Bit_Resolution (12) // 10 bit ADC
#define Voltage_Resolution (5) // Volt resolution to calc the voltage
#define Type ("ESP32") //Board used
//Initialize MQ
MQUnifiedsensor MQ135(Board, Voltage_Resolution, ADC_Bit_Resolution, Pin135, Type);
//Variable
float co2;
void setup() {
// initialize serial communications at 9600 bps:
Serial.begin(115200);
Wire.begin();
//Hidupkan Sensor MQ
MQ135.init();
MQ135.setRegressionMethod(1); //_PPM = a*ratio^b
MQ135.setR0(9.03);
//Display
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
for (;;)
; // Don't proceed, loop forever
}
display.display();
delay(2);
display.clearDisplay();
display.setTextColor(WHITE);
display.setTextSize(2);
display.setCursor(0, 5);
display.print(" AQ Meter ");
display.display();
delay(3000);
}
void loop() {
//MQ Sensor
MQ135.update();
MQ135.setA(110.47);
MQ135.setB(-2.862); //CO2
float co2 = MQ135.readSensor();
//IR sensor
detect = digitalRead(detectPin);
if (detect != 1) {
Serial.print("Movement detected");
Serial.println(co2);
display.clearDisplay();
display.setTextSize(1);
display.setCursor(0, 0);
display.println("Detected");
display.setTextSize(2);
display.setCursor(0, 20);
display.println(co2);
} else {
Serial.print("No movement");
Serial.println(co2);
display.clearDisplay();
display.setTextSize(1);
display.setCursor(0, 0);
display.println("NOT Detected");
display.setTextSize(2);
display.setCursor(0, 20);
display.println(co2);
}
display.display();
delay(500);
}