Home Inventory Barcode System
The Story:
While in the Rutgers School of Engineering, our class was assigned a group project to design and build an original product that runs on Arduino. I used the opportunity to implement an idea that I had in my head for a while. My wife keeps a list of the contents of our freezer, and as we remove items, we are supposed to mark it off. There were too many times that I forgot to mark an item I removed, thereby throwing off the proper count of the list. I always felt that if I was just able to scan the item as I removed it, there would be no chance I would forget.
Surprisingly, there is no existing product like this that acts as a standalone barcode at-home inventory system for your freezer/pantry. Retail stores obviously use such systems to keep track of their inventory, and there are smartphone apps that apply a similar system for your home. However, I felt that if you were relying on your phone, you'd end up having the same issue as a paper list. You'd either be too lazy to pull the phone out of your pocket, or the phone would be in another room and you definitely won't go and get it. Only if there is a system that is always on and in place beside your freezer or pantry are you likely to use it properly. There is no such standalone home inventory system yet.
I pitched the idea to my team, and they were all on board. However, due to the unique nature of the project, I had to double check that an Arduino is even capable of a project of this scope. It turns out that since Arduinos are not traditionally used as a USB "host", in order to allow it to receive input from a basic USB Barcode Scanner we would need a "USB Host Shield". It took a little trial and error to figure out which pins the shield uses, and which pins were free for the LCD and IR remote to use. Eventually it all came together and we managed to get everything to work together.
One of the big challenges was getting the code right. The USB Host shield designer did have some instructions and code to interface the Arduino with a USB Barcode Scanner, but it was out of date and intended to be used with an older version of the USB Host Shield library. I had to figure out how to properly adapt it to the newer library in order to get it to read to the LCD. After I did get that to work, I was totally on my own with regards to coding the inventory system, and making the Arduino work as a database.
The CAD design was based around the prototype setup with the breadboard. We didn't have the time to start soldering everything together, so the 3D printed custom CAD model that I designed and printed included all the prototype parts.
The final UI of the device is that a user can scan an item (I used this website to generate barcodes that represent words like "Chicken"), the screen then reads out the name of the item and the number of items that are in the freezer. You can use the +/- buttons on the IR remote to Add/Remove the number of items that you added or removed from the freezer. Since most of the time a user would be simply removing one item, and they would not want to pull out the remote, one of the team members had the idea to add a "quick remove" button that allows you to remove one item. You simply push the button, scan the item you are removing, and the screen reads out "name removed, x amount of name left".
Since the ideal product would have a much bigger screen, preferably a touchscreen, and have a better UI, I have started to rebuild the device on a Raspberry Pi. In the meantime, below is the initial Arduino prototype device.
Intro Video
(1 Minute)
Demonstration
Complete Device
The casing midprint
Wiring Diagram
Wiring Setup
(On mobile web, click on window below to scroll)