Lunch Cart Tracker

When the meeting participants have finished eating, Millie wheels the table back to the hostess station located at the front of the building. A few minutes later she sends out an email to the office offering up the leftover food. Almost immediately after hearing the various pings of incoming emails echo across the office, heads begin popping up out of their chairs and the few who haven’t eaten lunch yet descend on the scraps like a pack of hungry hyenas. And as with the animal kingdom, it is typically only the first few arrivals to the scene that receive a full share of the spoils.

Inevitably, it was just a matter of time before this system was subject to the insatiable problem-solving minds of the office and design thinking was called into action. During a discussion surrounding connectivity and phone home technologies, a handful of us stumbled upon this topic and decided to launch our own ‘Top Secret’ project to see if we could come up with a better solution. The design problem?: How can we improve the process of alerting the office when leftover food becomes available? (And in this case, our definition of “improve” also meant “increase the likelihood that we get to the food first”…).

As Jesse Darley later pointed out, the easiest solution would probably just have been to sweeten my relationship with Millie to attempt to get a heads up when she is going to move the food. But the hacker in me refused to accept this option and instead we purchased some Arduinos, Raspberry Pi’s and a couple other modules to create a device that would tell us when the cart had been moved to the front of the office.

After some hours of tinkering with the hardware, coding and a little bit of arguing with my computer, this is what we came up with.

The first component of the system was the microcontroller and sensor that transmitted signals from the lunch cart. An Arduino was chosen as the microcontroller with an attached CC3000 WIFI shield and accelerometer (ADXL335). The Arduino establishes a network client to communicate with the Lunch Cart server and convey the data it records. It samples the accelerometer data once every second and processes it to determine whether the magnitude of the acceleration vector exceeds a certain threshold. This threshold is calibrated based on motion produced when pushing the table and filtered out any noise or accident bumps to the table (Clink here for full Arduino code).

If a sufficient acceleration is reached, the Arduino outputs a value of 1 to the server, otherwise it outputs a 0. The server consists of a Python script located on a Raspberry Pi that has been given a static IP address so that the Arduino client can always locate it. The server listens for new clients and then when they are connected it waits for data to be transmitted. If it receives a 1, it executes a SendEmail function that uses Google’s SMPT server to send an email from the address ‘’.

I designed a housing to hold the Arduino, WIFI shield, accelerometer, battery and a toggle switch and then printed it out using our FDM machine. It is hidden in the leg of the food table so that you can barely see a ring of white around the bottom, letting you know it’s there.

The toggle protrudes from the bottom and was selected because it was big enough to allow the user to activate it with their foot without bending over and drawing attention to themselves.

The system was designed so that the transmitter can stay inside the table but remain off. If someone sees something that they like on the table, they can discretely flip the switch with their foot and turn on the transmitter. The client will then connect to the LunchCart Server on the Raspberry Pi and start communicating status updates. As soon as the server receives a signal that the cart is on the move, it sends out an email to the specified recipients alerting them that the cart is in motion.

Delicious Victory!