PERSONAL ACCOMPLISHMENTS
- Lab meetings (6h): My team and I presented our interim demos. We got great feedback and thought it went well!
- 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.
- 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.
- 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.
- 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
- Continuing testing into a more-than-MVP state
- Everything is on schedule!
NEXT WEEK TASKS & GOALS
- 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.
- Integrate second glove into backend APIs. This will include a lot of redundancy but will still take a sizable chunk of time.
- Continue testing, get more involved with end-to-end testing
- 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
- 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
- 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.