Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2023:apredescu:co2_sensor [2023/05/06 18:06]
cristian.ursea [Hardware Design]
pm:prj2023:apredescu:co2_sensor [2023/05/18 14:59] (current)
cristian.ursea [Rezultate Obţinute]
Line 2: Line 2:
 ===== Introducere ===== ===== Introducere =====
  
 +<note tip>
 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. 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.
 +</​note>​
 +
 +===== Schema bloc =====
 \\ \\
 \\ \\
Line 38: Line 42:
  
 ===== Software Design ===== ===== Software Design =====
- 
  
 <note tip> <note tip>
-Descrierea codului aplicaţiei ​(firmware): +Codul incarcat pe placuta Arduino este: 
-  ​* mediu de dezvoltare ​(if any) (e.gAVR StudioCodeVisionAVR+<​code>​ 
-  ​* librării şi surse 3rd-party ​(e.gProcyon AVRlib+#include <​LiquidCrystal_I2C.h>​ 
-  ​* algoritmi şstructuri pe care plănuiţsă le implementaţ+LiquidCrystal_I2C lcd(0x27,16,2)
-  ​(etapa 3surse şi funcţii implementate+ 
 +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(buzzerOUTPUT); 
 +  ​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();​ 
 +
 + 
 +</​code>​
 </​note>​ </​note>​
  
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
 +{{:​pm:​prj2023:​apredescu:​functionare_senzorco2.gif?​200|}}
 +
 +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).
 +//
 +//
  
 <note tip> <note tip>
-Care au fost rezultatele ​obţinute în urma realizării proiectului ​vostru.+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.
 </​note>​ </​note>​
  
 ===== Concluzii ===== ===== Concluzii =====
 +<note tip>
 +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ă.
 +</​note>​
  
 ===== Download ===== ===== Download =====
  
 <note warning> <note warning>
-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ă ;-). +Arhiva ​proiectului:​{{:pm:prj2023:apredescu:co2_sensor_urseacristian_333ac_is.rar|}}
- +
-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**.+
 </​note>​ </​note>​
  
Line 67: Line 180:
  
 <note tip> <note tip>
-Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului.+  * 06.05.2023: Completare documentație 
 +  * 27.04.2023: Stabilire tema proiect
 </​note>​ </​note>​
  
Line 73: Line 187:
  
 <​note>​ <​note>​
-Listă cu documente, datasheet-uri,​ resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**.+Proiectul este inspirat dupa acest model: 
 +\\  
 +https://www.youtube.com/​watch?​v=fBUVXMyoxkM&​ab_channel=JoshArduino
 </​note>​ </​note>​
  
 <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​ <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​
  
pm/prj2023/apredescu/co2_sensor.1683385585.txt.gz · Last modified: 2023/05/06 18:06 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