Nume: Lungu Andrei-Tudor
Grupa: 334CD
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:
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
Listă piese:
Schemă electrică
Aceasta este a 2-a schemă electrică, după ce am regândit proiectul.
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)
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); }
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ă.
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 😄
Puteți descărca întregul cod de aici:
proiect_pm_lungu_andrei.zip
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.