9/21
My work this week was primarily composed of brainstorming and preparing for the next stages of the project. Through discussion, both within the team and approaching professors for their feedback, we were able to decide on how to move forwards with the hardware aspect/haptic feedback portion of our project. From here, I plan to use the next week or so to do our pcb design and have that ready for manufacture.
For scheduling, we are fairly on schedule, falling behind a bit this week, but next week will be more productive, I plan to dedicate a couple sessions of a few hours this week to iron things out.
9/28
This week, outside of the time spent on the design review slides and practicing for the presentation, I finalized the circuit that we will be using for our haptic feedback hardware system. This included looking through our requirement specifications to finalize our battery, microcontroller, ERM motor, and most importantly, our DC/DC stepdown converter we will need to convert the 3.7V from the battery to the 3.3V an arduino requires (image below).
We are currently on schedule, our PCB is on track to be done within 2-3 weeks.
This week, I will finalize our schematic and PCB layout in Fusion, see if I can schedule a short check-in with one of the professors to get it looked over, and put in the order. I will also put in the purchasing forms for the rest of the components (resistors/capacitors, motor, battery, etc). From there, I will be waiting for parts to arrive, and in the meantime, test bluetooth capabilities between two arduinos.
10/5
Schematic and PCB layout has been finalized and checked over. Purchasing forms have been sent in and currently waiting for parts to arrive. Then, it’s a matter of negotiating access to the electronics room in Techspark to proceed with assembly and writing the Arduino code in the meantime.
10/21
Since last status report, all orders have been filed, for PCB, parts, and backup parts, and access to the electronics room has been negotiated. Much of the time in the previous week was spent working on the design report. Throughout this week, parts should have arrived on campus, and should be able to be picked up next week, so assembly can finally start. Arduino code is under development, and should be able to be tested once the second Arduino arrives.
10/21
Arduino bluetooth code has been written, and with all parts finally arrived, this week will consist of board assembly (finally!), as well as board testing and testing individual board components, specifically, checking whether the battery will be sufficient for the Arduino, and whether the motor is able to produce vibration using a power supply.
11/2
Board has been completed, but requires testing. During assembly, I realized that one of the Arduino pins may be connected incorrectly, so the board may require an additional jumper wire to be functional. The board was also tested with a power supply, and seems to produce the correct voltage (when connected to a power supply). Next week will be extensive testing of both hardware and Arduino/Python code, and figuring out how to integrate the python into the existing code.
11/9
This week was spent working on Python code and testing the circuit. While testing the Python bluetooth code, I realized that many bluetooth Python libraries do not behave as expected on Windows. However, this can be worked around by testing our final product on a Mac and in the meanwhile, using a bluetooth app on my phone to test. In addition, while connecting the Arduino, I realized that my printed PCB connects to the wrong pin (the power pin), so with the existing board, the Arduino would not be powered, but this can be worked around with an additional jumper wire. In conclusion, a less productive than usual week, due to commitments in other classes, but progress is steady.
11/16
Additional jumper wire has been attached (shown below in purple). Motor/arduino/pcb was tested extensively using a power supply before connecting everything together (full setup shown below). Motor vibrates as expected and Bluetooth connectivity is good. Final assembly will be done tomorrow in preparation for the interrim demo, most importantly connecting the board to the wristband and determining a comfortable position for the motor. Integration between Unity and the Python Bluetooth script will also be resolved tomorrow, most likely through a port of some kind.
For validation, which should be most of next week, I will be running tests on my system. In particular, I will be testing the latency between a gesture made and the vibration detected by the user to confirm that our setup is responsive enough to not be disruptive to the gaming experience. In addition, I will test the bluetooth connectivity, ensuring that even if the user is moving around, the connection will remain stable.
For tests that have already concluded, bluetooth connectivity test between the Python code and arduino has already been done, in addition to checking if the vibration generated by the motor is noticeable by the user.
11/30
The past two weeks have been integration between our individual modules, as well as formal testing. To properly integrate the game with the hardware, the Python script needed to be modified, adding a UDP port, somewhat akin to a buffer, where messages from Unity would be sent. The Python script also had to run in a loop, continuously checking for new inputs from the game.
For testing, I ran an exhaustive lists of tests, including a weight test (measuring weight of device), vibration test (testing that vibrations are noticeable and vibrations of different strengths are clearly distinguishable), power test (measuring power consumption using a multimeter), distance test (measuring maximum connectivity distance), and a ping test (measuring how long Python takes to send the Bluetooth signal). We have met the specifications we outlined previously for each of these tests, the most important being the power test and the ping test.
Throughout the project, a couple of the skills I’ve picked up include PCB design in Fusion, understanding Bluetooth communication, and asynchronous programming. To acquire these skills, I mostly used Youtube videos for understanding PCB design, going through code tutorials for Bluetooth communication, and going through library documentation for asynchronous programming.
12/7
The past week has primarily been preparing documents for the final presentation/demo, including the final presentation slides as well as starting work on the poster and video. We also realized that another consideration for our system was that using a motor to generate vibration could result in added delay as well, due to the motor having to spin up. However, there is no real way to measure if this delay is significant or to modify the design at this point, but this would be something to note for the final report. Next week will be finalizing the video, poster, and final report, as well as preparing for the final demo.
Unit tests that I conducted have been listed above (in the previous week’s report) and for system test, we enabled all our components and tested the system as a whole, with a user throwing test punches. During the system test, we realized that the bluetooth connection may occasionally disconnect, so adding backup code in the python script to reconnect to the watch will be necessary. Other than that, other requirements have been met and no further changes will be made to the physical hardware/haptic feedback subsystem.