This week, I completed a networking proof of concept for the interim demos and iterated on my design to solve some of the challenges brought up by the TAs during our demos. I created a protocol for exchanging information between the glove (server) and our Python receiver client, and finished coding up the communication protocol for the various gestures. The protocol involved transmitting GATT profile characteristics containing an opcode (referring to a gesture) and IMU data (referring to acceleration and gyroscope velocity values). I also made a software flowchart to make it easier to explain our flow. I also integrated Sarah’s code with mine to make sure memory wasn’t an issue with our ESP32 and that opcodes were being detected correctly.
One challenge brought up by the TAs was making sure to register gestures only a single time. To fix this, I worked on tweaking the protocol to be based on callback notifications to the Python client when a characteristic was updated.
With regards to the Gantt chart, our team is right on track to begin some testing while finishing up the IMU portion of the code, and I am on schedule with my tasks. The main tests I’ve run based on my own part have been latency and range. I tested the ESP’s range and my laptop is able to pick up its signal from the amount we indicated (2.28 meters) in the use case requirements without issues. For latency, however, the opcodes took a little bit of time (a few seconds) to register movement due to the polling-style nature of how I was receiving Bluetooth notifications. The actual transmission latency between the two devices isn’t a lot, so I think I can fix this by not polling for notifications. I plan to continue timing the latency with my new protocol design and trying to process keystrokes faster to keep us within the delay we indicated in our use case requirements.