Raspberry pi Barcode Scanner

Pratik Solanki
3 min readApr 11, 2021

--

Share

In this tutorial, we are going to build a Raspberry Pi 3 based barcode Scanner. We provide steps to set up a USB barcode scanner with the Raspberry Pi. And tell you how it works.

First of all, You need these parts to use a barcode scanner using raspberry pi3.

Parts :

Raspberry Pi 3: https://amzn.to/39WWelV

Power Adapter(4 Amp) : https://amzn.to/3a1Pu62

16GB micro SD Card: https://amzn.to/2PKdvrH

USB Barcode Scanner: https://amzn.to/3taYEoq

Setup Steps :

Step 1. Plug in the USB Barcode Scanner into Raspberry Pi3.

Step 2. Boot Raspberry Pi and open the terminal

Type this command “sudo raspi-config“

Step 3. Go to interfacing options and enable the “Serial” option

Step 4. Install dependencies Type this command “pip install requests“

Step 5. Go to this site https://upcdatabase.org/ and create a account and take api key

Step 6. Enter Your https://upcdatabase.org/ API KEY in Line no 6

Step 7. Type this command “sudo python barcode.py” to run the script (press ctrl+c to exit the script)

Dependencies:

“pip install requests“

Code:

RUN SCRIPT IN SUDO

sudo python

barcode.py

#!/usr/bin/python

import sys

import requests

import json

api_key = “ENTER YOUR API KEY HERE” #https://upcdatabase.org/

def barcode_reader():

“””Barcode code obtained from ‘brechmos’

https://www.raspberrypi.org/forums/viewtopic.php?f=45&t=55100"""

hid = {4: ‘a’, 5: ‘b’, 6: ‘c’, 7: ‘d’, 8: ‘e’, 9: ‘f’, 10: ‘g’, 11: ‘h’, 12: ‘i’, 13: ‘j’, 14: ‘k’, 15: ‘l’, 16: ‘m’,

17: ’n’, 18: ‘o’, 19: ‘p’, 20: ‘q’, 21: ‘r’, 22: ‘s’, 23: ‘t’, 24: ‘u’, 25: ‘v’, 26: ‘w’, 27: ‘x’, 28: ‘y’,

29: ‘z’, 30: ‘1’, 31: ‘2’, 32: ‘3’, 33: ‘4’, 34: ‘5’, 35: ‘6’, 36: ‘7’, 37: ‘8’, 38: ‘9’, 39: ‘0’, 44: ‘ ‘,

45: ‘-’, 46: ‘=’, 47: ‘[‘, 48: ‘]’, 49: ‘\\’, 51: ‘;’, 52: ‘\’’, 53: ‘~’, 54: ‘,’, 55: ‘.’, 56: ‘/’}

hid2 = {4: ‘A’, 5: ‘B’, 6: ‘C’, 7: ‘D’, 8: ‘E’, 9: ‘F’, 10: ‘G’, 11: ‘H’, 12: ‘I’, 13: ‘J’, 14: ‘K’, 15: ‘L’, 16: ‘M’,

17: ’N’, 18: ‘O’, 19: ‘P’, 20: ‘Q’, 21: ‘R’, 22: ‘S’, 23: ‘T’, 24: ‘U’, 25: ‘V’, 26: ‘W’, 27: ‘X’, 28: ‘Y’,

29: ‘Z’, 30: ‘!’, 31: ‘@’, 32: ‘#’, 33: ‘$’, 34: ‘%’, 35: ‘^’, 36: ‘&’, 37: ‘*’, 38: ‘(‘, 39: ‘)’, 44: ‘ ‘,

45: ‘_’, 46: ‘+’, 47: ‘{‘, 48: ‘}’, 49: ‘|’, 51: ‘:’, 52: ‘“‘, 53: ‘~’, 54: ‘<’, 55: ‘>’, 56: ‘?’}

fp = open(‘/dev/hidraw0’, ‘rb’)

ss = “”

shift = False

done = False

while not done:

## Get the character from the HID

buffer = fp.read(8)

for c in buffer:

if ord(c) > 0:

## 40 is carriage return which signifies

## we are done looking for characters

if int(ord(c)) == 40:

done = True

break;

## If we are shifted then we have to

## use the hid2 characters.

if shift:

## If it is a ‘2’ then it is the shift key

if int(ord(c)) == 2:

shift = True

## if not a 2 then lookup the mapping

else:

ss += hid2[int(ord(c))]

shift = False

## If we are not shifted then use

## the hid characters

else:

## If it is a ‘2’ then it is the shift key

if int(ord(c)) == 2:

shift = True

## if not a 2 then lookup the mapping

else:

ss += hid[int(ord(c))]

return ss

def UPC_lookup(api_key,upc):

‘’’V3 API’’’

url = “https://api.upcdatabase.org/product/%s/%s" % (upc, api_key)

headers = {

‘cache-control’: “no-cache”,

}

response = requests.request(“GET”, url, headers=headers)

print(“ — — -” * 5)

print(upc)

print(json.dumps(response.json(), indent=2))

print(“ — — -” * 5 + “\n”)

if __name__ == ‘__main__’:

try:

while True:

UPC_lookup(api_key,barcode_reader())

except KeyboardInterrupt:

pass

READ MORE: Python Zip() Function

--

--