This shows you the differences between two versions of the page.
pm:prj2021:alazar:smokeandgasdetector [2021/05/29 16:13] 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 | ||
Line 44: | Line 52: | ||
* ip - variabila de tipul IPAddress (adresa IP cu care va fi initializat shield-ul, generata de incarcarea sketch-ului DhcpAddressPrinter pe shield) | * 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) | * 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 | + | * cliente : variabila de tip EthernetClient, pentru conectarea la server pe portul specificat. |
- | * flameMinValue & flameMaxValue : constante ce definesc intervalul de valorile normale inregistrate de senzorul de flacara. | + | * flameValue - valoarea indicata de senzorul de flacara(folosind pinul digital D0 al senzorului, valoarea va fi 1 logic sau 0 logic). |
**FUNCTII:** | **FUNCTII:** | ||
*** setup():** | *** setup():** | ||
Line 52: | Line 60: | ||
- Serial.begin() : initializez interfata seriala | - Serial.begin() : initializez interfata seriala | ||
- Ethernet.begin() : setez o adresa MAC si o adresa IP pentru shield. | - Ethernet.begin() : setez o adresa MAC si o adresa IP pentru shield. | ||
- | *** loop() :** citesc valorile inregistrate de senzori cu analogRead(), 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". | + | *** 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** | **CREAREA BAZEI DE DATE & TRIMITEREA DATELOR DE LA ARDUINO LA DATABASE** | ||
Line 61: | Line 69: | ||
===== 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]] | ||