Forum: Mikrocontroller und Digitale Elektronik Messgerät USB-Stick vorgaukeln


von Stefan D. (mackie05)


Lesenswert?

Hallo Zusammen,

ich möchte gern eine kleine Schaltung entwerfen, die meinem 
Multimeter(HMC8012) vorgauckelt ein USB-Stick zu sein, um die zu 
speichernden Daten nicht zu speichern, sondern zur Weiterverarbeitung an 
den PC zu senden.

Mein Ansatz wäre Folgender:
A.) Bspw. AT90USB so zu konfigurieren, dass er sich gegenüber dem 
Messgerät wie ein USB Stick (FAT32) verhält(Hauptproblem)
B.) Die empfangenen Daten(Messwerte) über eine UART->USB Wandler an der 
PC schicken und dort einlesen(kein Problem).

USB low speed mit 1,5 Mbit/s sollten hier komplett ausreichen, insofern 
das Messgerät die Messwerte kontinuierlich und nicht blockweise 
schreibt. Ansonsten müsste man das USB Device noch als low speed device 
erkennbar machen.

Warum möchte ich dass?
Das Messgerät ist in der Lage bis zu 230 Messungen/Sekunde auf den Stick 
zu schreiben(CSV-Datei), aber nicht mit dieser Geschwindigkeit die Daten 
über UBS als VCP/USBTCM oder LAN LXI rauszugeben. Hier erreiche ich max 
20 Messwerte/Sekunde. Siehe 
Beitrag "Virtual Comport mit 250 Hz unter Win7 auslesen"

Hat jemand von Euch schonmal soetwas gemacht, oder Erfahrungen mit dem 
Simulieren eines USB-Sticks?

Danke und Gruß

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Das STM32F429 Disco Board hat in der mitgelieferten Demo schon USB 
Massenspeicher Funktion integriert, um z.B. Bildchen oder Musik 
hochzuladen.
Die Software sowit anzupassen, das ein neuer Schreibvorgang die UART 
anspricht, dürfte im Rahmen des Möglichen sein.
Der einzige Haken ist, das du ein USB-Mikro (OTG) Kabel brauchst, bei 
dem auf der anderen Seite ein normaler USB-A Stecker ist, oder eben das, 
was am Multimeter dran ist.
Solche Kabel sind lustigerweise nicht unbedingt im Computerladen zu 
erstehen, obwohl sie bei jedem Telefon mittlerweile beiliegen.

von Bla (Gast)


Lesenswert?

Matthias S. schrieb:
> Telefon

Könnte man das nicht gleich damit erledigen? Also CSV Datei aufm Handy 
speichern lassen und per dropbox, rsync usw. zum PC schieben. Vermutlich 
wird das Gerät blockweise schreiben, die Verzögerung fürs syncen wäre 
dann auch egal.

von Nobody (Gast)


Lesenswert?

Hast du mal versucht den Hersteller des Multimeters anzuschreiben was 
man da machen kann?
Das was du vorhast ist schon enormer Aufwand.

von Nils S. (kruemeltee) Benutzerseite


Lesenswert?

Bla schrieb:
> Könnte man das nicht gleich damit erledigen? Also CSV Datei aufm Handy
> speichern lassen und per dropbox, rsync usw. zum PC schieben. Vermutlich
> wird das Gerät blockweise schreiben, die Verzögerung fürs syncen wäre
> dann auch egal.

Er will sich das live ansehen, das wird so nichts.

von Cyblord -. (cyblord)


Lesenswert?

Nobody schrieb:
> Hast du mal versucht den Hersteller des Multimeters anzuschreiben was
> man da machen kann?
> Das was du vorhast ist schon enormer Aufwand.

Das hat mit dem Hersteller nichts zu tun. Dafür gibt es keine 
Standardlösung. Das Messgerät ist ein USB-Host, welcher ein USB 
Massenspeichergerät erwartet. Für den PC gilt dasselbe. Darum fällt eine 
direkte Verbindung jeglicher Art flach. Es MUSS eine Emulation 
stattfinden, welche beiden Seiten ein USB-Device vorgaukelt.

von Flip B. (frickelfreak)


Lesenswert?

Es gab doch mal usb- verbindubgskabel mit elektronik, die auf beiden 
seiten einen massenspeicher darstellen.

von Jan H. (jan_m_h)


Lesenswert?

Flip B. schrieb:
> Es gab doch mal usb- verbindubgskabel mit elektronik, die auf beiden
> seiten einen massenspeicher darstellen.

Ich kenne das nur so, dass die Kabel den PC an einem Ende als 
Massenspeicher für das andere Ende darstellt. Der PC, der Massespeicher 
spielt braucht aber Treiber dazu. Könnte hier aber auch funktionieren?

von Nobody (Gast)


Lesenswert?

Cyblord -. schrieb:
> Das hat mit dem Hersteller nichts zu tun. Dafür gibt es keine
> Standardlösung.

Schwachsinn.

Der TO versucht ein Problem des Herstellers zu umgehen statt es an der 
Wurzel zu fassen.

Lesen:

Stefan D. schrieb:
> nicht mit dieser Geschwindigkeit die Daten
> über UBS als VCP/USBTCM oder LAN LXI rauszugeben. Hier erreiche ich max
> 20 Messwerte/Sekunde.

Hier kann selbstverständlich der Hersteller Auskunft geben. Oder sagt 
der Hersteller irgendwo dass nur 20 Messungen/s gehen. Kann ich mir kaum 
vorstellen. Warum sollte am USB Host mehr rauskommen wie am USB Device?

von Jim M. (turboj)


Lesenswert?

Stefan D. schrieb:
> USB low speed mit 1,5 Mbit/s sollten hier komplett ausreichen, insofern
> das Messgerät die Messwerte kontinuierlich und nicht blockweise
> schreibt.

Nur blöd das USB Massenspeicher als Blockgerät mit 512 Byte Blöcken 
arbeitet. Wenn das Meßgerät nicht völlig hirntot programmiert ist 
schreibt es jeden Block nur einmal wenn er "voll" ist.

Live View wird also eher nix bei den Datenraten eines Multimeters 
(einige einzelne Werte/sec).

von Stefan D. (mackie05)


Lesenswert?

Jim M. schrieb:
> Stefan D. schrieb:
>> USB low speed mit 1,5 Mbit/s sollten hier komplett ausreichen, insofern
>> das Messgerät die Messwerte kontinuierlich und nicht blockweise
>> schreibt.
>
> Nur blöd das USB Massenspeicher als Blockgerät mit 512 Byte Blöcken
> arbeitet. Wenn das Meßgerät nicht völlig hirntot programmiert ist
> schreibt es jeden Block nur einmal wenn er "voll" ist.
>
> Live View wird also eher nix bei den Datenraten eines Multimeters
> (einige einzelne Werte/sec).

Hallo Jim,

512 Byte Blöcke wäre kein Problem: 1 Messwert umfasst 14 Bytes -> bei 
ca. 230 Messwerten/Sekunde hätte ich 512 Bytes nach ca. 16 ms voll -> 
alle 16ms 512 Bytes(36 Messwerte) das würde ich schon als Liveview 
ansehen.

Das STM32F429 Disco Board ist bestimmt eine Möglichkeit, allerdings 
fehlen mir die Kenntnisse ein STM zu programmieren - da ist mir Atmel 
lieber.

Diese USB-Verbindungskabel habe ich auch gesehen - ich glaube aber 
nicht, dass das seitens Messgerät so einfach akzeptiert wird.

Evtl. könnte ich das USB Signal zwischen Messgerät und Stick per µC 
grabben, den Overhead entfernen und über TTL/USB Wandler an den PC 
streamen... Wird allerdings aufwendig, wenn mit Datenraten > 1,5 MBit 
geschrieben wird, dann reichen die 20 MHz der ATMegas nicht mehr aus.

Habe gerade überflogen und musste feststellen, dass das grabben mit 
20Mhz schon recht sportlich ist... Werde weiter suchen...

: Bearbeitet durch User
von Pic T. (pic)


Lesenswert?

Eine funktionierende Lösung ware USB SD Adapter mit sd-wifi. Karte, am 
besten die hackbare. Einfach im forum suchen die die heißt.

von Stefan D. (mackie05)


Lesenswert?

Pic T. schrieb:
> Eine funktionierende Lösung ware USB SD Adapter mit sd-wifi. Karte, am
> besten die hackbare. Einfach im forum suchen die die heißt.

Das Problem wird hier vermutlich wieder sein, eine Datei auszulesen, die 
sich im Schreibzugriff befindet. Das gleiche könnte ich ja auch direkt 
auf dem Gerät machen.
Zudem wird die Latenz immer größer, desto größer die Datei wird...
Werde ich heute mal austesten ob das prinzipiell klappt.

von Stefan D. (mackie05)


Lesenswert?

So, gestern gemessen, das HMC schreibt mit USB low speed auf den Stick, 
allerdings wird wohl doch mehr Rechenpower zum grabben notwendig sein.

Matthias S. schrieb:
> Das STM32F429 Disco Board hat in der mitgelieferten Demo schon USB
> Massenspeicher Funktion integriert, um z.B. Bildchen oder Musik
> hochzuladen.
> Die Software sowit anzupassen, das ein neuer Schreibvorgang die UART
> anspricht, dürfte im Rahmen des Möglichen sein.
> Der einzige Haken ist, das du ein USB-Mikro (OTG) Kabel brauchst, bei
> dem auf der anderen Seite ein normaler USB-A Stecker ist, oder eben das,
> was am Multimeter dran ist.
> Solche Kabel sind lustigerweise nicht unbedingt im Computerladen zu
> erstehen, obwohl sie bei jedem Telefon mittlerweile beiliegen.

Matthias ich komme auf Deinen Tip zurück und werde mich mal am STM32 
Discoboard versuchen - das ich dann kurzfristig die von Dir beschriebene 
Modifikation hinbekomme glaube ich zwar nicht, aber es ist ein schöner 
Einstieg in die 32-Bit Arm Welt. :-)
Kannst Du mir eine Entwicklungsumgebung für Anfänger empfehlen?

Danke und Gruß

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Stefan D. schrieb:
> Kannst Du mir eine Entwicklungsumgebung für Anfänger empfehlen?

Es gibt viele und ich habe nicht alle ausprobiert. Ich benutze zur Zeit 
ein älteres Coocox (1.7.7), weil wohl das neuere ein paar Problemchen 
hat.
http://www.coocox.org/
Dazu die Erweiterungen von Uwe B., der auch auf dieses ältere Coocox 
gebaut hat und dafür die Ergänzungen für den F429 gemacht hat.
Uwes Seite ist sowieso ein prima Anlaufpunkt für alles rund um die Disco 
Boards von STM:
http://mikrocontroller.bplaced.net/wordpress/

Für dich sicherlich hilfreich die CoIDE Artikel und generell alles um 
das F429 Discovery.

Die eierlegende Wollmilchsau ist eigentlich Eclipse - aber sicherlich 
nichts für Anfänger. Mich nerven die dauernden Updates und der riesige 
Unterbau. War mal von IBM und hauptsächlich zur Java Entwicklung 
gedacht, kann aber so gut wie jede Toolchain als Plugin - wenn man es 
kapiert.
http://www.eclipse.org/

EM:Blocks verspricht, etwas einfacher zu sein, ich hatte damit Probleme:
http://www.emblocks.org/web/
Usw....
STM selber bevorzugt die groosen drei: IAR, Keil und Atollic, die aber 
mittlerweile alle Geld kosten. Im Gegensatz zu Atmel stellt ST selber 
keine IDE bereit.

Der Bildschirm des F429 könnte übrigens ein nettes Feature für dein 
Projekt sein. Grundsätzlich kiregt man mit dem F429 Discovery ein gutes 
Board zu gutem Preis. Ich benutze es mittlerweile als kleines Handheld 
Oszilloskop - mit einer leicht modifizierten Software von Uwe B. :-)

: Bearbeitet durch User
von Peter II (Gast)


Lesenswert?

Stefan D. schrieb:
> Das Problem wird hier vermutlich wieder sein, eine Datei auszulesen, die
> sich im Schreibzugriff befindet. Das gleiche könnte ich ja auch direkt
> auf dem Gerät machen.

das ist kein Problem, man "sieht" ja was geschrieben wird. Das Problem 
ist das nicht nur die Datei sondern auch die FAT aktualisiert wird. Man 
muss also anhand der Daten oder der Sektoren entscheiden ob es sich um 
Nutzdaten handelt oder nicht.

von Vergangener (Gast)


Lesenswert?

Matthias S. schrieb:
> das du ein USB-Mikro (OTG) Kabel brauchst, bei
> dem auf der anderen Seite ein normaler USB-A Stecker ist

Nicht USB-A Stecker, sondern Buchse, wie bei einer Verlängerung.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Vergangener schrieb:
> Nicht USB-A Stecker, sondern Buchse, wie bei einer Verlängerung.

Eben nicht. Das Messgerät hat eine USB-A Buchse, um da einen Stick 
anzustecken. Das F429 besitzt eine USB-OTG Buchse. Du brauchst also ein 
Stecker-Stecker Kabel. Wie gesagt, liegt das bei Telefonen oft mit bei, 
ist aber gar nicht so einfach im Computerladen zu bekommen.
Könnte aber im Telefon-Schrotterladen erhältlich sein.
Zum Rechner könnte dann die CDC auf dem F429 nützlich sein. Mini USB auf 
USB-A.

: Bearbeitet durch User
von Stefan D. (mackie05)


Lesenswert?

Matthias, danke für die Infos! F429er Board ist bestellt, Kabel ist auch 
vorhanden, dann kanns ja bald weitergehen... :-)

Tutorial um eine LED leuchten zu lassen habe ich auch schon gesehen - 
wie schwer kann der Rest dann schon sein? ;-)

Heute dann noch einen Test die Messdaten, die gerade geschrieben werden 
auszulesen.

: Bearbeitet durch User
von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Stefan D. schrieb:
> Das STM32F429 Disco Board ist bestimmt eine Möglichkeit, allerdings
> fehlen mir die Kenntnisse ein STM zu programmieren - da ist mir Atmel
> lieber.

Das geht mit einem AT90USBxxx / ATmega*U* natürlich genauso.  Es würde
es mich wundern, wenn nicht sogar in diesem Konvolut von ASF
Beispielcode dafür da wäre (zumindest zugeschnitten auf deren
Evalboards).

Ich halte den Weg dennoch für fragwürdig.  Ein Dateisystem ist kein
Datenstrom, und es ist keineswegs sicher, dass der Host auf das
Speichermedium tatsächlich 512-Byte-weise schreibt.  Je nachdem, wie
viel RAM er zum Puffern zur Verfügung hat, kann er auch in beliebig
größeren Blöcken schreiben.

von Peter II (Gast)


Lesenswert?

Jörg W. schrieb:
> Je nachdem, wie
> viel RAM er zum Puffern zur Verfügung hat, kann er auch in beliebig
> größeren Blöcken schreiben.

größer würde ich nicht mal als Problem sehen. Wenn ein Block mehrfach 
geschrieben wird wo immer ein paar Messwerte hinzukommen ist das schon 
etwas kompliziertet.

von Soso (Gast)


Lesenswert?

Falls es doch Atmel sein soll gab es da mal das At90usbkey, das wurde 
schon mit Mass Storage Demo geliefert und die Usb-Avrs laufen mit Lufa 
problemlos. Muss man noch sehen wie man die Daten die kommen 
unterscheidet und weitersendet, da das aber Low-Speed sein muss (High 
oder Full können die kleinen Avrs nicht) dürfte das zu schaffen sein...

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Soso schrieb:
> da das aber Low-Speed sein muss (High oder Full können die kleinen Avrs
> nicht)

Na klar machen die full speed.  Lediglich die Software-Bitbanger
(VUSB) sind low speed only.

von Soso (Gast)


Lesenswert?

Stimmt, Du hat recht, Full Speed können die mit Hardware USB, ist ja 
auch nur 12 Mhz. Dann ist da bei den 8-bittern aber Schluss...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.