Blog #1 - Transmitting IMU data
- hudsonaibel
- Jun 29, 2023
- 2 min read
One of the main challenges of this project is finding the best method to wirelessly send the IMU data from the onboard sensor to a base station to read and process the data. I have come up with three different methods, each with its own pros and cons to test out.
Method #1 - Using the AdaFruit Itsy Bitsy M4 + Adafruit AirLift Bitsy + BNO085

This method would take the data from the 9-axis IMU BNO085, and then immediately be translated to the base station via wifi. The M4 has a fast refresh rate at 120mhz, which is faster than the BNO085, meaning that we won't miss any data when transmitting. Using wifi, I believe that we can get to as low as 3ms latency, although using wifi could prove to be inconsistent. Another benefit of this method is that it's extremely scaleable, and adding 4 more IMUs to this one board should be possible.
Method #2 - Using the Adafruit Feather M4 CAN Express + Adafruit Radio FeatherWing + BNO085

Just like Method #1, Method #2 uses an M4 processor + BNO085, however, instead of using wifi to transmit data, the system will use a LoRa protocol, which has become the standard for both short and long-range low latency operations - such as controlling drones. The latency should be extremely low and the control link should be very consistent. The downside is that the base station also has to have a radio receiver, meaning that setup and getting data to the base station could be more complicated.
Another standout feature of this setup is that the Feather M4 supports CAN Express by default, meaning that if more IMUs are needed, it is extremely easy to daisy chain multiple Feathers together. So instead of being limited to just 5 IMUs, we could use 10+.
Method #3 - Seeed Studio XIAO nRF52840 Sense

Method #3 is unlike the two previous methods in a number of ways. First, the microcontroller has a built-in IMU. This means less wiring, but also less customizing to suit our needs. Second, it has connectivity built in (Bluetooth). This could prove to be slower than the other two ideas; however, it is extremely simple as it's prebaked into the hardware. Third, the board uses a different, slower, processor. It may seem like these are all cons - but there are some benefits to using this method. We can place as many of these boards as needed, and each one can act separately, making and sending filtered data by itself. Seeed Studio provides built-in support for machine learning, so instead of sending raw data to the base station, the data can first be filtered, then sent. This method provides the most scaleability but might be lacking in terms of raw power and speed.
Overall, each method has its pros and cons, and through testing, I hope to figure out which works best.



Awesome!!!!!!!