Real-time Wireless Communication

Hello, I would like to know what I would need in terms of Arduino boards and accessories for the following project:

I would like to read 3 analog channels from 3 different sensors and I would like to communicate these values real time into a computer through wireless communication because the sensors are attached to a spinning motor. I would like to sample at a frequency at above 2000Hz. I have experience with Arduino programming along with MATLAB programming.

Thanks for your help.

What do you mean by. Real Time

What is the acceptable latency or delay between recording the analogue input and the value being finally used.

What resolution of analogue to digital conversion do you need.

How far do you have to transmit the data via wireless

Can you accept packet loss of the data

Please also give a complete overview of your project otherwise answers may miss an important aspect of your system which you have not described.

At full 10 bit resolution the ADC an Atmega 328 can only do 15ksps. That would be on a single channel. As there is only one ADC when you switch channels there is a need to allow the device to settle which means that you would not get 5ksps on 3 channels and I suspect that 2ksps on 3 channels would actually be close to its limits.

Sending 6000 10-bit readings per second to the PC would require sending 12000 bytes per second which should be feasible over the USB connection. I don't know what the limits for wireless (e.g. Bluetooth) might be.

All of @rogerClark's questions are very relevant.

...R

I was hoping to get a general idea of what I needed before I started looking at parameter constraints, but I understand your point.

I would say allowable latency between the recording the analogue input and using the recorded value would be 50milliseconds. If that's unrealistic, please let me know, as I can relax my constraints.

I would like my ADC resolution to be 10 bits.

The data signal does not have to be transmitted very far (no more than 10 feet). I can be right next to my sensors, but the reason why it has to be wireless is because my sensors are attached to a spinning motor.

I can accept packet loss.

Let me know if you would like me to clarify anything, and thank you for your help.

The standard analogRead() is slow and blocking, but if you use low-level AVR commands you can kick off an analog conversion and then work on other things, picking up the ADC result later after it's ready. You can also alter the ADC clock setting to improve performance, though at a slight loss of accuracy.

If the built-in ADC is just too slow, you can get a faster discrete ADC IC and talk to it over I2C or SPI.

I'd avoid the cheap 315/433MHz RF modules, they only accept slow baud rates. Something like an XBee, Bluetooth, or nrf24l01 would be better as they have controllers that can buffer data quickly and then worry about sending it out the RF interface while your Arduino moves on to other time-sensitive tasks.

All right. I have a better understanding of the facts I must consider. So what Arduino and XBee RF module would you suggest?

Vinh

Dear All,

I'm looking more into this topic, and I'm wondering, could I just use an XBee Series 1 with an appropriate breakout board (no microcontroller necessary)?

All I really need to do is read 3 analog inputs, so could I just configure the XBee to talk with my computer's WiFi and then just use that to read analog inputs?

Worst comes to worst, I can use 2 XBee's to talk to each other so that I don't have to use my laptop's WiFi, correct?

Thanks for any help you can give!

All I really need to do is read 3 analog inputs, so could I just configure the XBee to talk with my computer's WiFi and then just use that to read analog inputs?

Do xbees accept analog input for transmission? Can xbees communicate with your computer's wifi? I would think not, so you need to check.