Differences

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

Link to this comparison view

pm:prj2024:rvirtan:page_flipper [2024/05/22 21:24]
renata.vaideanu [Software Design]
pm:prj2024:rvirtan:page_flipper [2024/05/27 19:22] (current)
renata.vaideanu [Software Design]
Line 1: Line 1:
 ====== Page Flipper ====== ====== Page Flipper ======
 <note tip> <note tip>
-   * Nume: Vaideanu ​Renata - Georgia+   * Nume: Văideanu ​Renata - Georgia
    * Grupa: 332 CD    * Grupa: 332 CD
    * Îndrumător:​ Răzvan-Nicolae Vîrtan    * Îndrumător:​ Răzvan-Nicolae Vîrtan
 </​note>​ </​note>​
 ===== Introducere ===== ===== Introducere =====
-Proiectul va consta în dezvoltarea și implementarea unui dispozitiv inovator ce simplifică experiența de lectură prin furnizarea automată a paginilor cărții la apăsarea unui buton. Acest dispozitiv reprezintă o soluție ingenioasă pentru cei care doresc confort și eficiență în timpul lecturii, eliminând necesitatea întoarcerii manuale a paginilor. Ideea aparatului s-a născut din dorința de a simplifica lectura cărților tipărite și de a oferi o soluție practică. Dispozitivul este util deoarece îmbunătățește confortul și eficiența în timpul lecturii, permițându-le utilizatorilor să se concentreze mai mult pe conținutul cărții. Utilizatorul poate controla dispozitivul,​ de asemenea, folosind o aplicație dedicată, care se conectează prin Bluetooth la dispozitivul hardware. Această aplicație permite utilizatorului să controleze funcțiile dispozitivului și să selecteze direcția de întoarcere a paginii (stânga sau dreapta) prin intermediul smartphone-ului sau tabletei lor.+Proiectul va consta în dezvoltarea și implementarea unui dispozitiv inovator ce simplifică experiența de lectură prin furnizarea automată a paginilor cărții la apăsarea unui buton. Acest dispozitiv reprezintă o soluție ingenioasă pentru cei care doresc confort și eficiență în timpul lecturii, eliminând necesitatea întoarcerii manuale a paginilor. Ideea aparatului s-a născut din dorința de a simplifica lectura cărților tipărite și de a oferi o soluție practică. Dispozitivul este util deoarece îmbunătățește confortul și eficiența în timpul lecturii, permițându-le utilizatorilor să se concentreze mai mult pe conținutul cărții.
  
 ===== Descriere generală ===== ===== Descriere generală =====
Line 18: Line 18:
 In realizarea proiectului se vor folosi: In realizarea proiectului se vor folosi:
   * Arduino UNO R3   * Arduino UNO R3
-  * x servomotor MG90S +  * x servomotor MG90S 
-  * 3 x modul giroscopic si accelerometru 3 axe GY-521 +  * 3 x modul giroscopic si accelerometru 3 axe MPU6050 
-  * 2 x modul Multiplexor Analogic cu 16 Canale ​CD74HC4067 +  * modul Multiplexor Analogic cu Canale ​PCA9548A ​ 
-  * breadboard, butoane, fire+  * breadboard, butoane, fire, rezistente 
 + 
 +Oganizarea pinilor: 
 +    * Pinii PWM 3, 5, 6, 9, 10 vor fi folositi de cele 5 servomotoare 
 +    * Pinii 2 si 4 vor fi solositi pentru cele doua butoane 
 +    * Pinii SCL si SDA vor fi conectati la pinii SCL si SDA ai multiplexorului 
 +    * Pinii Analogici A0, A1 si A2 vor fi solositi pentru multimplexor
  
 Componentele proiectului vor fi conectate conform diagramei: Componentele proiectului vor fi conectate conform diagramei:
  
-{{ pm:​prj2024:​rvirtan:​schemacircuit0.png?700 }}+{{ pm:​prj2024:​rvirtan:​schemanoucircuit2.jpeg?700 }}
  
-Asa cum reiese si din schema ​de mai suscele doua butoane vor fi folosite ca trigger care vor incepe procesul de miscare spre stanga sau spre dreapta a pagnililor+Detalii ale Schemei: 
 +  
 +  * Microcontroler Arduino UNO: 
 +       * Este utilizat pentru a controla servomotoarele și pentru a comunica cu senzori prin intermediul magistralei I2C. 
 +       * Pinii digitali D2-D6 sunt folosiți pentru controlul servomotoarelor (M1-M5). 
 +       * Pinii analogici A4 și A5 sunt utilizați pentru magistrala I2C (SDA și SCL). 
 + 
 +  * Multiplexor I2C PCA9548A: 
 +       * Este utilizat pentru a extinde magistrala I2C și a permite comunicarea cu mai multe dispozitive I2C cu aceeași adresă. 
 +       * Conectat la pinul SDA și SCL de pe Arduino. 
 +       * Cele trei module MPU-6050 sunt conectate la diferitele canale (SC0-SC7) ale multiplexorului. 
 + 
 +  * Senzori MPU-6050: 
 +       * Sunt conectați la canalele multiplexorului I2C pentru a permite citirea datelor de la mai multe giroscoape cu adrese identice. 
 +       * Fiecare MPU-6050 are pini de alimentare (VLOGIC și VDD) conectați la +5V și GND. 
 +       * Pinii SDA și SCL ai fiecărui MPU-6050 sunt conectați la canalele respective de pe multiplexor. 
 + 
 +  * Servomotoare:​ 
 +       * M1-M5 sunt servomotoarele conectate la pinii D3D5, D6, D9, D10 ai Arduino pentru controlul mișcării. 
 +       * Fiecare servomotor are pini de alimentare (+5V și GND). 
 + 
 +  * Butoane: 
 +       * Două butoane ​conectate la pinii D8 și D9 ai Arduino, fiecare cu o rezistență de 1K ohmi (R1 și R2). 
 +       * Butoanele ​vor fi folosite ca trigger care vor incepe procesul de miscare spre stanga sau spre dreapta a paginilor 
 + 
 + 
 +Mai jos se poate gasi o organizare orientativa a componentelor hardware: 
 +{{ pm:​prj2024:​rvirtan:​schemanoucircuit.png?700 }}
  
-Oganizarea pinilor: 
-    * Pinii PWM 3, 5, 6, 9, 10 vor fi folositi de cele 5 servomotoare 
-    * Pinii 2 si 4 vor fi solositi pentru cele doua butoane 
-    * Pinii SCL si SDA vor servi ca SIG pentru multiplexoare 
-    * Pinii Analogici A0 - A3 vor fi solositi pentru cele multiplexoare (S0 - S3) 
 ===== Software Design ===== ===== Software Design =====
  
  
 <note tip> <note tip>
-Link pentru repo-ul de Git: https://​github.com/​Renata2304/​Page-Flipper+Link pentru repo-ul de Git: [[https://​github.com/​Renata2304/​Page-Flipper|Repo Git]]
 </​note>​ </​note>​
-== Mediu de dezvoltare: ​==+** Mediu de dezvoltare: ​**
 [[https://​www.arduino.cc/​en/​software|Arduino IDE]] [[https://​www.arduino.cc/​en/​software|Arduino IDE]]
  
-== Librarii folosite: ​==  +** Librarii folosite: ​** 
-  * Adafruit_MPU6050.h - Această bibliotecă este utilizată pentru a interacționa cu senzorul MPU6050 +  ​* **Adafruit_MPU6050.h** - Această bibliotecă este utilizată pentru a interacționa cu senzorul MPU6050 
-  * Wire.h - Bibliotecă standard pentru comunicarea I2C pe microcontrolerele Arduino +  ​* **Wire.h** - Bibliotecă standard pentru comunicarea I2C pe microcontrolerele Arduino 
-  * Servo.h - Bibliotecă pentru controlul servomotoarelor.+  ​* **Servo.h** - Bibliotecă pentru controlul servomotoarelor.
  
-== Principalele functii implementate ​==  +** Principalele functii implementate ​** 
-  * init_mpu ​folosit ​pentru ​a implementa ​cele 3 giroscoape la inceput, pentru a putea fi accesate prin intermediul multiplexorului +  * **pcaselect** ​selectează canalul activ pentru ​comunicația I2C 
-  * move_weel - folosit pentru ​rotirea rotii pentru a se da pagina +  * **switch_gyro** - selectează senzorul MPU6050 activ  
-  * move_upper_leg - folosit pentru a muta piciorul de care este atasat roata +       * 0 - senzorul atasat de servo-ul din dreapta 
-  * lower_leg ​si raise_leg ​- folosit pentru fixarea sau relaxarea picioarelor din partile laterale ale cartii, datoare sa fixeze ​ cartea +       * 1 - senzorul atasat de servo-ul din stanga 
-  * get_steps_left - folosita pentru a verifica daca s-au parcurs toti pasii necesari pentru intoarcerea paginii+       * 2 - senzorul atasat de servo-ul din centru 
 +  * **init_mpu** - implementeaza ​cele 3 giroscoape la inceput, pentru a putea fi accesate prin intermediul multiplexorului 
 +  ​* **move_weel** - folosit pentru ​mișcarea roții folosite ​pentru a se da pagina 
 +  ​* **move_upper_leg** - folosit pentru a misca piciorul de care este atasat roata 
 +  * **left_leg** ​si **right_leg** ​- folosit pentru fixarea sau relaxarea picioarelor din partile laterale ale cartii, datoare sa fixeze ​ cartea
  
  
-===== Rezultate Obţinute =====+M-am folosit de: PCAADDR 0x70: Adresa I2C pentru un comutatorul de canale I2C, PCA9548A. 
 +De asemenea, am folosit verctorii steps (steps[i] ​1 pentru pasul curent, pentru a putea monitoriza fluxul de pasi) si first (folosit oentru cei 3 senzori, pentru a i se da servo-ului un imbold pentru a continua miscarea).
  
-<note tip> +Mai in detaliu: In cadrul functiei setup(), se initializeaza pinii din Arduino care urmeaza sa fie folositi ulterior, dar si senzorii. Funcția loop este responsabilă pentru citirea datelor de la senzori, monitorizarea stării butoanelor și efectuarea unor serii de mișcări ale servo-urilor în funcție de aceste stări. Fiecare apăsare a unui buton inițiază o secvență de pași care controlează mișcarea diferitelor componente ale robotului, utilizând datele de la senzorii MPU6050 pentru a ajusta mișcările.se afla codul necesar.
-Care au fost rezultatele obţinute în urma realizării proiectului vostru. +
-</​note>​+
  
-===== Concluzii ​=====+===== Rezultate Obţinute ​=====
  
-===== Download =====+{{ pm:​prj2024:​rvirtan:​img-20240527-wa0003.jpg?​600 }} 
 +{{ pm:​prj2024:​rvirtan:​img-20240527-wa0011.jpg?​600 }}
  
-<note warning>​ +Mai jos se pot vedea componentele ​proiectului. ​ 
-O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării ​proiectului: surse, scheme, etcUn fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-).+{{ pm:​prj2024:​rvirtan:​ColajPiese.jpg?600 }}
  
-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**. +[[https://drive.google.com/drive/​folders/​1MHcQC9tpuMDQGORrKlBojF7qTBst9nRw?​usp=drive_link|Link video-uri cu testarea proiectului]]
-</note>+
  
-===== Jurnal ​=====+Asa cum se vede si din vide-uri, din cauza piciorului care trage pagina spre stanga sau spre dreapta care este, probabil, prea scurt, nu se poate face perfect tragerea paginilor. 
 +===== Concluzii ​=====
  
-<note tip> +Proiectul a reprezentat ​provocare din punct de vedere hardware, din cauza căutării pieselor necesare. Am început montajul cu două multiplexoare CD74HC4067, dar am realizat foarte curând că nu puteam comunica eficient cu cele trei giroscoape MPU6050. În cele din urmă, am optat pentru un multiplexor PCA9548A, special conceput pentru astfel ​de operațiuni. Necesitatea utilizării unui multiplexor a venit din faptul că giroscoapele au adresa I2C hard-codată,​ iar schimbarea acesteia este foarte dificilă. Cu toate acestea, am îndrăgit foarte mult acest proiect ​și am învățat foarte multe despre protocolul I2C și utilizările sale
-Puteți avea și secțiune ​de jurnal în care să poată urmări asistentul ​de proiect ​progresul proiectului+===== Download =====
-</​note>​+
  
 +[[https://​github.com/​Renata2304/​Page-Flipper|Link Repo Git]]
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
- 
-<​note>​ 
-Listă cu documente, datasheet-uri,​ resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. 
-</​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>​
  
 +[[https://​www.youtube.com/​watch?​v=JvmEIBTOv5U|Video-ul care a servit ca inspiratie]]
 +
 +== Resurse Hardware: ==
 +  * [[https://​invensense.tdk.com/​wp-content/​uploads/​2015/​02/​MPU-6000-Datasheet1.pdf|Datasheet MPU6050]]
 +  * [[https://​www.electronicoscaldas.com/​datasheet/​MG90S_Tower-Pro.pdf|Datasheet MG90S]]
 +  * [[https://​www.nxp.com/​docs/​en/​data-sheet/​PCA9548A.pdf|Datasheet PCA9548A]]
 +
 +== Resurse Software: ==
 +  * [[https://​docs.arduino.cc/​software/​ide/​| Documentatie Arduino IDE]]
pm/prj2024/rvirtan/page_flipper.1716402288.txt.gz · Last modified: 2024/05/22 21:24 by renata.vaideanu
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