Arduino Due + WIFI Module Actual Realised Data Rate

Hey Guys!

This is my first time on this forum, and I am quite excited to start exploring the world of Arduino! I am supposed to be exploring
different hardware platforms for my seinor design project, and the Arduino Due with it's fast clock, large bank of SRAM, and 1 Msps ADC caught my eye.

I am wanting to implement something similar to a wireless oscilloscope, where I offload data from the ADC using DMA to a circular SRAM Buffer, before pushing it out over WIFI to a Windows machine on a WLAN.

I was wondering though, what kind of data rates are people actually seeing over UDP with the Arduino Due and it's WIFI module? How fast I can load data off the Arduino board will determine both the resolution and max sampling rate that I can run the ADC at. I am fearful of a bottleneck in moving data from the SRAM to the WIFI module for transmission.

If anyone on here has experience in ramming data through the WIFI module at alarming rates, I would really like to either discuss this here, or via PM.

Cheers!

Jeremy

I was wondering though, what kind of data rates are people actually seeing over UDP with the Arduino Due and it's WIFI module?

This seems like the sort of thing you should be measuring, and experimenting with, as part of your project.

I am fearful of a bottleneck in moving data from the SRAM to the WIFI module for transmission.

The bottleneck will not be getting data from memory to the WiFi shield.

If anyone on here has experience in ramming data through the WIFI module at alarming rates, I would really like to either discuss this here, or via PM.

Does alarmingly slow count?

large bank of SRAM

Not really. The Due's SRAM may be too small for the application. The biggest problem you face is LATENCY, the random & unpredictable delays on the network. You must have a buffer large enough to cache data waiting for send/response latency. For an oscilloscope to cover merely the audio range you need 300K samples/sec. Perhaps that works OK but nothing faster. Note that USB hi-speed oscillosopes have a megabyte or more even though USB has much lower latency.

Paul, you stated that getting the data from the SRAM to the WIFI shield would not be the bottleneck, could you explain why you think so? I did some looking, and I don't remember finding the SPI Slave max clock speed for the WIFI shield, could you shed some light on this?

Joe, when you are speaking about the audio range, I assume you mean up to 44khz signal correct, with 5X sampling? If I could sample that range, I would actually be quite happy. My goal is to eventually use this Arduino as a platform for instrumentation and many signals from instruments have frequencies far lower than 44Khz.

As far as latency was concerned, where you considering the case in which the PC and arduino are the only members on the network? For now, I am considering a use case for only WLAN, no wide area data transfer.

Joe, when you are speaking about the audio range, I assume you mean up to 44khz signal correct, with 5X sampling? If I could sample that range, I would actually be quite happy. My goal is to eventually use this Arduino as a platform for instrumentation and many signals from instruments have frequencies far lower than 44Khz.

Given this restriction you should be OK.

You may wish to check out this kickstarter. A 'deluxe' DUE board with networking built-in, actually cheaper with no need for a shield I preordered during the campaign. The board has not yet shipped, but they have shipped the previous product.

http://www.kickstarter.com/projects/digistump/digix-the-ultimate-arduino-compatible-board-with-w

jlangfo5:
I am wanting to implement something similar to a wireless oscilloscope, where I offload data from the ADC using DMA to a circular SRAM Buffer, before pushing it out over WIFI to a Windows machine on a WLAN.

when you refer to Msps I'm envisaging a system needing quite a high bandwidth pipe from the ADC to the PC. I'd have thought that an RPi would be a better platform for that since it has a much more capable network stack, more CPU power and RAM available and so on.

Things to consider though about going with the RPI, first it doesn't have an integrated ADC, so DMA from the ADC to RAM would not be possible. The data would need to be read over SPI from an external ADC chip (not impossible, but another challenge to overcome for fast reading).

Secondly, the RPI normally runs some flavor of Linux, the official distribution runs Debian. The code that is both transferring data from the ADC to the RAM, and then to the WIFI Transmitter would no longer be the only code that is running, meaning that your execution could be pre-empted so something else could run.

With the CPU clocking at nearly 100 times faster though, it would probably still offer better performance.

I would say the simple answer of why I chose the arduino due was for the simplicity of having most of the data path integrated in on one board, with code already being written to control the WIFI module.