CO2 Sensor

Introducere

Acest proiect utilizează un senzor de CO2 pentru a măsura nivelul de dioxid de carbon dintr-un mediu și afișează aceste valori pe un ecran LCD de 2 linii și 16 caractere. De asemenea, proiectul include și un semnal acustic și o lumină LED care se declanșează când nivelul de CO2 depășește un anumit prag. De asemenea, sunt create două caractere personalizate, o față zâmbitoare și o față tristă, pentru a indica starea mediului. Ecranul LCD funcționează cu ajutorul protocolului I2C.

Schema bloc



Descriere generală

Proiectul utilizează protocolul I2C și o bibliotecă LiquidCrystal_I2C pentru a controla ecranul LCD. În plus, este utilizat un buzzer și un led pentru a indica nivelul de CO2 detectat. Senzorul de CO2 este conectat la pinul analog A0 al plăcii Arduino, iar valoarea citită este mapată pentru a reflecta procentul de CO2 din aer.

În ceea ce privește utilitatea proiectului, acesta poate fi folosit în diferite medii, cum ar fi locuințe, birouri, școli sau alte spații închise unde calitatea aerului poate fi o problemă. Nivelurile ridicate de CO2 pot indica faptul că spațiul nu este suficient de ventilat, ceea ce poate avea un impact negativ asupra sănătății și confortului. Prin monitorizarea nivelului de CO2 și indicarea acestuia utilizatorului, proiectul poate ajuta la îmbunătățirea calității aerului și la crearea unui mediu mai sănătos.

În plus, acest proiect poate fi un instrument educativ pentru cei interesați de programare și de construirea de dispozitive electronice. Este o modalitate bună de a învăța cum să utilizezi senzori, biblioteci și ecrane LCD, precum și cum să interacționezi cu acestea folosind un microcontroller Arduino. În general, proiectul este util pentru cei care doresc să-și îmbunătățească calitatea aerului dintr-o cameră sau să învețe mai multe despre programare și electronice.

Hardware Design

Componente utilizate:

* Arduino UNO r3
* 16×2 LCD Display with i2c Module
* MQ2 CO2 Sensor
* Buzzer
* Led
* Breadboard
* Fire jumper M to M
* Fire jumper M to F


Software Design

Codul incarcat pe placuta Arduino este:

#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);

const int buzzer = 13;
const int CO2A0 = A0;
const int led = 12;
int CO2value = 0;

// Definim matricile pentru caractere personalizate
byte smiley[8] = {
  0b00000,
  0b01010,
  0b01010,
  0b00000,
  0b00000,
  0b10001,
  0b01110,
  0b00000
};

byte sad[8] = {
  0b00000,
  0b01010,
  0b01010,
  0b00000,
  0b00000,
  0b01110,
  0b10001,
  0b00000
};

void setup() {
  lcd.init(); // initiate the lcd
  lcd.backlight();
  Serial.begin(9600);
  pinMode(buzzer, OUTPUT);
  pinMode(led, OUTPUT);
  
  // Cream caracterele personalizate
  lcd.createChar(1, smiley);
  lcd.createChar(2, sad);
  
  lcd.setCursor(0,0);
  lcd.print("Initializing... "); // initializare cu mesajul "Initializing... "
  lcd.setCursor(0,1);
  lcd.print("                "); // curatare rand 2

  for(int i=1; i<=100; i++){ // afișează procentajul de la 1 la 100
    lcd.setCursor(12, 1);
    lcd.print(i);
    lcd.print("% ");
    delay(150);
  }

  delay(2000);
}

void loop() {
  int analogSensor = analogRead(CO2A0);
  CO2value = map(analogSensor, 0, 1023, 0, 100); //CO2 module sensitivity

  lcd.setCursor(0,0);
  lcd.print("CO2 Level:");
  lcd.setCursor(11,0);
  lcd.print(CO2value);
  lcd.print("% ");

  // Checks if it has reached the threshold value
  if (CO2value >= 20) { //CO2 percentage alert
    lcd.setCursor(0,1);
    lcd.print("DANGER!");
    tone(buzzer, 2000, 10000);
    digitalWrite(led, HIGH);
    lcd.print(" "); // adaugam un spatiu liber
    lcd.write(2); // afisam fata trista
  }
  else if (CO2value >= 15 && CO2value < 20 ) {
    lcd.setCursor(0,1);
    lcd.print("BAD!");
    noTone(buzzer);
    digitalWrite(led, LOW);
    lcd.print(" "); // adaugam un spatiu liber
    lcd.write(2); // afisam fata trista
  }
  else {
    lcd.setCursor(0,1);
    lcd.print("NORMAL");
    noTone(buzzer);
    digitalWrite(led, LOW);
    lcd.print(" "); // adaugam un spatiu liber
    lcd.write(1); // afisam fata zambitoare
  }
  delay(500);
  lcd.clear();
}

Rezultate Obţinute

Senzorul afiseaza pe LSD procentajul de dioxid de carbon din incapere. Cand acest procent este mai mic de 15% pe ecran se va afisa “Bun”. Cand procentajul este mai mare ca 20% buzzerul va incepe sa functioneze, ledul se va aprinde iar pe ecran va fi afisat mesajul “Rau”. Cand procentajul este cuprins intre 15% si 20%, pe ecran este afisat messajul “Danger” pana cand procentajul va scadea sub 20%. (Becul si buzzerul vor functiona fara oprire pana cand procentajul va scadea). Pentru a declansa etapa de “Danger”, spre senzor am suflat fum (CO2).

Rezultatele obținute în urma realizării proiectului au fost satisfăcătoare. Dispozitivul a fost capabil să măsoare nivelul de CO2 cu acuratețe și să afișeze aceste valori pe un ecran LCD. Acesta a putut, de asemenea, să alerteze utilizatorul atunci când nivelul de CO2 a depășit anumite valori. Proiectul a fost considerat un succes de către mine, iar acesta a oferit o experiență valoroasă în dezvoltarea și implementarea unei aplicații practice cu senzori și microcontrolere.

Concluzii

Concluzia acestui proiect:
Este posibil să se construiască un dispozitiv simplu și ieftin pentru a măsura nivelul de CO2 dintr-o cameră și pentru a indica utilizatorului nivelul de CO2, care poate fi un indicator al poluării sau al ventilației insuficiente. Utilizarea senzorului CO2 și a ecranului LCD în proiect demonstrează că tehnologia poate fi folosită pentru a monitoriza și îmbunătăți calitatea aerului dintr-o cameră. Acest proiect poate fi o sursă de inspirație pentru proiecte similare și poate fi util pentru cei care doresc să îmbunătățească calitatea aerului dintr-o cameră.

Download

Jurnal

  • 06.05.2023: Completare documentație
  • 27.04.2023: Stabilire tema proiect

Bibliografie/Resurse

pm/prj2023/apredescu/co2_sensor.txt · Last modified: 2023/05/18 14:59 by cristian.ursea
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0