Reducing Food Waste
Leveraging the Internet of Things to reduce food waste.
WISErg, a Seattle-based start-up that collects waste and turns it into fertilizer, was looking to use its technology and methods to analyze information about a supermarket’s processes in order to help reduce the amount of food that is dumped. Grocery stores are constantly looking for solutions to this problem.
We needed to understand why so much food is wasted so we conceived a "smart" trash can, hoping to leverage the Internet of Things to ascertain variations associated with differing types of grocery store food refuse in order to explore possible ways to reduce waste.
Key Design Requirements
- Low visual footprint
- Start with a tiny budget and rely on existing technology
- Needs change: incorporate modularity in the design
- Remote digital mgmt., event-based communications
User Observations and Research
In-store observations and user research into:
- Daily employee workflows in the produce section
- Perceived openness to new technologies
- Auxiliary functions for the “smart" trash can
- A “smart” trash can design would fit well into employee workflow.
- There are auxiliary functions our technology could provide (e.g. providing operational assistance through task tracking).
- The solution should provide data feedback directly to employees. Because the product's data collection is not explicity to their benefit, it is an even greater imperative they understand why to use the technology.
- Employees take pride in their individualized workflow; the solution should accommodate and emphasize this
Working towards intuitive user flows
Wireframing for efficient interactions
Making data diagrams (assisted by software engineer)
- A modular prototype concept that meets all design requirements
- Provides actionable dataUses grocery store's low profile and inexpensive trash can
- Leverages low cost Internet of Things sensors for data collection
- Both tablet and Raspberry Pi lend themselves to remote digital management and event-based communications; this results in lower power usage, instantaneous data collection, and remote troubleshooting
- Accommodates adding and removing sensors to the Raspberry Pi hub, allowing the future implementation or swapping of different types of data
- Easily connect unit for use and disconnect for charging during the evening
- Flexible neck allows different workflows
- WISErg recently secured $11 million in Series B funding to expand its efforts with this product
Concept proof: programming with a Raspberry Pi
Before designing and engineering a higher fidelity version of the concept, it was vital to validate the product's technological feasibility and business viability.
Proof of Concept Goals
- Collect desired data from sensors and log data to Azure.
- Test user flow against data flow to ensure requirements of both are met.
- Give presentation to R&D and executives that demonstrates the concept's business value and feasibility.
The Raspberry Pi, with camera, barcode scanner, RFID, load cell, and other attached
Example of demo script that successfully captures data
import sys import rfidReader, barcode, hidraw, camCapture, ftp, jsonReader import time import datetime as dt ### This script imports various modules. ### ### It runs functions from these imported modules. if __name__ == "__main__": print "ctdDemo.py is being run directly." else: print "ctdDemo.py is being imported into another module." while True: try: user = rfidReader.read() if user is not '': if str(user) == '10397102': user = 'Nicky Sinclair' else: user = 'Unknown User' break except KeyboardInterrupt: break prevDescription = 'Not_Available' while True: try: data =  # get 'Wasp Barcode' scanner. device = hidraw.getHidraw("Wasp Barcode") # search for barcode UPC input. upc = barcode.scan(device) if upc is not '': # capture current date and time. date = dt.datetime.now().strftime('%m/%d/%Y') time = dt.datetime.now().strftime('%H:%M:%S') data.append(date) data.append(time) # capture barcode. data.append(upc) # search database for description and append to database. description = jsonReader.getDescription(upc) data.append(description) imageName = camCapture.capture(prevDescription, True) # append empty 'weight' and 'temperature'. Then append image path. data.append('[weight]') data.append('[temperature]') data.append(imageName) # write all data in CSV format to local path. localPath = '/home/pi/ctdDemo/data.txt' file = open(localPath, 'a') for i in range(0, len(data)): if int(i) is int(len(data)-1): file.write(str(data[i])) else: file.write(str(data[i]) + ", ") file.write("\n") file.close() # set the previous description (for image annotation). prevDescription = description # send to FTP client. ftpPath = '/pumpouttest/ftproot/RaspberryPi2/logs' ftp.writeToFTP(localPath, ftpPath) except KeyboardInterrupt: null = camCapture.capture(description, True) break
Plan for the concept's future
- Short Term: package the concept into a usable prototype. Begin test-revise iterations.
- Long Term: add to product line and transfer design solutions to existing products.