Project

# Title Team Members TA Documents Sponsor
10 Plug and Play Modular Keyboard
Christian Held
Daniel Chen
Fangqi Han
Shaoyu Meng design_document1.pdf
design_document2.pdf
design_document3.pdf
design_document4.pdf
design_document5.pdf
design_document6.pdf
design_document7.pdf
design_document8.pdf
design_document9.pdf
design_document10.pdf
final_paper1.pdf
proposal9.pdf
proposal1.pdf
proposal2.pdf
Christian Held ; Fangqi Han ; Daniel Chen

Problem –
When people think of keyboards, they think of large HP keyboards with a number pad and feet that kick up in the back. Full keyboards are useful for situations where the keyboard does not need to move and for right handed people. On the go, though, they can be bulky and too large for travel. Additionally, the number pad being on the right can be annoying for left handed people. There are keyboards that go smaller (similar to the size of a laptop keyboard, which have their own inconveniences), but then sacrifice the full keyboard functionality that all those extra keys provide. For all these considerations, one should be able to pick and choose the right amount of keys and orientation to maximize their workflow and work situations.

Solution Overview -
Our solution starts with a relatively portable main keyboard, with the main keys like the letters and numbers called the tenkeyless or 60% keyboard layout, that has a microcontroller and can connect to the computer. Then, there are other modules that can be connected to this main keyboard that will add functionality to the main keyboard. One module would be the number pad, which is necessary for some and needlessly bulky for others. Another would be the function keys (f1, f2…) that have this same tradeoff. Then we can have modules that provide added customization such as a volume knob or other I/O not normally found on a keyboard.
The main workflow for this projects starts with the keys. They give a signal to either the microcontroller or I/O expanders (which then feed signals into the microcontroller as well). The microcontroller identifies what key(s) have been pressed and sends serial commands back through the USB to the main computer. The code for the microcontroller should allow for the user to change what each key does so they can have maximum capabilities even in the smallest physical setting. Each module should have a case in order to protect it and the user from one another.

Solution Components –

Subsystem 1 Key wiring: the mechanical switches of the keyboards, and the wiring/PCB between them that will be connected to the main controller or I/O expander. Examples of switches include cherry switches or gateon switches. Brought up in our comments, these mechanical switches have generally a debouncing period of 5ms, and we think this is short enough that we will not have to deal with this mechanical issue on the software side.

Subsystem 2 Microcontroller: interprets key signals from keys or I/O expander into USB signals to be sent to the computer. One microcontroller we are heavily considering is the Teensy 2.0 controller.

Subsystem 3 I/O expanders: connects the outer boards to the main “tenkeyless” board. They are connected with 3.5 mm jack plug to communicate. These 3.5 mm plugs need to be TRRS cables, and will send GND, +5, and I2C Serial Data and the Serial Clock between different components with the I/O expanders. (Even though the 3.5 cable can send analog signals, the data will be digital) We are also interested in alternatives for our connection that are more compact, but the 3.5 mm plug seems to provide everything we need to send between components and is hardware that we already understand and can implement straightforward.

Subsystem 4 Firmware: code for the microcontroller that will interpret the key signals and also control things like caps lock and the function layer (pressing fn on a laptop, which we plan to implement).

Subsystem 5 Programmability: Allows user to modify their keyboard to produce what characters or potentially commands, such as changing the fn layers, having programmable keys, and other features that would help with user productivity and customization, which is one of the main pillars for our design of a modular keyboard.

Subsystem 5 Structural components: casing that protects user and keyboard from one another. We plan to use 3D printing and perhaps aluminum plates as simple shells for our pcb and controllers. We would also like to explore alternatives.

Criterion for Success -
A working main keyboard and one module that can be connected that adds more functionality to the keyboard, as well as disconnecting this module without crashing everything. While a keyboard with a clean case, nice cables, and new keycaps would be nice, the idea of adding more functionality and having an interesting and useful way to connect these separate components are what we want to focus on the most.

Healthy Chair

Ryan Chen, Alan Tokarsky, Tod Wang

Healthy Chair

Featured Project

Team Members:

- Wang Qiuyu (qiuyuw2)

- Ryan Chen (ryanc6)

- Alan Torkarsky(alanmt2)

## Problem

The majority of the population sits for most of the day, whether it’s students doing homework or

employees working at a desk. In particular, during the Covid era where many people are either

working at home or quarantining for long periods of time, they tend to work out less and sit

longer, making it more likely for people to result in obesity, hemorrhoids, and even heart

diseases. In addition, sitting too long is detrimental to one’s bottom and urinary tract, and can

result in urinary urgency, and poor sitting posture can lead to reduced blood circulation, joint

and muscle pain, and other health-related issues.

## Solution

Our team is proposing a project to develop a healthy chair that aims at addressing the problems

mentioned above by reminding people if they have been sitting for too long, using a fan to cool

off the chair, and making people aware of their unhealthy leaning posture.

1. It uses thin film pressure sensors under the chair’s seat to detect the presence of a user,

and pressure sensors on the chair’s back to detect the leaning posture of the user.

2. It uses a temperature sensor under the chair’s seat, and if the seat’s temperature goes

beyond a set temperature threshold, a fan below will be turned on by the microcontroller.

3. It utilizes an LCD display with programmable user interface. The user is able to input the

duration of time the chair will alert the user.

4. It uses a voice module to remind the user if he or she has been sitting for too long. The

sitting time is inputted by the user and tracked by the microcontroller.

5. Utilize only a voice chip instead of the existing speech module to construct our own

voice module.

6. The "smart" chair is able to analyze the situation that the chair surface temperature

exceeds a certain temperature within 24 hours and warns the user about it.

## Solution Components

## Signal Acquisition Subsystem

The signal acquisition subsystem is composed of multiple pressure sensors and a temperature

sensor. This subsystem provides all the input signals (pressure exerted on the bottom and the

back of the chair, as well as the chair’s temperature) that go into the microcontroller. We will be

using RP-C18.3-ST thin film pressure sensors and MLX90614-DCC non-contact IR temperature

sensor.

## Microcontroller Subsystem

In order to achieve seamless data transfer and have enough IO for all the sensors we will use

two ATMEGA88A-PU microcontrollers. One microcontroller is used to take the inputs and

serves as the master, and the second one controls the outputs and acts as the slave. We will

use I2C communication to let the two microcontrollers talk to each other. The microcontrollers

will also be programmed with the ch340g usb to ttl converter. They will be programmed outside

the board and placed into it to avoid over cluttering the PCB with extra circuits.

The microcontroller will be in charge of processing the data that it receives from all input

sensors: pressure and temperature. Once it determines that there is a person sitting on it we

can use the internal clock to begin tracking how long they have been sitting. The clock will also

be used to determine if the person has stood up for a break. The microcontroller will also use

the readings from the temperature sensor to determine if the chair has been overheating to turn

on the fans if necessary. A speaker will tell the user to get up and stretch for a while when they

have been sitting for too long. We will use the speech module to create speech through the

speaker to inform the user of their lengthy sitting duration.

The microcontroller will also be able to relay data about the posture to the led screen for the

user. When it’s detected that the user is leaning against the chair improperly for too long from

the thin film pressure sensors on the chair back, we will flash the corresponding LEDs to notify

the user of their unhealthy sitting posture.

## Implementation Subsystem

The implementation subsystem can be further broken down into three modules: the fan module,

the speech module, and the LCD module. This subsystem includes all the outputs controlled by

the microcontroller. We will be using a MF40100V2-1000U-A99 fan for the fan module,

ISD4002-240PY voice record chip for the speech module, and Adafruit 1.54" 240x240 Wide

Angle TFT LCD Display with MicroSD - ST7789 LCD display for the OLED.

## Power Subsystem

The power subsystem converts 120V AC voltage to a lower DC voltage. Since most of the input

and output sensors, as well as the ATMEGA88A-PU microcontroller operate under a DC voltage

of around or less than 5V, we will be implementing the power subsystem that can switch

between a battery and normal power from the wall.

## Criteria for Success

-The thin film pressure sensors on the bottom of the chair are able to detect the pressure of a

human sitting on the chair

-The temperature sensor is able to detect an increase in temperature and turns the fan as

temperature goes beyond our set threshold temperature. After the temperature decreases

below the threshold, the fan is able to be turned off by the microcontroller

-The thin film pressure sensors on the back of the chair are able to detect unhealthy sitting

posture

-The outputs of the implementation subsystem including the speech, fan, and LCD modules are

able to function as described above and inform the user correctly

## Envision of Final Demo

Our final demo of the healthy chair project is an office chair with grids. The office chair’s back

holds several other pressure sensors to detect the person’s leaning posture. The pressure and

temperature sensors are located under the office chair. After receiving input time from the user,

the healthy chair is able to warn the user if he has been sitting for too long by alerting him from

the speech module. The fan below the chair’s seat is able to turn on after the chair seat’s

temperature goes beyond a set threshold temperature. The LCD displays which sensors are

activated and it also receives the user’s time input.

Project Videos