Differences

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

Link to this comparison view

pm:prj2021:alazar:smokeandgasdetector [2021/05/29 15:38]
elena.buduran
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 starea atmosferei spre un database hostat pe PC 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: ​
Line 11: Line 11:
            ​pragul limita            ​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:​**
Line 33: Line 33:
 |2 Rezistente 100 Ohmi |lipirea pe pinii 1-2 și 3-6 ai shield-ului ce avea o rezistenta gresita | Magazin SigmaNortec 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| |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: Am scris codul in mediul de dezvoltare Arduino IDE, folosindu-ma de urmatoarele biblioteci:
Line 38: Line 44:
   * LiquidCrystal - pentru a permite placii Arduino sa controleze LCD-ul.   * 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. Cu ajutorul define-urilor,​ am setat pinii la care sunt conectate LED-urile, buzzer-ul si cei doi senzori.
-  ​smokeTopValue ​- valoarea de referinta cu care se vor compara valorile inregistrate de senzorul MQ2(pragul limita).+ 
 +Variabile globale: 
 +  ​gasTopValue ​- valoarea de referinta cu care se vor compara valorile inregistrate de senzorul MQ2(pragul limita)
   * lcd - variabila de tip LiquidCrystal   * lcd - variabila de tip LiquidCrystal
   * rs, enable, d4, d5, d6, d7 - constante care definesc pinii la care este conectat LCD-ul   * 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)   * 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  +  * ip - variabila de tipul IPAddress (adresa IP cu care va fi initializat shield-ul, generata de incarcarea sketch-ului DhcpAddressPrinter pe shield) 
-    ​shield) +  * server - variabila de tipul IPAddress (adresa IP a server-ului care hosteaza database-ul : adresa PC-ului propriu) 
-  * server - variabila de tipul IPAddress (adresa IP a server-ului care hosteaza database-ul : adresa PC-ului propriu, obtinuta prin rularea +  * cliente : variabila de tip EthernetClient,​ pentru conectarea la server pe portul specificat. 
-    comenzii ipconfig in CMD+  * flameValue - valoarea indicata de senzorul de flacara(folosind pinul digital D0 al senzorului, valoarea va fi 1 logic sau 0 logic). 
-  * cliente : variabila de tip EthernetClient,​ pentru conectarea la server pe portul specificat +**FUNCTII:​** 
-  * flameMinValue ​flameMaxValue ​constante ce definesc intervalul ​de valorile normale inregistrate ​de senzorul de flacara.+  *** 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]]
    
pm/prj2021/alazar/smokeandgasdetector.1622291938.txt.gz · Last modified: 2021/05/29 15:38 by elena.buduran
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