Transmission speed of the Arduino Ethernet Shield

Hi!

I am developing a project in which the Arduino works as a server. I use the Ethernet Shield module with the Wiznet W5100 chip to transmit the files stored on the micro SD card to the clients that connect to the server. The libraries I use are the Ethernet.h, the SD.h and the SPI.h.

My modus operandi is the following: every time I have to transmit a file what I do is fill a buffer of 1 KB with the data of the file and when it is full I pass it to the client. I do this until the entire file has been transmitted. The problem is that I have a file that weighs 400 KB and takes about 30 seconds to be transmitted (in addition, in the future I will have to send files that weigh several MB...).

My doubt: is there any way to increase the transmission speed? Who is limiting it? The communication via the SPI bus between Arduino and the Wiznet W5100 chip / SD card or the communication between the Ethernet module and the router / PC?

Thank you very much!

Most likely the SPI interface is the limit. Work it out for yourself: how many bytes go over the SPI and what clock speed is it set to in your sketch?

An ESP8266 has Ethernet on board so it removes that bottleneck but I don't have one to test what the next bottleneck is.

In my sketch I don't set anything related with the SPI communication. I only include the SPI library and nothing else because I know that Ethernet's and SD's library use it to establish communication. I will investigate it!

TY

A ws5500 based shield might be faster. They streamlined some of the spi comm...

And esp8266 doesn’t have Ethernet; only wireless.