Differences

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

Link to this comparison view

pm:prj2025:fstancu:dan.vrinceanu [2025/05/28 01:50]
dan.vrinceanu [Jurnal]
pm:prj2025:fstancu:dan.vrinceanu [2025/05/28 09:28] (current)
dan.vrinceanu [Main application flow]
Line 77: Line 77:
   * Mașina oprește orice mișcare și revine în modul manual.   * Mașina oprește orice mișcare și revine în modul manual.
   * LCD-ul afișează din nou: Mod: Manual   * LCD-ul afișează din nou: Mod: Manual
 +
 +==== Motivația Alegerii Bibliotecilor ====
 +
 +=== Arduino Libraries ===
 +
 +  ==== Motivația Alegerii Bibliotecilor ====
 +
 +=== ESP32 Robotics Libraries ===
 +
 +  #include <​DabbleESP32.h> ​      // Control Bluetooth cu aplicația mobilă Dabble (GamePad virtual)  ​
 +  #include <​ESP32Servo.h> ​       // Compatibilitate PWM pentru control precis al servomotoarelor pe ESP32  ​
 +  #include <​NewPing.h> ​          // Măsurători rapide și stabile cu senzorul ultrasonic HC-SR04  ​
 +  #include <​Wire.h> ​             // Comunicație I²C între ESP32 și periferice  ​
 +  #include <​LiquidCrystal_I2C.h>​ // Afișare text pe LCD 16x2 cu interfață I²C  ​
 +
 +Justificare:  ​
 +Am ales aceste biblioteci pentru a realiza un sistem robotic autonom cu control manual prin Bluetooth și feedback vizual.
 +
 +- `DabbleESP32` permite interacțiunea prin aplicația mobilă fără componente fizice externe.  ​
 +- `ESP32Servo` este necesară pentru compatibilitate cu PWM-ul specific ESP32, esențial în orientarea senzorului ultrasonic.  ​
 +- `NewPing` asigură măsurători eficiente ale distanței fără blocaje, utile pentru evitarea obstacolelor.  ​
 +- `Wire` este standard pentru comunicație I²C, permițând integrarea simplă a mai multor senzori sau afișaje.  ​
 +- `LiquidCrystal_I2C` oferă un mod convenabil de a afișa mesaje de stare, diagnostic sau feedback pentru utilizator.
 +
 +==== Laboratoarele ====
 +
 +=== Laboratorul 0: GPIO ===
 +Folosit pentru controlul pinilor digitali – pornirea/​opirea motoarelor, citirea stării senzorului IR.
 +
 +=== Laboratorul 1: UART ===
 +Utilizat pentru comunicarea serială cu computerul prin Serial.begin() – afişează mesaje de stare și debug.
 +
 +=== Laboratorul 3: Timere. PWM ===
 +PWM este folosit pentru a controla poziția servomotorului (ex: rotirea senzorului ultrasonic pentru detectarea obstacolelor).
 +
 +===  Laboratorul 6: I2C ===
 +
 +Folosit pentru comunicarea cu ecranul LCD 1602 prin interfața I2C – afişează mesaje despre obstacole, prăpastii sau conexiunea cu aplicația.
 +
 +==== Element de Noutate al Proiectului ====
 +
 +Integrarea controlului manual prin Bluetooth (Dabble) cu un sistem autonom de evitare a obstacolelor și prăpastiilor.  ​
 +Robotul poate schimba direcția și viteza în timp real, oferind feedback pe LCD și folosind un servomotor pentru scanare laterală.  ​
 +Această combinație de autonomie și interactivitate mobilă face proiectul versatil și inovator.
 +
 +==== Calibrarea senzorilor ====
 +Senzor ultrasonic (HC-SR04)
 +Am setat o distanță maximă de detecție (200 cm) și un prag pentru obstacol (20 cm).
 +Am testat valorile în monitorul serial pentru a verifica funcționarea corectă.
 +Senzor IR
 +Am calibrat detectarea marginii ca semnal LOW.
 +Am verificat comportamentul apropiind senzorul de o margine (ex. masă).
 +Servomotor + senzor ultrasonic
 +Am setat unghiuri fixe (50° și 130°) pentru scanare laterală.
 +Am verificat că senzorul măsoară distanța corect în ambele direcții.
 +
  
 ===== Main application flow ===== ===== Main application flow =====
Line 217: Line 273:
 void moveForward() void moveForward()
 { {
-  ​digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW); +  ​GPIO.out_w1ts = (1 << ​IN1) (1 << IN3); // Set IN1 și IN3 HIGH 
-  ​digitalWrite(IN3, HIGH); digitalWrite(IN4, LOW);+  ​GPIO.out_w1tc = (1 << IN2(1 << ​IN4); // Set IN2 și IN4 LOW
   Serial.println("​Înainte"​);​   Serial.println("​Înainte"​);​
 } }
Line 224: Line 280:
 void moveBackward() void moveBackward()
 { {
-  ​digitalWrite(IN1, LOW); digitalWrite(IN2, HIGH); +  ​GPIO.out_w1ts = (1 << IN2(1 << IN4); // Set IN2 și IN4 HIGH 
-  ​digitalWrite(IN3, LOW); digitalWrite(IN4, HIGH);+  ​GPIO.out_w1tc = (1 << IN1(1 << IN3); // Set IN1 și IN3 LOW
   Serial.println("​Înapoi"​);​   Serial.println("​Înapoi"​);​
 } }
Line 231: Line 287:
 void turnLeft() void turnLeft()
 { {
-  ​digitalWrite(IN1, LOW); digitalWrite(IN2, HIGH); +  ​GPIO.out_w1ts = (1 << IN2(1 << IN3); // IN2 și IN3 HIGH 
-  ​digitalWrite(IN3, HIGH); digitalWrite(IN4, LOW);+  ​GPIO.out_w1tc = (1 << IN1(1 << ​IN4); // IN1 și IN4 LOW
   Serial.println("​Stânga"​);​   Serial.println("​Stânga"​);​
 } }
Line 238: Line 294:
 void turnRight() void turnRight()
 { {
-  ​digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW); +  ​GPIO.out_w1ts = (1 << ​IN1) (1 << IN4); // IN1 și IN4 HIGH 
-  ​digitalWrite(IN3, LOW); digitalWrite(IN4, HIGH);+  ​GPIO.out_w1tc = (1 << IN2(1 << IN3); // IN2 și IN3 LOW
   Serial.println("​Dreapta"​);​   Serial.println("​Dreapta"​);​
 } }
Line 245: Line 301:
 void stopMotors() void stopMotors()
 { {
-  ​digitalWrite(IN1, LOW); digitalWrite(IN2, LOW)+  ​GPIO.out_w1tc = (1 << ​IN1) (1 << ​IN2) (1 << ​IN3) (1 << ​IN4); // Toți LOW
-  digitalWrite(IN3, LOW); digitalWrite(IN4, LOW);+
   Serial.println("​Oprire"​);​   Serial.println("​Oprire"​);​
 } }
Line 358: Line 413:
 {{:​pm:​prj2025:​fstancu:​img_2149.jpg?​260|}} {{:​pm:​prj2025:​fstancu:​img_2149.jpg?​260|}}
 } }
 +===== VIDEO =====
 +https://​www.youtube.com/​shorts/​16-T-_LEwkY
 +
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
 {{:​pm:​prj2025:​fstancu:​img_dan1.jpg?​307|}} {{:​pm:​prj2025:​fstancu:​img_dan1.jpg?​307|}}
Line 372: Line 430:
 LCD Help: LCD Help:
 https://​www.youtube.com/​watch?​v=860eErq9c3E>​ https://​www.youtube.com/​watch?​v=860eErq9c3E>​
 +
 +Piese:
 +https://​sigmanortec.ro
 +https://​www.optimusdigital.ro/​ro/​
  
pm/prj2025/fstancu/dan.vrinceanu.1748386243.txt.gz · Last modified: 2025/05/28 01:50 by dan.vrinceanu
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