This shows you the differences between two versions of the page.
pm:prj2022:abirlica:sistemincendiu [2022/06/01 23:19] robert.petrescu |
pm:prj2022:abirlica:sistemincendiu [2022/06/02 00:35] (current) robert.petrescu |
||
---|---|---|---|
Line 6: | Line 6: | ||
</note> | </note> | ||
- | {{:pm:prj2022:abirlica:schema_block.jpg?200|}} | + | {{ :pm:prj2022:abirlica:schema_artistica.jpg?300 |}} |
===== Descriere generală ===== | ===== Descriere generală ===== | ||
- | + | Sistemul folosește un senzor de flacără pe semnalul digital, un senzor de nivel al apei si o pompa de apă. Pentru ca pompa de apă sa nu funcționeze uscată, daca senzorul de apă citește o valoare mai mică decat o valoare presetată, pompa nu poate functiona. Daca senzorul de flacără detectează o flacără, iar nivelul de apa este peste valoarea minimă, pompa pornește pentru a stinge incendiul. De asemenea, există 3 led-uri care servesc pe post de indicator de nivel pentru apă. Daca nivelul apei scade, led-urile se sting treptat, pana cand nu mai ramâne niciunul aprins. | |
- | Lista componente necesare: | + | |
- | - Arduino UNO | + | |
- | - | + | |
- | - bradboard | + | |
- | - pompa | + | |
- | - fire de legatura | + | |
===== Hardware Design ===== | ===== Hardware Design ===== | ||
Line 32: | Line 26: | ||
=== Schema electrică === | === Schema electrică === | ||
- | {{ :pm:prj2022:abirlica:schema_electrica_sistem_incendiu.jpg.jpg?1000 |}} | + | {{ :pm:prj2022:abirlica:schema_electrica_sistem_incendiu.jpg.jpg?750 |}} |
===== Software Design ===== | ===== Software Design ===== | ||
+ | - Pentru realizarea software-ului necesar funcționării proiectului, am utilizat Arduino IDE. | ||
+ | - Funcția ReadSensor(), citește și returnează valoarea analogică oferită de senzorul de nivel de apă. | ||
+ | - Primul bloc de if-uri aprinde si stinge led-urile in functie de nivelul apei. | ||
+ | - Variabila flame_detected are state-ul LOW, atunci când o Flacără este detectată sau HIGH, atunci cand senzorul nu detectează nicio flacără | ||
+ | - Daca o flacara este detectată si nivelul apei este peste o anumită valoare, pin-ul trans se seteaza pe HIGH si deschide tranzistorul pentru a alimenta pompa. | ||
+ | <spoiler Cod sursă> | ||
+ | <code C fire_supressing_system.ino> | ||
+ | #define flame_sensor 4 | ||
+ | #define sensorPower 7 | ||
+ | #define sensorPin A0 | ||
+ | #define trans 8 | ||
+ | #define LED1 9 | ||
+ | #define LED2 10 | ||
+ | #define LED3 11 | ||
- | <note tip> | ||
- | Descrierea codului aplicaţiei (firmware): | ||
- | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | ||
- | * librării şi surse 3rd-party (e.g. Procyon AVRlib) | ||
- | * algoritmi şi structuri pe care plănuiţi să le implementaţi | ||
- | * (etapa 3) surse şi funcţii implementate | ||
- | </note> | ||
- | ===== Rezultate Obţinute ===== | + | int val = 0; |
+ | int buttonState = 0; | ||
- | <note tip> | + | void setup() |
- | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | |
- | </note> | + | |
- | ===== Concluzii ===== | + | { |
- | ===== Download ===== | + | Serial.begin(9600); |
+ | pinMode(sensorPower, OUTPUT); | ||
+ | digitalWrite(sensorPower, LOW); | ||
+ | pinMode(flame_sensor, INPUT); | ||
+ | pinMode(LED1, OUTPUT); | ||
+ | pinMode(LED2, OUTPUT); | ||
+ | pinMode(LED3, OUTPUT); | ||
+ | pinMode(trans, OUTPUT); | ||
+ | | ||
- | <note warning> | + | } |
- | O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului: surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-). | + | |
- | Fişierele se încarcă pe wiki folosind facilitatea **Add Images or other files**. Namespace-ul în care se încarcă fişierele este de tipul **:pm:prj20??:c?** sau **:pm:prj20??:c?:nume_student** (dacă este cazul). **Exemplu:** Dumitru Alin, 331CC -> **:pm:prj2009:cc:dumitru_alin**. | + | |
- | </note> | + | void loop() |
+ | |||
+ | { | ||
+ | int level = readSensor(); | ||
+ | Serial.println(level); | ||
+ | if (level > 400) | ||
+ | { | ||
+ | digitalWrite(LED1, HIGH); | ||
+ | digitalWrite(LED2, HIGH); | ||
+ | digitalWrite(LED3, HIGH); | ||
+ | |||
+ | } | ||
+ | else if (level > 350 && level <= 400) | ||
+ | { | ||
+ | digitalWrite(LED1, HIGH); | ||
+ | digitalWrite(LED2, HIGH); | ||
+ | digitalWrite(LED3, LOW); | ||
+ | } | ||
+ | else if (level < 350 && level > 300) | ||
+ | { | ||
+ | digitalWrite(LED1, HIGH); | ||
+ | digitalWrite(LED2, LOW); | ||
+ | digitalWrite(LED3, LOW); | ||
+ | } | ||
+ | else if (level <= 300) | ||
+ | { | ||
+ | digitalWrite(LED1, LOW); | ||
+ | digitalWrite(LED2, LOW); | ||
+ | digitalWrite(LED3, LOW); | ||
+ | } | ||
+ | int flame_detected = digitalRead(flame_sensor); | ||
+ | if (flame_detected == LOW && level > 300) | ||
+ | { | ||
+ | // turn PUMP on: | ||
+ | digitalWrite(trans, HIGH); | ||
+ | } else { | ||
+ | // turn PUMP off: | ||
+ | digitalWrite(trans, LOW); | ||
+ | } | ||
+ | // Added the delay so that we can see the output of button | ||
+ | |||
+ | delay(100); | ||
+ | |||
+ | } | ||
+ | |||
+ | int readSensor() { | ||
+ | digitalWrite(sensorPower, HIGH); // Turn the sensor ON | ||
+ | delay(10); // wait 10 milliseconds | ||
+ | val = analogRead(sensorPin); // Read the analog value form sensor | ||
+ | digitalWrite(sensorPower, LOW); // Turn the sensor OFF | ||
+ | return val; // send current reading | ||
+ | } | ||
+ | </code> | ||
+ | </spoiler> | ||
+ | |||
+ | ===== Rezultate Obţinute ===== | ||
+ | Proiectul detectează o flacără, iar dacă nivelul apei din recipientul pompei este destul de ridicat pentru a nu lăsa pompa să meargă fară apă, pompa improașcă apă. | ||
+ | {{ :pm:prj2022:abirlica:poza_artistica.jpeg?500 |}} | ||
+ | |||
+ | |||
+ | ===== Concluzii ===== | ||
+ | A fost un proiect interesant, care m-a ajutat să aprofundez cunoștințele dobândite la laboratoarele de PM și mi-a trezit interesul pentru alte proiecte similare. Implementarea actuală a sistemului poate fi scalată pentru a realiza un robot care să se ghideze după incendii pentru a le stinge sau un sistem de stingere de incendii într-o clădire. | ||
+ | ===== Download ===== | ||
+ | {{:pm:prj2022:abirlica:petrescurobertmihai_333ca.rar|}} | ||
===== Jurnal ===== | ===== Jurnal ===== | ||
Line 72: | Line 142: | ||
===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||
+ | https://create.arduino.cc/projecthub/SURYATEJA/arduino-modules-flame-sensor-6322fb | ||
+ | https://robu.in/water-level-indicator-interfacing-with-arduino-connection-and-code/ | ||
+ | https://arduinogetstarted.com/tutorials/arduino-controls-pump | ||
<note> | <note> |