Jubahed’s Status Report for 12/7/24

  1. Mobile App Development (10h):
    1. Charting (4h): Integrated charting graphics into app, on top of the queries that Alex wrote to pull data from the database. Added some new queries to ensure safety in all edge cases (app used to crash when a query returns something incomprehensible or a query is wrong!)
    2. Mandatory Lab Meetings (4h):  Provided feedback to other teams presenting their final demo slideshows.
    3. Final deliverables (2h): Started working on final deliverables.
Progress
  1. Progress is on schedule.
Next Week Tasks & Goals
  1. Finish up final deliverables and prep for final demo!
  2. End-to-end last minute testing in HH room where demos will take place

Jubahed Qayum’s Status Report for 11/30/24

PERSONAL ACCOMPLISHMENTS

  1. Lab meetings (6h): My team and I presented our interim demos. We got great feedback and thought it went well!
  2. App backend + frontend merging (6hr): Last week, Alex’s frontend elements were isolated and did not utilize bluetooth connectivity or commit any data to device storage. Therefore, I worked with Alex to merge together my backend APIs (Bluetooth + Database commitment) with his frontend elements. This made sure that the user experience for the device was significantly more ergonomic and seamless.
  3. ESP32 programming (3hr): I showed Alex my ESP32 toolchain setup and explained my FSM backend process on the ESP such that Alex would be able to start working on the calibration sequence as easily as possible.
  4. Device Verification & Validation (6hr):  Alex and I conducted a variety of software unit + integration tests to ensure the robustness of our app. This included bluetooth distance testing (mocking the physical glove with dummy data and ensuring the app stayed alive when the device moved 15m+ away), making sure that buttons could not be spammed and that the FSM of the app could not enter any unknown state (if a user presses a button twice within 5-20 ms, before an animation sequence occurs, for example, then the app should not start any code sequence twice). Since the migration to the frontend elements removed aspects of debugging I had prior, like displaying database elements properly, we learned how to debug the app using console logging via USB and displaying the database through Android Studio’s logcat and Database Inspector tools. These were used to make sure data was properly being committed to the database.
  5. Final Presentation prepare (6hr): I helped my team put together the final presentation slides, specifically information regarding the HW/SW interface, Bluetooth, and data storage.
PROGRESS
  1. Continuing testing into a more-than-MVP state
  2. Everything is on schedule!
NEXT WEEK TASKS & GOALS
  1. Alex and I need to sync up again to make sure that the app frontends can properly **retrieve and display** data from the database with specific queries. I’ll need to work closely with him to make sure my backend APIs are clear and further more robust for his use.
  2. Integrate second glove into backend APIs. This will include a lot of redundancy but will still take a sizable chunk of time.
  3. Continue testing, get more involved with end-to-end testing
  4. Work on final report
GUIDANCE

I think I learned a lot of new skills working on this project, but more specifically I learned about both app development and the process necessary to build an app effectively for Android, as well as the general ideation + design process for a project of this caliber, especially when it comes to deciding what components to use in the first place.

With respect to Android development, prior to this project I had actually never created an Android app before. Therefore, it was definitely foreign territory and a significant amount of time was spent on trying to make sure all elements of the app were working, plus just figuring out how to navigate Android Studio in general took a long time, even before assembly of our physical artifacts began. I learned the Kotlin programming languages, how Android breaks app pages into ‘Activities’ and how those activities correspond to frontend and backend elements, and how to utilize device permissions to do awesome things (like geolocation or Bluetooth access).

With respect to strategies to tackle this sort of project again, I really think I learned how to effectively pick and place components. By this, I mean that at the start of the project, my team really started from a blank canvas, where we had to decide entirely on our own what microcontroller to use, what sensors to use, whether we should develop for Android or iOS, etc. Before Capstone, these sorts of problems were already solved for me, where someone else had done that work already, but now being in the shoes of that person, I can see why this is a difficult and daunting task. We initially stumbled around, trying out different hardware platforms like Arduino, STM32, etc., until we landed on ESP32 (and even then, the first devboard we decided to trial on didn’t support power inputs the way we wanted). This process of iteratively building our design and our components over time + over trial and error taught me that

  1. Your design doesn’t need to be perfect off the jump, but in fact that this is a growing item and can change as the parameters, scope, and level of understanding around what we want to project to obtain or achieve changes
  2. Research really is necessary before any type of assembly or work. I know our team was itching to put together physical + software artifacts ASAP, but I distinctly remember that during our design report work sessions, we genuinely had points where we realized that we had NO CLUE how to pursue a subaspect of the project and had to spend time understanding it. Sure, the funnest part of the project was the assembly, which we only really did toward the end of our project, but the prior research and acquisition  of knowledge from our past reports really was necessary for us.

Jubahed Qayum’s Status Report for 11/16/24

PERSONAL ACCOMPLISHMENTS
  1. Lab meetings (4h): During our schedule lab meeting hours, I chatted with Alex about finalizing design decisions regarding the software framework of our project. I also learned how to make and flash code to the ESP32, as this would be necessary for building the Bluetooth APIs for both ends of the project to communicate with each other.
  2. Interim Demo Prep (19hr): I spent a large chunk of my week figuring out the ins and outs of ESP32 bluetooth connectivity. I created a simplified API for the ESP32 to do a variety of operations, including appending data to on-device queue, scanning and pairing with Bluetooth devices, and reading / writing from serial Bluetooth buffer. I also created a FSM for the device to follow a variety of strict states with respect to Bluetooth operations, (idle, collect data from sensors, send buffer to serial Bluetooth) where transitions are initiated by the smartphone app. This API was passed on to Josh to integrate his ADC interface onto it.
    Speaking of the smartphone app, I spent most of the week developing the backend for the app. This included utilizing the Bluetooth connectivity permissions on my Android smartphone to sync with the ESP32, to initiate an ACK system with the ESP32 API to start / stop data collection and control the ESP32’s FSM, and a simple frontend for displaying this functionality for the demo. This also includes committing data collected from the ESP32 to permanent storage on the phone via a working SQLite instance.
PROGRESS
  1. The ESP32 code is fully fleshed out and complete. The Android app backend is complete.
NEXT WEEK TASKS & GOALS
  1. Begin verification and validation tests. Sync my backend implementation with Alex’s frontend elements to make the process more user-friendly. Help Alex set up AnyChart API queries for grabbing data from the database.

Jubahed Qayum’s Status Report for 11/09/2024

Personal Accomplishments
  1. Mobile App Development (6h): Spent a large amount of time fixing bugs and fault-testing app backend. Learned how to navigate Android Studio emulator to test app deployment without needing an actual phone. Hoping to combine the mobile app / software prototype enough to interact with the glove for initial demos coming up soon.
  2. Mandatory Lab Meetings (4h):  During our lab meetings, I caught up with Alex on changes or suggestions for the app. We worked toward getting Bluetooth read capabilities on our app.
Progress
  1. Progress is on schedule.
Next Week Tasks & Goals
  1. HW/SW interfacing: Combine both components of our project together and make sure they work as intended before demo day.

Jubahed Qayum’s Status Report for 11/02/2024

PERSONAL ACCOMPLISHMENTS

  1. Mobile App Integration  (4h): Tested database query runs via frontend elements: buttons to trigger stores and loads.
  2. Mandatory Lab Meetings (3h): Ethics lecture + reflection with my team and course peers to consider a variety of ethical implications of our project. I received valuable considerations of a variety of disabilities / conditions that could prevent users from accessing our platform.
  3. Basic Bluetooth API calls (3h): Got basic bluetooth API access and data transmission between my laptop and smartphone (Galaxy Z Flip 5).
PROGRESS
  1. Progress is slightly behind schedule. Alex and I will be cooperating to ensure bluetooth connection works as intended with ESP32.
NEXT WEEK TASKS & GOALS
  1. Mobile App Development: Integrate database, bluetooth, and Alex’s frontend elements all together over the next two weeks.

Jubahed’s Status Report: 10/26/2024

PERSONAL ACCOMPLISHMENTS
  1. Mobile App Development (5h): Tested and verified that the database can only store data that we need, that it can store data at a fast rate (almost instantly the minute it is received), and that it is fault tolerant. Chatted with Alex about Android Studio page layout and navigating the IDE / how to design pages.
  2. Mandatory Lab Meetings (2h): I actually missed Tuesday’s lab meeting due to a medical issue I was facing where I had to go to my doctor for treatment. I reached out to staff accordingly. I attended Thursday’s session where Josh and Alex caught me up with updates from the course staff.
  3. Ethics Assignment (7h):  Read the two articles, watched the video, and wrote my report for the ethics assignment this week. I really liked the Winner reading and I thought it was an important read!
PROGRESS
  1. Progress is on schedule. Alex and I have been connecting frequently this week to get the app in shape. Backend is set up and over the next two weeks, we will create pages to interface with it.
NEXT WEEK TASKS & GOALS
  1. Mobile App Development: Work with Alex to integrate app backend into frontend elements like the chart displaying APIs. This can include creating some dummy data, debugging the database if any problems arise, etc.

Jubahed Qayum’s Status Report for 10/20/24

PERSONAL ACCOMPLISHMENTS
  1. Mandatory Lab Meetings (4h): My team and I got insightful feedback from our lab meetings (e.g. tuning our circuit to adjust for a voltage offset for finer granularity on sensor resolution).
  2. Design Report (16hr): I spent the bulk of my time last week compiling together the design report. Most of my contributions went to the use-case requirements, design requirements, and how they intertwine with each other (defining how the concrete aspects of our design hit our target ergonomics, durability, and safety metrics). I also spent a lot of time on the design trade analysis (breakdown between the different MCU platforms),  app implementation section, and compiling references.
  3. App backend / data querying (5hr): I came up with a first draft of SQL queries to create the initial tables defined in the design report, to insert into each relevant table when prompted, and to filter / retrieve individual data based on relevant workout.
PROGRESS
  1. The process of working on the design report significantly narrowed down misconceptions I and my team members had around certain components in our system, and I feel like it was a great way to get everyone on the same page of what we were each individually working on. After this, I’m on track to integrate my database queries into Alex’s initial framework this + next week.
NEXT WEEK TASKS & GOALS
  1. Integrate data query systems into app framework
  2. Start looking deeper into communication between the two components: how to sync Bluetooth transceiver on ESP32 to mobile device, how to open a communication medium / establish a TTY between the ends through the app

Jubahed Qayum’s Status Report: 10/05/2024

PERSONAL ACCOMPLISHMENTS
  1. Backend database setup (6h): I spent most of the week learning how to use SQL more robustly (this is the querying language for SQLite). I think I’ve gotten pretty good with it! SQLite comes pre-installed on macOS so I messed around with creating tables, storing data, querying data, and general analytics (like aggregation, JOIN / WHERE / HAVING clauses), as well as style guidelines. This allowed me to solidify the app database backend on Android Studio and input those queries into it. I did run into a challenge with Alex of potentially migrating to a different framework outside of native Android Studio, but I’ll build on this more later.
  2. Design Review Slides / Presentation (5h): I worked as part of the team to build finishing touches on the design review slides, as well as rehearsing for a few hours and improvising changes along the way to make sure my presentation went as smoothly as possible!
  3. Mandatory Design Review Feedback Meeting (2h): I went on Monday to the Design Review meeting and presented + gave feedback to other groups that presented. I found it very valuable that the audience seemed to agree that the use of bluetooth / solely-Android reliant database+compute without cloud services was a good idea in this project! It really affirmed the research I did last week. I missed the Wednesday meeting and didn’t do much work on Thursday sadly, but I was feeling ill, and I contacted the course staff about this.
Progress
  1. Alex and I discussed the potential of migrating our app framework to Flutter, rather than purely Android Studio, because of its more cross-platform agnostic features. However, for the purpose of backend, it doesn’t put me too behind, as the concern for me is less about writing code and more about the general data storage and retrieval ideas (which I have solid). I would have to take some time aside to learn Dart, however, if we do this change, but this should not take me long. I still feel like we’re in a good place here.
Next week task & goals
  1. Alex and I will be touching base frequently throughout next week to finalize the framework we will choose for the frontend and backend components, as well as how they will integrate together. I want to start unit testing the HC-05 bluetooth module, but this will require it to be delivered first. This will allow me to see what it’s like receiving real-time data (even if it is junk for now) so Alex can start testing the AnyChartAPI. We have a lot to do this week!

Jubahed Qayum’s Status Report: 9/28/2024

Personal Accomplishments
  1. MCU Refinement (2h): While in last week’s update I mentioned using Arduino for the controller, after discussing with my team members and learning more about the STM32 ecosystem (more specifically about its compatibility with Arduino modules / bluetooth), we decided to pivot that MCU. It’s nice because these are a lot more powerful than Arduino’s, but still relatively simple to write code for and deploy to.
  2. Design documentation, slides (8h): I spent the bulk of my week working on the design presentation slides, as well as relevant diagrams that went into that slideshow. This involved a variety of subtasks, namely:
    1. Backend app information: I did some research into various database management systems that would be relevant for our application. Originally, I wanted to check out DBMS’ like PostgreSQL, as it is very popular in the open-source community, and I think it would be a good learning experience to dive deeper into it. However, after filtering our device and app use cases down further, I realized that we would want to avoid an internet-connection required system. All computation should only happen on the STM32 ARM core (mostly for motor vibration controls), or the app (data store and analytics). With this in mind, I shifted my focus toward looking into app-embedded DBMS’ that worked best with Android Studio, and SQLite seemed to be the best option. Plus, we don’t intend to do any crazy workloads beyond bulk data store and retrieval on a time-bound (for displaying on charts), so SQLite is more than enough.
    2. Block diagram slide
    3. General slide tidying, rehearsal, prep (I am the student presenting the design documentation this week)
  3. Mandatory lab meetings (4h): Meeting with Jim and Tjun Jet, discussing with Josh and Alex on future steps toward integration.
Progress
  1. I’m on track accordingly to my GANTT Chart. I didn’t add this task to the chart, but I did spend some time looking into Kotlin. This is because I didn’t realize initially that Android Studio used it. I haven’t worked with this language / framework before, so I have some more learning to do.
next week tasks & goals
  1. Work with Alex to build first run of Android app: more specifically, set up SQLite backend
  2. Look into Bluetooth modules for STM32 and how they connect with Android. This video seemed really useful and relevant for our project, so I will dive deeper into this. At the same time though, I will probably work with Josh to at least get data to send over a wire at the start. We will move to wireless over time, that is less important than data send / receive and data storage.

Jubahed Qayum’s Status Report for 9/21/24

Personal Accomplishments:
  • MCU Platform Research (3h): I spent around 3 hours researching for potential platforms regarding the micocontroller the team should use for data collection and sensor readings. I came to the conclusion that we should use 1 of 3 platforms for data:
    • Arduino: This is likely what would be best for our device prototype, as it is the easiest to set up, gather readings, and basic compute.
    • Raspberry Pi: This is a very strong option and allows for significantly more compute. It may make it easier to communicate wirelessly, should we focus on that later beyond MVP.
    • ESP32: Probably the best option of the three, due to reduced power and better IoT capabilities than the Arduino. However, this is more complex to setup.
    • Based on these, I narrowed down to starting with the Arduino. It seems totally enough to run the tasks we are asking of the controller (send data to mobile device every few ms or so, and alert for over-exertion)

This video demonstrates that Arduino can actually reliably communicate over bluetooth . This makes me feel like it should be OK for us to stay on that platform for the foreseeable future of the project.

  • Mandatory Lab Meetings (4h): Listening to other groups helped me narrow down ideas regarding future planning and potential improvement plans (I didn’t think about the ESP32 until another group mentioned it). It was also valuable receiving feedback from other students.
  • Proposal presentation (5h): I spent a lot of time with Alex breaking our project future down. This went into making the GANTT chart (including making it as functional as possible, modifying it over time to make it more precise) and integrating it into the slides. I intend this to be a living chart and change with agility throughout the project as its needs evolve.
Progess:
  • I’m on schedule. This week, beyond the team tasks we wanted to work on, I did what I wanted to do. This should keep me ready to start integrating data collection into the prototype, with the ability to read and display sensor readings, within the next 2 weeks.
Next Week Tasks and Goals:
  • I’ll have to continue MCU research into the next week. This is because of the fact that for our MVP / initial prototype, communication is less of a factor. Therefore, as we start to build the device together and potentially go beyond MVP, we may have to worry more about compute capabilities on the controller.
  • I also want to try to start the assembly of first demo with actual sensor readings. Josh has been researching the sensor, and Alex has a good mock-up of the physical design. All that is left is integration via the MCU.