Stockie - item centric shopping list

What if every time you run out of a product, the smart tag on it would instantly add it to your shopping list, at the touch of a button?

Similar projects worth following
Scattered throughout the house there are small tags or panels called stokies. You can attach the tags to individual products or things that need them, while panels provide multiple buttons and are designed for places where multiple things are stored, like the pantry.
The system is very simple to use, for kids, the elderly or even visitors. The shopping list is updated dynamically, in real time and the system can also order things online for automated delivery.
The desire is to save time and eliminate errors, while keeping things simple, this is why the tags need to be product centric or use centric, instead of a centralized list or an app on your phone.
Applications are not limited to your home, the system can be used in offices, hospitals, warehouses and even supermarkets, basically everywhere you need to keep a sure supply of something.

System diagram

Throughout the house there are tags (1) and panels (2) that allow you to mark one item as running low with a simple push of a button. Tags are generally dedicated to one item while panels contain multiple buttons for objects clustered in specific places. When a button is pressed the tags and panels communicate through the gateway(3) which provides access to the internet, reaching the server(4). This is where it all happens: a database keeps track of each tag of the users and applications provide extra functionality. Users(5) can consult the list(6) while shopping at the supermarket or even at home. Online stores(7) connected to the server can provide automatic delivery(8) of specific items.

Applications are not limited to your home, the system can be used in offices, hospitals, warehouses and even supermarkets, basically everywhere you need to keep a sure supply of something. The tags can be placed corresponding to items on shelves so that you can alert about missing items and have them supplied immediately. 

History and inspiration

The inspiration arrived one early morning when I realized I was out of coffee, even though I had the intention to add it to my shopping list. I started pondering about ways to measure the available quantity of things around the house so that I could be alerted when something was running low. I instantly realized that this would be a fairly difficult task requiring different kinds of sensors which would prove complicated, costly and unreliable. But the real goal was actually easier to achieve: since almost everything is used by a person he/she can alert the system about things running low without the need of a high tech sensor.

I wanted the system to be tied to each individual product or right where it is used, such that the user can instantly notify of a low supply, without stopping the activity or having to remember to later add it to the list. Adding a tag for each product might be appear to be an expensive goal at first, but a quick check shows that I could build a one button tag for about 3 euro, even while buying parts in low quantity. The tag is even significantly lower in cost than the annual supply of most things. Still, tags with multiple buttons can be transformed into panels which I can place in cabinets or drawers where multiple things need to be monitored, further reducing the cost per item.

Hence, the first prototype is ready to be attached to the coffee machine. It will make sure I never forget to buy coffee, tea or milk.

As prototypes I will build tags, panels and the gateway. I have started with the small version, the tag, currently attached to the coffee machine, which is intended for single items, but can contain up to three buttons. The larger version, the panel, is intended for places where multiple items are stored, like the pantry, and will have a larger number of buttons.  Each item has its dedicated button, you are one touch away from adding it to your shopping list or even having your favorite online store directly deliver it. 

Low power design

The stockie tags need to operate from a coin cell for as long as possible. I have considered designing the tags with touch sensors instead of physical buttons but the sensors need to wake up periodically and consume power do do the readout*.  By using buttons, the microcontroller sleep current goes down to 0.2uA which is far less than the self discharge rate of the battery. CR2032 batteries are rated at 1-2%/year self discharge, which combined with the microcontroller consumption should have a life or around 50(yes fifty) years, but I highly doubt that will happen in real life.

When a button is pressed the tag communicates with the gateway which communicates with the server and then returns a response which will be a red or green LED blink. Assuming a worse case scenario of 0.5s of wait time for answer from server and 0.5 seconds of total on time for the LED, I get an average current of 18.8mA for...

Read more »

  • 1 × TL-WR710N router for gateway
  • 1 × XMEGA32A4U gateway microcontroller
  • 1 × NRF24L01+ radio module Used for all modules and gateway. Quantity dependent on number of tags and panels.
  • 1 × ATTINY88 Used for all modules. Quantity dependent on number of tags and panels.
  • 1 × NRF24L01+ PA+LNA High power radio for gateway

View all 15 components

  • Website up and running

    electrobob08/19/2014 at 23:35 0 comments

    I have finally achieved simple functionality on the website. The whole project is hosted on my personal website, since I still have resources like databases available. The data is stored in a MySQL database which supports multiple users. There are a lot of features that I would like to have, but so far there are just a few things available: some diagnostics, user selection, simple error handling and most importantly a shopping list display. Apart from the user pages, there are a couple of others that will be accessed by the tags in order to change the status of the item or configure the tag. Here is how my list looks now, I have added just some random things:


    The other functionality is to show the status of all the tags for a certain user. For now the information contained is the HW ID of the tag, status, battery status and when it was last changed by the tag or website


  • Panels are in!

    electrobob08/18/2014 at 23:05 0 comments

    First panels are completed and can go online. Here are the first two assembled PCBs, one for development and one for actual usage in the kitchen.


    As you can see, there is a lot of empty space in the box, but I will design the whole thing again for the next version, the panel should not be much thicker than a battery and PCB. DSC_2828

    The buttons are designed to come out of the box surface just enough so that they can be pressed through the front plastic panel that comes over them.


    And the first completed panel from the front which will take place in one of my cabinets in the kitchen. I have chosen the labels quite randomly, I almost never need flour, since I don’t cook. DSC_2832

  • Easy to assemble prototype

    electrobob08/18/2014 at 23:04 0 comments

    To make the prototypes easier to fit in the box I have used a trick: I have placed a proper sized hole into the PCB under the buttons and the LEDs. That way I can install the PCB in the box and use it as a template to drill the holes. It takes less than 2 minutes for the whole 11 holes required for the 10 button panel, but I bet I could do it faster with enough practice.


  • Success!

    electrobob08/17/2014 at 17:45 0 comments

    The first stockie tag(attached to serial port for debug) can now connect to the database and check the status of my coffee. This means that basic functionality in the tag software, gateway software and server side software is done, time to start building up on it. Here is the tag saying I am out of coffee(red led). It takes a lot of things to work together in order for this to happen, I had to develop software for the tag, the gateway(micro and router) and server while using C, bash, javascript, html, php and mysql and of course, everything has to work together.


    And here is the tag saying I still have enough coffee(green led not that visible due to flash):


    Some terminals for debugging: top is the tag data, middle is data going through the gateway microcontroller and at the bottom is the router


  • Gateway built

    electrobob08/16/2014 at 21:36 0 comments

    I have assembled the hardware of the gateway. The gateway is made from a TL-WR710N(EU) router and a Xmega header board I have previously designed. The XMEGA32A4U microcontroller serves as interface between the radio and the router since there is no hardware SPI available on the router. Currently the data transfer between the microcontroller and router is done with a USB-serial adapter because I need the original router serial port for debugging. Once the development is finished, I will switch to the router serial port. There is an additional serial connection between the microcontroller and PC to monitor the data transfers and debug.

    The two antennas, router and NRF, are perpendicular to minimize coupling, as the router connects to my Wi-Fi to get online. Alternatively, I could use an Ethernet connection, but that requires an extra cable and limits the place where I can put the gateway.DSC_2788DSC_2791DSC_2794DSC_2801

    I found a place for the gateway in a socket I never need to use.

    Let the software development commence: two serial ports for debugging:


  • Schematics

    electrobob08/13/2014 at 21:47 0 comments


    The design of the tags and panels is rather similar, they differ just in the number of buttons. The tags have up to 3 buttons while the first panels have up to 10. The parts list is kept to the minimum, I have even omitted the LED current limiting resistors because the reduced drive strength of the micro controller at 3V will keep the current within levels.

  • PCBs for the 10 button version arrived

    electrobob07/31/2014 at 18:24 0 comments

  • Start talking

    electrobob07/30/2014 at 21:49 0 comments

    One of the first steps of the built is to achieve communication between the stockie tags and the main node which will be the gateway to the server. The tags are based around an attiny88 microcontroller and a NRF24l01+ radio module. The gateway will use a router coupled with an XMEGA micro controller along with a NRF24L01+ high power module and external antenna (here shown with a regular one). In this combination the communication range is sufficient throughout the average house, powerful enough to pass through two floors. 

View all 8 project logs

Enjoy this project?



denisa.glmn wrote 08/17/2014 at 22:22 point
What about making adjustments in the tags/panels/list of products that should be marked? I guess that it does exist the posibility to remove or to add a product, for example replacing cow milk with almond milk starting next week, so you can mark it in the list, isn't it?

  Are you sure? yes | no

electrobob wrote 08/17/2014 at 22:32 point
There are two sides: the text/picture that you put on the tag needs to be changed(if you want to) and the the software needs to know that it means something else.
To change what it means in software you go to your configuration webpage(or phone app) and select something else. The software can even assist you by letting you select which tag to change by pressing its button, that way there is absolutely no confusion to be made.

These are things I am still working on and will soon be updated on the project site. I am building other features as well, so stay tuned!

  Are you sure? yes | no

electrobob wrote 07/31/2014 at 14:51 point
As the work is in progress I can understand some things not being clear, I will unfold details as things move on.
There is no need to have a tag for each item, especially in places where you have a lot of things together. For this I will make a device with multiple buttons, think of it more like a panel. The key here is the easiness of access: it should be as easy to press the button as it is to get to the product itself.

  Are you sure? yes | no

Paul_Beaudet wrote 07/31/2014 at 13:17 point
The problem is explained well in the description. However, the solution could be illustrated a bit better. Do you mean to say there will be a tag for every item in the potential grocery inventory?

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates