This shows you the differences between two versions of the page.
pm:prj2025:ccristi:adrian.neacsu1805 [2025/05/25 23:04] adrian.neacsu1805 [Hardware Design] |
pm:prj2025:ccristi:adrian.neacsu1805 [2025/05/26 14:35] (current) adrian.neacsu1805 [Jurnal] |
||
---|---|---|---|
Line 11: | Line 11: | ||
La nivel de Software, vom folosi cod C pentru comunicarea cu modulul wireless, iar un fisier python pentru translatarea datelor date de MPU9250 in miscarii ale cursorului. | La nivel de Software, vom folosi cod C pentru comunicarea cu modulul wireless, iar un fisier python pentru translatarea datelor date de MPU9250 in miscarii ale cursorului. | ||
===== Hardware Design ===== | ===== Hardware Design ===== | ||
- | |||
- | <note tip> | ||
- | Aici puneţi tot ce ţine de hardware design: | ||
- | * listă de piese | ||
- | * scheme electrice (se pot lua şi de pe Internet şi din datasheet-uri, e.g. http://www.captain.at/electronic-atmega16-mmc-schematic.png) | ||
- | * diagrame de semnal | ||
- | * rezultatele simulării | ||
- | </note> | ||
Piese folosite: | Piese folosite: | ||
Line 33: | Line 25: | ||
* Soseta | * Soseta | ||
* 4 Baterii 1.5V | * 4 Baterii 1.5V | ||
+ | |||
+ | Motivul pentru care am ales aceste componente este ca le aveam deja pe majoritatea dintre ele (doar QMC5883L a trebuit să îl cumpar). | ||
{{:pm:prj2025:ccristi:image.png?700|}} | {{:pm:prj2025:ccristi:image.png?700|}} | ||
Line 46: | Line 40: | ||
Pentru comunicarea cu MPU si QMC, am decis sa folosesc I2C/TWI (Initial as fi vrut comunicare pe SPI, dar asta a fost inainte sa aflu ca modulul meu MPU9250 era de fapt un MPU6500 deghizat, asa ca am fost nevoit s-a cumpar un magnetometru separat). Am cuplat VCC la 3.3V (MPU suporta maxim 4V), GND la GND, SDA la A4, si SCL la A5 | Pentru comunicarea cu MPU si QMC, am decis sa folosesc I2C/TWI (Initial as fi vrut comunicare pe SPI, dar asta a fost inainte sa aflu ca modulul meu MPU9250 era de fapt un MPU6500 deghizat, asa ca am fost nevoit s-a cumpar un magnetometru separat). Am cuplat VCC la 3.3V (MPU suporta maxim 4V), GND la GND, SDA la A4, si SCL la A5 | ||
- | |||
- | Obs: In testele facute de mine, SDA si SCL functioneaza la 5V logic | ||
- | ===== Software Design ===== | ||
- | |||
<note tip> | <note tip> | ||
- | Descrierea codului aplicaţiei (firmware): | + | Obs: In testele facute de mine, SDA si SCL functioneaza la 5V logic, dar nu garantez ca e un nivel stabil pentru modul |
- | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | + | |
- | * librării şi surse 3rd-party (e.g. Procyon AVRlib) | + | |
- | * algoritmi şi structuri pe care plănuiţi să le implementaţi | + | |
- | * (etapa 3) surse şi funcţii implementate | + | |
</note> | </note> | ||
+ | |||
+ | Rezultate: | ||
+ | |||
+ | {{:pm:prj2025:ccristi:screenshot_2025-05-25_231805.png?200|}} | ||
+ | ===== Software Design ===== | ||
Mediul de dezvoltare e unul hibrid. | Mediul de dezvoltare e unul hibrid. | ||
Line 64: | Line 55: | ||
avrdudess pe windows pentru uploadarea fisierului in memoria flash a microcontrollerului. Ca IDE folosesc VScode. | avrdudess pe windows pentru uploadarea fisierului in memoria flash a microcontrollerului. Ca IDE folosesc VScode. | ||
- | Am scris un cod simplu UART de trasmitere-receptie in C, si un cod bluetooth in python cu care sa se creeze comunicarea cu HC-05 | + | Am scris un cod simplu UART de trasmitere-receptie in C (codul de pe microcontroller) , si un cod bluetooth in python cu care sa se creeze comunicarea cu HC-05 (Driver-ul aferent al manusii) |
+ | |||
+ | Pentru testare am folosit UART in combinatie cu Serial Monitorul incorporat in PUTTy + Debug prin led-uri | ||
+ | |||
+ | Codul C am folosit o combinatie de cod din laborator cu snippet-uri din datasheet, iar pentru cel din python am gasit un library care converteste logica numerica in actiuni ale mouse-ului | ||
+ | |||
+ | Logica Codului: | ||
+ | * Porneste microcontrolerul | ||
+ | * Face Init-ul pentru toate modulele | ||
+ | * MPU si QMC trasmit date catre microcontroller prin I2C | ||
+ | * Date se duc mai departe pe UART | ||
+ | * Odata trasmise prin UART, HC-05 trimite mai departe prin Bluetooth catre PC | ||
+ | * PC-ul are deja codul python rulat; acel cod asteapta pe PORT-ul HC-ul o conexiune | ||
+ | * Dupa ce s-a stabilit conexiunea, scriptul driver-ul preia datele de la HC, si le converteste in miscarii ale mouse-ului. | ||
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
- | <note tip> | + | {{:pm:prj2025:ccristi:img_20250525_175701.jpg?200|}} |
- | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | {{:pm:prj2025:ccristi:img_20250525_175717.jpg?200|}} |
- | </note> | + | {{:pm:prj2025:ccristi:img_20250525_175707.jpg?200|}} |
+ | [[https://youtube.com/shorts/IytmynsijeA?feature=share|Test Video]] | ||
===== Concluzii ===== | ===== Concluzii ===== | ||
+ | În final, am reușit să duc acest proiect la bun sfârșit. Mie, unul, mi-a plăcut foarte mult să lucrez la mănușă și, dacă aș fi avut mai mult timp, aș fi adăugat și funcționalități noi (cum ar fi un filtru Kalman). | ||
===== Download ===== | ===== Download ===== | ||
- | <note warning> | + | [[https://github.com/Adin3/Glove-Controller|Github]] |
- | 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**. | + | |
- | </note> | + | |
===== Jurnal ===== | ===== Jurnal ===== | ||
- | |||
- | <note tip> | ||
- | Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. | ||
- | </note> | ||
[5/5/2025:21:03] | [5/5/2025:21:03] | ||
Line 107: | Line 106: | ||
Am scris un cod python care sa comunice cu modulul | Am scris un cod python care sa comunice cu modulul | ||
+ | |||
+ | [5/25/2025:23:43] | ||
+ | |||
+ | Am uitat s-a mai fac update-uri, deci asta va fi unul mare | ||
+ | |||
+ | Am scris codul TWI pentru cele doua module | ||
+ | |||
+ | Am scris o clasa care converteste valoarii numerice in miscarii ale mouse-ului | ||
+ | |||
+ | Am cusut partea hardware de manusa, si am creat o curea DIY pentru a tine sursa de alimentare pe mana | ||
+ | |||
+ | Am testat, si merge ok | ||
===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== |