How does it work?

Measuring quantity: By creating a parallel resistor circuit on the base of the row, the changing position of the back can is used in conjunction with a resistance reading to calculate the exact quantity of cans and/or bottles in a row.

Determining SKU: By using an RGB LED and a photoresistor mounted adjacent to the front product in the row, we emit red, green, and blue light in sequence we measure the incident light intensity corresponding to each color (more on the specifics of the mount are explained in the "Problems" section). This data is then compared to a database of “fingerprints” for each SKU created prior by measuring and recording these intensities at different points on each can. Using a simple algorithm to compare the current can/bottle to our database or previously scanned cans/bottles, we are then able to determine the identity of the product. This is useful for determining the likely contents of the entire row, as well as for monitoring the cooler operator’s compliance with following the suggested planogram.

What does it measure?

Our solution measures the exact quantity of bottles and/or cans remaining in each row of a cooler. It also measures the color of the SKU in the front facing of each row in order to identify the exact type of drink located there.

Does the retailer/bottler/distributor have to do anything different to make your solution work?

(if yes, please explain) No; after the relatively quick and simple installation, no additional work is required by the retailer/bottler/distributor. They can resume normal operation of the coolers.

What materials does your solution require?

Surface mounted RGB sensors, photoresistors, copper wire, copper plating, adhesive, resistors, integrated chips (plus any additional software; in our solution, we used Arduino, Python, and MySQL)

Best guest on cost to implement

TOTAL: $9.65 (for a detailed breakdown, visit this page)

Challenges you/your team ran into

Most of our challenges were very specific to different parts of the solution. For building the circuit to read remaining quantity, we had a lot of trouble maintaining electrical contact between the metal tabs on the rail and the coil in the spring-loaded backing. We fixed this by using copper contact tabs instead of aluminum. When trying to measure the light intensity produced from different RGB values to ID the can/bottle, we experienced a lot of background sound. By recessing the photoresistor and using a black mount, we were able to cut down the sound by reducing the reflected light as well as the incident light on the resistor.

On the software/code side, incorrect flushing of old serial data from the Arduino led to incorrect RGB readings, and it was time consuming to identify the cause of the fluctuating data.

Isolating the color readings gathered from the RGB LED caused trouble because the photoresistor was reading light directly from the LED as well as from the reflection, since they were so close in proximity. We solved this by 3D printing a black cone to hold the parts in place and act as a barrier for the light from the LED. To ID the drinks, we created “fingerprints” of each drink by taking a lot of readings with the photoresistor/LED apparatus, and then we stored those results in a database. Matching the live readings with the database fingerprints was a bit tricky, but we solved it by adding weights to the collected RGB values, and then using those scaled values to find a match.

What you/your team learned

While complicated and expensive solutions oftentimes work very well, there is usually a simpler, cheaper way to accomplish the same thing if you really focus on minimizing the cost as much as possible. We learned that utilizing what already exists in the coolers makes the solution a lot cheaper, and the machines should be changed physically as little as possible to save on both material and labor/installation costs.

Next steps

Next, we need to add more fingerprints for all of the different Coke products that could be present in a cooler, both cans and bottles, so that anything could be properly identified.

We’d also like to use better constructed materials. In the individual rows of the cooler, there is a circuit used to calculate how many cans or bottles are in the row. Having better (in size and shape) metal contact tabs would allow extremely consistent and accurate readings, and it would increase the durability and longevity of the machine. Surface mount RGB LEDs should be used to replace the bulbs we currently are using. These smaller lights will allow for flush mounting to the machine in order to minimize its visibility and interference.

On the data side, we would like to create more scripts and tables to analyze the abundance of data we are able to collect with this device. This accurate data could then be used in numerous ways, from eliminating out-of-stock situations to knowing exactly how well each store is following the planogram protocol given to them. With regards to software, we’d like to create predictive algorithms to determine ahead of time when out-of-stock situations would be likely to occur, in order to prevent them.

Due to time and material constraints, we only prototyped a solution for the spring-loaded coolers. While we hypothesize that a similar solution would work for gravity-fed coolers as well, we have not tested this idea, so another next step would be adapting this to work on those coolers as well.

Anything else you want to add

Our solution is very cheap to produce, especially on a global scale. It’s also extremely easy to install. We have ideas for a roll of tape that contains everything needed to create the circuit for measuring quantity remaining, and it could quickly be deployed down each row and attached to the LEDs. This would be a quick process, requiring minimum downtime for the coolers and lower installation costs.

Shane and the rest of the staff did a fantastic job of facilitating the event. We had plenty of supplies to work with, and the food was delicious.

Built With

  • 220-ohm-resistors
  • 3d-printed-mount-for-the-photoresistor-and-led
  • 6-pennies-(crushed-by-train)
  • and-a-raspberry-pi
  • arduino-uno
  • copper-tape
  • copper-wire
  • electrical-tape
  • equipment-already-in-the-cooler
  • hot-glue
  • in-addition-to-everything-already-present-in-the-train.-software:-arduino
  • mysql
  • photoresistor
  • pyserial
  • python
  • raspberry-pi
  • rgb-leds
  • solder
Share this project: