banner

Noticias

Sep 15, 2023

Hackear un microscopio de inspección

A veces necesito poder tomar fotografías de cosas muy pequeñas, y el llamado modo macro en mi cámara de apuntar y disparar simplemente no es suficiente. Y nunca está de más tener un visor de inspección a mano para pequeños trabajos de soldadura, aunque prefiero una simple lupa de joyero en un ojo para la mayoría de las tareas. Así que envié un poco más de $ 40 de descuento a mi amigo cercano Alibaba, y unas semanas más tarde era el orgulloso propietario de un visor de inspección utilizable a medias que graba imágenes fijas o videos en una tarjeta SD.

Desafortunadamente, solo se puede usar a medias debido al diseño de interfaz vulgar y una montura tambaleante. Así que pasé una tarde, desarmé el microscopio y lo puse bajo el control de un microcontrolador, completo con WiFi y un lenguaje de secuencias de comandos. ¡Mucho mejor! Ahora puedo hacer time-lapses de microscopio, pero mucho más importante, puedo tomar fotos sin desenfoque sin tocar la plataforma ondulada. Fue un truco divertido, así que pensé en compartirlo. ¡Sigue leyendo!

El alcance, tal como llega, es realmente divertido. La imagen está bien y casi todo funciona como se anuncia. Mirar bichos y flores fue bueno al menos durante unas horas. Sin embargo, todos los pequeños detalles que hacen que la experiencia del usuario sea agradable son estropeados.

Por ejemplo, el espacio libre en la tarjeta SD es tan estrecho que no puede insertarla o retirarla sin algo delgado para presionarla o si tiene las uñas muy largas. Algunos de los botones son difíciles de alcanzar detrás de la gran perilla de enfoque. El sistema de menús, para encender o apagar el anillo de luz LED, por ejemplo, es horrible. Estas son sutilezas menores, y por el precio estoy totalmente dispuesto a pasarlas por alto.

Pero el asesino, para mis propósitos, es que el soporte se tambalea tanto que el hecho de presionar el botón "OK" para tomar una foto desenfoca cualquier imagen que haya allí. El modo de video tiene un método de "detección de movimiento": siempre está activado porque la cámara se tambalea tanto que siempre cree que el objeto se acaba de mover. El culpable es el marco cursi que termina en una ventosa de silicona gruesa que se mueve como un tazón de gelatina. Así no es como se diseñan los trípodes.

Hay dos soluciones posibles para el problema de la vibración. El primero es construir un marco mejor, y eso es algo que probablemente terminaré haciendo eventualmente, porque el visor de inspección es una pieza útil. La otra solución es simplemente activar los botones de exposición (y otros) sin tocar la pequeña bestia ondulada. ¡Bienvenido a la Internet de los Microscopios!

Al abrir la caja, lo primero que encontré fue una fila de cinco puntos de prueba en el panel de teclas, así que les soldé algunos cables de cabecera para ver qué pasaba. (¡Eso fue fácil!) Están etiquetados como GND, VCC, KEY, PWR y VBAT, lo que no deja mucho a la imaginación. Cuatro de los cinco están etiquetados correctamente.

Soy un hacker analógico de corazón y, por lo general, empiezo con un osciloscopio cuando busco señales desconocidas, pero esta vez decidí comenzar con una sonda lógica, porque seguramente la única línea KEY codificaba los cinco botones del panel frontal. en una especie de código digital. Imagínese mi sorpresa cuando cada botón presionado se veía idéntico en el sniffer lógico. Quemado de nuevo. Volvamos al osciloscopio de confianza.

Resulta que los cinco botones están vinculados a cinco resistencias diferentes que sirven como la mitad inferior de un divisor de voltaje, y un ADC lee este voltaje para averiguar qué tecla se presionó. Eso explica los cinco niveles de voltaje en la traza amarilla del alcance.

Este es un truco sucio clásico y he estado esperando el día en que tuve que minimizar absolutamente la cantidad de cables conectados a un panel. ¿Quién iba a saber que vería algo raro como esto en un producto real?

El botón de encendido está separado y tira de la línea PWR (en verde en el trazo del alcance, en una escala vertical de 5 V) a la línea VBAT. Una prueba rápida con una fuente de alimentación de 3,3 V me convenció de que podía encender y apagar el dispositivo con el GPIO de un microcontrolador. También estaba bastante seguro de que podía conectar cinco pines GPIO a diferentes resistencias y "presionar" el botón correspondiente. Así que saqué el panel para medir las resistencias individuales.

En caso de que quieras replicar esto en casa, las resistencias son 0 Ω, 15 kΩ, 30 kΩ, 46,6 kΩ y 70 kΩ respectivamente, y haciendo un poco de matemática en los voltajes medidos, la resistencia pullup en la parte superior del divisor de voltaje es probablemente nominalmente 100 kΩ. Alternativamente, si tiene un DAC, puede enviar voltajes de 0 V, 400 mV, 750 mV, 975 mV o 1325 mV al pin KEY. Soldé las resistencias más cercanas que tenía en mi caja, verifiqué que todas funcionaran y llamé al hardware listo.

Pero, ¿qué pasa con la línea VCC? Algo no tenía sentido, porque los botones bajaron el voltaje a pesar de estar conectados a VCC, y la línea KEY estaba alta por defecto. Al probarlo, por supuesto, VCC era un cortocircuito total a GND y la resistencia pull-up estaba en la línea KEY. También había una resistencia vacía en la PCB del panel del teclado, lo que sugiere que en una revisión anterior los botones se activaron, pero el fabricante optimizó una sola resistencia mediante el uso de la activación interna del microcontrolador. Es pereza o sabotaje deliberado que no cambiaron la serigrafía del punto de prueba para que coincidiera. (¡Imagínese lo divertido que sería conectar su equipo de prueba a "VCC" y GND!)

El resto del trabajo era solo yo usando mis herramientas favoritas para un trabajo rápido como este. Es posible que desee usar un Arduino o un solo ESP8266, pero últimamente he estado jugando con Mecrisp-Stellaris Forth en placas STM32F103 baratas, así que ahí es donde fui. Originalmente estaba pensando en hacer un panel de teclas remotas personalizado, por lo que los muchos pines GPIO habrían significado que no tendría que recurrir al truco de ADC y resistencias.

Ya estaba usando la serie UART para la programación y la depuración, y decidí que un panel de teclas separado era un proyecto en sí mismo, así que me lancé y puse el microscopio en la red WiFi. Mostré un ESP8266 con el firmware del puente serie WiFi esp-link. Voilá, control remoto. Apagar los microcontroladores de la línea VBAT del microscopio (a través de un interruptor) hace que todo sea completamente autónomo cuando tengo que moverlo alrededor del escritorio.

Hubo muchos detalles que requirieron pruebas de prueba y error para hacerlo bien. Se requieren diferentes retrasos para presionar los botones en el modo de cámara y en el sistema de menú, por ejemplo. No los optimicé, pero hice la demora lo suficiente como para que siempre funcione. El botón de encendido y apagado solo funciona si se mantiene presionado durante más de 1,5 segundos. es peculiar Todo esto fue bastante rápido para comenzar a trabajar con un sistema de depuración interactivo como el entorno Forth, aunque tampoco creo que sea mucho peor en un ciclo de compilación y flash como en C o Arduino.

Hay dos cosas lindas que hice en el firmware que vale la pena mencionar. La línea KEY que se utiliza para detectar pulsaciones de botones solo se activa cuando el microscopio está encendido, por lo que el microcontrolador puede leerla para averiguar si el microscopio está actualmente encendido o apagado. Cuando el microscopio se enciende por primera vez, está en modo de video, lo que permite que el software realice un seguimiento interno del modo en el que se encuentra actualmente.

Combinado, esto permite un solo comando de "disparo" que primero verifica que el microscopio esté encendido, luego cambia al modo de cámara si aún no está allí, y finalmente toma una foto. De manera similar, un comando "eliminar" cambia al modo de vista previa y elimina la última foto, confirmando todos los "¿estás seguro?" diálogos automáticamente. El código está aquí si estás interesado.

El sistema de menú listo para usar es horrible. Se requieren algo así como quince pulsaciones de teclas para encender o apagar la luz del anillo. Escribir esto en el microcontrolador lo hace mucho más agradable. Además, ahora es posible configurar exposiciones repetitivas para hacer lapsos de tiempo, o filmar un video de dos minutos una vez cada diez minutos, o automatizar prácticamente cualquier cosa. Podría agregar un sensor de distancia para que la filmación sea automática cuando hay una PCB debajo de la lente, o algo tonto. Me gusta mucho la idea de vincular estas funcionalidades de secuencia de comandos a botones externos: un interruptor de luz de una sola pulsación o un botón de exposición entre paréntesis estaría bien, al igual que una eliminación de un solo botón.

El mundo ahora es mi ostra, así que espere ver muchas más imágenes de primeros planos en los próximos artículos de Hackaday. Y si toma uno de estos microscopios, no dude en abrirlo, soldar un puñado de resistencias y tomar el control usted mismo. Probablemente lo encuentre lo suficientemente útil como para construir un soporte adecuado, pero esa es otra historia.

COMPARTIR