This is an old revision of the document!


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

Care au fost rezultatele obţinute în urma realizării proiectului vostru.

Concluzii

Download

O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului: surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-).

Fişierele se încarcă pe wiki folosind facilitatea Add Images or other files. Namespace-ul în care se încarcă fişierele este de tipul :pm:prj20??:c? sau :pm:prj20??:c?:nume_student (dacă este cazul). Exemplu: Dumitru Alin, 331CC → :pm:prj2009:cc:dumitru_alin.

Jurnal

Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului.

Bibliografie/Resurse

Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe Resurse Software şi Resurse Hardware.

Export to PDF

pm/prj2023/apredescu/co2_sensor.1683385872.txt.gz · Last modified: 2023/05/06 18:11 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