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