RFID Supermarket Checkout

Yannis Panagis

Yannis Panagis / January 27, 2019

IC Hack Winning Photo

During my second year at Imperial, we were tasked with a second year project to design a product that ‘solves a problem’. The actual brief was quite vague and when we started, I never thought this was the project we would end up working on.

We began planning this project in early October. Six months later, we developed an end-to-end instant, reliable, and secure super-market checkout system using UHF RFID technology. We decided to kick off our project at IC Hack-2019 and built the first working prototype in under 24 hours, winning the DocSoc’s choice award for “Best Overall Hack.”

After the initial prototype was developed at IC Hack, the system was redesigned according to a new specification with metal beams, and the antenna array positioning was improved based on further research.

In case any of this is a bit hard to picture, here’s a CAD visualisation of what the system actually looked like:

Python and F# Logos side by side

In this post, I’ll provide a rough overview of how we put this together and try to explain how it works in a bit more detail.

What is UHF RFID?

UHF RFID is an acronym for “Ultra High-Frequency Radio-Frequency identification.” It refers to a technology whereby digital data, encoded in tags (consisting of an integrated circuit and an antenna), is captured by a reader via radio waves. The barcodes you might have seen on supermarket items before encode digital data in a similar way, but use a visual collection of carefully placed bars instead.

However, barcodes have to be identified by a visual scanner that requires a line of sight. UHF RFID have several advantages over systems that use bar-codes, but most notably the tag data can be read outside the line-of-sight and from large distances (even up to 500m).

Technology and Engineering

A range of technologies were used to develop both the initial prototype and the final version of our system. The primary objective of the project became to improve customer’s shopping experiences. We achieved this by getting the customer out of the store faster, without the long queue time and stress associated with traditional checkout systems. The project was split into separate subsystems and used a range of technologies, which the following sections provide a bit more detail about.

System Level Schematic

Physical System

Supermarkets tend to have multiple check out gates in parallel and we aimed for a traditional modular design where multiple units could be placed side by side. By using a strong, lightweight aluminium for the frame, we also had flexibility in the design that allowed us to hide wiring and optimise the antenna placement.

The functional operation of the physical system used C++, Raspberry Pis, ultrasonic sensors, laser cutting, 3D printing for motion detection, the physical metal structure, gate system and antenna mounts

Facial Recognition

By integrating facial recognition, we were able to speed up the payment phase of the checkout experience even further, by recognising clients in a matter of seconds. Given the short amount of time we had for this project and the level of experience we had at the time, we used Open CV for the pre-detection stage and used Microsoft’s Azure AI for customer recognition for the core facial recognition functionality.

Web Application

The checkout software was designed with ease of use in mind. We tried hard to keep it as simple as possible to minimise adaptation time for all consumer groups. The app was built using jQuery, HTML, CSS, and ElectronJS to provide a robust framework for developing the friendly user interface and it looked a little like in the photo below.

RFID Checkout ElectronJS App screen


We used Java and SQLite for the backend, which interfaced with the antenna arrays and NodeJS for the server that interfaced with the Java backend and the web application.

Want to know more?

I tried to keep this post brief. If you’re interested in finding out more about the project, don’t hesitate to reach out. I’d be happy to discuss any aspects of the project if you’re interested in building something similar, or are just interested in more of the details.


I'm Yannis Panagis and I'm a Full Stack Engineer at Behaviour Lab and lead the front-end team there. I spend my time building products, visualizing data, exploring London, and writing music.

Copyright © 2021 Yannis Panagis

Powered by Coffee. ☕️