After specifying and discussing the communication protocol with Jamshed last week, this week I spent the first part of my time implementing said protocol. This was done entirely in the Arduino code for the ESP32 so that it communicates directly with Jamshed’s iOS platform without a Python script acting as a middleman. This protocol specified how the data would be sent and in what time interval it would be sent. We also decided on an external start command for the ESP32 to wait for in order to begin transmitting data from the BNO IMU sensor it is connected to. This is separate from the internal start logic that I implemented, which solely depended on a threshold of velocity to be exceeded. We tested this communication protocol out during class time on Wednesday, after I had finished implementing it and we were able to successfully integrate the two parts together, with communication working on Jamshed’s phone while testing. The only setback we had was the data accuracy, particularly of the velocity metric. I then spent the rest of the week trying to fix this data discrepancy, which required some further research into sensor fusion and Kalman filters. I also am rewriting my python script which has to be updated based on the new communication protocol, but will use this as a method of less-complex testing in order to simulate communication with the phone with a focus on checking velocity data accuracy since we know that the devices’ communication integration should already be good to go for demo day. I believe we are on track once I finish up fine-tuning the velocity data accuracy, and should be good to begin filming our demo video within the week.
Jason’s Status Report for 4/12/25
This week I spent some time researching how we would like to attach the actual hardware component to the barbell (clips). Although this did not take much time I find it important enough to update that we decided on industrial velcro as a strong enough adhesive to attach our hardware component to the barbell and will use this method unless it appears unfit after further testing. Apart from that, I worked with Jamshed this week for the rest of my time spent on the hardware components this week to properly integrate the data from the IMU with the software iOS platform that Jamshed has been working on. We discussed some protocol that I updated the arduino script based off of and am also working on updating the python script to further support this protocol in which the sensor will wait for a start signal from the software platform to begin transmitting data. Furthermore, Jamshed also mentioned that he wanted me to implement some sort of method of diserning the concentric from the eccentric motion for the plots to be grouped individually based on the sorted data (movement). I will pursue implementing this by monitoring the z-axis and its data from user motion. I hope to have this done by midweek so that Jamshed and I can test these new updates and hope to be further along the integration process. Nonetheless, I think we are on track for the final demo in three weeks or so.
Jason’s Status Report for 3/29/2025
This week I spent half of my time dealing with the newly setup WT901BLEMPU9250 and half of my time with the previous BNO055 IMU sensor. After setting up the WT901 from last week our team sought to find a method to plot the acceleration and gyro values for our own testing purposes but also in a manner that would be plotted later on in our mobile software platform for the user to see a graphical trend of their movements in terms of the data captured by the IMU. I explored this in both avenues of the IMU sensors and found that the BNO055 was easier to deal with in terms of data extraction, particularly because of the binary mode nature of the WT901 that required an extra layer of extraction and processing of data that the BNO055 did not require. On top of this, our team found a customized ESP32 PCB on Adafruit that has a digital interface that also has a specific port for the Li-Poly battery and BNO055 STEMMA pins to connect to the sensor. Therefore, I continued work and gave full dedication to the serial plotting script and data extraction of the BNO055 for the rest of the week and will recommend to my teammates to continue the project with a focus on using this sensor. In terms of where we are on track, I was able to finish up the serial plotting software and fix some of the Bluetooth advertising issues with the BNO055 code where it would stop advertising after the initial code upload. I also wrote some code on the python script to graph not only the acceleration and gyroscope metrics, but also the velocity metrics via integration, despite having noticeable drift. I have attached a screenshot of these graphs that are generated using bleak library in the python script. I a still trying to mitigate the drift in the velocity calculations but we are on track as of now as I have also been able to extract the data to csv files to be sent to the software platform. Nonetheless, I feel we are in a good spot for the demo next week and are on track based on our schedule.
Jason’s Status Report for 3/22/25
This week I spent a majority of my time trying to setup the fully integrated MCU that we bought as another option for the data metric collection of the data points we want to collect regarding barbell movements. As mentioned last week, it is 1/10th the size of the current BNO055 IMU sensor that we have already setup. Now that the new MCU is setup with built in BLE and an IMU we will likely have to make a decision between which sensor we plan on using and plan to outside as an avenue for our hardware solution for the rest of our project. By next week I would expect to have this decision made with a reasonable explanation behind it and for integration with the software iOS platform to be stable enough for the mini demo coming up. Nonetheless, we are on track with our schedule and hope to remain so.
Team Status Report 3/15/25
Currently, our main risk is not achieving sensor calibration that matches the ground truth model. As accurate data is critical for this project and we have had some setbacks with ensuring the validity of calibration, this could cost time and put us off schedule. However, there is extensive documentation on the BNO055 and, if this risk comes to life, we should be able to fix it once we sift through enough documentation to find the right solution. Naturally, we are actively making our way through the extensive documentation to learn more about its function as we progress through the project. And if the data output from the BNO055 becomes hopeless (though unlikely), we have additional sensors of a different model we can substitute into the design and work upon. Implementation of these backup sensors will be done somewhat in parallel to our priority work on the BNO055 sensors.
Furthermore, we haven’t made any changes to the existing design of the system, and our schedule hasn’t changed.
Jason’s Status Report 3/15/25
This week I spent a majority of my time reading through the datasheet of the new MCU we got delivered this week. We are planning on setting it up the same way we set up the ESP32 Dev board with the BNO055 IMU sensor to transmit the IMU sensor readings via BLE as the new MCU we received is fully integrated and contains and IMU as well as a Bluetooth module. It is also 1/10th the size of the ESP32 and IMU we already have so exploring this avenue is something we want to pursue as it could potential be very effective for our product. I also spent a decent amount of time writing some of the Kalmann filter and low-pass filters for the existing code we have to smooth the data we are receiving currently from the BNO055 IMU sensor in order to have more accessible and fused code. This will be portable for any future code that may need to be written onto the new MCU we received if we decide to switch gears and pursue the product with the MCU.
We are on track regarding our timeline and I hope to have the new MCU fully setup by next week with the same functionality as the current IMU+ESP32 for data to be transmitted via BLE as well as the filters I worked on this week to be added on top of that.
Jason’s Status Report for 3/8/2025
This status report period was spent half of the time completing the design report document and half of the time completing the goals for what I set last status report. Regarding the status report, I spent ample time completing the system implementation sections as well as the testing and validation sections. On top of this, the Design Trade Study section was split up amongst my teammates, which I also spent a decent amount of time on. For each section that I was responsible for, I backtracked on our prior research while also refining how we wanted to carve the rest of our project planning.
In regards to meeting our prior goals in the prior status report, the rest of my time was spent converting the IMU sensor + ESP32 hardware setup to support BLE. This came after the realization that it was not being recognized as a peripheral device on the software platform. This debugging required some changes to the firmware but after it was accomplished, we were able to successfully integrate the IMU sensor data with the mobile software platform, which Jamshed has been working on, and fully extracted said data. Our goals for the week after next (the next status report period timeframe) are to reduce noise and implement a smoothing function/low pass filter to refine the data extraction as well as possibly implement the mentioned Kalman filter to significantly improve the accuracy of the IMU sensor data. Nonetheless, we are on track with our goals in terms of both hardware and software setups and integration and hope to remain on track by completing the mentioned goals for next week.
Team Status Report for 2/22/2025
In terms of the hardware side of things, at this point in the project after achieving the initial setup of the IMU sensor + Bluetooth microcontroller one concern and/or risk for the project is if the IMU’s data will be easy to process and send over to the actual software platform. Although the data was captured and extracted already, this was a continuous stream of data that was infinite. One risk is focusing on this data and the particular relevant data that we will have to achieve, and if not achieved, could risk the project’s success. This will be done mainly with the software platform and firmware as a means for managing this risk by including a manually integrated user-starting point through the software platform.
We also spent some time researching the iOS Photos and Vision APIs and developed an initial UI for the video playback portion of the iOS app. Ultimately, we want to integrate the object tracker (provided by Vision API) into this playback screen so the user can see their bar-path.
The only change that we have prepared for in terms of the hardware side of the design is using a fully integrated MCU for the IMU sensor + Bluetooth microcontroller. We have ordered the necessary MCUs for this but this week we simply worked on iterating on our original hardware design and its setup so that when we implement and setup the MCUs that we ordered, the firmware will already have been written and the setup will be seemless.
Below is some photos of the hardware sensor+bluetooth microcontroller progress that we made this week after completing initial sensor setup and Bluetooth integration as well as IMU data extraction:
Hardware setup:
IMU Data while calibrating:
IMU data while at rest (semi-suspended):
iOS app:
Jason’s Status Report for 2/22/25
This week after completing the Design presentation I worked on the initial setup of the hardware flow we would be working on for the project. Although we were given the suggestion to use a fully integrated MCU, which we did indeed agree too, we still had the parts to the IMU + ESP32 hardware flow. Therefore, for skeletal setup, I worked on the initial hardware and software setup of these two parts as well as integrating them.
I was able to initialize the two from a hardware perspective by working in the Techspark lab for a few hours for the last two days of the week after acquiring the necessary hardware components. I then proceeded to install the necessary libraries in the Arduino IDE to set up the software necessary to use the ESP32’s Bluetooth capabilities. After doing so, I wrote the necessary firmware needed to properly extract the data from the IMU and its 9 degrees of freedom (DOF). I achieved this after much time debugging this initial setup. The values I extracted from the IMU in terms of the acceleration, gyroscope, and magnetometer readings seemed reasonable but will be tested next week for exact accuracy. We are currently on plan and on schedule with what we expect and hope to have this integrated with the software platform by the end of next week to report in the design doc.
Jason’s Status Report for 2/15/2025
I would estimate that at least 75% of my time this week was spent on researching how IMUs function, what they’re capacities are, how they integrate, and how raw data is taken from them and used for metrics like position and displacement. I lot of this led us to not only understand the flow of our hardware architecture but also the exact model of IMU we wanted to use. We settled on the BNO055 which has a decent data rate and operates at the data precision we were hoping for. The rest of my time was spent preparing for the design presentation and creating several spec charts and diagrams.
I would estimate that we are on track and not running behind schedule. We ordered our IMU sensors in the middle of the week and are hoping to get them in by early this week to begin novel implementation and data capturing with them in order to have a very novel integration phase with Jamshed and his software side via Bluetooth by the end of next week.