Alex Nguyen’s Status Report for 11/30/24

Personal Accomplishments
  1. Programming ESP32 (5h) – I programmed the calibration routine for the ESP32, such that upon session startup (and immediately following a confirmed bluetooth connection) the calibration routine will launch and take the average of the next 10 seconds of force readings for each sensor, storing that value as the normalization value for the rest of the readings taken during the session. This can be seen below, as the normalization values for each sensor are displayed upon completion of the CR at 10 seconds, and then the device proceeds to take readings for normal data collection. 
  2. App & Bluetooth Integration (12h) – I worked with Jubi to integrate the front end with bluetooth and database. Once Jubi established a working bluetooth connection between the device and the app, I realized that our current code was overly reliant on disconnected Kotlin coroutines, and was able to simplify them into two larger Kotlin coroutines and suspending sequential coroutines until prior ones had finished which prevented many of the bugs that were occurring when two coroutines overlapped or attempted to access data at incorrect timings.  When I completed the calibration routine on the ESP32, I synchronized the bluetooth connecting screen and calibration timer screen to match the events occurring on the ESP32 (with the bluetooth connecting screen staying until either it was connected or timed out and the calibration timer matching the timer of the ESP32).  This can be seen below where the light to indicate bluetooth connection is blinking before the session starts, then turns solid when a connection is established (matching the changing of screens in the app). 
  3. Android App Development (frontend) (10h) –  Since the last update, I implemented the rest of the frontend that was remaining. This included the threshold settings page, questionnaire, and session history selection page. I also attempted to query Jubi’s database for the max sensor reading values recorded for each pulley during a session, however it is currently inconsistent and returns either the same values or random values, which is something I will work on further. Assuming this is not an issue with the database, I believe this is most likely an issue with data sharing between the MainActivity and the HomePage, potentially caused by uninitialized key-value pairs in sharedPrefs.
  4. Integration Testing (5h) – Went to the climbing gym with Josh and conducted a series of tests on different climbing apparatuses (hangboard, pullup bar, campus wall, bouldering wall). We were able to verify several key factors, including bluetooth connection between the app and device, as well as test the reliability and consistency of the sensor when doing various climbing movements. Additionally we were able to test the usability of the device, both by climbing on routes with the glove on as well as surveying several climbers who were also at the gym.
  5. Final Presentation (8h) – I am presenting this week, so I worked on the presentation slides and prepared to present during this week’s lab meetings.
  6. Mandatory Lab Meetings (6h) – Presented intermediate demos to professors and TAs and received valuable feedback, especially regarding the data visualization and analytics components to our mobile app.

As you’ve designed, implemented and debugged your project, what new tools or new knowledge did you find it necessary to learn to be able to accomplish these tasks? What learning strategies did you use to acquire this new knowledge?

Before this project, I had never used Android Studio or Kotlin before, and I was pretty unfamiliar with app development model. As a result, I had to spend a lot of time at the beginning of the semester experimenting while building the app, even before our team had a concrete plan as to what features we wanted to have as part of the mobile app. I found tutorials online very helpful for learning the building blocks of app development, and learned a lot through tinkering with different interactions between frontend and backend elements in dummy applications that I created just for the purpose of testing out potential interactions I could want in the final app.  This learning process was a lot of trial and error, so git version control was incredibly important as there were several instances where I had to rebase after creating an error whose origin I was unable to identify.

Additionally, I learned a lot about the design process for an embedded system mobile app. Prior to this project I had never had to consider both factors when designing a product, so there were many new challenges that I had to consider (along with my teammates). While we were writing our design report, we realized how much of our design we had not considered regarding the interactions between each of our individual parts. Sitting down and talking through the overall interactions between the hardware, frontend software, and backend software, was immensely helpful, and while it took a long time, it proved to be invaluable to the success of our process later on when we began integrating. This skill was developed further throughout the semester, as we made sure to revisit (and modify if necessary) our overall integration design plans each time we made major changes to any one individual part.

Finally, designing thorough unit and especially integration testing was a skill that I found very important to learn throughout the project. While I have conducted unit testing for software projects before, the addition of a connected embedded system communicating via Bluetooth added an extra dimension of testing needed between all three systems (embedded device, BT communication, backend database, frontend UI/UX). This skill was learned on the go, as we each performed our own tests on our individual parts but had to figure out how and what to test during integration. Figuring out the many aspects that needed to be verified and validated was a process that often happened accidentally, as one of us discovered a factor that had not yet been considered (things like finger placement affecting sensor readings, BT connection failure during a preset sequence, race conditions occurring when a coroutine terminated early). Finding new factors that could adversely affect the optimal performance of our product taught me both how important it was to design tests for as many of these potential issues as possible as well as how to design appropriate tests to ensure our goals were met.

Progress
  1. Progress is on schedule.
Next Week Tasks & Goals
  1. Data Visualization and Analysis: Work with Jubi to retrieve data from database and display based on session number.
  2. Dual Glove Additions: Make any additions necessary for Bluetooth and Mobile app with the introduction of a second glove (likely frontend additions, some communication changes)
  3. Final Report: work on final report with teammates.
  4. Testing: continue testing as the final product comes closer to completion, especially with regards to new additions or aspects that were modified. Additional reliability tests and real-world application tests (in climbing gym).

Alex Nguyen’s Status Update for 11/16/2024

Personal Accomplishments
  1. Mobile App Development (20h):
    1. Figma Design Docs & UI/UX:  finalized app design by creating Figma design docs displaying actual UI/UX layouts/design throughout each intended functionality (home page interactions, threshold settings updating, start/stop/calibration sequence) so that I could build/develop the final version of the android app according to the Figma design docs (especially regarding interactions between frontend elements and processing data from backend databases, but also with regards to aesthetic and quality of use elements) Android Studio Development: Modified mobile app codebase to conform to the Figma design docs I created, made significant progress with regards to the “Threshold Settings” updating functionality within the app (can now confirm updates and throw exceptions if the update was not processed) and reflect threshold changes on the home page. Additionally, the session start and stop timer was implemented successfully and calibration sequence frontend screens have been implemented and their functionalities will be connected to the wearable device soon.
  2. Mandatory Lab Meetings (4h):  Met with team, TA, and Prof. and discussed interim demo preparation and expectations.
Progress
  1. Progress is on schedule.
Next Week Tasks & Goals
  1. Mobile App/Device Integration:  Major goal for this week is merging my android app repo with Jubahed’s bluetooth repo so that we can begin connecting the two parts of the android app and begin testing with all three components (glove, app, database/communication).

Alex Nguyen’s Status Report for 11/09/2024

Personal Accomplishments
  1. Mobile App Development (6h): Tested dummy data with AnyChart API, and worked on integrating separate aspects of the app with Jubahed, specifically overall app functionalities between the session history and data visualization pages/functionalities of each respective page. Continued working on the initial startup sequence of the app and began work on bluetooth pairing/implementation within the app.
  2. Mandatory Lab Meetings (4h):  Met with team, TA, and Prof. and discussed details regarding aspects of the device, such as the possibility of custom calibration sequences and angle sensors.
  3. Overall Mobile App Testing (2h):  Continued user tests in the latest iteration of the app using AS’s android OS emulator to ensure that the app UX works as intended (scrolling between pages, interactions between buttons on each page).
Progress
  1. Progress is on schedule.
Next Week Tasks & Goals
  1. Mobile App/Device Integration: Begin integration testing between the app and the device.
  2. Testing: Begin testing the intended use case using prototype consisting of sensors attached to crack climbing glove (ordered this week, arrived on Friday). This testing will also aim to determine the consistency of readings while on the selected finger locations as well as durability and comfort of the prototype device,

Alex Nguyen’s Status Report for 11/02/2024

Personal Accomplishments
  1. Mobile App Development (6h): Began testing dummy data with AnyChart API, and continued work on each of the 4 pages of our mobile app, with a focus on the home/landing page and the app startup sequence.
  2. Mandatory Lab Meetings (4h): Listened to the ethics lecture and participated in group discussions from which we gained valuable insights into potential ethical considerations we should make especially with regards to specific stakeholder groups.
  3. Overall Mobile App Testing (2h):  Conducted basic user tests in AS’s android OS emulator to ensure that the app UX works as intended (scrolling between pages, interactions between buttons on each page).
Progress
  1. Progress is slightly behind schedule, we will need to work further to get the app to a demo-able product that we can do integration testing on with the wearable device.
Next Week Tasks & Goals
  1. Mobile App Development: Integrate session history page with Jubi’s database system (carried over from last week) and finish data visualization testing. The goal for this week is to implement communication from the app to the ESP32 via BLE.

Alex Nguyen’s Status Report for 10/26/24

Personal Accomplishments
  1. Mobile App Development (7h): Worked on further developing the skeleton of the settings and statistics pages. Testing for dummy data for AnyChart has not begun yet, but will likely begin by the end of this week at the latest.
  2. Mandatory Lab Meetings (4h): received valuable feedback from TA and Professor Bain regarding our design report.
  3. Ethics Assignment (5h):  read important articles on engineering design ethics and wrote about several ethical considerations regarding our own project using this newfound knowledge.
Progress
  1. Progress is on schedule. This weeks tasks will be done more in conjunction with Jubi so that we can begin integrating the database into the app to begin testing.
Next Week Tasks & Goals
  1. Mobile App Development: Integrate session history page with Jubi’s database system, and begin testing of AnyChart API calls from dummy session data.

Alex Nguyen’s Status Report for 10/19/24

Personal Accomplishments
  1. Design Report (16h):  A large portion of my time was spent working with my team on the design review report. Specifically, I wrote the Android Application Implementation, Sensor Calibration Implementation, Data Visualization & Analysis, and Wearable Fabrication sections. I also contributed to the Design Trade Studies section and wrote about our decision to develop our mobile app in Android Studio using Kotlin. I also wrote the Introduction, Bill of Materials/Budget, Schedule, and Summary sections. I also spent some time updating the original mockup documents to reflect design changes we made between our proposal and design review, specifically the addition of haptic motors to the wearable device and the replacement of login functionality on the mobile app with a User Settings/Threshold Update page.
  2. Mobile App Development (8h): We decided to continue development with Katlin, not Flutter. While we were writing the design report, we had an important discussion where we were able to establish the intended interactions between our mobile app and wearable device. I was able to setup a homepage for our mobile app and am working on testing for data visualization using AnyChart API. Since we are not integrating with the wearable device yet, the next feature I would like to setup is the questionnaire and settings page (currently without the ability to communicate with the  wearable device.
  3. Mandatory Lab Meetings (4h): received valuable feedback from TA and Professor, especially regarding our testing strategy.
Progress
  1. Progress is mostly on schedule, though I would like to have the mobile app more fleshed out. The front end is currently very bare bones with not much time spent on making it look nice. I will likely work on improving the front end when the base functionalities are established and working.
Next Week Tasks & Goals
  1. Mobile App Development: Create a settings/threshold update page that works independent of the required connection to the wearable device. Additionally, finish testing of data visualization on the home page using dummy data.

Alex Nguyen’s Status Report for 10/5/2024

Personal accomplishments
  1. Mobile App Development (7h): Several changes were made to our initial plans regarding the mobile app. We have decided not to include google OAuth sign in because session data will be stored locally on the device and thus there is likely no need for multiple users to be using the same mobile phone. After watching other team’s presentations during the design review, I found that Flutter SDK may also be a viable option for creating a cross-platform version of the mobile app. I am currently experimenting with using the Flutter plugin in addition to Android Studio IDE to create the frontend of the app. This decision may still change since Flutter is written in Dart as opposed to Kotlin. My main accomplishments regarding the mobile app this week was creating the initial landing page of the app which takes you to the first-time startup questionnaire in Android Studio (which may need to be modified when introducing the Flutter plugin).
  2. Meeting with Vansh (0.5h): Met with another capstone team whose projects had some similar challenges and use cases as our project, and discussed how we were dealing with some of these issues. Also learned about Flutter as a possible solution for our mobile app development, and will give it a try before fully committing to Android Studio.
  3. Design Review Slides (2h): Helped the team work on the block diagrams and design review slides for this week’s design presentation.
  4. Mandatory Lab Meetings (4h): Watched design review presentations from other teams and received important feedback on our own project. One question that was raised during our presentation was regarding the usage of our device during dynamic (dyno) moves in climbing (which typically is defined by moves which require a jump off the wall where you lose all points of contact during the move). I did some research and found that dyno moves can typically double the force of the same climber on a similar static move, so that will have to be taken into consideration during our stretch goals. Our current MVP is for the device to take accurate readings during static moves (or hang boarding sessions), since this well have a less likely chance of breaking sensors and also because most climbs consist of mainly static moves rather than dynamic moves.
Progress
  1. Depending on what decision we make regarding Flutter/AS, I will be a little behind on mobile app development if we decide to switch to Flutter. However if we stick with AS, I am on schedule for mobile app development. Me and Judi will make that decision soon so we can move on to integrating the frontend and backend of the app. We are meeting on Sunday to make this decision, so by the end of the week we will be back on track as far as the mobile app goes.
Next week task & goals
  1. Mobile App Development: I plan on meeting several times with Jubi over the next week to begin planning integration of the frontend and SQLite database. We may also start looking at how to integrate bluetooth pairing and communication into the mobile app. I plan on finishing the home page such that I can integrate AnyChart API calls to begin testing of dummy data on the data visualization side of the app.

 

Alex Nguyen’s Status Report for 9/28/24

Personal Accomplishments
  1. Piezoresistor Sensor Testing (4.5 hrs): Together with Josh, I helped test our current piezoresistor model (A301) to determine if it was viable for our project goals and use cases. While Josh built the circuit (and testing environment) and set up the STM32 ADC, I calculated the AC and DC gain of the amplifier to assist us in adjusting the values of the supply voltage (Vdd), reference voltage (Vref), and the feedback resistor (Rf) to attain an ideal range of outputs that we can use to accurately track force placed on the piezoresistor sensor.  Currently, we have found that the following values yield the following output range: Vdd = 2V, Vref = -2V,  Rf = 220 kOhm, C1 = 47 pF, Output Range = (approximately) 10mV – 2000mV. Further testing with standardized weights will be conducted to further determine accuracy and initial calibration of the sensor. We have placed an order for the remaining sensors following our test results.
  2. Android App Development (4h): I created a template for our CLIMB mobile app in Android Studio as well as the landing page, however I have not implemented the login page yet. I have not programmed in Kotlin before, so I have spent considerable time learning it over the past several weeks, but I have plenty of experience with similar programming languages and have no reason to believe it will cause any delay in the development of the rest of the app.
  3. Biomechanics Research (3h): I conducted biomechanics research on the physiological relationship between the A2 and A4 pulleys and the respective tendons that they are responsible for.  I determined that the initial placement of our sensors will likely suffice for prevention of pulley injuries. Additionally, I have found that typical A2 pulleys can generally hold up to 380N to 400N of force, so for safety and testing reasons we will likely use approximately 75% of that value (85.4 lbs to 90.0 lbs) as our alarm threshold for the A2 pulley sensor during integration testing. In our piezoresistor testing, we have found that bending of the sensor does not appear to affect the accuracy of the force readings, and as a result this should not impact our intended force sensor placement. Additionally, the A301 sensor data sheet states that the sensor can withstand forces up to 4400 N (1000 lb), so it should be more than able to handle the range of forces we intend to measure with our product. 
  4. Mandatory Lab Meetings (2.5h): Met with the professor and TA and received valuable feedback about our presentation and project implementation. One especially valuable piece of information that I received from the professor was to begin thinking about amplifier circuits as well as bridge circuits while tuning the output of our piezoresistor. After the meeting I researched the Wheatstone Bridge design of a piezoresistor which helped me gain an understanding of how it would fit into our circuit as well as how the piezoresistor worked internally.
Progress
  1. My progress is currently on schedule according to our Gantt chart. I believe learning Kotlin for app development will take some time and will allot additional time as needed for this task in next week’s schedule.
next week tasks & goals
  1. Android App Development: Create sign-in page for the app, ideally with OAuth google account sign-in. Additionally, some time will be spent learning Kotlin and additional features in Android Studio.
  2. Additional Piezoelectric Sensor Testing: Now that we have determined that we will be moving forward with the A301 sensor, we will test the sensor with standardized weights to begin calibration of the sensor and determine corresponding force readings with voltage outputs.

Alex Nguyen’s Status Report for 9/21/24

Personal Accomplishments
  1. Device Design and Mobile App UI Mockups (5h): I drew design mockups (shown below) for each component of our project, the wearable device itself and the mobile app that will receive and analyze force readings from the wearable. I designed each mockup based on conversations that me and my team held regarding our vision for the features and use cases of the device.
  2. Wearable Device Prototype (5h): I created a prototype (shown below) for the wearable device part of CLIMB based on the wearable device mockup created earlier in the week. This prototype is constructed of cardstock and masking tape, and should be durable enough to conduct basic testing with A301 sensors and our microcontroller before creating the final product. The prototype can also help our team make the necessary revisions to ensure that the final wearable design accomplishes our goals regarding comfort and usability of the user. 
  3. Mandatory Lab Meetings (4h): We received valuable feedback from TAs and professors regarding our project ideas, and afterward I further researched several interesting points brought forth during the meetings (e.g. potential for IMU integration). During last week’s lab meetings, I listened to other group’s proposal presentations and provided feedback.
  4. Proposal Presentation (3h): Worked with Jubahed to break down our project into task groups and subtasks and create a Gantt chart to both plan and track our progress over the course of the semester.
Progress
  1. My progress is currently on schedule. I added biomechanics research to the schedule/Gantt chart for my personal tasks so that I can finalize the sensor placements in our design.
Next Week tasks & goals
  1. Mobile App Frontend: I intend to begin programming the page architecture/model of our web app based on the intended features and UI mockup (no functionality yet).
  2. Qualitative Testing of Wearable: I will be conducting some ease-of-use testing of the wearable device prototype with climbers and collecting feedback on any improvements that can be made for the next revision.
  3. Biomechanics Research: I also intend to finish researching the ideal placement of sensors for pulley ligament injury detection and finalize our sensor placement in our design.