“GOOOOOONNNGGGGG.” The noise penetrated my early morning reverie like a knife. The gong was not rallying some distant Mongol army but was summoning the software engineers at Tome, for breakfast. The gong not only meant breakfast but it meant the start of lab day, the day where you work on your own projects. Lab days at Tome occur once a month and having worked there for two months, I participated in two of them. The first one was spent modifying my coffee roaster. For the second project, I made a temperature logger and grapher for the roaster.
The day after lab day is spent with a little presentation from everyone who made a project. It was incredible to see the diversity of projects and the different level of talent required to work on them. Certainly, the projects reveal the talent of the software engineers working at Tome. The innovation that is spent on days like these is the same innovation that continues day after day continually bring Tome to greater new heights.
I spent the first lab day taking out the factory controls on my coffee roaster and adding my own. I had two problems with my roaster in its normal state. The first one was that I didn't know the temperature inside while roasting and the second was that the controls were set up so you had to watch the roast the entire time it was happening. These problems are huge for a coffee roaster because a good roaster needs to be able to reproduce batches and the only way to do that is by comparing metrics from previous roasts.
To fix these problems I decided to redo the controls system with an Arduino. This way, I could have the flexibility to control the roaster how I wanted. I spent the first half of the day taking the roaster apart and trying to figure out how it worked in its normal state. I found that it had five basic functions:
- It had a heating element
- An afterburner
- A cooling fan
- Drum motor
- A light
These were all powered by 120 volts so I needed some solid state relays to switch their state. A solid state relay takes a low voltage signal and triggers a higher voltage switch, in this case my Arduino was the low voltage controller. Next, I needed a way to get the temperature inside the roaster. I used a thermocouple which plugged into my Arduino and gave me the temperature over a serial port.
The second half of the day was spent programming to Arduino and fixing any bugs that came from it. The programming was pretty simple. It was basically reading button inputs and turning on a pin for output. I had two potentiometers to control the heating element and the drum speed and 3 buttons to control the light, afterburner and cooling fan. I was very excited at the end to see that at each button push or knob turn my roaster responded in the same way I told it too.
The second project was slightly related to the first one. I needed a way to be able to visualize the data coming from my Arduino. Seeing the temperature at an instance of time is okay but I needed a way to store the incoming data and graph it. I decided to make a project that would take the temperature of the room, store it in a database then graph it. I ended up using an infrared temperature sensor that would return the ambient temperature as well as the infrared temperature of an object. The sensor plugged directly into the Arduino and within minutes I was outputting temperatures. I needed a way to store those temperature, however.
At Tome, I work with back-end a little bit and I used what I had learned on my project. I didn’t have much experience with databases before working here but now I was able to store these temperatures with a timestamp into a database. My next task was to plot these temperatures from my database. I then made endpoints in my Node back-end and would return a JSON object containing the current temperature. This enabled a front-end HTML client to retrieve the object and use it. I had tried to use graphing libraries a year or so ago and was not able to do what I wanted with them. This time, I went with chartJS and was able graph some points. I took the last hour of temperature so the data was readable and started to look for trends. I found that the temperature in my office went up to 74 degrees Fahrenheit at which point the air conditioning unit came on and cooled it down to 68 degrees Fahrenheit. This cycle repeated every hour. This was really cool for me to see because you could never pick out a trend like that with a huge list of numbers but with a graph, you can see a trend very quickly.
In short, Tome is a super cool company to work for. I mean who lets you work on your own projects once a month?
I love coming to work and I hope the excitement never goes away. Every day I am constantly learning new things. I am able to work on new technologies and use them to their advantage. The people at Tome also make it great. They are very talented and I feel comfortable going to them when I need help. Also, the food in Royal Oak has been suburb from the authentic Neapolitan pizza to the lamb shawarma I have always been fully satisfied for lunch.
Peter Shutt, 2017 Hacker Fellows Intern, currently a rising Senior at the Western Michigan University studying Electrical and Computer Engineering. He is working with Tome for Summer 2017 and beyond.