This shows you the differences between two versions of the page.
pm:prj2021:alazar:smokeandgasdetector [2021/04/25 22:24] mihai.vatafu |
pm:prj2021:alazar:smokeandgasdetector [2021/05/31 16:30] (current) elena.buduran |
||
---|---|---|---|
Line 3: | Line 3: | ||
=== Grupa : 331CB === | === Grupa : 331CB === | ||
===== Introducere ===== | ===== Introducere ===== | ||
- | Am decis să implementez un detector de fum și gaze, care emite avertizari luminoase | + | Am decis să implementez un detector de fum/gaze si flacara, care emite avertizari luminoase |
- | și sonore si transmite remote starea atmosferei spre un PC prin Wi-Fi cu ajutorul | + | și sonore si transmite starea atmosferei spre un database hostat pe PC cu ajutorul unui |
- | unui shield ethernet. | + | shield ethernet. |
===== Descriere generală ===== | ===== Descriere generală ===== | ||
Detectorul are următoarele componente: | Detectorul are următoarele componente: | ||
- | -buzzer: emite avertizari sonore cand vreun senzor este pus în funcțiune | + | -buzzer: emite avertizari sonore cand senzorul de gaz detecteaza valori peste |
+ | pragul limita | ||
-LCD Display: afișeaza mesaje de atentionare | -LCD Display: afișeaza mesaje de atentionare | ||
- | -led verde/rosu: lumineaza atunci cand in aer nu este / este fum/gaz/flacara. | + | -led verde/rosu: lumineaza atunci cand in aer nu este/este fum/gaz/flacara. |
Schema Bloc: | Schema Bloc: | ||
- | {{:pm:prj2021:alazar:detector.png?400|}} | + | {{:pm:prj2021:alazar:parezation-page-3.png?500|}} |
===== Hardware Design ===== | ===== Hardware Design ===== | ||
- | Lista componente: | + | **Lista componente:** |
- | * placa de dezvoltare Arduino Uno | + | ^Componentă ^Scop ^ Site Achizionare ^ |
- | * buzzer | + | |Arduino Uno |baza proiectului |https://cleste.ro/arduino-uno-r3-atmega328p.html| |
- | * LCD Display | + | |Breadboard HQ (830 Puncte) |unirea componentelor |https://www.optimusdigital.ro/ro/prototipare-breadboard-uri/8-breadboard-830-points.html| |
- | * led verde & rosu | + | |LCD Display 16x02 |afisarea mesajelor de atentionare |https://ardushop.ro/ro/electronica/36-lcd-1602.html| |
- | * rezistente | + | |Shield Ethernet pentru Arduino cu chip Wiznet W5100 |transmiterea valorilor inregistrate de senzori prin Ethernet la un database |https://www.robofun.ro/shield/shield-ethernet-pentru-arduino-cu-chip-wiznet-w5100.html| |
- | * senzor de gaz MQ-2 | + | |Modul Senzor Gaz MQ-2 |detectarea scurgerilor de gaz |https://www.optimusdigital.ro/ro/senzori-de-gaze/107-modul-senzor-gas-mq-2.html| |
- | * senzor de flacară | + | |LED Verde de 3 mm cu Lentile Transparente |indica un nivel normal de gaz in atmosfera |https://www.optimusdigital.ro/ro/optoelectronice-led-uri/931-led-verde-de-3-mm-cu-lentile-transparente.html| |
- | * breadboard | + | |LED Roșu de 3 mm cu Lentile Difuze |indica un nivel anormal de gaz in atmosfera |https://www.optimusdigital.ro/ro/optoelectronice-led-uri/696-led-rou-de-3-mm-cu-lentile-difuze.html| |
- | * Shield Ethernet pentru Arduino | + | |Fludor la tub 1mm 10 gr |folosit impreuna cu pistolul de lipit pentru lipirea pinilor la display-ul LCD si conectarea pinilor de spatele shield-ului prin 2 rezistente de 100 OHMI |https://www.optimusdigital.ro/ro/fludor/23-fludor-la-tub-1mm-10-gr.html| |
+ | |Pompa Fludor Metal |dezlipirea componentelor electronice lipite gresit| https://www.optimusdigital.ro/ro/toate-produsele/22-pompa-fludor-metal.html| | ||
+ | |Fire Colorate Tată-Tată |cablare |https://www.optimusdigital.ro/ro/fire-fire-mufate/885-set-fire-tata-tata-10p-10-cm.html| | ||
+ | |Modul Buzzer pasiv |emitere semnale sonore in cazul detectarii unui nivel anormal de gaz |https://cleste.ro/modul-buzzer-pasiv.html| | ||
+ | |2 Rezistente 220 Ohmi |evitarea trecerii unui curent prea mare prin leduri | Magazin Dioda Tg-Jiu| | ||
+ | |2 Rezistente 100 Ohmi |lipirea pe pinii 1-2 și 3-6 ai shield-ului ce avea o rezistenta gresita | Magazin SigmaNortec Tg-Jiu| | ||
+ | |Senzor de flacara 4 pini |detectarea flacarii |Magazin SigmaNortec Tg-Jiu| | ||
+ | |||
+ | **Schema electrica:** | ||
+ | |||
+ | {{:pm:prj2021:alazar:2021-05-30_2_.png ? 400|}} | ||
+ | |||
+ | Schema nu include shield-ul Ethernet, care va fi introdus deasupra placii Arduino. | ||
===== Software Design ===== | ===== Software Design ===== | ||
+ | Am scris codul in mediul de dezvoltare Arduino IDE, folosindu-ma de urmatoarele biblioteci: | ||
+ | * SPI & Ethernet - pentru comunicarea prin SPI si Ethernet | ||
+ | * LiquidCrystal - pentru a permite placii Arduino sa controleze LCD-ul. | ||
+ | Cu ajutorul define-urilor, am setat pinii la care sunt conectate LED-urile, buzzer-ul si cei doi senzori. | ||
+ | |||
+ | Variabile globale: | ||
+ | * gasTopValue - valoarea de referinta cu care se vor compara valorile inregistrate de senzorul MQ2(pragul limita) | ||
+ | * lcd - variabila de tip LiquidCrystal | ||
+ | * rs, enable, d4, d5, d6, d7 - constante care definesc pinii la care este conectat LCD-ul | ||
+ | * mac - array de variabile de tip byte (stocheaza adresa MAC cu care va fi initializat shield-ul) | ||
+ | * ip - variabila de tipul IPAddress (adresa IP cu care va fi initializat shield-ul, generata de incarcarea sketch-ului DhcpAddressPrinter pe shield) | ||
+ | * server - variabila de tipul IPAddress (adresa IP a server-ului care hosteaza database-ul : adresa PC-ului propriu) | ||
+ | * cliente : variabila de tip EthernetClient, pentru conectarea la server pe portul specificat. | ||
+ | * flameValue - valoarea indicata de senzorul de flacara(folosind pinul digital D0 al senzorului, valoarea va fi 1 logic sau 0 logic). | ||
+ | **FUNCTII:** | ||
+ | *** setup():** | ||
+ | - pinMode() : setez pinii la care sunt conectati LED-urile si buzzer-ul ca iesire si pinii la care vor fi conectati senzorul de gaz&fum/flacara ca pini de intrare | ||
+ | - lcd.begin(): initializez LCD-ul | ||
+ | - Serial.begin() : initializez interfata seriala | ||
+ | - Ethernet.begin() : setez o adresa MAC si o adresa IP pentru shield. | ||
+ | *** loop() :** citesc valoarea inregistrata de senzorul MQ2 cu analogRead() si pe cea inregistrata de senzorul de flacara cu digitalRead(), le compar cu valorile limita, afisez pe LCD mesajele corespunzatoare de atentionare(lcd.print()).In plus, daca valorile depasesc pragul normal, buzzerul va incepe sa sune si LED-ul rosu se va lumina.In caz contrar, LED-ul verde se va lumina.Apoi, se incearca conectarea la serverul ce este host pentru database prin apelul cliente.connect(server, port) si se trimit datele, urmand sa se inchida conexiunea.Daca esueaza conectarea, se afiseaza pe interfata seriala mesajul "connection failed". | ||
+ | |||
+ | **CREAREA BAZEI DE DATE & TRIMITEREA DATELOR DE LA ARDUINO LA DATABASE** | ||
+ | * Am instalat aplicatia XAMPP, din care am pornit serviciile Apache si MySQL.Am accesat in browser “localhost:80/phpmyadmin/” si am creat baza de date ethernet si, in interiorul acesteia, un tabel data, care va contine valorile citite de senzori si timestamp-ul. | ||
+ | * Am creat un fisier ‘connection.php’ pentru conectarea bazei de date cu Arduino si un fisier ‘data.php’ pentru introducerea valorilor in baza de date. | ||
+ | * - Am verificat daca shield-ul functioneaza prin incarcarea sketch-ului DHCPAddressPrinter pe acesta, pentru afisarea adresei IP.Nu a functionat, deoarece shield-ul avea un rezistor cu o valoare gresita.Pentru corectare, am lipit pinii 1-2 și 3-6 de pe spatele shield-ului cu 2 rezistente de 100 Ohmi. | ||
+ | * Am creat un fisier “display.php”, care citeste valorile din baza de date si le afiseaza pe webpage-ul http://localhost:80/ethernet/display.php. | ||
+ | |||
===== Rezultate obtinute ===== | ===== Rezultate obtinute ===== | ||
+ | Starea montajului pentru parametrii normali ai atmosferei | ||
+ | |||
+ | {{:pm:prj2021:alazar:normalatmosphere.jpg ? 350|}} | ||
+ | |||
+ | Starea montajului cand se detecteaza flacara | ||
+ | |||
+ | {{:pm:prj2021:alazar:flame.jpg ? 250|}} | ||
+ | |||
+ | Starea montajului cand se detecteaza gaz/fum | ||
+ | |||
+ | {{:pm:prj2021:alazar:gas.jpg ? 300|}} | ||
+ | |||
+ | {{:pm:prj2021:alazar:gas2.jpg ? 250|}} | ||
+ | |||
+ | Pinii shield-ului intra in pinii placii Arduino.Placa Arduino e legata la PC printr-un cablu USB, iar shield-ul este legat la router printr-un cablu Ethernet.PC-ul este conectat la router prin WiFi. | ||
+ | |||
+ | Am incarcat initial sketch-ul Ethernet/DHCPAddressPrinter pe shield. Acesta a rulat cu succes, asignandu-i shield-ului o adresa IP.Apoi am incarcat pe shield codul pentru intreg montajul si am observat ca apelul client.connect() esueaza.Astfel nu se realizeaza conectarea la IP-ul PC-ului, unde se hosteaza database-ul.Pentru debug, am rulat in CMD "netsat -aon", am observat ca portul 80 este ocupat de alta aplicatie.Am modificat portul pe care asculta Apache(initial erau 80&443, acum sunt 81&443).Nu a functionat, am primit acelasi mesaj "connection failed". | ||
+ | |||
+ | {{:pm:prj2021:alazar:2021-05-31.png ? 400|}} | ||
+ | {{:pm:prj2021:alazar:database.jpg?400|}} | ||
+ | |||
+ | **DEMO-ul proiectului:** | ||
+ | |||
+ | [[https://drive.google.com/drive/folders/1awkwqkRAgy7ggPcwSw7hwPuuXMC_0ANY?usp=sharing]] | ||
+ | |||
===== Concluzii ===== | ===== Concluzii ===== | ||
+ | Intregul proiect a fost o experienta din care am avut multe lucruri de invatat, inclusiv cum sa folosesc pistolul de lipit electric. | ||
===== Download ===== | ===== Download ===== | ||
+ | In arhiva se gasesc fisierele php (incluse in xampp/htdocs), fisierul Arduino cu codul legat de Ethernet comentat (pentru a nu afecta functionarea intregului montaj) si un fisier Arduino cu intreg codul. | ||
+ | |||
+ | {{:pm:prj2021:alazar:smokeandgasdetector_buduranelenabianca.zip|}} | ||
===== Jurnal ===== | ===== Jurnal ===== | ||
+ | * 25/04/2021 -> crearea paginii Wiki | ||
+ | * 10/05/2021 -> plasare comanda piese | ||
+ | * 22/05/2021 -> realizarea software-ului (cu exceptia Ethernet Shield-ului) | ||
+ | * 23/05/2021 -> realizarea hardware-ului (cu exceptia Ethernet Shield-ului) | ||
+ | * 24/05/2021 -> adaugarea Ethernet Shield-ului la montaj si completarea codului | ||
+ | * 25/05/2021 - 27/05/2021 -> debug pentru partea legata de shield (nu se realiza conectarea la server pe portul 80) | ||
+ | * 27/05/2021 -> actualizarea paginii Wiki | ||
+ | * 31/05/2021 -> finalizarea paginii Wiki | ||
===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||
[[https://ocw.cs.pub.ro/courses/pm/prj2021/alazar/smokeandgasdetector?do=export_pdf|PDF]] | [[https://ocw.cs.pub.ro/courses/pm/prj2021/alazar/smokeandgasdetector?do=export_pdf|PDF]] | ||
+ | |||
+ | [[https://www.youtube.com/watch?v=3n73k1HzKLo&t=2s]] | ||
+ | |||
+ | [[https://www.arduino.cc/en/Reference/LiquidCrystal]] | ||
+ | |||
+ | [[https://lastminuteengineers.com/mq2-gas-senser-arduino-tutorial/]] | ||
+ | |||
+ | [[https://www.javatpoint.com/creating-mysql-database-with-xampp]] | ||