Occhiali Mouse
Gli occhiali sono costituiti da un esp32 con batteria, un modulo giroscopio MPU-6050 e uno o più pulsanti
Giroscopio
Sensore utilizzato: MPU-6050 / GY-521
Questo giroscopio ha due funzioni:
- Accelerometro
Misura di quanto il dispositivo è inclinato rispetto all’inclinazione zero data nel momento della calibrazione
- Giroscopio
Misura con che velocità il dispositivo sta ruotando attorno agli assi relativi al dispositivo rispetto alla velocità zero data nel momento della calibrazione
Per ora ho scelto di utilizzare solo i dati del giroscopio, in modo da far corrispondere uno spostamento del dispositivo a uno spostamento del mouse.
Calibrazione
Per la calibrazione del giroscopio (senza accelerometro) è sufficiente che il dispositivo resti immobile: non importa l'inclinazione e non occorre che sia in bolla poiché la rotazione si riferisce sempre agli assi relativi del dispositivo.
La calibrazione serve solo a settare la velocità rotazionale zero.
Montatura
È necessario invece che il giroscopio sia dritto quando viene indossato:
Non importa il verso in cui viene montato, gli assi possono essere scambiati tra loro nel codice.
Ma è importante che questi assi siano dritti rispetto agli assi di rotazione della testa quando il dispositivo viene utilizzato (indipendentemente dagli assi terrestri), altrimenti una rotazione verso destra della testa corrisponderebbe a una rotazione su più assi del giroscopio.
Collegamento
Per il funzionamento base utilizzare questi 4 pin: VIN (3.3v o 5v), GND, SCL, SDA
Pulsante
Ogni pulsante va collegato a GND e a un GPIO
Micropython vs Circuitpython
Su git sono presenti due versioni del codice per gli occhiali: per esp32 e per raspberry pi pico
Micropython supporta esp32, che ha il bluetooth, ma ha meno librerie di circuitpython Per micropython potete usare la IDE Thonny
Circuitpython supporta esp32-s2 e raspberry pi pico. Quest'ultimo non ha il bluetooth. Le librerie di circuitpython permettono di usare facilmente HID usb o bluetooth e sensori come il giroscopio MPU6050 Per circuitpython potete usare la IDE Mu
Raspberry pi pico
Scaricare l'ultima versione delle librerie di circuitpython:
https://circuitpython.org/libraries
Scaricare il firmware stable di circuitpython per raspberry pi pico:
https://circuitpython.org/board/raspberry_pi_pico/
Installare circuitpython sul raspberry pi pico:
https://learn.adafruit.com/getting-started-with-raspberry-pi-pico-circuitpython/circuitpython
Consiglio di usare l'IDE Mu per modificare il codice e vedere l'output
Il file che viene lanciato al boot è code.py
Collegare il giroscopio al raspberry tramite VCC (3v3), GND, SCL (GP27) e SDA (GP26)
Salvare il file code.py presente su git nel raspberry
Calibrazione
Ogni giroscopio ha un leggero errore di misurazione che va compensato
Salvare il codice nel file calibration.py (su git) nel raspberry con il nome code.py ed eseguire mostrando l'output
Lo script farà varie misurazioni durante le quali il giroscopio deve essere immobile e dritto, e calcolerà la media dei valori dando come risultato una serie di valori di offset che vanno salvati e copiati nel codice degli occhiali