banner

Nachricht

Sep 15, 2023

Hacken eines Inspektionsmikroskops

Manchmal muss ich in der Lage sein, sehr kleine Dinge zu fotografieren, und der sogenannte Makromodus meiner Kompaktkamera reicht einfach nicht aus. Und es schadet auch nie, für kleine Lötarbeiten ein Inspektionsfernrohr zur Hand zu haben, obwohl ich für die meisten Aufgaben eine einfache Juwelierlupe auf einem Auge bevorzuge. Also schickte ich knapp über 40 US-Dollar an meinen engen Freund Alibaba und war ein paar Wochen später stolzer Besitzer eines halbwegs brauchbaren Inspektionsfernrohrs, das Standbilder oder Videos auf einer SD-Karte aufzeichnet.

Leider ist es aufgrund des kitschigen Interface-Designs und der wackeligen Halterung nur halbwegs brauchbar. Also verbrachte ich einen Nachmittag damit, das Mikroskop auseinanderzunehmen und es unter Mikrocontroller-Steuerung zu stellen, komplett mit WLAN und einer Skriptsprache. Viel besser! Jetzt kann ich Mikroskop-Zeitrafferaufnahmen machen, aber was noch wichtiger ist, ich kann verwacklungsfreie Fotos machen, ohne das wackelige Stativ zu berühren. Es war ein lustiger Hack, also dachte ich, ich würde ihn teilen. Weiter lesen!

Das Zielfernrohr, so wie es ankommt, macht wirklich Spaß. Das Bild ist einfach in Ordnung und fast alles funktioniert wie angekündigt. Das Betrachten von Käfern und Blumen tat zumindest ein paar Stunden lang gut. Allerdings sind alle kleinen Details, die für ein angenehmes Benutzererlebnis sorgen, verpfuscht.

Beispielsweise ist der Spalt auf der SD-Karte so eng, dass man sie ohne etwas Dünnes zum Eindrücken oder mit sehr langen Fingernägeln weder einlegen noch herausnehmen kann. Einige der Tasten hinter dem großen Fokusknopf sind schwer zu erreichen. Das Menüsystem, um beispielsweise das LED-Ringlicht ein- und auszuschalten, ist schrecklich. Das sind kleine Kritikpunkte, und für den Preis bin ich durchaus bereit, darüber hinwegzusehen.

Aber für meine Zwecke ist das Problem, dass der Ständer so wackelig ist, dass das Drücken der „OK“-Taste zum Aufnehmen eines Bildes das vorhandene Bild verwischt. Der Videomodus verfügt über eine „Bewegungserkennung“-Methode – sie ist immer eingeschaltet, weil die Kamera so stark wackelt, dass sie immer denkt, das Objekt habe sich gerade bewegt. Der Übeltäter ist der kitschige Rahmen, der in einem dicken Silikonsaugnapf endet, der wie eine Schüssel mit Gelee herumwackelt. So entwirft man keine Stative.

Es gibt zwei mögliche Lösungen für das Vibrationsproblem. Die erste besteht darin, einen besseren Rahmen zu bauen, und das werde ich wahrscheinlich irgendwann tun, weil das Inspektionsrohr ein nützlicher Ausrüstungsgegenstand ist. Die andere Lösung besteht einfach darin, die Belichtungstasten (und andere Tasten) auszulösen, ohne das wackelige kleine Biest zu berühren. Willkommen im Internet der Mikroskope!

Als ich das Gehäuse öffnete, fand ich als Erstes eine Reihe von fünf Testpunkten auf dem Tastenfeld, also habe ich einige Anschlussdrähte daran angelötet, um zu sehen, was los ist. (Das war einfach!) Sie sind mit GND, VCC, KEY, PWR und VBAT gekennzeichnet, was nicht viel der Fantasie überlässt. Vier der fünf sind korrekt beschriftet.

Ich bin im Herzen ein analoger Hacker und beginne normalerweise mit einem Oszilloskop, wenn ich nach unbekannten Signalen suche, aber dieses Mal habe ich mich entschieden, mit einer Logiksonde zu beginnen, weil die einzelne KEY-Leitung sicherlich die fünf Tasten auf der Vorderseite codierte in einer Art digitalem Code. Stellen Sie sich meine Überraschung vor, als jeder Tastendruck auf dem Logikschnüffler identisch aussah. Wieder verbrannt. Zurück zum treuen Oszilloskop.

Es stellt sich heraus, dass die fünf Tasten mit fünf verschiedenen Widerständen verbunden sind, die als untere Hälfte eines Spannungsteilers dienen, und ein ADC liest diese Spannung aus, um herauszufinden, welche Taste gedrückt wurde. Das erklärt die fünf Spannungspegel auf der gelben Oszilloskopkurve.

Dies ist ein klassischer schmutziger Trick und ich habe auf den Tag gewartet, an dem ich die Anzahl der an ein Panel angeschlossenen Drähte unbedingt minimieren musste. Wer hätte gedacht, dass ich so etwas Hackiges in einem tatsächlichen Produkt sehen würde?

Der Netzschalter ist separat und zieht die PWR-Leitung (in Grün auf der Oszilloskopkurve, auf einer vertikalen 5-V-Skala) zur VBAT-Leitung. Ein kurzer Test mit einem 3,3-V-Netzteil überzeugte mich davon, dass ich das Gerät über den GPIO eines Mikrocontrollers ein- und ausschalten konnte. Ich war mir auch ziemlich sicher, dass ich fünf GPIO-Pins mit verschiedenen Widerständen verbinden und den entsprechenden Knopf „drücken“ könnte. Also habe ich das Panel abgenommen, um die einzelnen Widerstände zu messen.

Falls Sie dies zu Hause nachbilden möchten, sind die Widerstände 0 Ω, 15 kΩ, 30 kΩ, 46,6 kΩ bzw. 70 kΩ, und um ein wenig mit den gemessenen Spannungen zu rechnen, der Pullup-Widerstand oben am Spannungsteiler beträgt wahrscheinlich nominell 100 kΩ. Wenn Sie über einen DAC verfügen, können Sie alternativ auch einfach Spannungen von 0 V, 400 mV, 750 mV, 975 mV oder 1325 mV an den KEY-Pin senden. Ich habe die nächstgelegenen Widerstände, die ich in meiner Box hatte, verlötet, überprüft, ob sie alle funktionieren, und die Hardware als fertig bezeichnet.

Aber was ist mit der VCC-Linie los? Etwas ergab keinen Sinn, da die Tasten die Spannung herunterzogen, obwohl sie an VCC angeschlossen waren, und die KEY-Leitung standardmäßig hochgezogen wurde. Beim Ausprobieren stellte sich heraus, dass VCC natürlich einen Kurzschluss zu GND hatte und der Pull-up-Widerstand auf der KEY-Leitung lag. Es gab auch einen unbestückten Widerstand auf der Platine des Tastaturfelds, was darauf hindeutet, dass in einer früheren Version die Tasten hochgezogen wurden, der Hersteller jedoch einen einzelnen Widerstand durch die Verwendung des internen Pullups des Mikrocontrollers optimiert hat. Es ist entweder Faulheit oder vorsätzliche Sabotage, dass sie den Testpunkt-Siebdruck nicht entsprechend geändert haben. (Stellen Sie sich vor, wie viel Spaß es machen würde, Ihre Testgeräte an „VCC“ und GND anzuschließen!)

Der Rest der Arbeit bestand nur darin, dass ich meine Lieblingswerkzeuge für einen schnellen Job wie diesen benutzte. Vielleicht möchten Sie einen Arduino oder einen einzelnen ESP8266 verwenden, aber ich habe in letzter Zeit mit Mecrisp-Stellaris Forth auf billigen STM32F103-Boards herumgespielt, also bin ich dorthin gegangen. Ich hatte ursprünglich darüber nachgedacht, ein benutzerdefiniertes Ferntastenfeld zu erstellen, sodass ich aufgrund der vielen GPIO-Pins nicht auf den Trick mit ADC und Widerständen zurückgreifen musste.

Ich habe UART bereits zum Programmieren und Debuggen verwendet und bin zu dem Schluss gekommen, dass ein separates Tastenfeld ein eigenständiges Projekt ist, also habe ich mich entschieden und das Mikroskop an das WiFi-Netzwerk angeschlossen. Ich habe einen ESP8266 mit der ESP-Link WiFi-Serial Bridge-Firmware geflasht. Voila, Fernbedienung. Durch die Abschaltung der Mikrocontroller über die VBAT-Leitung des Mikroskops (über einen Schalter) ist das Ganze völlig autark, wenn ich es auf dem Schreibtisch bewegen muss.

Es gab viele Details, die durch Ausprobieren überprüft werden mussten, um richtig zu werden. Beispielsweise sind für Tastendrücke im Kameramodus und im Menüsystem unterschiedliche Verzögerungen erforderlich. Ich habe diese nicht optimiert, sondern die Verzögerung so lang gemacht, dass es immer funktioniert. Der Ein- und Ausschaltknopf funktioniert nur, wenn er länger als 1,5 Sekunden gedrückt gehalten wird. Es ist eigenartig. Mit einem interaktiven Debugging-System wie der Forth-Umgebung ließ sich das alles ziemlich schnell zum Laufen bringen, obwohl ich glaube, dass es in einer Compile-and-Flash-Schleife wie in C oder Arduino auch nicht viel schlimmer wäre.

Es gibt zwei nette Dinge, die ich in der Firmware gemacht habe und die es wert sind, erwähnt zu werden. Die KEY-Leitung, die zum Erkennen von Tastendrücken verwendet wird, wird nur hochgezogen, wenn das Mikroskop eingeschaltet ist, sodass sie vom Mikrocontroller gelesen werden kann, um herauszufinden, ob das Mikroskop gerade ein- oder ausgeschaltet ist. Wenn das Mikroskop zum ersten Mal eingeschaltet wird, befindet es sich im Videomodus, sodass die Software intern verfolgen kann, in welchem ​​Modus es sich gerade befindet.

Zusammengenommen ermöglicht dies einen einzigen „Aufnahme“-Befehl, der zunächst überprüft, ob das Mikroskop eingeschaltet ist, dann in den Kameramodus wechselt, falls es noch nicht eingeschaltet ist, und schließlich ein Foto aufnimmt. Ebenso wechselt ein „Löschen“-Befehl in den Vorschaumodus und löscht das letzte Foto, wobei alle „Sind Sie sicher?“-Fragen bestätigt werden. Dialoge automatisch. Den Code finden Sie hier, falls Sie interessiert sind.

Das sofort einsatzbereite Menüsystem ist schrecklich. Es sind etwa fünfzehn Tastendrücke erforderlich, um das Ringlicht ein- oder auszuschalten. Dies im Mikrocontroller zu skripten, macht es viel angenehmer. Darüber hinaus ist es jetzt möglich, sich wiederholende Belichtungen einzurichten, um Zeitraffer zu erstellen, alle zehn Minuten ein zweiminütiges Video zu filmen oder praktisch alles zu automatisieren. Ich könnte einen Abstandssensor hinzufügen, um das Filmen automatisch zu machen, wenn sich eine Leiterplatte unter der Linse befindet, oder so etwas Dummes. Die Idee, diese Skriptfunktionen mit externen Tasten zu verknüpfen, gefällt mir wirklich gut: Eine Lichtumschaltung oder eine Belichtungsreihe mit nur einem Tastendruck wäre schön, ebenso wie das Löschen mit einer einzigen Taste.

Die Welt steht mir jetzt zu Füßen, also erwarten Sie in den kommenden Hackaday-Artikeln noch viel mehr Super-Nahaufnahmen. Und wenn Sie eines dieser Mikroskope in die Hand nehmen, zögern Sie nicht, es zu öffnen, eine Handvoll Widerstände einzulöten und selbst die Kontrolle darüber zu übernehmen. Sie werden es wahrscheinlich so nützlich finden, dass Sie daraus einen richtigen Ständer bauen können, aber das ist eine andere Geschichte.

AKTIE