Schnelles Datenstreaming von Microcontroller zu PC

Ersatz- und Fremdteile, Modifikationen, etc.
Special Hints - Spare- & foreign parts, Modifications, etc.

Moderator: Jan3D

Forumsregeln
Bitte beachte die Forumsregeln!
Antworten
atzensepp
Beiträge: 660
Registriert: 10 Jul 2012, 21:40
Wohnort: Uttenreuth

Schnelles Datenstreaming von Microcontroller zu PC

Beitrag von atzensepp » 03 Jul 2022, 17:22

Hallo,

Für ein kleines Projekt mit Zeilensensor aus einem Scanner bin ich auf der Suche nach einer Möglichkeit für eine schnelle analoge Datenefassung (1 x 8 Bit) und Übertragung (Streaming) an PC. Versuche mit diversen Arduinos (UNO, MEGA) waren noch nicht zufreidenstellend.
Es gibt mehrere Bottlenecks:
1. AD-Wandler
2. Datenübertragung Ausgangsseitig (Max 1Mb/s)
3. Datenübertragung Eingangsseitig (PC)

Momentan hänge ich schon bei der Datenübertragung. Effektiv schaffe ich mit USB-Serial nicht mehr als 33 kByte / s. Und mit ESP8622 und Wifi: 70 kByte/s. Ich würde mindestens 100 kByte/s bekommen wollen. Und der AD-Wandler vom ESP ist zu langsam.
Was kann ich da tun? Ethernet-Shield? Anderen Microcontroller verwenden? FPGA einsetzen?

Grüße
Florian

Benutzeravatar
elektrofuzzis
Beiträge: 212
Registriert: 25 Jun 2016, 09:40

Re: Schnelles Datenstreaming von Microcontroller zu PC

Beitrag von elektrofuzzis » 03 Jul 2022, 19:05

Hallo Florian,

die ATMEL Familie ist dafür zu langsam.

Über serielle Verbindungen wirst du max 256kBit zusammen bekommen.

Bleibt nur WLAN, da schaffst Du es mit den ESPs wahrscheinlich gerade so eben.

Musst Du zwingend Online übertragen oder kannst Du ggf. auf einer SD Karte oder im RAM buffern?

Gruss

Stefan

atzensepp
Beiträge: 660
Registriert: 10 Jul 2012, 21:40
Wohnort: Uttenreuth

Re: Schnelles Datenstreaming von Microcontroller zu PC

Beitrag von atzensepp » 03 Jul 2022, 22:07

Hallo Stefan,

ich möchte gerne eine "Live-Übertragung" zum PC.
Die ESPs sind von der Übertragung her vielversprechend, allerdings kann ich die ADCs nicht verwenden, da zu langsam..
Für einen parallelen ADC reichen die Pins nicht und Serielles Auslesen über SPI/I2C macht die Sache auch wieder langsam.

Mir scheint aber auch die PC-Schnittstelle mit der seriellen Übertragung limitiert zu sein. DA muss man evtl. auf andere Protokolle ausweichen.
Ein schneller Microcontroller mit ausreichend Leistung und USB3 müsste es doch geben.

Florian

Benutzeravatar
elektrofuzzis
Beiträge: 212
Registriert: 25 Jun 2016, 09:40

Re: Schnelles Datenstreaming von Microcontroller zu PC

Beitrag von elektrofuzzis » 03 Jul 2022, 23:19

Hallo Florian,

selbst die neuste Generstion der esp/s3 kommt nicht über usb2 hinaus. Wifi reicht von der Bandbreite laut Datenblatt aus. Bei der Implementierung wirst Du etwas feilen müssen, die Webserver Implemtierung von espressif ist z.B. recht langsam.

Grundsätzlich hast Du mit den ESPs für einen parallelen AD Wandler genug Pins, kommt darauf an was Du sonst noch brauchst. Schau mal, ob Du einen AD Wandler mit I2S findest. Da würde die Bandbreite reichen, ist ein serieller Bus.

Wenn Du mehr Leistung brauchst, dann wird es im Microcontrollerumfeld eng.

Gruss,

Stefan

Benutzeravatar
MasterOfGizmo
Beiträge: 2720
Registriert: 30 Nov 2014, 07:44

Re: Schnelles Datenstreaming von Microcontroller zu PC

Beitrag von MasterOfGizmo » 04 Jul 2022, 16:30

Mir ist nicht ganz klar, welche Datenrate Du anstrebst. 1MBit/s oder 1MByte/s?

Der ESP32 und die gängigen CP2102 auf den ESP32-Boards schaffen 921kBit/s über USB, kommen also nah an ein MBit/s heran. Über WLAN geht mehr. Und zB. SPI geht am ESP32 mit 80MBit/s. Da hängt es dann davon ab, ob Dein ADC da mithalten kann.
Arduino für fischertechnik: ftDuino http://ftduino.de, ftDuino32 http://ftduino.de/32

atzensepp
Beiträge: 660
Registriert: 10 Jul 2012, 21:40
Wohnort: Uttenreuth

Re: Schnelles Datenstreaming von Microcontroller zu PC

Beitrag von atzensepp » 04 Jul 2022, 20:21

Also mir würde 921 kBit/s ausreichen. Wobei diese Geschwindigkeit vermutlich nicht mit Serial.write erreicht werden kann. Und ob's der PC über Serial schafft bin ich mir auch nicht sicher. Habt Ihr vielleicht einen Link auf ein Projekt, wo so was schon mal gemacht wurde?

Benutzeravatar
MasterOfGizmo
Beiträge: 2720
Registriert: 30 Nov 2014, 07:44

Re: Schnelles Datenstreaming von Microcontroller zu PC

Beitrag von MasterOfGizmo » 05 Jul 2022, 17:07

atzensepp hat geschrieben:
04 Jul 2022, 20:21
Habt Ihr vielleicht einen Link auf ein Projekt, wo so was schon mal gemacht wurde?
Der esptool-Flasher flasht den ESP32 mit dieser Geschwindigkeit und gibt an Ende einen Messwert der erreichten Geschwindigkeit aus.
Arduino für fischertechnik: ftDuino http://ftduino.de, ftDuino32 http://ftduino.de/32

vleeuwen
Beiträge: 1560
Registriert: 31 Okt 2010, 22:23
Wohnort: Enschede (NL)
Kontaktdaten:

Re: Schnelles Datenstreaming von Microcontroller zu PC

Beitrag von vleeuwen » 06 Jul 2022, 08:09

Suggestion:
Windows 10 still supports a parallel interface (8 bits):
https://docs.microsoft.com/en-us/window ... allel-port
parallel interface: 1.5Mbytes/sec:
https://www.allekabels.nl/pci-kaart/497 ... allel.html
software enigineer/teacher/advisor
Google translate
http://tescaweb.nl/Carel/?p=713

atzensepp
Beiträge: 660
Registriert: 10 Jul 2012, 21:40
Wohnort: Uttenreuth

Re: Schnelles Datenstreaming von Microcontroller zu PC

Beitrag von atzensepp » 08 Jul 2022, 21:25

I cannot believe it but meanwhile I accomplished a buffered transfer of 6500 k Bytes / s with an Arduino Due (Native USB) and a python program on Windows 10.
The buffer size is 10000 Bytes. I am transferring in free running mode without handshaking. Before starting reading I call a synchronization sequence in the python program that waits for a sync sequence. The synchronization is also invoked in case of an error.

Strangely if I do a simple handshaking by starting a transfer by sending one byte brings the speed down to 50 k Bytes /s.
I need to find out what the reason is. (Edit: somehow it is now working )

And if I can maintain this speed if I do something useful on Arduino and/or in the python program that is another question.

Antworten