This is an old revision of the document!


Laboratorul 02. I2C - Haptics, Accelerometru

Exerciții

Pentru a putea rula exercitiile, este nevoie să compilați NuttX folosind hacktorwatch:iot, la care va trebui sa activati manual cateva config-uri folosindu-va de sistemul de build (make menuconfig). Astfel, veti activat atat compilarea codului de driver si initializarea efectiva a hardware-ului, cat veti si incarca pe placa aplicatii de demo pe care le puteti rula.

Ca sa folositi senzorul de haptics, aveti nevoie de urmatoarele config-uri:

  • CONFIG_FF_DRV2605L
  • CONFIG_DRV2605L_TS2200_LIBRARY_A
  • CONFIG_EXAMPLES_DRV2605L

Atentie la dependintele lui CONFIG_FF_DRV2605L. In cadrul acestui exercitiu de set-up va trebui sa determinati care sunt acele dependinte si sa le activati mai intai pe acelea.

Pentru a valida ca ati configurat NuttX corect, este suficient un simplu restart de ceas. Codul de initializare din cadrul sistemului de operare realizeaza o calibrare a senzorului de haptics la boot time, iar ceasul va vibra.

Cele doua config-uri de mai jos va vor oferi access la accelerometru si giroscop:

  • CONFIG_SENSORS_LSM6DSL
  • CONFIG_EXAMPLES_LSM6DSL_READER

La fel ca in cazul device-ului de haptics, atentie la dependintele acestor config-uri.

1. Pentru a va acomoda cu API-ul pe care NuttX il ofera pentru a interactiona cu cele doua device-uri, in cadrul acestui exercitiu va trebui sa inspectati codul si sa rulati aplicatiile de demo disponibile in repository-ul nuttx-apps.

  1. nuttx-apps/examples/drv2605l/ initializeaza device-ul cu anumite efecte de vibrare (upload_rom_effect, upload_constant_effect). Apelarea acestora se face ulterior, “on demand”, prin play_effect.
  2. nuttx-apps/examples/lsm6dsl_reader afiseaza o data la doua secunde la consola datele obtinute de la accelerometru si giroscop. Observati modul de interactiune cu senzorul: acesta este expus printr-o intrare in /dev/ care va trebui folosita in cadrul apelului de sistem open, iar mai apoi folosim apeluri de ioctl pentru a interactiona cu hardware-ul.
  3. In cadrul ambelor exercitii, cautati definitiile pentru structurile de date folosite.

Toate fișierele de tip header le puteți găsi în nuttx/include/nuttx/. Puteți căuta recursiv din linia de comandă folosind grep -r <string>.

2. In cadrul acestui exercitiu, vrem ca ceasul sa ne ofere informatii (prin vibrare) atunci cand viram stanga, respectiv dreapta.

  1. Folosindu-ne de lsm6dsl_reader vom citi datele oferite de accelerometru si vom determina directia de mers.
  2. Daca ceasul este nemiscat sau merge inainte nu va oferi niciun fel de feedback utilizatorului.
  3. drv2605l are o biblioteca interna de efecte de vibrare pe care o puteti consulta aici, la pagina 63. Alegeti doua efecte din acest tabel si incarcati-le pe ceas.
  4. In functie de directia de mers, vom rula in mod constant unul dintre cele doua efecte pana cand ceasul va reveni in stare initiala sau miscare se va face din nou doar inainte.

3. (Bonus) La exercitiul anterior, intensitatea de vibrare era absoluta (1/0 sau on/off). Ne dorim sa avem un mecanism mai complex prin care sa folosim vibrare graduala in functie de nivelul acceleratiei - cu cat acceleratia este mai mare, cu atat vibratia va fi mai puternica.

si/iot2025/lab02.1754593028.txt.gz · Last modified: 2025/08/07 21:57 by robert_ionut.alexa
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