Stavo registrando dati con il telefono usando questa mia applicazione quando mi sono accorto che i dati non erano piu' stabili ma avevano una deriva. Rispetto alle prove precedenti stavo registrando usando come alimentazione del cellulare un pannello solare
Questi sono i grafici di pitch e roll in funzione del tempo. Come si vede i dati sono sincronizzati e seguono il ciclo diurno o meglio quello della temperatura (la prova e' durata tre giorni e nel giorno centrale era nuvoloso ed il minimo e' appena accennato)
Si tratta quindi di una deriva termica. Non avendo sul Nexus 5 un termometro (ho provato a loggare di dati del termometro della batteria ma sono dati completamente inutili con temperatura di 29 gradi C con una temperatura ambiente sempre inferiore ai 20 C)
C'e' un sistema semplice per ripulire la deriva termica e vedere se il telefono sta ruotando un pitch/roll o se e' solo l'effetto della temperatura
Tenendo il telefono fermo e plottando pitch vs roll si vede che le due misure sono fortemente correlate
il valore di R2 di correlazione e' di circa 0.8 (quindi abbastanza scarso) con una equazione
roll = 0.36pitch + 1.53
a questo punto si puo' calcolare, tramite questa formula, la distanza di ogni punto dalla retta di regressione. La distanza massima dei punti in condizioni statiche e' pari a 0.081
Se la distanza di un punto, indipendentemente dalla temperatura, e' superiore al valore sopra riportato e' molto probabile che sia uno spostamento significativo e non una deriva termica
Per completezza questo e' il grafico in cui in ascisse ci sono i minuti da inizio ricarica solare ed in ordinata la percentuale di carica del telefono
Volevo fare un po' di test sull'accuratezza dei dati degli accelerometri di un telefono (nello specifico un Nexus 5) e per fare cio' mi sono scritto questa applicazione in Kotlin che cerca di disabilitare il Doze Mode per fare lavorare in continuo la app
Di seguito i risultati
Ogni punto sul grafico e' dato dalla media di 20000 misure ed e' rappresentativo di circa 7.5 minuti
Misura 1
nr punti : 144
durata minuti : 1080
Std.dev pitch : 0.33 gradi decimali
Std.dev roll : 0.36 gradi decimali
St.dev azimuth : 0.65 gradi decimali
Misura 2
nr punti : 39
durata minuti : 273
Std.dev pitch : 0.1 gradi decimali
Std.dev roll : 0.09 gradi decimali
St.dev azimuth : 0.067 gradi decimali
Misura 3
nr punti : 122
durata minuti : 812
Std.dev pitch : 0.19 gradi decimali
Std.dev roll : 0.17 gradi decimali
St.dev azimuth : 0.1 gradi decimali
Misura 4
nr punti : 84
durata minuti : 574
Std.dev pitch : 0.4 gradi decimali
Std.dev roll : 0.14 gradi decimali
St.dev azimuth : 0.21 gradi decimali
In generale la standard deviation rimane sotto (anche abbondantemente) a 0.5 gradi decimali.. non male
L'unico aspetto che mi ha lasciato un po' perplesso e' il fatto che durante la prova 4 le misure evidenziano un chiaro trend crescente
Per un nuovo progetto avevo bisogno di una funzione che trovo molto comoda su IPhone, ovvero l'avvio automatico da spento quando viene inserito il cavo USB collegato alla corrente, e che non avevo trovato su Android
Lo scopo poi e' quello di avviare in automatico una applicazione una volta terminato il boot
Frugando ho trovato che questa opzione e' facilmente disponibile nei Nexus con semplici comandi da fastboot
./adb reboot bootloader ./fastboot oem off-mode-charge 0 ./fastboot reboot
A questo punto per rimuovere il lock screen di Android si va in Impostazioni/Sicurezza/Blocco schermo/nessuno
A questo punto sarebbe interessante avviare in automatico un app (od un servizio)
Per fare una prova ho usato Nexus 5 con Android 6 perche' le versioni piu' recenti
di Android rendono piu' difficile lanciare una app al boot in automatico
Si vede modificare il Manifest (righe evidenziate in giallo)
Nella MainActivity si crea una nuova classe che riceve la notifica dell'avvenuto boot
(per vedere se il codice funziona si osservi logcat, non ci sono messaggi per l'utente)
In questo post viene indicato come sostituire uno schermo non funzionante di un Nexus 5 (la parte di ricambio e' stata comprata su Aliexpress....la qualita' del ricambio non e' per niente buona ma funziona ed soprattutto ha un prezzo che giustifica l'acquisto..il ricambio originale non e' conveniente)
Questo progettino non e' per utenti pavidi: bisogna armarsi di micro cacciavite ma soprattutto di phon per rimuovere le parti incollate
Per prima cosa si deve rimuovere lo scocca posteriore: Attenzione: al contrario di molti altri telefoni dove questo componente e' solo un pezzo di plastica, nel Nexus 5 sono ospitati dei componenti nella back cover. Rimuovere con delicatezza magari usanto un plettro di plastica
Con un piccolo cacciavite si rimuovono le parti nere sopra e sotto la batteria. Quello superiore e' solo uno schermo in plastica mentre quello inferiore ospita elettronica e deve essere prestata maggiore attenzione
A questo punto si devono rimuovere nell'ordine il cavo flat T (che libera la batteria) ed il connettore della batteria. Per i connettori basta esercitare una leggera pressione verso l'alto metre la batteria e' saldamente incollata
Si solleva quindi il connettore della flat P
Qui arriva la parte piu' delicata perche' si deve rimuovere la piastrina dove e' inserita la microUSB che risulta essere incollata. Al di sotto di questa si trovera' la flat del display
A questo punto si deve rimuovere lo schermo dalla parte anteriore...ulteriore colla. Nella foto sottostante il display e' stato separato dallo chassis e si vede la flat. Questa deve essere fatta scivolare nell'incavo dello chassis per liberare lo schermo
Si monta il nuovo schermo e si ripetono le operazioni al contrario
Sostituzione della batteria di un Nexus 5.
Per prima cosa e' necessario rimuovere la cover posteriore. Attenzione: non si tratta solo di un solo un pezzo di plastica ma c'e' elettronica sul retro. E' quindi necessario rimuoverla con calma
Si svitano quindi 6 viti per rimuovere la copertura della parte superiore
Si sgancia quindi il cavo flat colore oro che attraversa la batteria sul lato sinistro (basta alzare con delicatezza il connettore in alto indica dalla lettera T). Si piega quindi a 90°§ per liberare la batteria
Si sgancia, sempre con una leggera pressione verso l'alto il connettore della batteria. La batteria e' incollata allo chassis per cui bisogna fare un po' di leva per sollevarla
Si ripete il tutto all'incontrario per rimontare il tutto. Difficolta' da 1 a 3 direi 1 (bastano 10 minuti ed un po' di manualita')
Visto il calo dei prezzi mi sono preso un Nexus 5 32 Giga per sviluppo su Android 6
Il telefono era nuovo e quindi all'accensione e' iniziata la fila degli aggiornamenti che, partendo dalla versione 4.4, mi avrebbero preso un bel po' di tempo via OTA.
Durante un aggiornamento incrementale di Android 4.4.3 il telefono si e' riacceso con il robottino con la pancia aperta e la scritta Errore in rosso. 2 minuti di panico e poi il sistema si e' riavviato da solo
Non volendo ripetere l'esperienza e per risparmiare tempo ho provato a fare direttamente il salto a 6.0.1 evitando le OTA.
Dopo aver scaricato il file https://dl.google.com/dl/android/aosp/hammerhead-mob30m-factory-8fc48e44.tgz (579 Mb) ed averlo scompattato ho seguito questi passi