Differences

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

Link to this comparison view

pm:prj2022:arosca:senzorparcare [2022/05/23 20:02]
theodor.grigoras [Software Design]
pm:prj2022:arosca:senzorparcare [2022/05/23 21:03] (current)
theodor.grigoras [Descriere generală]
Line 4: Line 4:
 ===== Introducere ===== ===== Introducere =====
  
-Proiectul ​consta in implementarea unui sistem care simuleaza functionalitatea ​senzorilor de parcare de pe masinile ​moderne. +Proiectul ​constă în implementarea unui sistem care simulează funcționalitatea ​senzorilor de parcare de pe mașinile ​moderne. 
-Sistemul are la baza trei senzori ultrasonici de distanta ​care scaneaza trei zone diferite, iar cand un obiect se afla la o distanta ​seminficativ de mica, utilizatorul va fi anuntat.+Sistemul are la bază trei senzori ultrasonici de distanță ​care scaneaza trei zone diferite, iar cand un obiect se află la o distanță ​seminficativ de mică, utilizatorul va fi anunțat.
 ===== Descriere generală ===== ===== Descriere generală =====
  
-Senzorul Ultrasonic de distanta ​HC-SR04 este un sensor cu un timp de raspuns ​foarte mic, dar in cazul in care obiectul se afla la o distanta ​foarte ​mica, rezultatele ​obtinute ​sunt invalideIn cadrul proiectului,​ am folosit trei astfel de senzori, conectivitatea cu placa Arduino ​facandu-se cu ajutorul unui Breadboard. Senzorul este format din 4 pini: VCC, GND, Echo si Trigger. +Senzorul Ultrasonic de distanță ​HC-SR04 este un sensor cu un timp de răspuns ​foarte mic, dar în cazul in care obiectul se află la o distanță ​foarte ​mică, rezultatele ​obținute ​sunt eronateÎn cadrul proiectului,​ am folosit trei astfel de senzori, conectivitatea cu placa Arduino ​făcându-se cu ajutorul unui Breadboard. Senzorul este format din 4 pini: VCC, GND, Echo si Trigger. 
-Pentru a functiona, Trigger Pin-ul senzorului are nevoie de un implus de cel putin 10µS, moment ​in care senzorul va trimite 8 impulsuri de 40KHz care formeaza ​"​unda ​ultrasonica"​. ​In momentul ​in care unda intalneste ​un obiect ​in calea ei, se reflecta, iar aceasta ​unda este  ​receptata ​de catre Pin-ul ECHO, dupa o durata ​de timp, care va fi transformata in distanta.+Pentru a funcționa, Trigger Pin-ul senzorului are nevoie de un implus de cel puțin ​10µS, moment ​în care senzorul va trimite 8 impulsuri de 40KHz care formează ​"​unda ​ultrasonică"​. ​În momentul ​în care unda intâlnește ​un obiect ​în calea ei, se reflectă, iar această ​unda este  ​receptată ​de catre Pin-ul ECHO, dupa o durată ​de timp, care va fi transformată în distanță.
  
-Matricea de LED-uri 8x8, vine impreuna cu un modul MAX7291, pentru a minimiza numarul de pini folositi ​si pentru a putea folosi o biblioteca aditionala ​Arduino (LedControl.h). Modulul foloseste 5 pini: VCC, GND, DIN, CS si CLK care sunt legati ​de placa Ardunio cu ajutorul unui Breadboard.+Matricea de LED-uri 8x8, vine impreuna cu un modul MAX7291, pentru a minimiza numarul de pini folosiți ​si pentru a putea folosi o bibliotecă adiționala ​Arduino (LedControl.h). Modulul foloseste 5 pini: VCC, GND, DIN, CS si CLK care sunt legați ​de placa Ardunio cu ajutorul unui Breadboard.
  
 ==== Schema bloc ==== ==== Schema bloc ====
Line 41: Line 41:
 **printByte** este o funcție care afișează o matrice de 8x8 biți (afișarea se face linie cu linie). **printByte** este o funcție care afișează o matrice de 8x8 biți (afișarea se face linie cu linie).
  
-  ​#include <​LedControl.h>​+<code java> 
 +#include <​LedControl.h>​ 
 + 
 +const int echoPinRight = 8; 
 +const int trigPinRight = 9; 
 + 
 +const int echoPinLeft = 10; 
 +const int trigPinLeft = 11; 
 + 
 +const int echoPinBack = 2; 
 +const int trigPinBack = 3; 
 + 
 +const int BUZZER = 12; 
 + 
 +const int DIN =  7; 
 +const int CS = 6; 
 +const int CLK = 5; 
 + 
 +LedControl lc = LedControl(DIN,​ CLK, CS, 0); 
 + 
 +long duration; 
 +int distance; 
 + 
 +int distanceRight;​ 
 +int distanceLeft;​ 
 +int distanceBack;​ 
 + 
 +int safetyDistance = 3; 
 + 
 +void setup() { 
 +  // put your setup code here, to run once: 
 +  pinMode(echoPinRight,​ INPUT); 
 +  pinMode(trigPinRight,​ OUTPUT); 
 + 
 +  pinMode(echoPinLeft,​ INPUT); 
 +  pinMode(trigPinLeft,​ OUTPUT); 
 + 
 +  pinMode(echoPinBack,​ INPUT); 
 +  pinMode(trigPinBack,​ OUTPUT); 
 + 
 +  pinMode(BUZZER,​ OUTPUT); 
 + 
 +  lc.shutdown(0,​ false); 
 +  lc.setIntensity(0,​ 1); 
 +  lc.clearDisplay(0);​
   ​   ​
-  ​const int echoPinRight = 8; +  ​Serial.begin(9600); 
-  const int trigPinRight = 9; +} 
-   + 
-  const int echoPinLeft = 10; +void loop() { 
-  const int trigPinLeft = 11; +  // put your main code here, to run repeatedly
-   +  byte initial[8] = {0b111111110b100000010b10000001, 0b10000001, 0b10000001, 0b10000001, 0b10000001, 0b10000001}; 
-  const int echoPinBack = 2; + 
-  const int trigPinBack = 3; +  ​// obtain the distance from every sensor 
-   +  ​SonarSensor(trigPinLeftechoPinLeft); 
-  const int BUZZER = 12; +  ​distanceLeft = distance; 
-   + 
-  const int DIN =  7; +  ​SonarSensor(trigPinRightechoPinRight); 
-  const int CS = 6; +  ​distanceRight = distance; 
-  const int CLK = 5; + 
-   +  SonarSensor(trigPinBack, ​echoPinBack); 
-  LedControl lc = LedControl(DIN, CLK, CS, 0); +  ​distanceBack = distance; 
-   + 
-  long duration; +  ​// check the distance 
-  int distance; +  if(distanceBack < safetyDistance || distanceRight < safetyDistance || distanceLeft < safetyDistance{ 
-   +    ​digitalWrite(BUZZERHIGH); 
-  int distanceRight;​ +  } else { 
-  int distanceLeft;​ +    ​digitalWrite(BUZZER, LOW);
-  int distanceBack;​ +
-   +
-  int safetyDistance = 3; +
-   +
-  ​void setup() { +
-    // put your setup code here, to run once+
-    ​pinMode(echoPinRightINPUT); +
-    pinMode(trigPinRightOUTPUT)+
-   +
-    ​pinMode(echoPinLeftINPUT); +
-    ​pinMode(trigPinLeft,​ OUTPUT)+
-  ​ +
-    pinMode(echoPinBackINPUT); +
-    ​pinMode(trigPinBack, ​OUTPUT); +
-   +
-    ​pinMode(BUZZER,​ OUTPUT); +
-   +
-    ​lc.shutdown(0, false); +
-    ​lc.setIntensity(01); +
-    ​lc.clearDisplay(0);​ +
-    ​ +
-    Serial.begin(9600);+
   }   }
-  ​ + 
-  ​void loop() { +  ​// set distance matrix according to all sensors 
-    ​// put your main code here, to run repeatedly:​ +  if(distanceBack < 7) { 
-    byte initial[8] = {0b11111111,​ 0b10000001, 0b10000001, 0b10000001, 0b10000001, 0b10000001, 0b10000001, 0b10000001}+    initial[1] = initial[0]
-  ​ +  ​} 
-    // obtain the distance from every sensor +  ​if(distanceBack < safetyDistance{ 
-    SonarSensor(trigPinLeft,​ echoPinLeft);​ +    ​initial[2] ​initial[0]
-    distanceLeft = distance; +  ​} 
-  ​ + 
-    SonarSensor(trigPinRight,​ echoPinRight); +  if(distanceLeft < 7) { 
-    ​distanceRight ​distance+    for(int i = 0i < 8; i++) 
-   +      ​initial[i] = initial[i] | 0b01000000;
-    ​SonarSensor(trigPinBack,​ echoPinBack);​ +
-    distanceBack = distance; +
-  ​ +
-    // check the distance +
-    ​if(distanceBack < safetyDistance || distanceRight < safetyDistance || distanceLeft < safetyDistance) { +
-      ​digitalWrite(BUZZER, HIGH); +
-    } else +
-      ​digitalWrite(BUZZER,​ LOW);+
     }     }
-   +  ​} 
-    // set distance matrix according to all sensors + 
-    if(distanceBack ​7) { +  if(distanceLeft ​safetyDistance) { 
-      initial[1] = initial[0];+    for(int i = 0; i < 8; i++) { 
 +      initial[i] = initial[i| 0b00100000;
     }     }
-    ​if(distanceBack ​safetyDistance) { +  } 
-      initial[2] = initial[0];+ 
 +  ​if(distanceRight ​7) { 
 +    for(int i = 0; i < 8; i++) { 
 +      initial[i] = initial[i| 0b00000010;
     }     }
-  ​ 
-    if(distanceLeft < 7) { 
-      for(int i = 0; i < 8; i++) { 
-        initial[i] = initial[i] | 0b01000000; 
-      } 
-    } 
-  ​ 
-    if(distanceLeft < safetyDistance) { 
-      for(int i = 0; i < 8; i++) { 
-        initial[i] = initial[i] | 0b00100000; 
-      } 
-    } 
-  ​ 
-    if(distanceRight < 7) { 
-      for(int i = 0; i < 8; i++) { 
-        initial[i] = initial[i] | 0b00000010; 
-      } 
-    } 
-  ​ 
-    if(distanceRight < safetyDistance) { 
-      for(int i = 0; i < 8; i++) { 
-        initial[i] = initial[i] | 0b00000100; 
-      } 
-    } 
-  ​ 
-  ​ 
-    // print the matrix on LED Matrix 
-    printByte(initial); ​ 
   }   }
-  ​ + 
-  ​void SonarSensor(int trigPin,int echoPin) { +  ​if(distanceRight < safetyDistance) { 
-    ​// disable the trigger pin +    for(int i = 0; i < 8; i++) { 
-    digitalWrite(trigPin,​ LOW); +      ​initial[i] = initial[i] | 0b00000100;
-    delayMicroseconds(2);​ +
-   +
-    // enable the trigger pin for 10 microseconds +
-    digitalWrite(trigPin, HIGH); +
-    delayMicroseconds(10);​ +
-    digitalWrite(trigPin,​ LOW); +
-   +
-    // receive the duration +
-    duration = pulseIn(echoPin,​ HIGH); +
-    distance = duration * 0.034 / 2; +
-  } +
-   +
-   +
-  void printByte(byte character []) { +
-    ​int i = 0; +
-    for(i = 0; i < 8; i ++) { +
-      ​lc.setRow(0, ​i, character[i]);+
     }     }
   }   }
-===== Rezultate Obţinute ===== 
  
-<note tip> 
-Care au fost rezultatele obţinute în urma realizării proiectului vostru. 
-</​note>​ 
  
 +  // print the matrix on LED Matrix
 +  printByte(initial); ​
 +}
 +
 +void SonarSensor(int trigPin,int echoPin) {
 +  // disable the trigger pin
 +  digitalWrite(trigPin,​ LOW);
 +  delayMicroseconds(2);​
 +
 +  // enable the trigger pin for 10 microseconds
 +  digitalWrite(trigPin,​ HIGH);
 +  delayMicroseconds(10);​
 +  digitalWrite(trigPin,​ LOW);
 +
 +  // receive the duration
 +  duration = pulseIn(echoPin,​ HIGH);
 +  distance = duration * 0.034 / 2;
 +}
 +
 +
 +void printByte(byte character []) {
 +  int i = 0;
 +  for(i = 0; i < 8; i ++) {
 +    lc.setRow(0,​ i, character[i]);​
 +  }
 +}
 +</​code>​
 +===== Rezultate Obţinute =====
 +{{:​pm:​prj2022:​arosca:​theo-rezultate1.jpeg?​600x400|}}
 +{{:​pm:​prj2022:​arosca:​theo-rezultate2.jpeg?​600x400|}}
 +{{:​pm:​prj2022:​arosca:​theo-rezultate3.jpeg?​600x400|}}
 +{{:​pm:​prj2022:​arosca:​theo-rezultate4.jpeg?​600x400|}}
 +{{:​pm:​prj2022:​arosca:​theo-rezultate5.jpeg?​600x400|}}
 +{{:​pm:​prj2022:​arosca:​theo-rezultate6.jpeg?​600x400|}}
 ===== Concluzii ===== ===== Concluzii =====
  
-===== Download =====+Fiind primul meu proiect de acest tip, am învățat lucruri noi si utile printre care și lipirea folosind Letcon.
  
-<note warning>​ +problemă prezentă in proiect sunt senzoriifiind niște senzori basicin momentul in care distanța față ​de obiect este mai mică de 2cm, senzorul începe sa ofere rezultate eronate.
-arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului:​ surseschemeetc. 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**+Proiectul poate fi folositor în cazul în care vrem să construim o mașinuța electrică si dorim ca această mașină sa dispună de un sistem ajutător pentru parcare
-</​note>​+
 +===== Download =====
  
 +{{:​pm:​prj2022:​arosca:​parking_helper.zip|Arhiva Proiectului}}
 ===== Jurnal ===== ===== Jurnal =====
- +  * **29 aprilie 2022**: crearea paginii de wiki, alegerea temei proiectului 
-<note tip> +  * **22 mai 2022**: introducere,​ componente utilizate 
-Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. +  * **23 mai 2022**: finalizare proiect(parte software, parte hardware, descriere generală, schemă bloc, schemă electrică)
-</​note>​ +
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
  
-<​note>​ +  * [[https://​lastminuteengineers.com/​arduino-sr04-ultrasonic-sensor-tutorial/​|HC-SR04 Ultrasonic Sensor]] 
-Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. +  ​[[https://​www.electronicshub.org/​arduino-led-matrix/​|8x8 LED Matrix]] 
-</note>+  * [[https://​xantorohara.github.io/​led-matrix-editor/|8x8 LED Matrix generator]]
  
 <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​ <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​
  
pm/prj2022/arosca/senzorparcare.1653325376.txt.gz · Last modified: 2022/05/23 20:02 by theodor.grigoras
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