This shows you the differences between two versions of the page.
pm:prj2024:vstoica:costin.bosoaga [2024/05/09 16:23] costin.bosoaga created |
pm:prj2024:vstoica:costin.bosoaga [2024/05/22 22:35] (current) costin.bosoaga [Software Design] |
||
---|---|---|---|
Line 4: | Line 4: | ||
<note tip> | <note tip> | ||
Prezentarea pe scurt a proiectului vostru: | Prezentarea pe scurt a proiectului vostru: | ||
- | * ce face | + | * O alarma pentru securitate care masoara distanta de la obiecte pana la senzor-ul ei. Daca obiectul este prea apropiat alarma va suna. |
- | * care este scopul lui | + | * Poate tine casele si curtile in siguranta, observand fiecare obiect care intra in raza senzorului. |
- | * care a fost ideea de la care aţi pornit | + | * Am pornit de la un senzor si m-am inspirat de pe internet. |
- | * de ce credeţi că este util pentru alţii şi pentru voi | + | * Este un lucru foarte usor de folosit si foarte folositor. |
</note> | </note> | ||
===== Descriere generală ===== | ===== Descriere generală ===== | ||
<note tip> | <note tip> | ||
- | O schemă bloc cu toate modulele proiectului vostru, atât software cât şi hardware însoţită de o descriere a acestora precum şi a modului în care interacţionează. | + | Proiectul este realizat cu ajutorul unui Arduino UNO, un senzor ultrasonic, un buzzer care suna in momentul in care este detectat un obiect destul de aproape, cateva LED-uri care lumineaza in functie de distanta si o rezistenta de 1k ohm, un display LCD pe care este afisat nivelul pericolului. |
- | + | ||
- | Exemplu de schemă bloc: http://www.robs-projects.com/mp3proj/newplayer.html | + | |
</note> | </note> | ||
+ | |||
+ | |||
===== Hardware Design ===== | ===== Hardware Design ===== | ||
<note tip> | <note tip> | ||
- | Aici puneţi tot ce ţine de hardware design: | + | Lista piese: |
- | * listă de piese | + | * Arduino UNO |
- | * scheme electrice (se pot lua şi de pe Internet şi din datasheet-uri, e.g. http://www.captain.at/electronic-atmega16-mmc-schematic.png) | + | * Senzor ultrasonic |
- | * diagrame de semnal | + | * LED Verde |
- | * rezultatele simulării | + | * LED Rosu |
+ | * LED Albastru | ||
+ | * Display LED | ||
+ | * Rezistor 1k ohm | ||
</note> | </note> | ||
+ | ===== Schema electrica ===== | ||
+ | {{ :pm:prj2024:vstoica:security_alarm_schematic.png?800 |}} | ||
+ | {{ :pm:prj2024:vstoica:alarm_system.png?800 |}} | ||
===== Software Design ===== | ===== Software Design ===== | ||
+ | Mediul de dezvoltare: | ||
+ | * codul a fost scris in Arduino IDE. | ||
+ | * schema electrica a fost realizata in Tinkercad | ||
- | <note tip> | + | Am folosit biblioteca "LiquidCrystal" pentru afisarea pe Display-ul LCD. |
- | Descrierea codului aplicaţiei (firmware): | + | |
- | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | + | **Functia setup** - initializeaza hardware-ul si afiseaza un mesaj de inceput pe LCD. |
- | * librării şi surse 3rd-party (e.g. Procyon AVRlib) | + | <note> |
- | * algoritmi şi structuri pe care plănuiţi să le implementaţi | + | lcd.begin(16, 2); |
- | * (etapa 3) surse şi funcţii implementate | + | Serial.begin (9600); |
+ | pinMode(trigPin, OUTPUT); | ||
+ | pinMode(echoPin, INPUT); | ||
+ | pinMode(buzzer,OUTPUT); | ||
+ | pinMode(PIN_RED, OUTPUT); | ||
+ | pinMode(PIN_GREEN, OUTPUT); | ||
+ | pinMode(PIN_BLUE, OUTPUT); | ||
+ | lcd.print("Starting System"); | ||
+ | delay(1500); | ||
+ | lcd.clear(); | ||
+ | lcd.print("System On"); | ||
+ | delay(4000); | ||
+ | </note> | ||
+ | |||
+ | **Functia loop**: | ||
+ | * Calculeaza distanta si delay-ul pentru buzzer: | ||
+ | <note> | ||
+ | duration = pulseIn(echoPin, HIGH); | ||
+ | distance = (duration / 2) / 29.1; | ||
+ | new_delay = (distance * 3) + 30; | ||
+ | </note> | ||
+ | |||
+ | * In functie de distanta schimba culoarea LED-ului si scrie starea curenta pe LCD: | ||
+ | <note> | ||
+ | if (distance < 50) | ||
+ | { | ||
+ | digitalWrite(buzzer, HIGH); | ||
+ | delay(new_delay); | ||
+ | if (distance < 10){ | ||
+ | setColor(255, 0, 0); | ||
+ | lcd.setCursor(0, 0); | ||
+ | lcd.print("High Risk "); | ||
+ | lcd.setCursor(0, 11); | ||
+ | lcd.print("Glowing RED "); | ||
+ | } | ||
+ | else if (distance < 25){ | ||
+ | setColor(255, 32, 0); | ||
+ | lcd.setCursor(0, 0); | ||
+ | lcd.print("Medium Risk "); | ||
+ | lcd.setCursor(0, 11); | ||
+ | lcd.print("Glowing Orange "); | ||
+ | } | ||
+ | else { | ||
+ | setColor(255, 255, 0); | ||
+ | lcd.setCursor(0, 0); | ||
+ | lcd.print("Low Risk "); | ||
+ | lcd.setCursor(0, 11); | ||
+ | lcd.print("Glowing Yellow "); | ||
+ | } | ||
+ | digitalWrite(buzzer,LOW); | ||
+ | } | ||
+ | else | ||
+ | { | ||
+ | digitalWrite(buzzer,LOW); | ||
+ | setColor(0, 255, 0); | ||
+ | lcd.setCursor(0, 0); | ||
+ | lcd.print("No Risk "); | ||
+ | lcd.setCursor(0, 11); | ||
+ | lcd.print("Glowing Green "); | ||
+ | } | ||
+ | delay(200); | ||
+ | } | ||
</note> | </note> | ||