Comprueba los sensores de movimiento de tu teléfono o tableta: un nivel de burbuja construido sobre el acelerómetro, una comprobación guiada de ejes, un recorrido de brújula y una medición de deriva tomada con el dispositivo inmóvil. Todo funciona en el navegador.
Esperando la primera lectura
Coge el dispositivo y muévelo. No se afirma nada sobre un sensor hasta que ha informado de algo de verdad: un navegador expone los mismos eventos en un sobremesa sin ningún acelerómetro cerca, y los rellena con nulos.
Aún no hay lectura del acelerómetro
Un nivel de burbuja necesita gravedad, y la gravedad llega con el acelerómetro. Mueve el dispositivo, o comprueba arriba que el acceso al movimiento está permitido.
Abre esta página en el dispositivo que quieras probar. Un ordenador de sobremesa no tiene ninguno de estos sensores, y ningún navegador se los va a inventar.
La detección de movimiento de un teléfono son tres piezas separadas que fingen ser una sola: un chip que nota dónde está abajo, un chip que nota el giro y un chip que nota el campo magnético terrestre. Cada una falla por su cuenta, a su manera, y cada una se comprueba arriba por separado.
El acelerómetro mide fuerza, y en reposo esa fuerza es la gravedad: así sabe el teléfono qué lado está arriba, y por sí solo basta para el giro de pantalla y el podómetro. El giroscopio mide rotación, y es lo que lleva una cámara a través de una panorámica rápida y unas gafas a través de un giro de cabeza, porque responde en milisegundos allí donde la gravedad tarda un momento en asentarse. El magnetómetro mide el campo terrestre y da a los otros dos un norte del que agarrarse. Los teléfonos económicos llevan solo acelerómetro; cuando un juego dice que tu dispositivo no es compatible, lo que suele faltar es el giroscopio.
Todo acelerómetro tiene un desfase —una pequeña constante que suma a lo que mide— y el teléfono le resta un valor de fábrica. Si el teléfono se cae, o le cambian la pantalla, el marco de referencia del sensor se desplaza respecto a la carcasa contra la que se calibró y la corrección deja de encajar. El resultado es un nivel que marca uno o dos grados sobre una superficie perfectamente plana, y ninguna lectura aislada lo delata. Girar el dispositivo 180° es lo que separa ambas cosas, y es lo que hace la comprobación de arriba.
Un giroscopio en reposo informa de una rotación pequeña pero no nula, y todo lo construido sobre él tiene que ir restando ese número. Mientras el número se mantiene estable, la resta funciona y nadie lo nota. Cuando crece —con la edad, con la temperatura, tras un golpe—, la corrección se queda atrás: la cámara de un juego se desplaza sola, la brújula gira mientras el teléfono está quieto y el mundo de unas gafas rota lentamente. Veinte segundos sin hacer nada bastan para medirlo.
Un magnetómetro mide un campo de medio gauss aproximadamente, y casi cualquier cosa cercana es más fuerte: una funda con cierre magnético, un soporte de coche, un altavoz, la tapa de un portátil, el acero de un suelo. La mayor parte de lo que parece una brújula rota es interferencia, y el ocho que piden trazar las aplicaciones de mapas es el teléfono reconstruyendo su corrección a partir de un conjunto nuevo de direcciones. El fallo real tiene otra forma: el rumbo salta en lugar de deslizarse, y por eso la prueba de arriba es una vuelta completa y no una sola lectura.
Los sensores van en la placa principal, y los marcos de referencia contra los que se calibran pertenecen a la carcasa. Un cambio de pantalla, un cambio de batería o una carcasa que se ha abierto y vuelto a cerrar pueden mover ambos. Un nivel que de pronto marca mal, una brújula que pide calibrarse continuamente y un giroscopio que deriva donde antes no lo hacía conviene revisarlos juntos en un aparato recién abierto.
Con los datos de movimiento se puede deducir lo que alguien está escribiendo e identificar un dispositivo por las imperfecciones exactas de sus sensores, así que WebKit dejó de entregarlos gratis: en iPhone y iPad la página tiene que pedirlos, desde un toque real y por https. Chrome en Android no pregunta, y por eso esta página muestra un botón en uno y no en el otro. En cualquier caso las lecturas se quedan en la página: de aquí no sale nada.