Pomodoro Study Chair

Pomodoro Study Chair

For my Senior engineering capstone project I decided to build a pomodoro study chair. The chair will be constructed of wood with a circuit in the arm of the chair that uses the pomodoro study method by keeping track of the study/break intervals. The chair will also encoporate a speaker to notify the user when they should switch from study to break or the other way around. The goal of this project is to create a device that efficiently keeps track of study and break intervals for the user.

Bill of Materials

Item Amount Price Link Notes  
3/4 in. x 4 ft. x 8 ft. PureBond Birch Plywood 1x $79.58 https://www.homedepot.com/p/Columbia-Forest-Products-3-4-in-x-4-ft-x-8-ft-PureBond-Birch-Plywood-165921/100077837#see-more-details    
Raspberry Pi Pico h Chip 1x $5.00 https://www.mouser.com/ProductDetail/Raspberry-Pi/SC0917?qs=T%252BzbugeAwjjvYEYcRJk%252Bxw%3D%3D&mgh=1&srsltid=AfmBOoohrSo6VDAgjWLN8hHqMCyGG Found In fab lab R29VT3UCDAJBrDHc-rXecShZtpb-U
4 Pin OLED Display 1x $3.23 https://www.ebay.com/itm/401468377369?chn=ps&mkevt=1&mkcid=28&google_free_listing_action=view_item&srsltid=AfmBOoqm31r2Kdil2vnQtadq7cFn_M4RcuxbxaOPPIXMMvq-YOSKluLk8E0&com_cvv=8fb3d522dc163aeadb66e08cd7450cbbdddc64c6cf2e8891f6d48747c6d56d2c Found in FabLab  

https://docs.google.com/document/d/1h2ybkHZOrmocpQRjxU5NcVkHAfMr9Qr2gCl5Ts1Y020/edit?usp=sharing

Gantt Chart

https://docs.google.com/spreadsheets/d/e/2PACX-1vTyddraeUgCk92TQGCBsSgF6_rqsoACsJ54TRJH8JF0IrLq893qUOEbyBpZXroAAPQE5Em0gLeHdUW2/pubhtml

Design Specs

The project will be made primarily out of birch cabinet grade plywood. Both sides will be cut out then I will connect the two sides using wood screws. The side will have to be cut into pieces in order to not waste materials. Once the side pieces are cut I will assemble them using domino inserts. This project will be for me and tested by me. This project is a semi-portable indoor project. I will be able to move it from room to room but it will stay stationary for most of the usage. The project will not connect to the internet nor bluetooth as I am using a Raspberry Pi Pico h. I will be using the laser cutter for test cuts on cardboard as well as the Shopbot for the test and final cuts on wood. The inputs of the project are limited to the user turning the device off and on. The Outputs are the display system as well as the sound system that tells the user when to study and when to take a break. The only inspiration for this project comes from the side chair file. My project differs from this inspiration as I scaled the chair to be less wide and taller. In addition, I changed the way the original creator cut the sides into pieces.

Side Design

I began by using a classroom chair as a reference design for my chair. I decided on creating two sides of the chair first anf then connecting across via mortison tenon joints. Using a classroom chair as a reference was benificial as they are smaller and would require less materials to replicate. I decided on making the chair seat at least 15 inches off of the ground. I wanted arms on the chair in order to integrate the electronics in them.

On https://www.etsy.com I found a file for a bohemian chair and a tutorial on how to make it. However when I first imported the file via dxf on fusion360 the height was 324 inches tall. I re-imported the deisign to millimeters in order to scale the size down. Link to Original Bohemian Chair File

image

Initial file imported in millimeters

This chair was still not meeting the desired dimensions as it was only 24 inches tall and 45 inches wide. However the file did solve a cutting issue by breaking the side of the chair into pieces so that I would be able to arrange them on a smaller piece of wood.

By using the Scale, move/copy, and line tools on fusion360 I adjusted the height and width of the side to meet my desired dimensions

image

Side of chair broken into links that meet dimension requirements

Download DXF with Pieces to Side of Chair

These links assemble to create a side frame 33 inches tall so that I can place the seat 17 inches off the ground

image

Pieces cut out on cardboard and assembled

When I cut this out using the shopbot cnc machine I will need two of these sides to create a full chair

image

After breaking down the pieces of the side into links on Fusion360 I exported the file as a DXF and brought the links into Aspire to create the tool paths.

The file shown in the image above was cut out four times to create two separate sides. Each piece of the side is layered on top of an identical piece to add to the thickness and overall support of the chair. Using 3/4 inch thick plywood I cut out the pieces and layered them to create 1.5 inch thick pieces.

After leaving the pieces glued overnight I noticed that the edges were not flush. To fix this issue I used a routing bit to trim off the overlapping edges

[Routing Edges]

After ensuring the edges of the pieces were flush I could now move to work on connecting the pieces via domino inserts using the Festool DF 500 tool. I adjusted the height on the festool df 500 to 36mm and used the smallest setting for 6x40mm domino inserts.

After connecting the links the sides of my chair were done.

Seat Frame Design

The file I used for the side design only gave the side so i had to create my own seat and back rest. I decided on using 2x2s to create a rectangular frame and connecting across for added support.

IMG_4088

I first used the table saw to cut out two 33” long pieces and 3 15” pieces to create the seat frame. Using 2.5” wood screws I connected the 33” pieces along the sides of the chair then the 15” pieces joined the two sides as shown in the picture above.

Next to create the backrest frame I cut out two 20” pieces for the height and another 15” piece to connect across. I inserted the 20” pieces to the seat frame using 6x40mm domino inserts as the dominos only have to hold the pieces in place not support any weight. Finnaly I used 2.5” wood screws to connect the top of the backrest.

Rasberry Pi Timer

For the electronics of my project I will be creating a circuit with a screen that displays a timer that keeps track of the pomodoro segments for the user.

For my first circuit I used an LCD display with a Raspberry pi pico h

image

Starter circuit on Wokwi.com with raspberry pi pico and lcd display

Using this circuit I was able to recreate the pinout on a breadboard and display a stopwatch timer on the LCD display

image

Circuit with raspberry pi pico h chip connected to LCD display displaying a stopwatch tracking hours:minutes:seconds

Code used for LCD display:

#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 10, 9, 8, 7);

unsigned long previousMillis = 0;
unsigned long elapsedSeconds = 0;

void setup() {
lcd.begin(16, 2);
lcd.setCursor(0, 0);
lcd.print("Stopwatch Running");
}

void loop() {
  unsigned long currentMillis = millis();

// Update every 1000 ms (1 second)
if (currentMillis - previousMillis >= 1000) {
previousMillis = currentMillis;
elapsedSeconds++;

 //Calculate hours, minutes, seconds
int hours = elapsedSeconds / 3600;
int minutes = (elapsedSeconds % 3600) / 60;
int seconds = elapsedSeconds % 60;

// Format time as HH:MM:SS
char timeBuffer[9];
sprintf(timeBuffer, "%02d:%02d:%02d", hours, minutes, seconds);

// Display on second row
lcd.setCursor(3, 1); // Centered-ish
lcd.print(timeBuffer);
  }
}

After seeing the display on the LCD I noticed that I couldn’t see the timer very well from a view directly above the circuit. Mrs. Morrow suggested using a four pin OLED display

image

Wokwi circuit for Raspberry pi pico connected to OLED display

image

Wokwi circuit recreated on breadboard. OLED displaying test text

After creating this test circuit I used the same circuit and adjusted my code to add in a stopwatch that switches between study time and break time to recreate the pomodoro method. I also added in a buzzer speaker via another raspberry pi pin that buzzes everytime the segment switches from study to break or break to study

[Working Raspberry Pi Pico h circuit with OLED display and buzzer speaking switching between study and break time]

Code Used for OLED Speaker

from machine import Pin, I2C
from ssd1306 import SSD1306_I2C
from oled import Write
from oled.fonts import ubuntu_mono_15, ubuntu_mono_20
import utime

# OLED dimensions
WIDTH = 128
HEIGHT = 64

# Initialize I2C and OLED
i2c = I2C(0, scl=Pin(17), sda=Pin(16), freq=200000)
oled = SSD1306_I2C(WIDTH, HEIGHT, i2c)

# Font writers
write15 = Write(oled, ubuntu_mono_15)
write20 = Write(oled, ubuntu_mono_20)

# Buzzer setup
buzzer = Pin(15, Pin.OUT)

# Timer settings (shortened for testing)
STUDY_DURATION = 25  # seconds
BREAK_DURATION = 15  # seconds

# Initial state
mode = "study"
start_time = utime.ticks_ms()

while True:
# Calculate elapsed time
elapsed_ms = utime.ticks_diff(utime.ticks_ms(), start_time)
seconds = elapsed_ms // 1000
minutes = seconds // 60
hours = minutes // 60

# Format time
time_str = "{:02}:{:02}:{:02}".format(hours, minutes % 60, seconds % 60)

# Clear screen
oled.fill(0)

# Display mode and time
if mode == "study":
    write15.text("Studying for", 0, 10)
elif mode == "break":
    write15.text("Break Time:", 0, 10)

write20.text(time_str, 0, 30)
oled.show()

# Check for phase transition
if mode == "study" and seconds >= STUDY_DURATION:
    # Beep and switch to break
    buzzer.value(1)
    utime.sleep(0.2)
    buzzer.value(0)

    oled.fill(0)
    write20.text("Time for a Break", 0, 20)
    oled.show()
    utime.sleep(2)

    mode = "break"
    start_time = utime.ticks_ms()

elif mode == "break" and seconds >= BREAK_DURATION:
    # Beep and switch to study
    buzzer.value(1)
    utime.sleep(0.2)
    buzzer.value(0)

    oled.fill(0)
    write20.text("Study Time!", 0, 20)
    oled.show()
    utime.sleep(2)

    mode = "study"
    start_time = utime.ticks_ms()

# Wait 1 second
utime.sleep(1)

Daily Journal

  • Day 1: On day one I spent my time searching for ergonomic chair designs to influence my own. I decided on creating a relatively smaller chair to support my budget. I decided on making the chair out of two different kinds of wood. One type that is harder or sturdier for the side/legs of the chair for support, and another type for the backrest and seat of the chair
  • Day 2: I began measuring a chair in the lab to begin desiging my chair in fusion360. I used a classroom chair as a model in order to use less material as the chair is smaller than usual.
  • Day 3: Measuring and designing
  • Day 4: Measuring and designing
  • Day 5: Test cut finished file on cardboard(Scaled down)
  • Day 6: Re-designed file based off of test cut
  • Day 7: Test cut new file on Cardboard(Scaled down)
  • Day 8: Test cut file on wood(To scale)
  • Day 9: Re-designed file based off of test cut and created adobe file to test on cardboard
  • Day 10: Test cut on cardboard to see new size. Added fillets to the fusion file for smoother look. Created aspire file with new design.
  • Day 11: Adjusted fusion360 file to be taller and less wide. It was 52 inches in length and only 26 inches tall. The ideal height would be 36 inches tall so that I can place the seat at least 15 inches off the ground
  • Day 12: Began working on creating the timer circuit with a Raspberry pi pico h and a LCD display. Using arduino IDE and a template on Wokwi I was able to display a “hello world” message
  • Day 13: Using AI I was able to write the code that displayed a timer on the LCD display with a message “Time Studying:”
  • Day 14: I switched from an LCD display to an OLED display for a better view of the timer. I used a 4 pin OLED and kept the Raspberry Pi pico. I also switched to thonny IDE from Arduino IDE as it supports more raspberry pi pico h libraries
  • Day 15: I was able to create code that ran a stopwatch with the same “Study time:” above the stopwatch
  • Day 16: I added the pomodoro piece to my code by making the OLED display a Study time for 15 seconds then switch to break time for 5 seconds. These are not the typical time increments for the pomodoro study method so that I could test quicker
  • Day 17: I added a buzzer speaker to my circuit with just a power and ground pin. I adjusted my code so that the speaker buzzes in between intervals.
  • Day 18: Broke chair file down into pieces so that I could arrange them to be efficient during cuts. I decided that when I cut these pieces out with wood on the shoptbot that I will use domino inserts to hold the pieces together.
  • Day 19: Cut pieces out on cardboard to test size. Desired dimensions were still not met
  • Day 20: adjusted the height of the chair in fusion360 and broke it back down into pieces for cutting
  • Day 21: test cut out the chair on cardboard
  • Day 22: Wood was odered and I began constructing my circuit on Kicad. I initially struggled to find the correct raspberry pi pico chip but realized that I’m using the pico h which is for headers and is not needed on any PCB board so I used the default pico. After that I couldn’t find my OLED display. Kicad does not support a .96 inch OLED display screen so I used global labels and created 4 through holes connected to GND, VCC, SLC and SDA.
  • Day 23: Continued working on PCB board. Finished tracing connections
  • Day 24: Used CNC machine to cut out pieces on 3/4 inch thick plywood
  • Day 25: Layered pieces to create 1.5 inch thick side links
  • Day 26-28: Measured and marked up side links for domino inserts
  • Day 28-30: Created domino insert holes on each piece
  • Day 31: Connected side links using 6x40 mm domino inserts and Titebond III wood glue
  • Day 32: Began seat fram construction using my model on fusion360
  • Day 33: Marked up 2x4x96 inch wood for the lengths and width of the seat making 15 inches across and 30 inches in length
  • Day 34: Sanded frame pieces so that they are level for the domino inserts
  • Day 35: after realizing the wood I had been working on for the frame was not flush to the front and back of my chair I moved to working on 2x2” wood instead
  • Day 36: Ripped the 15” pieces in half as I need 2x2’s and not 2x4’s
  • Day 37: Recreated the lengths of the seat frame to be longer than the chair itself to ensure that the frame would be flush front to back
  • Day 38: Cut the lengths in half to make 2x2” pieces and assembled the seat frame using 2.5” wood screws
  • Day 40: Used the Festool df 500 to connect to 20” pieces cut out on the table saw to the seat frame for the backrest then used a 15” piece and 2.5” wood screws to connect the backrest at the top
  • Day 41: Began recreating the breadboard circuit on kicad
  • Day 42: Continued work on kicad
  • Day 43: After realizing that the PCB board wouldn’t be finished by the March 5th due date I began work on a Proto board
  • Day 44: Soldered on Proto Board
  • Day 45: Soldered on proto board
  • Day 46: Soldered on proto board
  • Day 47: Tried fixing issues on Proto board but was unable so I cased what I had in the 3d printed box and used 1.5” wood screws to connect it to the arm of the chair

Challenges

  1. layering Plywood: When layering the links of the side of the chair the glue kept sliding the pieces around after they were clamped down. This was a problem because I needed the side links to be flush against one another because domino inserts require flate surfaces. To fix this, I took a routing bit to the edge of the pieces to make them all flat and flush.
  2. Seat Frame: When connecting the 15” cross sections to the 33” lengths of the seat frame I ran into some issues. The wood kept cracking as I drilled into it and I had to re cut quite a few times. To fix this, I drilled bigger pilot holes for the screws to sit in so they could pass by the knots in the wood easily
  3. Electronics: After getting my electronics to work on a breadboard I moved to work on a PCB board. After realizing a PCB board wouldn’t be done by March 5th I began work on a proto board. Initially after completing soldering the screen of the OLED would display half the letters and the time would be frozen. I thought at first this must be due to a grounding issue. I noticed the metal pad on the ground pin of the OLED was burned off during soldering so I got a different OLED. After re-soldering a new OLED I turned the circuit on and the screen didn’t turn on.

Reflection

This project has taught me a lot in terms of wood working, electronics specifically Raspberry Pi Picos, and time managment.

The wood working portions of this project have allowed me to become familiar with a lot of the tools around the fab lab. I was able to use the tablesaw to make my seat frame and the jigsaw to trim off extra wood. I used compact drills to connect the frame. The side of the chair required the festool DF 500. All of this has taught me the creativity that goes along with woodworking.

The electronics portion of this project has taught me that its best to be careful during transition phases. Its important to buy multiple of each of your components so that easy replication is available when moving from breadboard to pcb or to proto boards as I ran into issues that I was unable to solve without a reference circuit.

Finnaly, this project has taught me the most about time management. At the beggining of the year I moved at a steady pace which was not quick enough. Around february is when I realized the due date was coming quicker than I could finish. There are always unforseen issues within the hardware and software of your project that make the last 10% of the work take 50% of the time. Its important to use a ghantt chart or another method of planning to finish in a timely manner.