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