Smoke and Gas Detector

Autor : Buduran Elena-Bianca

Grupa : 331CB

Introducere

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 unui shield ethernet.

Descriere generală

Detectorul are următoarele componente:

  1. buzzer: emite avertizari sonore cand senzorul de gaz detecteaza valori peste

pragul limita

  1. LCD Display: afișeaza mesaje de atentionare
  2. led verde/rosu: lumineaza atunci cand in aer nu este/este fum/gaz/flacara.

Schema Bloc:

Hardware Design

Lista componente:

Componentă Scop Site Achizionare
Arduino Uno baza proiectului https://cleste.ro/arduino-uno-r3-atmega328p.html
Breadboard HQ (830 Puncte) unirea componentelor https://www.optimusdigital.ro/ro/prototipare-breadboard-uri/8-breadboard-830-points.html
LCD Display 16×02 afisarea mesajelor de atentionare https://ardushop.ro/ro/electronica/36-lcd-1602.html
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
Modul Senzor Gaz MQ-2 detectarea scurgerilor de gaz https://www.optimusdigital.ro/ro/senzori-de-gaze/107-modul-senzor-gas-mq-2.html
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
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
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:

Schema nu include shield-ul Ethernet, care va fi introdus deasupra placii Arduino.

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():
  1. 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
  2. lcd.begin(): initializez LCD-ul
  3. Serial.begin() : initializez interfata seriala
  4. 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

Starea montajului pentru parametrii normali ai atmosferei

Starea montajului cand se detecteaza flacara

Starea montajului cand se detecteaza gaz/fum

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”.

DEMO-ul proiectului:

https://drive.google.com/drive/folders/1awkwqkRAgy7ggPcwSw7hwPuuXMC_0ANY?usp=sharing

Concluzii

Intregul proiect a fost o experienta din care am avut multe lucruri de invatat, inclusiv cum sa folosesc pistolul de lipit electric.

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.

smokeandgasdetector_buduranelenabianca.zip

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

pm/prj2021/alazar/smokeandgasdetector.txt · Last modified: 2021/05/31 16:30 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