This shows you the differences between two versions of the page.
pm:prj2024:tdicu:alexandra.burnichi [2024/05/26 23:43] alexandra.burnichi [Software Design] |
pm:prj2024:tdicu:alexandra.burnichi [2024/05/27 03:35] (current) alexandra.burnichi [Introducere] |
||
---|---|---|---|
Line 3: | Line 3: | ||
<note tip> | <note tip> | ||
- | Proiectul este reprezentat de un mic robotel de birou, creat special pentru a ii oferi utilizatorului interactiuni placute si a ajuta cu singuratatea. Acesta este dotat cu un senzor de atingere si unul de distanta, reactionand la factori externi prin expresii faciale care pot fi vazute pe ecranul sau LCD rotund. Are de asemenea si un servo care serveste la miscarea capului. Atunci cand este atins, robotelul devine fericit, iar atunci cand detecteaza pe cineva la o distanta mai mica de 10 cm, incepe sa isi scuture capul, entuziasmat. Atunci cand este ignorat, robotelul este trist. | + | |
+ | Proiectul este reprezentat de un mic robotel de birou, creat special pentru a ii oferi utilizatorului interactiuni placute si a ajuta cu singuratatea. Acesta este dotat cu un senzor de atingere si unul de distanta, reactionand la factori externi prin expresii faciale care pot fi vazute pe ecranul sau LCD. Are de asemenea si un servomotor care serveste la miscarea capului. | ||
</note> | </note> | ||
Line 10: | Line 11: | ||
<note tip> | <note tip> | ||
- | La atingere, ecranul va afisa o expresie faciala fericita. Atunci cand nu mai este atins, robotelul devine trist, iar atunci cand senzorul detecteaza miscare, robotelul devine entuziasmat, anticipand afectiune. | + | La atingerea senzorului, robotelul devine fericit, iar atunci cand detecteaza (cu ajutorul HC-SR04) pe cineva la o distanta mai mica de 10 cm, incepe sa isi scuture capul, entuziasmat (cu ajutorul servomotorului). Atunci cand este ignorat, robotelul este trist. |
</note> | </note> | ||
Line 24: | Line 26: | ||
- ESP32 | - ESP32 | ||
- LCD ST7735 | - LCD ST7735 | ||
+ | - Senzor de atingere | ||
- Servo motor | - Servo motor | ||
- Buck | - Buck | ||
Line 38: | Line 41: | ||
<note tip> | <note tip> | ||
Mediu de Dezvoltare | Mediu de Dezvoltare | ||
- | - Arduino IDE | + | - Visual Studio Code (PlatformIO) |
- Librării: TFT_eSPI, ESP32Servo, Wire, SPI, Adafruit | - Librării: TFT_eSPI, ESP32Servo, Wire, SPI, Adafruit | ||
Line 48: | Line 51: | ||
=== Exemple === | === Exemple === | ||
+ | Aceste fragmente de cod evidențiază principalele funcționalități ale robotelului. | ||
+ | |||
+ | |||
1. measureHCSR04Distance | 1. measureHCSR04Distance | ||
Această funcție măsoară distanța folosind senzorul ultrasonic HC-SR04 și returnează valoarea măsurată în centimetri. | Această funcție măsoară distanța folosind senzorul ultrasonic HC-SR04 și returnează valoarea măsurată în centimetri. | ||
Line 80: | Line 86: | ||
</code> | </code> | ||
- | 3. draw...Face() | + | 3. draw[]Face() |
Aceasta functie foloseste libraria Adafruit pentru a desena pe ecran diferite expresii faciale: | Aceasta functie foloseste libraria Adafruit pentru a desena pe ecran diferite expresii faciale: | ||
Line 87: | Line 93: | ||
tft.init(); | tft.init(); | ||
tft.fillScreen(lightPink); | tft.fillScreen(lightPink); | ||
+ | | ||
tft.fillCircle(64, 85, 20, ST7735_BLACK); | tft.fillCircle(64, 85, 20, ST7735_BLACK); | ||
tft.fillRect(44, 65, 45, 20, lightPink); | tft.fillRect(44, 65, 45, 20, lightPink); | ||
+ | | ||
tft.fillCircle(40, 64, 20, ST7735_BLACK); | tft.fillCircle(40, 64, 20, ST7735_BLACK); | ||
- | tft.fillCircle(50, 60, 5, ST7735_WHITE); | + | tft.fillCircle(50, 60, 5, ST7735_WHITE); |
+ | tft.fillCircle(40, 64, 7, ST7735_WHITE); | ||
- | tft.fillCircle(88, 64, 20, ST7735_BLACK); | + | tft.fillCircle(88, 64, 20, ST7735_BLACK); |
- | tft.fillCircle(98, 60, 5, ST7735_WHITE); | + | tft.fillCircle(98, 60, 5, ST7735_WHITE); |
+ | tft.fillCircle(88, 64, 7, ST7735_WHITE); | ||
+ | |||
+ | tft.fillRect(20, 75, 40, 10, lightPink); | ||
+ | tft.fillRect(68, 75, 40, 10, lightPink); | ||
} | } | ||
+ | |||
</code> | </code> | ||
<note tip> | <note tip> | ||
- | Funcția principală a programului, care monitorizează senzorul de atingere și senzorul de distanță, schimbând expresiile faciale și ajustând servo motorul în funcție de stările detectate. | + | Funcția principală a programului (loop) monitorizează senzorul de atingere și senzorul de distanță, schimbând expresiile faciale și ajustând servo motorul în funcție de stările detectate. |
- | Aceste fragmente de cod evidențiază principalele funcționalități ale proiectului Desk Buddy, oferind un exemplu clar de implementare pentru interacțiunile robotului. | + | |
</note> | </note> | ||
Line 108: | Line 121: | ||
Rezultat final: | Rezultat final: | ||
+ | |||
+ | [[https://youtube.com/watch?v=s_SsXFJAL0o|YouTube Demo: Desk Buddy]] | ||
{{ :pm:prj2024:tdicu:hepi_robo.jpg?nolink&450 |}} | {{ :pm:prj2024:tdicu:hepi_robo.jpg?nolink&450 |}} | ||
===== Concluzii ===== | ===== Concluzii ===== | ||
+ | Proiectul a fost unul foarte interesant, mi-a placut foarte mult sa ma joc cu culorile si reactiile robotelului. Sunt incantata sa am o dovada fizica a muncii mele si voi continua sa mai lucrez la el si pe viitor, in special pe partea estetica (cablaj, carcasa, etc). | ||
===== Download ===== | ===== Download ===== | ||
- | <note warning> | + | <note> |
- | O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului: surse, scheme, etc. 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**. | + | {{:pm:prj2024:tdicu:pm_burnichi_alexandra_deskbuddy.zip|}} |
</note> | </note> | ||
- | ===== Jurnal ===== | ||
- | |||
- | <note tip> | ||
- | Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. | ||
- | </note> | ||
===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||
<note> | <note> | ||
- | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | + | |
+ | - Resurse hardware | ||
+ | * [[https://arduinogetstarted.com/tutorials/arduino-touch-sensor|Touch Sensor]] | ||
+ | * [[https://mytectutor.com/using-the-1-44-tft-st7735-color-display-with-arduino/| ST7735 (lcd - cu arduino) ]] | ||
+ | * [[https://www.displayfuture.com/Display/datasheet/controller/ST7735.pdf|ST7735 (lcd- datasheet)]] | ||
+ | * [[https://docs.espressif.com/projects/esp-idf/en/latest/esp32/get-started/|ESP32]] | ||
+ | * [[https://docs.google.com/document/d/1Y-yZnNhMYy7rwhAgyL_pfa39RsB-x2qR4vP8saG73rE/edit|HC-SR04 (senzor ultrasonic)]] | ||
+ | |||
</note> | </note> | ||
<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> | ||
- |