Data acquisition, storage and wireless transfer - recommendations?

Hi all

I’d like to ask what is the best communication protocol / methods to use to do the following:
Read a 3-axis accelerometer, gyroscope, 6 strain gauges, and temperature sensor at 100MHz (or more).
Then store the data onto a Teensy 3.5’s onboard SD card.
And also transmit the data via hard wire about 100-feet; and at that point transmit the data wirelessly to my laptop where I can monitor / analyze the data real time using this software: https://youtu.be/C1m6CvgjcSc

Couple of questions:

  1. Will saving data to the onboard SD card slow the process down too much?

  2. Which communication protocol would be best for transferring the data from the Teensy to the wireless transmitter via the 100feet of hardwire?
    I’m thinking this may suffice?
    https://www.pjrc.com/improving-arduino-serial-monitor-performance/

Which hardware would be best for the “wire”? RS485, Fiber Optics, or something else?
I like this method…feasible?

The equipment will be connected together in a dry environment, but during use the Teensy and wire will be submerged in warm, flowing water inside a steel pipe (I’ll build a waterproof compartment for the Teensy, batteries, wire connector, etc.).

Teensy 3.5 website:
https://www.pjrc.com/store/teensy35.html

Thanks in advance for thoughts & suggestions.

Just to clarify, you want a 100MHz polling rate for the sensors? Or you want to main microcontroller to operate at 100MHz?

Providing you’ve got the spare CPU time, it shouldn’t matter.

Do you need two way, or only one way communication? I would run fiber and get a LED to send with and a photo transistor to receive. It would be tons of fun to set up.

If you’re planning on just doing serial, you’ll probably want to use some drivers and not just hook up the arduino strait to the wires.

1 Like

You want to poll position data at 100 MHz…are you planning Faster Than Light travel, or are you talking about the comm protocol?

Sorry, I meant to say poll the data at 100kHz (not 100MHx) although faster would be nicer.

I’d like to sample using the Real Time Clock (RTC) so I can log the time too.

I really like the idea of running 100-feet of fiber optic line with an LED and reciever/converter at the recieving end (only need to transmit data one direction at this time) ; just need to figure out what drivers, transmitter/receivers/connectors to use. Suggestions?

With the design goals you’ve given, the constraining factor for both data transmission and SD card storage is the quantity of data you’re sampling at 100kHz which is not slow.

Optimistically you could sample your 13 values (not including timestamp) at 8 bits each (you might need more than 8 bits) at 100kHz and get 10.4Mb/s (1.3MB/s) of data you have to handle. So your optic line will need to support at least that much bandwidth. And that may be faster than you can write to an SD card in 1-bit SPI mode although it’s hard to find max throughput figures because the SPI mode of SD cards isn’t as supported or as used as the 4-bit mode.

At 100kHz you also get only 10us between samples to do processing. I think that seems potentially possible (maybe time for 100-1000 instructions) for the 120MHz cortex m4 on a Teensy but with no margin for doing much other than setting up DMA transfers.

I guess it would make things easier if you could reduce your sample rate by at least an order of magnitude. In fact I don’t think common accelerometers can sample that fast.

1 Like

I would try to use a Raspberry Pi with Ethernet or possibly Wi-Fi. I don’t have one in front of me to test but I don’t think the sampling rate would be a problem and it gives you very flexible networking and storage options.

2 Likes

I gotta agree here. Appears to be way more data than could be processed, dumped to an SD card, and somehow sent over fiber by a teensy.

Consider things like temperature are not going to have meaningful changes at that speed, likewise for an RTC which won’t be keeping time that precisely.