====== 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