Aparat pentru detectarea gazului - Lungu Andrei-Tudor

Nume: Lungu Andrei-Tudor
Grupa: 334CD

Introducere

Conform unei statistici din anul 2022, doar în România, cauzele incendiilor provocate de scăpări de gaz/ foc nesupravegheat au reprezentat un procent de 41,74%. Din punctul meu de vedere, acest lucru este îngrijorător deoarece extrem de mulți oameni și-au pierdut bunurile/ locuințele în urma unor accidente minore, dar cu impact major. De aceea m-am gândit să implementez un sistem de detectare a gazelor, respectiv a focului, gândindu-mă că poate va ajunge să fie folosit la o scară mult mai mare.

Funcționalități:

  • Aparatul este conceput pentru detectarea gazului/focului într-o încăpere.
  • Utilizarea acestuia oferă siguranță utiliatorilor în cazul incendiilor.
  • Sincer, am pornit de la ideea cum aș putea să integrez 3 laboratoare și totodată să fie și ceva util pe care l-aș putea optimiza în viitor.
  • Statistic vorbind, există foarte multe accidente în încăperi din cauza scăpărilor de gaz sau a incendiilor propriu-zise, așa că acest produs ar putea diminua accidentele respective.

Descriere generală

Piesa principală care va ajuta la funcționarea corectă a proiectului este un detector de gaz, modelul MQ135. Pe lângă acesta, voi folosi și un senzor pentru detectarea temperaturii, pentru a fi folosit și drept indicator în cazul unui incendiu. Totodată, voi folosi o plăcuță Arduino UNO. Pentru a informa utiliatorul despre posibilele pericole sau eventual pentru a verifica scăpările de gaz, voi folosi un ecran LCD cu I2C. În cazul unui pericol, se va aprinde ledul roșu, iar în caz contrar va rămâne cel verde aprins.

Desigur, pentru a oferi siguranță și încredere utilizatorului, voi folosi și un buzzer pentru atenționarea imediată în cazul depășirii limitelor standard.

Schema Bloc

Hardware Design

Listă piese:

  • Arduino UNO (5V)
  • Senzor de detectare a gazului MQ135
  • Senzor de temperatură DHT11
  • Ecran LCD I2C
  • Buzzer
  • Led Roșu
  • Led Verde
  • Fire
  • 2 Rezistențe 220
  • Breadboard

Schemă electrică

Aceasta este a 2-a schemă electrică, după ce am regândit proiectul.

Diagramă de semnal

Aceasta este a 2-a diagramă de semnal, după ce am regândit proiectul.

Descriere

Mi-a luat puțin mai mult sa pot face proiectul pe pare hadware deoarece nu am știut de unde să îl încep. Pentru acest proiect am pus mai jos în bibliografie site-urile de unde am luat toate informațiile pentru a cunoaște unde să le pun pe plăcuța Arduino Uno.

Pentru fiecare componentă am găsit niște pini cărora ar trebui să le schimb locul deoarece erau nevoie de ei în mai multe părți.

Majoritatea pinilor de alimentare / GND sunt conectați la GND-ul și alimentarea plăcuței Arduino Uno, totodată cu o rezistență de 10k, care are rolul de rezistență pull-up / pull-down. Mai folosesc alte 3 rezistențe de 220 ohmi, pentru a puteta prevedi defectarea ledurilor.

Restul, în mare parte așa cum am spus, m-am uitat pe internet legat de unde ar trebui să conectez componentele și cum, mi se pare un proiect puțin cam aglomerat și haosat din punct de vedere al cablurilor, o să încerc să lucrez la aspectul său.

Doresc să menționez că în urma unor lupte crunte, am modificat proiectul pe parte hardware astfel încât să funcționeze corect. (Am învățat lucruri noi)

Software Design

Aplicația în care am creat codul este Arduino IDE. Pentru început am adăugat următoarele librării:

#include <Wire.h>
#include <LiquidCrystal_I2C.h> 
#include <DHT.h> 

În continuare am realizat inițializarea pinilor și a mesajului de output pe componenta LCD, primind informații de la DHT în modul normal. Pinii inițializați sunt pentru senzorul MQ135, senzorul DHT, buzzer și pinii ledurilor.

#define DHTPIN 3
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(0x27, 16, 2);
#define ADC_CHANNEL 0
const int buzzerPin = 6;
const int redLedPin = 12;
const int greenLedPin = 10;

Mai apoi, am folosit funcția de setup pentru: a inițializa ecranul LCD, conversia senzorului de gaz din semnal analogic in semnal digital, pornirea senzorului de temperatură și setarea pinilor pentru leduri și buzzer ca output.

void setup() {
pinMode(redLedPin, OUTPUT);
pinMode(greenLedPin, OUTPUT);
pinMode(buzzerPin, OUTPUT);
digitalWrite(redLedPin, LOW);
digitalWrite(greenLedPin, LOW);
digitalWrite(buzzerPin, LOW);
lcd.init();
lcd.backlight();
dht.begin();
ADCSRA = 0;
ADCSRB = 0;
ADMUX = 0;
ADMUX |= (1 << REFS0);
ADMUX |= ADC_CHANNEL;
ADCSRA |= (1 << ADPS2);
ADCSRA |= (1 << ADPS1);
ADCSRA |= (1 << ADPS0);
ADCSRA |= (1 << ADEN);
}

Nu în ultimul rând, urmează cea mai imporantă parte din proiect, funcția loop(). Aici am făcut verificările în cazul detectărilor de gaz.

1. Indice gaz > 700

Asta va însemna că buzzerul va emite un semnal continuu pentru a marca nivelul de pericol iminent, alături și de un mesaj pe ecranul LCD, care va înștiința utiliatorul cu privire la nivelul ridicat de gaz. Totodată va lumina și becul roșu.

2. Indice gaz între 400 și 700

Acest indice am considerat că este unul destul de potrivit pentru a marca pericolul unei cantități de gaz care încă nu reprezintă un pericol iminent. Astfel, am programat buzzerul să emită un sunet cu înrerupere, pentru a notifica utilizatorul cu privire la pericol. Am folosit și în acest caz aprinderea ledului roșu, împreună cu un mesaj pe ecranul LCD care semnalează nivelul de gaz.

3. Indice de gaz sub 400

În cazul unui indice mai mic de 400, va fi aprins doar ledul verde, împreună cu un mesaj de înștiințare a utilizatorului despre temperatura detectată de senzorul DHT. În cazul unei schimbări la nivelul indicelui de gaz, se va stinge ledul verde și se va aprinde cel roșu.

void loop() {
ADCSRA |= (1 << ADSC);
while (ADCSRA & (1 << ADSC)) {
  // asteapta conversia analogica
}
uint16_t adcValue = ADC;
float temperature = dht.readTemperature();
digitalWrite(redLedPin, LOW);
digitalWrite(greenLedPin, LOW);
digitalWrite(buzzerPin, LOW);
lcd.clear();
if (adcValue >= 700) {
  digitalWrite(redLedPin, HIGH);
  analogWrite(buzzerPin, 200);
  lcd.setCursor(0, 0);
  lcd.print("!! Pericol !!");
  lcd.setCursor(0, 1);
  lcd.print("Aer poluat");
  delay(1000);
  lcd.noDisplay();
  delay(300);
  lcd.display();
  delay(700);
} else if (adcValue >= 400) {
  digitalWrite(redLedPin, HIGH);
  analogWrite(buzzerPin, 127);
  delay(500);
  analogWrite(buzzerPin, 0);
  delay(500);
  lcd.setCursor(0, 0);
  lcd.print("Aer periculos!");
  lcd.setCursor(0, 1);
  lcd.print("ADC: ");
  lcd.print(adcValue);
  delay(1000);
} else {
  digitalWrite(greenLedPin, HIGH);
  lcd.setCursor(0, 0);
  lcd.print("Aerul este bun.");
  lcd.setCursor(0, 1);
  lcd.print("Temp. = ");
  lcd.print(temperature);
  lcd.print((char)223);
  lcd.print("C");
  delay(1000);
}

Rezultate Obţinute

După ce am realizat proiectul, am putut observa faptul că acesta funcționează așa cum mi-am dorit. Considet că aș fi putut să îmbunătățesc partea de design, dar atât am putut.

Pueți vizualiza funcționalitățile proiectului intrând pe acest link:
https://youtube.com/shorts/8IewmQB7X8c?feature=share

Aș vrea să atașez și poze cu proiectul în varianta finală.

Concluzii

Pentru mine personal, chiar dacă este un proiect destul de simplu pentru unii, pentru mine nu a fost chiar așa. Consider că în urma realizării acestui proiect, am învățat destul de multe lucruri noi. Din punctul meu de vedere, este un proiect cu utilitate destul de mare. Mă bucur că l-am putut realiza așa cum mi-am dorit. 🙂

Vă mulțumesc pentru timpul acordat 😄

Download

Puteți descărca întregul cod de aici:
proiect_pm_lungu_andrei.zip

Jurnal

Actualizare Proiect:
06.05.2025 - Completare informații wiki pentru prima etapă.
06.05.2025 - Cumpărarea produselor necesare pentru proiect.
20.05.2025 - Realizare Proiect cu documentație.
20.05.2025 - Nu ma lasa să încarc pe ocw poze.
21.05.2025 - Am updatat pagina de ocw cu informații despre unde m-am documentat pentru conectarea pinilor.
21.01.2025 - Am atașat și schema electrică, împreună cu schema de semnal.
27.07.2025 - Am modificat partea de hardware.
28.07.2025 (2:30) - Am scris codul pentru proiect, făcându-l funcțional.
28.07.2025 (04:30) - Am updatat site-ul cu toate informațiile finale.

Bibliografie/Resurse

pm/prj2025/fstancu/andrei_tudor.lungu.txt · Last modified: 2025/05/28 04:27 by andrei_tudor.lungu
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