[CHALLENGE] 25 MPU 6050 working well (mocap suite)

Good evening, let’s get started. I’m developing a full body motion capture outfit to be used in 3D animation and I figured using Arduino would be the way, since programming is done in C Like languages and I’m a good OO programmer .

I will track 25 points of the body with the MPU6050 in the image below the red dots represent the sensors and where they will be arranged and the green square Arduino. I am completely lay on the subject of electronics, and I do not intend to learn more than necessary to make this project work

So far I understand that it is difficult to make the arduino read more than one MPU 6050 sensor and make it work, but I need to make it work and respond with minimum response time.
I am listing the items I need to buy by the logic I was in before reading the forum:

1x arduino
1x 400 dots protoboard
4x mini protoboards 170 dots
25x mpu 6050 sensor

the logic was as follows I was going to use the mini protoboards to make a circuit of all the sensors in the limbs (like arms and legs) and from there would only be 4 jumpers each for the central protobord that I would repeat the process only including head to waist and thorax, and from the central there would be 4 jumpers again that I would normally connect to the arduino, the arrangement of the protoboards is represented by the purple circle.

I already know that this will not work for many reasons which I already read on the forum, now what I want to know is what I really need the component to make it work, and with an acceptable response time to be used live on real time on events.

My main doubts are for now which is the right Arduino to buy?

If not with protoboards like I was wondering, how am I going to put together several sensors arranged in this way in a single Arduino? in general I want to know what components are missing for this to work, then I will learn what is necessary to make it work.

I know I said too much I'm sorry for that, and I don't like to be rude by simply throwing my difficulties at you, but as soon as I finish the project I would like to thank everyone who tries to take the time to help me, at least showing the final project ready and it working.

Hi. I'm afraid it is not going to work.

There is a way to have more than one MPU-6050 on the I2C bus with the adress selection pin AD0. Keep all AD0 of all the sensors high (they will have address 0x69) and bring only one down to 0x68 by making AD0 low. When that sensor is done, then select another one. You need a 3.3V Arduino board to do that.

You would have to remove all the pullup resistors from the modules.

So far so good, but the problems are:

A Arduino Uno can get data from a MPU-6050 at a rate of 100Hz and do some calculations as well. For 25 sensors you need a faster Arduino board, but the I2C bus will still be slow. It will take a long time before all the data from all sensors is collected.

The I2C bus can not have long wires. Using a cable makes it worse and SDA and SCL next to each other in a flat ribbon cable is the worst because the I2C bus can not handle crosstalk between SDA and SCL.

What library will you be using for the calculations ?

Some IMU modules have a sensor with a processor inside the sensor chip. They can do the calculations in the sensor chip: SparkFun VR IMU Breakout - BNO080 (Qwiic) - SEN-14686 - SparkFun Electronics.
35 * 25 = 875 dollars.

Breadboards are only for testing and they are not even good at that because they can have bad contacts.

What will you do with that data ? Where will it go and how ?
Would it be possible to have a few Arduino boards, each with 8 or 9 sensors ?

Koepel:
Hi. I'm afraid it is not going to work.

There is a way to have more than one MPU-6050 on the I2C bus with the adress selection pin AD0. Keep all AD0 of all the sensors high (they will have address 0x69) and bring only one down to 0x68 by making AD0 low. When that sensor is done, then select another one. You need a 3.3V Arduino board to do that.

You would have to remove all the pullup resistors from the modules.

So far so good, but the problems are:

A Arduino Uno can get data from a MPU-6050 at a rate of 100Hz and do some calculations as well. For 25 sensors you need a faster Arduino board, but the I2C bus will still be slow. It will take a long time before all the data from all sensors is collected.

The I2C bus can not have long wires. Using a cable makes it worse and SDA and SCL next to each other in a flat ribbon cable is the worst because the I2C bus can not handle crosstalk between SDA and SCL.

What library will you be using for the calculations ?

Some IMU modules have a sensor with a processor inside the sensor chip. They can do the calculations in the sensor chip: https://www.sparkfun.com/products/14686.
35 * 25 = 875 dollars.

Breadboards are only for testing and they are not even good at that because they can have bad contacts.

What will you do with that data ? Where will it go and how ?
Would it be possible to have a few Arduino boards, each with 8 or 9 sensors ?

Come on, first thank you very much for your willingness so starting with what the final purpose is, briefly, I want to capture only the gyros (I believe it is enough) and use it in real time in a 3d model after I have the data in real time I I will use a gaming platform, like unity and there with C # I will transfer the data in real time to the model each corresponding body part with the sensor, like a virtual reality game with the whole body tracking at the end. there are already ready things on the market for this but it costs $ 1500 and I still have import duties.

And it will be used every day for live broadcasts.

So it is not a problem to have more than one Arduino, but everything will remain in the body so I cannot have very limited movement. And also I need to send the data to the computer. I thought about putting a Wi-Fi component to the router and taking it via the internal network, or USB 3.0 will depend on it is not the main focus.

I took a look at this component that you sent me, I didn't really understand the difference between it and the mpu 6050, it seems a little expensive, for the fingers I thought I would use the tension sensor but in the end it would be more expensive and with less movement, but it looks like the mpu 6050 has quite a few limitations. what annoyed me he makes data faster would it be easier and possible with him than with mpu?

Thanks again, I'm very excited about the project if you found the idea interesting I invite you to show the final result.

[EDIT]I took a few more looks at the price and calculated, with this sensor it would be really expensive, I accept cheaper solutions, for giving up a little aesthetics or maybe even a little performance if not a lot.

I want to capture only the gyros (I believe it is enough)

"Belief" is not enough. You need to make absolutely certain what it is you want to measure, and get all data collection and analysis working perfectly with just one or two sensors, before you commit to putting 25 modules together.

Protoboards cannot be used on moving objects as the connections will be unreliable and fail.

I agree with Koepel: there are terrible logistics involved in getting data from N MPU-6050 modules mounted at N different points on a moving body. I am quite certain that you will need N sturdily constructed nodes, each with one sensor and one processor on a small PCB, which will somehow funnel the data back to a central point. That funneling will be quite a challenge as well.

there are already ready things on the market for this but it costs $ 1500

That is a reasonable price, if the system is reliable and does what you want.

jremington:
"Belief" is not enough. You need to make absolutely certain what it is you want to measure, and get all data collection and analysis working perfectly with just one or two sensors, before you commit to putting 25 modules together.

Protoboards cannot be used on moving objects as the connections will be unreliable and fail.

I agree with Koepel: there are terrible logistics involved in getting data from N MPU-6050 modules mounted at N different points on a moving body. I am quite certain that you will need N sturdily constructed nodes, each with one sensor and one processor on a small PCB, which will somehow funnel the data back to a central point. That funneling will be quite a challenge as well.
That is a reasonable price, if the system is reliable and does what you want.

Well thanks for your willingness to respond first.

from what you said it is impossible that way, but with arduino is it possible to do this with other sensor options so that it is practical at the end?

I thought for example to save number of sensors and do more calculations of inverse kinematics with the data that I will have.

then I could use 7 of that more expensive SparkFun VR IMU Breakout sensor - BNO080, 2x arms, 2x legs, head, chest and waist.

and for the hands I could make two gloves each with your arduino and use voltage sensors, just to make the movement of closing and opening the fingers, and the gloves instead of sending to the center, sending via wifi to the modem and me access data via network.

So is it closer to reality, or does it make more sense? you know there is one that works as I want it ready in the market that exactly meets my needs, which for me $ 1500 does not pay because 1500 is in the USA if I import it at the end it will come out almost $ 3000 and that in my local currency is equivalent to 14 normal wages ... so if i can save doing it myself even if not much, in the end it will be much cheaper for me.

If you are interested in helping me to think about other ideas inside the arduino that would be practical in the end thinking about movement and so on. the data I need are, or the rotations of each member, or the position in the space of the tip of a periphery for example of the feet and hands that there I can do the calculation of inverse kinematics.

You really haven't described your project well enough for anyone to advise you.

If "track 25 points on the body" means to track the (x,y,z) position of each point independently, then your current proposal won't work at all, especially with just the gyro terms.

That is why I suggested that you learn how to track one point, before thinking seriously about the rest of the project. This is really difficult to do! The question comes up every couple of days on the forum, and there is no cheap solution.

The full body motion capture suits that I can find do not have acceleration/gyro sensors for each finger.
If you can use some kind of stretch-variable-conductive fabric for the fingers, that will reduce the complexity a lot.

I doubt if others use the I2C bus to the sensors. Perhaps they have something more reliable. The square blocks that they attach to the suit are big enough to have a number of components inside.

I think the body and head do not need to update 100 timers per second. When you test it, you might be able to reduce the sample rate for some sensors, perhaps allowing to sample other sensors more often.

You could look into the ESP32 to send data with Wifi.

The acceleration + gyro + magnetometers are also called 9DOF sensors or IMU.
This is the IMU list of Sparkfun: IMU - SparkFun Electronics.

The calculations are often called a "filter", for example the Kalman filter or the AHRS filter.
The calculations can be done inside the sensor, that is expensive.
The calculations can be done with a processor, that takes time.

Do you know what the bare MPU-6050 gives as data ?
The accelerator points down because of the earth gravity, and if you give it a swing then it points outward. It is noisy and sensitive for short vibrations.
The gyro does not measures the angle but measure the increase or the decrease of a rotation. It drifts.
Some sensors have a magnetometer included, for a compass.

The filter combines those sensors and eliminates most of the disadvantages of each individual sensor.

jremington is right, start with tracking one point. You can use those more expensive sensors as the BNO080 to make a fast start. Maybe later you can try to do the same with cheaper sensors.

I suggest searching for "imu motion capture hackaday". Here are a couple of links.

The second link in the reply above uses BNO055 sensors, which as we have suggested, has both an IMU and a microprocessor within each module.