Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2021:dbrigalda:blind_assistant [2021/06/04 00:34]
oana.diaconescu0512
pm:prj2021:dbrigalda:blind_assistant [2021/06/04 02:31] (current)
oana.diaconescu0512
Line 9: Line 9:
 In implementarea proiectului am pornit de la ideea de a oferi o alternativa mai putin costisitoare la tehnologiile deja existente pentru persoane nevazatoare. In plus, dispozitivul functioneaza fara Internet, deci este accesibil si simplu de utilizat. In implementarea proiectului am pornit de la ideea de a oferi o alternativa mai putin costisitoare la tehnologiile deja existente pentru persoane nevazatoare. In plus, dispozitivul functioneaza fara Internet, deci este accesibil si simplu de utilizat.
 ===== Descriere generală ===== ===== Descriere generală =====
-{{ :​pm:​prj2021:​dbrigalda:​schema_bloc_smart_cane.png?nolink&700 |}}+ 
 +{{ :​pm:​prj2021:​dbrigalda:​schema_bloc_smart_cane.jpg.jpg?direct&700 |}}
  
 Detectia obstacolelor se realizeaza pe baza senzorului de distanta. Distanta se citeste in mod continuu de catre senzor, iar in momentul in care aceasta depaseste o limita prestabilita se declanseaza buzzer-ul sau motorul cu vibratie. La apasarea unui buton se poate activa sau dezactiva modul silentios, selectand una dintre cele doua forme de feedback. ​ Detectia obstacolelor se realizeaza pe baza senzorului de distanta. Distanta se citeste in mod continuu de catre senzor, iar in momentul in care aceasta depaseste o limita prestabilita se declanseaza buzzer-ul sau motorul cu vibratie. La apasarea unui buton se poate activa sau dezactiva modul silentios, selectand una dintre cele doua forme de feedback. ​
  
-Detectia culorii se efectueaza prin intermediul senzorului de culoare, capabil sa intoarca valoarea RGB asociata culorii unui obiect. Pentru a determina culoarea obiectului, utilizatorul il apropie de fotodioda ​si apasa un buton care declanseaza functia de citire a datelor de la senzor.+Detectia culorii se efectueaza prin intermediul senzorului de culoare, capabil sa intoarca valoarea RGB asociata culorii unui obiect. Pentru a determina culoarea obiectului, utilizatorul il apropie de fotodiodele plasate central ​si apasa un buton care declanseaza functia de citire a datelor de la senzor.
  
 Functia de navigatie este limitata la un traseu prestabilit,​ ale carui coordonate se incarca pe cardul microSD. Modulul GPS furnizeaza locatia utilizatorului in timp real, iar aceasta este comparata cu traseul salvat in memorie pentru a transmite indicatii despre directia de mers. Functia de navigatie este limitata la un traseu prestabilit,​ ale carui coordonate se incarca pe cardul microSD. Modulul GPS furnizeaza locatia utilizatorului in timp real, iar aceasta este comparata cu traseul salvat in memorie pentru a transmite indicatii despre directia de mers.
Line 33: Line 34:
   * 2 Butoane   * 2 Butoane
   * Breadboard   * Breadboard
-{{ :​pm:​prj2021:​dbrigalda:​pm_schema_smart_cane.png?​nolink&700 |}}+{{ :​pm:​prj2021:​dbrigalda:​pm_schema_smart_cane.png?​direct&700 |}}
  
 ===== Software Design ===== ===== Software Design =====
Line 39: Line 40:
 ===Detectia Obstacolelor=== ===Detectia Obstacolelor===
  
-Senzorul de distanta emite un ultrasunet de 40kHz care travereseaza mediul pana la intalnirea unui obstacol, moment in care se reflecta inapoi catre acesta. ​Astfel, distanta ​fata de obiect se calculeaza in functie de viteza sunetului si de timpul de propagare al undei. Functia Arduino corespunzatoare activeaza pinul "​Trigger"​ care transmite unda ultrasonica si citeste output-ul pe pin-ul "​Echo"​ folosind functia pulseIn(). Aceasta functie intoarce timpul dintre momentul in care unda ultrasonica este transmisa (si are loc o tranzitie a pinului "​Echo"​ de la LOW la HIGH) si momentul in care unda este receptionata inapoi (si pinul "​Echo"​ devine LOW). Distanta va fi calculata ca:+Senzorul de distanta emite un ultrasunet de 40kHz care travereseaza mediul pana la intalnirea unui obstacol, moment in care se reflecta inapoi catre acesta. ​Distanta ​fata de obiect se calculeaza in functie de viteza sunetului si de timpul de propagare al undei. Functia Arduino corespunzatoare activeaza pinul "​Trigger"​ care transmite unda ultrasonica si citeste output-ul pe pin-ul "​Echo"​ folosind functia ​[[https://​www.arduino.cc/​reference/​en/​language/​functions/​advanced-io/​pulsein/​|pulseIn()]]. Aceasta functie intoarce timpul dintre momentul in care unda ultrasonica este transmisa (si are loc o tranzitie a pinului "​Echo"​ de la LOW la HIGH) si momentul in care unda este receptionata inapoi (si pinul "​Echo"​ devine LOW). Distanta va fi calculata ca:
 $$ $$
 d = \frac {t_{propagare} * v_{sunet}}{2} d = \frac {t_{propagare} * v_{sunet}}{2}
Line 50: Line 51:
 ===Navigatie=== ===Navigatie===
  
-Traseul utilizat in testarea functiei de navigatie a fost stocat pe cardul microSD sub forma unui fisier .txt. Fiecare linie a fisierului contine coordonatele unui punct de interes (intersectie a doua strazi, cotitura, etc.), impreuna cu un cod asociat directiei in care utilizatorul trebuie sa mearga in continuare.+Traseul utilizat in testarea functiei de navigatie a fost stocat pe cardul microSD sub forma unui fisier .txt. Fiecare linie a fisierului contine coordonatele unui punct de interes (intersectie a doua strazi, cotitura, etc.), impreuna cu un cod asociat directiei in care utilizatorul trebuie sa mearga in continuare. Pentru a folosi modulul microSD am inclus biblioteca Arduino [[https://​www.arduino.cc/​en/​reference/​SD|SD.h]].
  
-{{ :​pm:​prj2021:​dbrigalda:​smart_cane_4.png?nolink&200 |}}+{{ :​pm:​prj2021:​dbrigalda:​smart_cane_coords_jpg.jpg?direct&200 |}}
  
-Pentru citirea valorilor de la modulul GPS am folosit biblioteca //NeoWSerial// care permite comunicarea seriala pe orice pini digitali. Datele receptionate le-am parsat folosind biblioteca //TinyGPS//, obtinand coordonatele sub forma de latitudine si longitudine.+Pentru citirea valorilor de la modulul GPS am folosit biblioteca ​[[https://github.com/SlashDevin/NeoSWSerial|NeoSWSerial]] ​care permite comunicarea seriala pe orice pini digitali ​pe langa pinii seriali nativi 0 si 1. Datele receptionate le-am parsat folosind biblioteca ​[[https://www.arduino.cc/reference/en/​libraries/​tinygps/​|TinyGPS]], obtinand coordonatele sub forma de latitudine si longitudine.
  
-Functia de navigatie compara coordonatele de locatie ale utilizatorului cu coordonatele primului punct de intersectie. Cand se detecteaza ca utilizatorul intra in aria primei intersectii,​ ii se semnaleaza directia de mers si se incrementeaza pozitia sa pe traseu.+Functia de navigatie compara coordonatele de locatie ale utilizatorului cu coordonatele primului punct de intersectie. Cand se detecteaza ca utilizatorul intra in aria primei intersectii,​ ii se semnaleaza directia de mers si se incrementeaza pozitia sa pe traseu. Acelasi proces continua pana cand utilizatorul ajunge la destinatie.
  
 === App === === App ===
  
-Aplicatia de mobil a fost realizata pentru platforma Android folosind MIT App Inventor. Interfata este simpla si afiseaza rezultatele celor 3 functionalitati pentru a ilustra functionarea corecta a acestora. In plus, foloseste modulul "​Text-to-Speech"​ pentru a transmite comenzile primite de la Arduino in forma vocala. ​+Aplicatia de mobil a fost realizata pentru platforma Android folosind ​[[https://​appinventor.mit.edu|MIT App Inventor]]. Interfata este simpla si afiseaza rezultatele celor 3 functionalitati pentru a ilustra functionarea corecta a acestora. In plus, foloseste modulul "​Text-to-Speech"​ pentru a transmite comenzile primite de la Arduino in forma vocala. ​
  
-Comunicarea cu placuta Arduino se realizeaza prin intermediul modulului Bluetooth, care permite selectarea dispozitivului ​HC-05 pentru conectare si faciliteaza transmiterea de date. +Comunicarea cu placuta Arduino se realizeaza prin intermediul modulului Bluetooth, care permite selectarea dispozitivului pentru conectare si faciliteaza transmiterea de date.
- +
- +
-{{ :​pm:​prj2021:​dbrigalda:​smart_cane6.jpeg?​nolink&​500 |}}+
  
 +{{ :​pm:​prj2021:​dbrigalda:​smart_cane6.jpeg?​direct&​400 |}}
  
 Pentru comunicarea Bluetooth am folosit un principiu simplu, prin care se trimite un byte pe Serial corespunzator fiecarei comenzi: Pentru comunicarea Bluetooth am folosit un principiu simplu, prin care se trimite un byte pe Serial corespunzator fiecarei comenzi:
-  * 0, 1, 2, si 3 semnifica schimbarea directiei de mers la FRONT, LEFT, RIGHT sau TURN AROUND +  ​* **0****1****2**, si **3** semnifica schimbarea directiei de mers la FRONT, LEFT, RIGHT sau TURN AROUND 
-  * 4 sau 5 semnifica activarea/​dezactivarea modului silentios +  ​* **4** sau **5** semnifica activarea/​dezactivarea modului silentios 
-  * 6, 7, 8 si 9 semnifica identificarea ​una din culorile RED, BLUE, GREEN sau CLEAR +  ​* **6****7****8** si **9** semnifica identificarea ​uneia din culorile RED, BLUE, GREEN sau CLEAR (culoare necunoscuta)
- +
- +
-{{ :​pm:​prj2021:​dbrigalda:​smart_cane_blocks1.png?​nolink&​700 |}}+
  
 +{{ :​pm:​prj2021:​dbrigalda:​smart_cane_blocks_jpg.jpg?​direct&​700 |}}
  
 Aplicatia functioneaza in felul urmator: Aplicatia functioneaza in felul urmator:
-  * La primirea unui cod de culoare identifica culoarea potrivita, coloreaza casuta din interfata si transmite mesajul vocal: "​Red",​ "​Green"​ sau "​Blue"​ +  * La primirea unui cod de culoare identifica culoarea potrivita, coloreaza casuta din interfata si transmite mesajul vocal: "//Red//", "//Green//" sau "//Blue//
-  * La primirea unui cod care semnifica activarea sau dezactivarea modului silentios, schimba iconita si transmite mesajul vocal "​Silent mode On" sau "​Silent Mode Off" +  * La primirea unui cod care semnifica activarea sau dezactivarea modului silentios, schimba iconita si transmite mesajul vocal "//Silent mode On//" sau "//Silent Mode Off//
-  * La primirea unui cod care semnifica schimbarea directiei, modifica imaginea de pe ecran si transmite una din comenzile: "Walk straight ahead",​ "​Prepare to turn left.", "​Prepare to turn right" sau "Turn around"​.+  * La primirea unui cod care semnifica schimbarea directiei, modifica imaginea de pe ecran si transmite una din comenzile: "//Walk straight ahead//", "//Prepare to turn left//", "//Prepare to turn right//" sau "//Turn around//".
  
  
Line 86: Line 83:
 Proiectul indeplineste cu succes toate cele 3 functionalitati. Am aranjat componentele astfel incat dispozitivul sa fie usor de manevrat si de utilizat. Proiectul indeplineste cu succes toate cele 3 functionalitati. Am aranjat componentele astfel incat dispozitivul sa fie usor de manevrat si de utilizat.
  
-Ocazional, apar probleme din cauza lipsei de precizie a senzorilor. Senzorul GPS are o eroare de pana la 10 m, motiv pentru care nu poate determina cu precizie locatia utilizatorului,​ ci numai aria in care acesta se afla. Senzorul de culoare trebuie ajustat empiric in functie de masuratori proprii si astfel ​reuzltatele ​pot sa difere in functie de lumina ambientala.+Ocazional, apar probleme din cauza lipsei de precizie a senzorilor. Senzorul GPS are o eroare de pana la 10 m, motiv pentru care nu poate determina cu precizie locatia utilizatorului,​ ci numai aria in care acesta se afla. Senzorul de culoare trebuie ajustat empiric in functie de masuratori proprii si astfel ​rezultatele ​pot sa difere in functie de lumina ambientala.
  
-{{ :​pm:​prj2021:​dbrigalda:​smart_cane1.jpg?​nolink&300 |}} +{{ :​pm:​prj2021:​dbrigalda:​smart_cane1.jpg?​direct&300 |}} 
-{{ :​pm:​prj2021:​dbrigalda:​smart_cane_2.jpg?​nolink&500 |}} +{{ :​pm:​prj2021:​dbrigalda:​smart_cane_2.jpg?​direct&500 |}} 
-{{ :​pm:​prj2021:​dbrigalda:​smart_cane3.jpg?​nolink&500 |}}+{{ :​pm:​prj2021:​dbrigalda:​smart_cane3.jpg?​direct&500 |}}
  
 ===== Demo ===== ===== Demo =====
-[[https://​www.youtube.com/​watch?​v=dlPbu20nvBQ |{{ :​pm:​prj2021:​dbrigalda:​smart_cane_yt.png?nolink&600 |}}]]+[[https://​www.youtube.com/​watch?​v=dlPbu20nvBQ |{{ :​pm:​prj2021:​dbrigalda:​smart_cane_yt_jpg.jpg?direct&700 |}}]]
 ===== Concluzii ===== ===== Concluzii =====
 +Proiectul a fost interesant de realizat, dar a fost o provocare, in special pentru ca senzorii nu erau suficient de performanti si a trebuit sa adaptez ideea proiectului in functie de asta. Imi doream initial sa conectez aplicatia la un API care sa simplifice functia de navigatie, dar eroarea data de modulul GPS era prea mare pentru a permite realizarea unor rute dinamice de mers. La fel si in cazul senzorului de culoare, pe care am incercat sa il ajustez cat mai precis pentru a identifica un spectru mai larg de culori. Fiind reglat empiric insa depindea foarte mult de lumina ambientala si atunci in lumina mai puternica avea momente cand detecta verdele ca fiind rosu sau invers. :-/
  
 +Per total insa, mi-a placut sa lucrez la proiect, desi nu sunt foarte priceputa pe partea de hardware si nu m-am descurcat asa bine cu letcon-ul sau pistolul de lipit. ​ M-a impresionat in special faptul ca am reusit sa transform o idee care parea foarte abstracta in ceva care chiar functioneaza si are utilitate practica. Am descoperit intre timp ca exista [[https://​wewalk.io/​en/​|ceva asemanator]] pe piata, dar sunt multumita ca am reusit sa reproduc chiar si o functionalitate minimala a dispozitivului :-D.  Cu senzori mai buni si o dezvoltare a functiilor bastonului, cred ca ar putea deveni un ajutor real pentru persoanele nevazatoare.
  
 ===== Download ===== ===== Download =====
-Documentatie ​proiect:+Arhiva ​proiect:
 {{:​pm:​prj2021:​dbrigalda:​pm_smartcane_diaconescuoana.zip|}} {{:​pm:​prj2021:​dbrigalda:​pm_smartcane_diaconescuoana.zip|}}
  
Line 111: Line 110:
   * https://​create.arduino.cc/​projecthub/​muhammedazhar/​third-eye-for-the-blind-8c246d   * https://​create.arduino.cc/​projecthub/​muhammedazhar/​third-eye-for-the-blind-8c246d
  
-<note tip>​Documentația în format <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​PDF</​a></​html></​note>​+<note tip>​Documentația în format ​PDF <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​DiaconescuOana_SmartCane</​a></​html></​note>​
pm/prj2021/dbrigalda/blind_assistant.1622756065.txt.gz · Last modified: 2021/06/04 00:34 by oana.diaconescu0512
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0