TRUBREW

Product design • ux • Branding • Arduino Development

A modern French press coffee timer


save-01.jpg

Role:

Product Designer, Developer

Timeline:

3 weeks

Methods

Arduino Development • Laser Cutting • Branding • Storyboarding • Infographic Poster • Logo Design • looks-like/works-like/acts-like modeling theory


Project Overview

The objective of this project was to create a compelling timer. As the purpose of timers is to count the time between two events – either presenting them as time elapsed since the first event, or time remaining till the second event, a huge variety of product can be built on those basic functions. The integrated model consisted of a laser cutted enclosure and integrated with Arduino logic to perform the timing function.

The Arduino code can be downloaded here: https://github.com/ninalyow/trubrew

Goals

  • Laser cut a physical model

  • Put the principle of looks-like/works-like/acts-like model to practice

  • Write logical control code

  • Demonstrate storyboarding, schematic graphic, visual communication

Discovery and Research

Learning Arduino Basics

Before starting this project, I prepared by going over fundamental bread board wiring techniques and understanding how circuits can power switches, LEDs, light and motion sensors, motors and buzzers. It was incredibly exciting for me to wire up the breadboard and finally get my model to complete a task, such as turning a potentiometer to increase the brightness of an LED.

Deep-Dive: Making French Press Coffee

I chose to make my timer for preparing French press coffee because I am an avid French press coffee brewer and I wanted to build a better experience for other people who also enjoy customizing their daily coffee. A quick break down on the brewing process is shown below:

download.jpg
  1. Bring water to a boil and remove from heat

  2. Let water cool for 5 minutes

  3. Pour water over coffee grounds

  4. Let coffee steep for 2-4 minutes depending on preferred robustness

  5. Push plunger down and pour out a cup

User Flow

I developed a flow that allows for a seamless and cohesive user experience. Given that users may prefer a specific brew for their coffee, I built in flexibility to adjust the timer to a specific brew robustness. I also added in flows to account for positive feedback and user error

Test - New frame (1).jpg

Prototyping

Looks - Like and Works-Like Model

My first iteration consisted of a laser cut cardboard enclosure with etched engravings. The flat top allowed for placement of a coffee cup and side accessories and the interface allowed for easy access to button interactions.

To create the functionality of the timer, I stitched together code from the examples that I had followed initially and experimented with various wiring techniques so that all of my sensors, LEDs and buttons could fit on one breadboard.

The following image includes all of the components in my project. They are not exactly mapped to the same pins in my product but their functionality should be the same.

coffeeboard.png

I found that the best way for me to understand how each component worked according to my code logic was to test the output of each component separately. In the following example, I tested out associating the values of the potentiometer with a timer. The potentiometer generates analog values between 0 and 1023 and I mapped those values to the run time loop using the map() function and recorded the current time using the variable timerTime. When timerTime was between 6000 and 7000 milliseconds the blue LED at pin 7 would turn on (output = high).

Synchronizing LED output with potentiometer reading

Often, when I ran my program I woud get errors like the timer not syncing up to the lights correctly or the buzzer would sound even when the timer was not finished. I went back to my code and added a few print statements so that when the program was running it would show the time elapsed and remaining time live. Adding in comments to each function and process helped me organize the functionality of the code as well.

Added code to print current actions

Once I had tested my code and all of the functionalities were in place, I used many double-headed female to male dupont wires to adjust the user interface from the breadboard to the exterior of my enclosure. I made sure to arrange the potentiometer, buttons and LEDs in an intuitive and easy to use interface. Opening up the enclosure, you’ll see my attempt to arrange the crazy mess of extension wires and thankfully all of that is hidden in the enclosure.

Final Deliverables

Trubrew_1.png

What I learned

Throughout this project I’ve gained a greater appreciation for the timing devices that we take for granted each day. All timers have the purpose of counting the time between two events — either presenting them as time elapsed since the first event, or time remaining till the second event, but to tailor it to the specific task of brewing coffee was a huge challenge for me. Not only did I learn how to program an Arduino from scratch, but also I created a product that could be seamlessly integrated to a person’s typical morning routine. From completing multiple iterations of the user interface based on feedback from user testing, to presenting a final design, I was able to gain experience in the end to end process of going from a concept to a physical model. 

I’d love to have the opportunity to explore the nuances of the Arduino platform further to build more meaningful devices.