This shows you the differences between two versions of the page.
pm:prj2024:avaduva:ioana.ciobotea [2024/05/27 01:44] ioana.ciobotea [Software Design] |
pm:prj2024:avaduva:ioana.ciobotea [2024/05/27 11:08] (current) ioana.ciobotea [Descriere generală] |
||
---|---|---|---|
Line 14: | Line 14: | ||
<note tip> | <note tip> | ||
- | Sistem de Detectare a CO2 cu Semnalizare LED și Oprire prin Sunet | + | Sistem de Detectare a CO2 cu Semnalizare LED și Oprire prin Sunet. |
Acest proiect își propune să detecteze nivelul de dioxid de carbon (CO2) din aer și să semnalizeze nivelurile ridicate prin aprinderea unui LED roșu. După semnalizare, LED-ul poate fi oprit printr-o bătaie din palme, utilizând un senzor de sunet. | Acest proiect își propune să detecteze nivelul de dioxid de carbon (CO2) din aer și să semnalizeze nivelurile ridicate prin aprinderea unui LED roșu. După semnalizare, LED-ul poate fi oprit printr-o bătaie din palme, utilizând un senzor de sunet. | ||
Line 30: | Line 31: | ||
- Oprirea LED-ului prin Sunet: Detectarea sunetelor puternice (de ex., o bătaie din palme) cu ajutorul senzorului KY-037 și oprirea LED-ului. | - Oprirea LED-ului prin Sunet: Detectarea sunetelor puternice (de ex., o bătaie din palme) cu ajutorul senzorului KY-037 și oprirea LED-ului. | ||
- Afișare pe LCD: Afișarea nivelului de CO2 și a mesajelor de avertizare pe ecranul LCD. | - Afișare pe LCD: Afișarea nivelului de CO2 și a mesajelor de avertizare pe ecranul LCD. | ||
+ | |||
+ | * Schema bloc: | ||
+ | {{:pm:prj2024:avaduva:schema_bloc_ioana.png?200|}} | ||
</note> | </note> | ||
===== Hardware Design ===== | ===== Hardware Design ===== | ||
- | In stadiul actual, toate componentele sunt conectate conform schemei atasate, partea hardware fiind in stadiu final. | + | In stadiul actual, toate componentele sunt conectate conform schemei atasate, partea hardware fiind in finalizata. |
<note tip> | <note tip> | ||
Line 49: | Line 53: | ||
* Arduino UNO | * Arduino UNO | ||
* Fire tata-tata, tata-mama | * Fire tata-tata, tata-mama | ||
- | </note> | + | |
+ | Schema electrica: | ||
{{:pm:prj2024:avaduva:schema_electrica_ioana_modificata.jpg?200|}} | {{:pm:prj2024:avaduva:schema_electrica_ioana_modificata.jpg?200|}} | ||
+ | |||
+ | Poza hardware: | ||
+ | |||
{{:pm:prj2024:avaduva:hardware_ioana.png?200|Poza hardware}} | {{:pm:prj2024:avaduva:hardware_ioana.png?200|Poza hardware}} | ||
+ | |||
+ | Poza primul exemplu utilizare: | ||
+ | |||
{{:pm:prj2024:avaduva:exemplu1_ioana.png?200|Exemplu 1 utilizare}} | {{:pm:prj2024:avaduva:exemplu1_ioana.png?200|Exemplu 1 utilizare}} | ||
+ | |||
+ | Poza al doilea exemplu utilizare: | ||
+ | |||
{{:pm:prj2024:avaduva:exemplu2_ioana.png?200|Exemplu 2 utilizare}} | {{:pm:prj2024:avaduva:exemplu2_ioana.png?200|Exemplu 2 utilizare}} | ||
+ | </note> | ||
===== Software Design ===== | ===== Software Design ===== | ||
Line 70: | Line 85: | ||
- | Am folosit urmatoarele elemente din laboratoare: | + | **Am folosit urmatoarele elemente din laboratoare:** |
1. GPIO: Folosit pentru controlul LED-ului roșu și senzorul de sunet. | 1. GPIO: Folosit pentru controlul LED-ului roșu și senzorul de sunet. | ||
+ | |||
Configurarea pinului pentru LED și senzor de sunet: | Configurarea pinului pentru LED și senzor de sunet: | ||
- | * pinMode(SoundA1, INPUT); // Set SoundA1 as input | + | * pinMode(SoundA1, INPUT); Set SoundA1 as input |
- | * pinMode(ledPin, OUTPUT); // Set ledPin as output | + | * pinMode(ledPin, OUTPUT); Set ledPin as output |
Controlul LED-ului: | Controlul LED-ului: | ||
- | * digitalWrite(ledPin, HIGH); // ON | + | * digitalWrite(ledPin, HIGH); Turn on LED |
- | * digitalWrite(ledPin, LOW); // OFF | + | * digitalWrite(ledPin, LOW); Turn off LED |
2. ADC (Analog-to-Digital Converter): Folosit pentru citirea valorilor analogice de la senzorul MQ-2 (CO2). | 2. ADC (Analog-to-Digital Converter): Folosit pentru citirea valorilor analogice de la senzorul MQ-2 (CO2). | ||
+ | |||
Citirea valorii de la senzorul MQ-2: | Citirea valorii de la senzorul MQ-2: | ||
- | * int analogSensorCO2 = analogRead(CO2A0); | + | * int analogSensorCO2 = analogRead(CO2A0); Read from A0 |
Maparea valorii citite la un interval procentual: | Maparea valorii citite la un interval procentual: | ||
- | * CO2value = map(analogSensorCO2, 0, 1023, 0, 100); | + | * CO2value = map(analogSensorCO2, 0, 1023, 0, 100); CO2 module sensitivity |
3. I2C: Folosit pentru comunicarea cu ecranul LCD 16x2 I2C. | 3. I2C: Folosit pentru comunicarea cu ecranul LCD 16x2 I2C. | ||
+ | |||
Inițializarea și configurarea LCD-ului: | Inițializarea și configurarea LCD-ului: | ||
* lcd.init(); | * lcd.init(); | ||
Line 94: | Line 113: | ||
Scrierea pe ecranul LCD: | Scrierea pe ecranul LCD: | ||
- | lcd.setCursor(0, 0); | + | * lcd.setCursor(0, 0); |
- | lcd.print("Initializing... "); // Initialization message | + | * lcd.print("Initializing... "); Initialization message |
... | ... | ||
- | lcd.setCursor(12, 1); | + | |
- | lcd.print(i); | + | * lcd.setCursor(12, 1); |
- | lcd.print("% "); | + | * lcd.print(i); |
+ | * lcd.print("% "); | ||
... | ... | ||
- | lcd.clear(); | + | |
+ | * lcd.clear(); | ||
... | ... | ||
- | lcd.setCursor(0, 0); | + | * lcd.setCursor(0, 0); |
- | lcd.print("CO2 Level:"); | + | * lcd.print("CO2 Level:"); |
- | lcd.setCursor(11, 0); | + | * lcd.setCursor(11, 0); |
- | lcd.print(CO2value); | + | * lcd.print(CO2value); |
- | lcd.print("% "); | + | * lcd.print("% "); |
... | ... | ||
- | lcd.setCursor(0, 1); | + | *lcd.setCursor(0, 1); |
- | lcd.print("DANGER! "); | + | *lcd.print("DANGER! "); |
- | lcd.write(2); // Display sad face | + | *lcd.write(2); Display sad face |
... | ... | ||
- | lcd.setCursor(0, 1); | + | * lcd.setCursor(0, 1); |
- | lcd.print("BAD! "); | + | * lcd.print("BAD! "); |
- | lcd.write(2); // Display sad face | + | * lcd.write(2); Display sad face |
... | ... | ||
- | lcd.setCursor(0, 1); | + | *lcd.setCursor(0, 1); |
- | lcd.print("NORMAL "); | + | *lcd.print("NORMAL "); |
- | lcd.write(1); // Display smiley face | + | *lcd.write(1); Display smiley face |
... | ... | ||
- | lcd.clear(); | + | * lcd.clear(); |
- | lcd.setCursor(0, 0); | + | * lcd.setCursor(0, 0); |
- | lcd.print("Purificator"); | + | * lcd.print("Purificator"); |
- | lcd.setCursor(0, 1); | + | * lcd.setCursor(0, 1); |
- | lcd.print("started!"); | + | * lcd.print("started!"); |
... | ... | ||
- | lcd.clear(); | + | * lcd.clear(); |
</note> | </note> | ||
Line 140: | Line 165: | ||
===== Concluzii ===== | ===== Concluzii ===== | ||
+ | Acest proiect demonstrează o soluție eficientă și accesibilă pentru monitorizarea și controlul calității aerului în spații închise. | ||
+ | Sistemul poate detecta și semnaliza(prin aprindere led rosu) nivelurile periculoase de CO2 și poate fi integrat intr-un sistem de purificare a aerului: printr-o bataie din palme se stinge led-ul rosu si porneste purificarea aerului. | ||
===== Download ===== | ===== Download ===== | ||
- | <note warning> | + | <note> |
+ | Codul se poate descarca: | ||
+ | {{:pm:prj2024:avaduva:sketch_may27a.zip|}} | ||
</note> | </note> | ||