Was wäre der einfachste Weg, um Daten von einem USB-Glukosemessgerät extern mit einem Mikrocontroller zu lesen? Nicht mit der mitgelieferten Software. Wie könnte ich also die digitalen Signale erfassen, die gesendet werden?
Was wäre der einfachste Weg, um Daten von einem USB-Glukosemessgerät extern mit einem Mikrocontroller zu lesen? Nicht mit der mitgelieferten Software. Wie könnte ich also die digitalen Signale erfassen, die gesendet werden?
Antworten:
Die native Schnittstelle zu den meisten Glukosemessgeräten (Abbott, Bayer, J & J und Roche) ist eine UART-Ausgabe. An einem Ende des Kabels befindet sich eine Schaltung, die dies in ein USB-Protokoll übersetzt. Es ist möglich, die Daten mit einem UART zu lesen, indem ein 2,5-mm- oder 3,5-mm-Stecker verwendet wird, um eine direkte Verbindung mit dem Messgerät herzustellen.
Der J & J verwendet einen 3,5-mm-Stecker mit Tip als Tx und Ring als Rx (Tx und Rx für Ihren UART, nicht für das Messgerät) und kommuniziert mit 9600 Baud. Mit Ausnahme der verschiedenen J & J One-Touch-Modelle sind die Signalpegel für die anderen Marken normalerweise weder reguläre UART- (0 / 3,3) noch RS232- (+ -5) Pegel, sondern eine seltsame Kombination. Einige Modelle tauschen auch Tx / Rx im Vergleich zu J & J. Hinweis: One Touch Ultra und Ultra 2 verwenden ein anderes (textbasierteres) Protokoll als das vom Ultra Mini verwendete Binärprotokoll (einen Link zu letzterem finden Sie in der Antwort von CoderTao).
Wenn Sie immer noch für ein Gerät suchen, diese Suche läßt vermuten , dass OneTouch Ultramini / UltraEasy® hat eine RS232 - Schnittstelle zur Verfügung, mit der Dokumentation des Software Developer - was sollte es einfacher, eine Schnittstelle machen.
Sie benötigen ein eingebettetes Gerät mit USB-Host, um von Ihrem USB-Gerät lesen zu können. Dies impliziert ein gewisses Maß an Komplexität (und Kosten).
Der einfachste Weg ist wahrscheinlich die Verwendung von Linux. In dieser Frage finden Sie einige Optionen: /electronics/2191/options-for-a-small-linux-hw-platform
Sie benötigen außerdem einen Linux-Treiber für Ihr Gerät. Wenn einer nicht verfügbar ist, müssen Sie möglicherweise den vorhandenen Treiber zurückentwickeln (möglicherweise mithilfe von usbsnoop oder anderen USB-Sniffing-Tools).
Alternativ gibt es kleinere / billigere / energieeffizientere Geräte wie USB-AVRs oder verschiedene Arten von ARM-MCUs, die USB-Hosts ausführen können.
Ohne USB wäre dies mit einem Arduino unkompliziert. Arduino kann nur ein USB-Gerät und nur eine serielle Schnittstelle über USB sein.
Wenn Sie einen alternativen Glukoseleser finden könnten, der eine Spannung oder ein einfaches digitales Signal (I2C / SPI / RS232) ausgibt, wären die Dinge einfacher ...
Wenn Sie wirklich einen USB-Embedded-Host verwenden möchten, können Sie PIC24 von Microchip verwenden. Sie bieten einen guten USB-Stack mit einigen grundlegenden Geräteprofilen. Ich habe kein Geräteprofil für ein Blutzuckermessgerät gesehen, aber es ist möglich, dass sie ein HID- oder CDC-Profil verwenden. Wenn nicht, müssen Sie diese Informationen möglicherweise vom Hersteller des Blutzuckermessgeräts erhalten.