This shows you the differences between two versions of the page.
si:iot2025:lab02 [2025/08/10 13:11] robert_ionut.alexa |
si:iot2025:lab02 [2025/08/11 12:53] (current) dan.tudose [DRV2605L - senzor haptic] |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ===== Laboratorul 02. I2C - Haptics, Accelerometru ===== | + | ===== Laboratorul 02. I2C - Haptics, Accelerometru, Giroscop ===== |
În laboratorul de astăzi veți învăța cum să interactionați cu diferite periferice prin I2C și cum datele de la hardware sunt transmise utilizatorului prin diferite niveluri de redirectare. Vom explora atât noțiuni low-level cât și aspecte mai high-level (arhitectura software a driver-elor in NuttX) construite peste. | În laboratorul de astăzi veți învăța cum să interactionați cu diferite periferice prin I2C și cum datele de la hardware sunt transmise utilizatorului prin diferite niveluri de redirectare. Vom explora atât noțiuni low-level cât și aspecte mai high-level (arhitectura software a driver-elor in NuttX) construite peste. | ||
Line 11: | Line 11: | ||
Din punct de vedere al user-ului, driverele pot să fie expuse în două moduri: | Din punct de vedere al user-ului, driverele pot să fie expuse în două moduri: | ||
- | * char device driver - în Linux sunt folosite pentru mouse și tastatură, de exemplu, iar în NuttX pentru senzori, printre altele. Pe scurt, dispozitive cu rată mică de transfer de date, care functionează la nivel de caracter (byte). | + | * **char device driver** - în Linux sunt folosite pentru mouse și tastatură, de exemplu, iar în NuttX pentru senzori, printre altele. Pe scurt, dispozitive cu rată mică de transfer de date, care functionează la nivel de caracter (byte). |
- | * block device driver - folosite pentru hdd-uri, sdd-uri, device-uri care au nevoie să transfere date la nivel de blocuri (4KB de obicei). | + | * **block device driver** - folosite pentru hdd-uri, sdd-uri, device-uri care au nevoie să transfere date la nivel de blocuri (4KB de obicei). |
==== I2C ==== | ==== I2C ==== | ||
Line 32: | Line 32: | ||
{{ :si:iot2025:i2c-communication-how-it-works.png?500 }} | {{ :si:iot2025:i2c-communication-how-it-works.png?500 }} | ||
- | ==== DRV2605L - senzor haptic ==== | + | ==== DRV2605L - driver haptic ==== |
- | DRV2605L este un senzor haptic proiectat cu scopul de a controla motoare de vibratie care in final sa poata oferi feedback utilizatorului prin vibratii. Avantajul acestui device este ca, desi poate fi programat sa genereze vibratii constante, vine cu o biblioteca interna de efecte haptice, fara a fi nevoie ca user-ul sa creeze undele manual. | + | DRV2605L este un driver haptic proiectat cu scopul de a controla motoare de vibratie care in final sa poata oferi feedback utilizatorului prin vibratii. Avantajul acestui device este ca, desi poate fi programat sa genereze vibratii constante, vine cu o biblioteca interna de efecte haptice, fara a fi nevoie ca user-ul sa creeze trenul de vibrații manual. |
In cadrul NuttX, arhitectura software prin care o aplicatie interactioneaza cu senzorul DRV2605L presupune mai multe niveluri de redirectare: | In cadrul NuttX, arhitectura software prin care o aplicatie interactioneaza cu senzorul DRV2605L presupune mai multe niveluri de redirectare: | ||
Line 96: | Line 96: | ||
<note tip> | <note tip> | ||
**Hint:** pentru a opri un efect, trebuie sa scrieti o functie care realizeaza inversul lui ''play_effect''. Parametrul care ne intereseaza si trebuie modificat este ''play.value'' (trebuie sa fie setat pe 0 - disabled). | **Hint:** pentru a opri un efect, trebuie sa scrieti o functie care realizeaza inversul lui ''play_effect''. Parametrul care ne intereseaza si trebuie modificat este ''play.value'' (trebuie sa fie setat pe 0 - disabled). | ||
+ | </note> | ||
+ | |||
+ | <note tip> | ||
+ | **Hint:** pentru a putea face polling mai des pe senzor si sa obtineti date mai accurate este nevoie sa folositi ''usleep''. | ||
</note> | </note> | ||