Project

# Title Team Members TA Documents Sponsor
58 Virtual Reality Gloves
Aditya N
Ashton Billings
Hamza Lutfi
Jason Zhang final_paper1.pdf
grading_sheet1.pdf
other1.pdf
other2.pdf
other3.pdf
video
# Title

Team Members:
- Ashton Billings (Ashton6)
- Hamza Lutfi (hamzael2)
- Aditya N (avn5)

# Problem

Despite the recent breakthroughs in VR technologies and experiences, it's clear that the technology is still in its infancy. Our project will explore one area lacking in the industry, good and relatively cheap hand tracking. As of now, most flagship VR devices still rely on handheld controllers, with only the more expensive products such as the Valve Index having hand-tracking capabilities. Even still, these flagship devices are still lacking in certain areas.

# Solution

We will develop a hand-tracking system meant for VR development. To test our system, we will be using the Unity game engine combined with its OpenXR SDK which includes standardized hand-tracking software and the ability to deploy virtual scenes to an Oculus Quest 2 headset, which we will be using for this. We will use a combination of multiple sensors to achieve this result, with the main one for finger tracking being stress gauge sensors over each joint. These sensors change in resistance as they stretch, making them perfect for measuring joint bending. We also need to track where our hand is. We will be using IMUs combined with sensor fusion algorithms for this. Finally, With this data, our firmware will process it and arrange such data in compliance with Unity's XRHands package before sending it to Unity over BLE. We will also implement haptic feedback in our gloves, giving the illusion of holding objects in our hands. We will do this by using servo motors attached by string to each finger that will lock once our finger collides with an object. This will be done through Unity colliders, which provide simple true-false information about whether or not an object is colliding with another. We will send this to our hardware when true to lock the finger.

# Solution Components

## Subsystem 1 - Hardware

We will be using five main pieces of hardware for our design: stress gauge sensors for joint tracking, IMUs for hand tracking, servo motors for haptic feedback, rechargeable lithium-ion batteries for power, and of course our nRF52840 MCU. All three pieces will need their own set of complementary hardware/software to make them work as intended.

The stress gauge sensors will be embedded in the fabric, and then sown onto a glove, such that when you flex your hand in the glove, it will stretch the fabric, and therefore stretch the sensor. These sensors change in resistance as they flex, which will need to be converted to a voltage for measurement. This will be down with a Wheatstone bridge, then this voltage will be digitized with an ADC onboard the nRF52840 chip.

The IMU will be embedded on top of the hand. The accelerometers are prone to error due to the double integration of noise so sensor fusion algorithms will be used. Many open-source algorithms such as the Madgwick filter can be used for this, which combines data from the accelerometer, magnetometer, and gyroscope to reduce error in our position tracking.

The servo motors will be used for haptic feedback, stopping the fingers in place when they run into objects. As such we need a servo motor that can lock in place, so we've opted for the MG 996R for this. Since we will need 5 motors per hand, we will need a PWN module such as the PCA9685. This module allows for control of all 5 motors through one I2C communication bus and frees our MCU from needing to produce PWN modules.

To power our system we need batteries. We will be using lithium-ion batteries for our device which is typical of such devices. We will be using a battery management system device such as the bq2407x to control and charge these batteries.

Finally, we have our MCU, the nRF52840. This microprocessor is fast and built for wireless communication as well as being low power, perfect for our desire to use BLE. This MCU will be responsible for speaking with our three main components packing up this data and communicating it with Unity.


## Subsystem 2 - Firmware

Firmware for the nRF52840 will be written using the nRF5 SDK. The decision between the Connect SDK (Zephyr RTOS based) and “plain” SDK will be made once we are testing on a dev board. The firmware will implement code to read data from the sensors using the nRF’s ADCs, then send it to the computer running a game engine through BLE via Zephyr’s/SoftDevice. Our firmware will send this data via binary serialization for as low latency of a solution as possible.

## Subsystem 3 - Software

Our software will both receive data as well as send data for the proper function of our gloves. It will also provide us with the test scene to test our gloves functionality. All of this will be done in the Unity game engine, which uses C# for game development.

Our software will take in sensor data sent from the firmware and via a custom XRHands provider script convert it in such a way as to work with the standardized XRHands Unity package. This package has standardized functions for XRHand operations making it perfect for our project. An XRHands provider is simply a script used to take our raw sensor data and convert it to standardized XRHands data form.

Our software will also need to send interaction data to our glove for haptic feedback. This can be done using Unity colliders and collider callbacks. Functions like OnCollisionEnter will run once two colliders interact, meaning that in this function we can send a halt command to our firmware to tell the servos to stop, allowing for simple haptic feedback.

Finally, we have our test scene. Making a simple XR test scene in Unity is very simple with many free ones online available as well. These scenes contain interactable objects with Rigidbodies allowing for them to act like physical objects, colliders allowing for interaction, and meshes allowing for the computer to determine where these objects are for interaction. Our software will have a simple scene with objects to pick up and throw for testing.

# Criterion For Success

Our first criterion for success is that with these, we can pick up virtual objects with the gloves. These gloves will also lock properly when grabbing objects for this haptic feedback.

Our next criterion for success is that the gloves have a latency of under 1 second. We can test this by moving the glove in a predictable way, and timing how long it takes for Unity to react. We can do this by having a timer in our firmware and software and comparing the two.

Our final criterion for success is that the accuracy of the gloves is within a reasonable range. We can test this by predictably moving the glove into a certain position, say bending the index finger in relative to the palm in by 30 degrees, and seeing how much Unity moves the virtual hand in response. I'd say a reasonable range is that the fingers track within +/-15 degrees.

Multipurpose Temperature Controlled Chamber (for Consumer Applications)

Isaac Brorson, Stefan Sokolowski, Mitchell Stermer

Multipurpose Temperature Controlled Chamber (for Consumer Applications)

Featured Project

Multipurpose Temperature Controlled Chamber (for Consumer Applications)

#TEAM MEMBERS:

Stefan Sokolowski (stefans2)

Mitchell Stermer (stermer2)

Isaac Brorson (brorson2)

#PROBLEM:

Have you ever put a drink in the freezer to make it cool down faster, only to forget about it and later find it exploded and frozen?

Or have you wanted to cook a steak, but forgotten to move it from the freezer to the refrigerator the previous day?

Finally, has there ever been a time when you set food out overnight in order to prepare it for the next day but only to find that it didn’t thaw as expected?

We have done all of these things plus more and have always wished there were a smart device that could quickly cool or warm food without freezing or cooking it.

#SOLUTION:

Our project would be a programmable temperature controlled chamber which allows a user to set the temperature curve of a food item they are planning on consuming in the near future. This device would be able to quickly heat or cool food to a desired temperature, then hold it at that temperature until the user is ready to use the food. The way someone would use this device would start by placing their food item in the device's insulative chamber and closing the door. The user interface would present the user with a variety of options: standard heating or cooling presets for common food items, temperature set and hold, or the ability to set a detailed temperature curve.

If you want to cool a drink to just above freezing, you would select the corresponding menu option, and this device will lower the temperature of its chamber to well below freezing, then slowly raise its temperature to ensure the drink doesn't freeze.

If you select the menu option to thaw a steak, this device will raise the temperature of the chamber to just below the point at which meat begins to cook, (roughly 105 degrees F) then slowly lower the temperature towards room temperature.

This device could also be used for applications outside of cuisine. Say you’re running an experiment to test the capacity of a battery at different temperatures. You could set a temperature curve to visit several different temperatures and hold each one as your battery capacity tester runs its tests. This would allow you to automate an experiment that would otherwise require intermittent attention over the span of multiple hours.

There are temperature controlled chambers on the market, but they’re all exorbitantly expensive and large for a household kitchen. We want to make a device that could sit on a countertop and be affordable to anyone who has the budget for other standard kitchen appliances.

![pic](https://i.imgur.com/HJiCQsN.png)

#POWER

We plan to use a dual output DC power supply such as the RD-125B[1] to power both our digital electronics and the high power heating and cooling elements. This power supply would be plugged directly into an outlet using a 120V plug, and would create 5V and 24V DC outputs. According to its datasheet[1], the RD-125B’s 24V output is rated to supply 4.6A, which equates to just over 110W. Based on our research of thermoelectric coolers and heating elements, we think this should be plenty of power for our application.The RD-125B’s 5V output is rated to supply far more power than our 5V electronics could possibly draw.

#MECHANICAL DESIGN

In order to reach temperatures below freezing with thermoelectric coolers, we’ll need to thermally insulate the chamber very well. Since this insulation needs to be able to withstand the heat produced by the heating elements, we landed on Kaowool. This ceramic wool insulates very well while also being rated to over 1000℃[2].

Since our device is intended for food applications, it’s important for our temperature controlled chamber to be waterproof and food safe. For this reason, we plan to purchase an off-the-shelf cooking pot such as this one[3]. By fitting a smaller pot inside of a slightly larger pot, we can create an affordable and convenient way to insulate our chamber. We can fit the gap between the pots with Kaowool insulation, and use the larger pot’s lid with Kaowool in it to seal the top.

To heat the chamber, we plan to wrap a resistive heating element (such as nichrome wire) around the inner chamber. Since we plan to use an electrically conductive pot for our inner chamber, we’ll need to insulate the heating element from it to prevent shorting. This can be done with Kapton tape, which can withstand temperatures ranging from -269℃ to 400℃[4].

To cool the chamber, we plan to use thermoelectric cooling modules. These require a good thermal pathway to work well, so we’ll need to use a material with high thermal conductivity to mount them to the chamber wall. We plan to ask the machine shop to machine us aluminum mounts which match the curved outside surface of the pot composing the chamber to the flat faces of the thermoelectric cooling elements. Additionally, we’ll use thermal grease to reduce the thermal resistance of the junctions. The thermoelectric coolers will require rectangular holes cut through the wall of the outer pot so they can pump heat to outside of the device.

We plan to mount our circuit board and the user interface electronics in an E-box attached to the side of the outer pot. We can use standoff rods to ensure the electronics don’t get heated or cooled too much from being close to the chamber, though we expect that our thermal insulation will be good enough for that not to be a concern.

#HEATING SUBSYSTEM

As mentioned in mechanical design, we plan to use a resistive heating element to heat the chamber. This will be powered by the higher voltage DC power rail produced by the power supply, which is 24V for the RD-125B. We'll use a solid state switch to control the current through the heating element. This allows us to control its power using PWM, which is essential for ensuring the chamber temperature remains below a certain prescribed level.

The simplest and most cost effective switching device would be an N-channel power MOSFET such as the Taiwan Semiconductor TSM170N06CH[5].

#COOLING SUBSYSTEM

We plan to use thermoelectric (Peltier) coolers to provide the cooling. These work as heat pumps, so we’ll need heat sinks and cooling fans to dissipate the heat they produce. The thermoelectric coolers and fans will be run off of the same higher voltage DC that powers the heating element.

We want to have the option to run the thermoelectric coolers in reverse while the chamber is heating to prevent their heat sinks from cooling down the chamber. To do this we’ll need to power the thermoelectric coolers through an H-bridge so that we can reverse their polarities. The H-bridge can be composed of two N-channel MOSFETs such as the one mentioned above[5], and two P-channel MOSFETs such as the Rectron Semiconductor RM15P55LD[6]. The H bridge can be controlled by the STM32 microcontroller, allowing us to use PWM to vary the power supplied to the thermoelectric coolers. We may or may not need gate drivers for the H-bridge. Gate drivers are necessary for a fast switching rate, but our application doesn’t require high frequency PWM.

#TEMPERATURE MEASUREMENT SUBSYSTEMS

To be as precise as possible, we want distinct temperature sensors for measuring the temperature of the air in the chamber and the temperature of the item being warmed or cooled. Measuring the temperature of the food is made difficult due to many food items having insulative packaging. (Glass bottles, styrofoam containers, etc...) Since we want our device to work for as wide of a range of food items as possible, we plan to give the user the option to select from multiple different interchangeable food temperature probes. Temperature sensing probes could include a meat thermometer, a flat metallic probe that could be placed on frozen meat, or a ring shaped thermometer that could go around a bottle or can.

Temperature sensing (thermocouple / thermopile) may require some basic analog electronics, such as an op amp to amplify the small voltage produced by a thermocouple.

#USER INTERFACE SUBSYSTEM

We plan to use an STM32 microcontroller, for our use a STM32F103C8T6 would probably suffice with IO and processing power, but more capable F4’s might be considered if we add more sensors. The microcontroller and user interface will require logic level voltage DC.

We would most likely use an I2C enabled LCD display as well as a bright, external RGB LED in order to show the user what state the machine is in from a distance. We plan to use a push button rotary encoder to allow the user to interact with the device, in addition to an ON/OFF switch and a "cancel" button. User feedback should be fairly simple and if time allows, we might consider connecting the device to an external service to send users notification as to the status of their heating/cooling cycle.

The user interface screen will have multiple interactive menus: one to select the behavior mode of the device, one to set temperature and time values, one to show a temperature curve, and one to be displayed while the device is operating.

#CHALLENGES & CONSIDERATIONS:

- Everything inside the chamber will need to be able to withstand the full range of temperature.

- Electronics will need to be very well thermally insulated from the chamber if we want to use it as an oven.

- Since thermopiles operate off of a temperature gradient, they require a stable case temperature. This means we'll need to keep the thermocouple in a temperature controlled environment.

- The chamber should ideally be made watertight for the case of a spill or leak.

- When making the mechanical design, we'll need to keep in mind how different materials expand / contract at different rates when they're heated / cooled.

#CRITERION FOR SUCCESS:

- Inside of the chamber should be able to reach at a low end 0 degrees Celsius and at a high end 40 degrees Celsius.

- Be able to hold temperature to within +-5 degrees Celsius of target temperature.

- User has the ability to set target temperature, heating/cooling curve and max/min temperature allowances through GUI on an LCD display.

- Display of current temperature, and possibly a plot of the temperature vs. time graph.

- Ability to select the behavior of the device from a provided menu of presets for different foods.

- (Stretch Goal) We could possibly include multiple different methods to measure food temperature in addition to the ambient temperature. (Stainless steel probe to measure the internal temperature of meats, thermocouple for bottles and containers)

[1] Power Supply:

https://www.mouser.com/datasheet/2/260/RD_125_SPEC-1511572.pdf

[2] Kaowool:

https://www.morganthermalceramics.com/media/llhhadih/5-14-205_kaowoolblankets_072018.pdf

[3] Aluminum pot: https://www.amazon.com/Winco-Winware-Aluminum-Stockpot-12-Quart/dp/B001CHMIQ4/ref=sr_1_10?crid=1VECOQHCN2UC2&keywords=aluminum%2Bpot&qid=1706684643&sprefix=aluminum%2Bpot%2Caps%2C93&sr=8-10&th=1

[4] Kapton tape:

https://www.dupont.com/electronics-industrial/kapton-hn.html#:~:text=Kapton%C2%AE%20HN%20has%20been,C%20(752%C2%B0F).

[5] N channel MOSFET:

https://services.ts.com.tw/storage/resources/datasheet/TSM170N06CH_A2211.pdf

[6] P channel MOSFET:

https://www.mouser.com/datasheet/2/345/rm15p55ld-1396325.pdf

Project Videos