This shows you the differences between two versions of the page.
pm:prj2022:rstanescu:blind_hand_assist_👨_🦯 [2022/06/02 01:38] florian_luis.micu [Rezultate Obţinute] |
pm:prj2022:rstanescu:blind_hand_assist_👨_🦯 [2022/06/02 16:38] (current) florian_luis.micu [Introducere] |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== Blind Hand Assist 👨🦯 ====== | ====== Blind Hand Assist 👨🦯 ====== | ||
+ | <note tip> | ||
+ | **Autor:** Micu Florian-Luis | ||
+ | </note> | ||
+ | |||
===== Introducere ===== | ===== Introducere ===== | ||
Line 60: | Line 64: | ||
===== Software Design ===== | ===== Software Design ===== | ||
+ | |||
+ | <html> | ||
+ | <font size="+1">Mediul de dezvoltare</font> | ||
+ | <br> | ||
+ | </html> | ||
Mediul de dezvoltare folosit a fost Android Studio IDE, programarea fiind facuta in C. Biblioteca standard Arduino a fost folosita pentru a usura programarea pe ATmega328P. | Mediul de dezvoltare folosit a fost Android Studio IDE, programarea fiind facuta in C. Biblioteca standard Arduino a fost folosita pentru a usura programarea pe ATmega328P. | ||
- | Librarii externe: | + | <html> |
+ | <br> | ||
+ | <font size="+1">Librarii externe</font> | ||
+ | <br> | ||
+ | </html> | ||
* [[https://www.arduino.cc/reference/en/libraries/dht-sensor-library/|DHT by Adafruit]] | * [[https://www.arduino.cc/reference/en/libraries/dht-sensor-library/|DHT by Adafruit]] | ||
* [[https://www.arduino.cc/reference/en/libraries/adafruit-mlx90614-library/|Adafruit_MLX90614 by Adafruit]] | * [[https://www.arduino.cc/reference/en/libraries/adafruit-mlx90614-library/|Adafruit_MLX90614 by Adafruit]] | ||
- | Functii folosite: | + | <html> |
+ | <br> | ||
+ | <font size="+1">Functii folosite</font> | ||
+ | <br> | ||
+ | </html> | ||
<code C> | <code C> | ||
// Receive distance from ultrasonic proximity sensor | // Receive distance from ultrasonic proximity sensor | ||
Line 91: | Line 110: | ||
</code> | </code> | ||
- | Pasi algoritm: | + | <html> |
+ | <br> | ||
+ | <font size="+1">Pasi algoritm</font> | ||
+ | <br> | ||
+ | </html> | ||
- Se initializeaza Timer1 astfel incat sa se declanseze o intrerupere la fiecare 2.8s: | - Se initializeaza Timer1 astfel incat sa se declanseze o intrerupere la fiecare 2.8s: | ||
- Se activeaza intreruperile pe Timer1 in functia **init_timer1()**. | - Se activeaza intreruperile pe Timer1 in functia **init_timer1()**. | ||
Line 125: | Line 149: | ||
Adafruit_MLX90614 mlx = Adafruit_MLX90614(); | Adafruit_MLX90614 mlx = Adafruit_MLX90614(); | ||
float duration, distance, celsius, temp, hum, speed_of_sound = 343; | float duration, distance, celsius, temp, hum, speed_of_sound = 343; | ||
- | unsigned char halfSecondsPassed = 2, isProximitySelected = 0; | + | unsigned char twoSecondsPassed = 2, isProximitySelected = 0; |
// Receive distance from ultrasonic proximity sensor | // Receive distance from ultrasonic proximity sensor | ||
Line 168: | Line 192: | ||
ISR(TIMER1_COMPA_vect) { | ISR(TIMER1_COMPA_vect) { | ||
// If 5 seconds have elapsed -> read temp & humidity | // If 5 seconds have elapsed -> read temp & humidity | ||
- | if (halfSecondsPassed >= 2) { | + | if (twoSecondsPassed >= 2) { |
temp = dht.readTemperature(); | temp = dht.readTemperature(); | ||
hum = dht.readHumidity(); | hum = dht.readHumidity(); | ||
Line 179: | Line 203: | ||
speed_of_sound = 331.4f + (0.606f * temp) + (0.0124f * hum); | speed_of_sound = 331.4f + (0.606f * temp) + (0.0124f * hum); | ||
| | ||
- | halfSecondsPassed = 0; | + | twoSecondsPassed = 0; |
} else { | } else { | ||
- | ++halfSecondsPassed; | + | ++twoSecondsPassed; |
} | } | ||
} | } | ||
Line 292: | Line 316: | ||
{{:pm:prj2022:rstanescu:blind_mana.jpeg?200 }} | {{:pm:prj2022:rstanescu:blind_mana.jpeg?200 }} | ||
- | {{:pm:prj2022:rstanescu:device_blind.jpeg?315x304 }} | + | {{:pm:prj2022:rstanescu:device_blind.jpeg?320x315 }} |
- | {{:pm:prj2022:rstanescu:blind_palma.jpeg?190x304}} | + | {{:pm:prj2022:rstanescu:blind_palma.jpeg?200x315}} |
Device-ul sta bine pe mana, nu se incalzeste, feedback-ul motorului de vibratii/buzzer este usor de simtit/auzit, LED-urile se vad clar, iar intrerupatoarele verticale sunt usor de comutat. Butonul de RESET extern e mult mai usor de apasat decat cel standard de pe Arduino NANO, iar bateria externa face device-ul portabil fara sa fie prea greu. Circuitul functioneaza asa cum ar trebui, cand se depasesc valorile de threshold device-ul porneste feedback-ul si toate componentele reactioneaza la schimbarile facute din intrerupatoarele verticale in timp real datorita delay-ului mic. | Device-ul sta bine pe mana, nu se incalzeste, feedback-ul motorului de vibratii/buzzer este usor de simtit/auzit, LED-urile se vad clar, iar intrerupatoarele verticale sunt usor de comutat. Butonul de RESET extern e mult mai usor de apasat decat cel standard de pe Arduino NANO, iar bateria externa face device-ul portabil fara sa fie prea greu. Circuitul functioneaza asa cum ar trebui, cand se depasesc valorile de threshold device-ul porneste feedback-ul si toate componentele reactioneaza la schimbarile facute din intrerupatoarele verticale in timp real datorita delay-ului mic. | ||
Line 301: | Line 325: | ||
**Demo**: [[https://drive.google.com/file/d/1G7MHPrO86pYo-JvBRKALRmaNPt_k13g9/view?usp=sharing|aici]] | **Demo**: [[https://drive.google.com/file/d/1G7MHPrO86pYo-JvBRKALRmaNPt_k13g9/view?usp=sharing|aici]] | ||
- | Valori demo: | + | <note tip> |
+ | Valorile pentru demo au fost urmatoarele: | ||
* threshold temperatura intre 27.0 si 35.0 grade Celsius | * threshold temperatura intre 27.0 si 35.0 grade Celsius | ||
* threshold distanta intre 5.0cm si 80.0cm | * threshold distanta intre 5.0cm si 80.0cm | ||
+ | </note> | ||
===== Concluzii ===== | ===== Concluzii ===== | ||
- | Acest proiect m-a ajutat foarte mult sa imi dezvolt cunostintele de electronica. Am inteles mai bine cum functioneaza un microcontroller, cum se leaga anumite piese la el si in final am reusit sa imi construiesc propriul device functional, fiind chiar o experienta interesanta. Legarea pieselor pe perfboard nu a fost deloc usoara, a fost nevoie de multe iteratii pana sa inteleg cum ar trebui sa creez legaturi mai optim si care sa fie si rezistente, dar la final am evoluat si sunt satisfacut cu sudurile mele. | + | Pe partea de **hardware**, legarea pieselor pe perfboard nu a fost deloc usoara, a fost nevoie de multe iteratii pana sa inteleg cum ar trebui sa creez legaturi mai optime si care sa fie si rezistente, dar la final am evoluat si sunt satisfacut cu sudurile mele. Totodata, am invatat sa citesc mai bine datasheet-urile pieselor ceea ce m-a ajutat enorm la schema electrica cat si la configurarea circuitului. Pentru debug, am folosit un multimetru ca sa masor continuitatea, amperajul si voltajul pe circuit, inainte si dupa fiecare sudura. |
+ | |||
+ | Pe partea de **software**, nu am avut deloc probleme deoarece exista tutoriale vaste pentru fiecare piesa din circuitul meu, iar biblioteciile care le acompaniaza fac toata munca grea (ma refer la senzorul IR care comunica prin protocolul I2C, ceea ce ar fi fost destul de complicat de facut de la zero). Pentru debug, am folosit interfata seriala USART in care mi-am printat anumite valori din program si am incercat si varianta brute-force in care inserez valori si vad fizic cum se comporta device-ul. | ||
+ | |||
+ | Drept urmare, **experienta** de a lucra la acest proiect m-a ajutat foarte mult sa imi dezvolt cunostintele de electronica. Am inteles mai bine cum functioneaza un microcontroller, cum se leaga anumite piese la el si in final am reusit sa imi construiesc propriul device functional, fiind chiar o experienta interesanta. | ||
===== Download ===== | ===== Download ===== | ||
[[https://ocw.cs.pub.ro/courses/_media/pm/prj2022/rstanescu/schema_bloc_blind.png|Schema Bloc]] | [[https://ocw.cs.pub.ro/courses/_media/pm/prj2022/rstanescu/schema_bloc_blind.png|Schema Bloc]] | ||
Line 320: | Line 350: | ||
* 08.05.2022 → Alegere tema proiect | * 08.05.2022 → Alegere tema proiect | ||
- | * 15.05.2022 → Completare milestone: Introducere, Descriere, Schema Bloc si Componente | + | * 15.05.2022 → Completare Milestone 1: Introducere, Descriere, Schema Bloc si Componente |
- | * 28.05.2022 → Completare pagina Wiki: Schema Electrica, Software Design, Rezultate, Bibliografie | + | * 28.05.2022 → Completare Milestone 2: Schema Electrica, Software Design, Rezultate, Concluzii, Bibliografie |
===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||