Qwiic_RFID_Py¶
Python module for the SparkFun RFID Qwiic Reader
This module is also compatible with the following products:
This python package is a port of the existing SparkFun Qwiic RFID Reader Arduino Library
This package can be used in conjunction with the overall SparkFun qwiic Python Package
New to qwiic? Take a look at the entire SparkFun qwiic ecosystem.
Supported Platforms¶
The Qwiic RFID Python package current supports the following platforms:
Dependencies¶
This driver package depends on the qwiic I2C driver: Qwiic_I2C_Py
Documentation¶
The SparkFun Qwiic RFID module documentation is hosted at ReadTheDocs
Installation¶
PyPi Installation¶
This repository is hosted on PyPi as the sparkfun-qwiic-rfid package. On systems that support PyPi installation via pip, this library is installed using the following commands
For all users (note: the user must have sudo privileges):
sudo pip install sparkfun-qwiic-rfid
For the current user:
pip install sparkfun-qwiic-rfid
To install, make sure the setuptools package is installed on the system.
Direct installation at the command line:
python setup.py install
To build a package for use with pip:
python setup.py sdist
A package file is built and placed in a subdirectory called dist. This package file can be installed using pip.
cd dist
pip install sparkfun-qwiic-rfid-<version>.tar.gz
Example Use¶
See the examples directory for more detailed use examples.
from __future__ import print_function
import qwiic_rfid
import time
import sys
def run_example():
print("\nSparkFun Qwiic RFID Reader Example 1")
my_RFID = qwiic_rfid.Qwiic_RFID()
if my_RFID.begin() == False:
print("\nThe Qwiic RFID Reader isn't connected to the system. Please check your connection", file=sys.stderr)
return
print("\nReady to scan some tags!")
while True:
val = input("\nEnter 1 to get tag ID and scan time: ")
if int(val) == 1:
print("\nGetting your tag ID...")
tag = my_RFID.get_tag()
print("\nTag ID: " + tag)
scan_time = my_RFID.get_prec_req_time()
# If this time is too precise, try:
# scan_time = my_RFID.get_req_time()
print("\nScan Time: " + str(scan_time))
time.sleep(0.02)
if __name__ == '__main__':
try:
run_example()
except (KeyboardInterrupt, SystemExit) as exErr:
print("\nEnding Example 1")
sys.exit(0)
Table of Contents¶
API Reference¶
qwiic_rfid¶
Python module for the Qwiic RFID Reader.
This python package is a port of the existing [SparkFun Qwiic RFID Arduino Library](https://github.com/sparkfun/SparkFun_Qwiic_RFID_Arduino_Library)
This package can be used in conjunction with the overall [SparkFun qwiic Python Package](https://github.com/sparkfun/Qwiic_Py)
New to qwiic? Take a look at the entire [SparkFun qwiic ecosystem](https://www.sparkfun.com/qwiic).
-
class
qwiic_rfid.
QwiicRFID
(address=None, i2c_driver=None)[source]¶ - Parameters
address – The I2C address to use for the device. If not provied, the default address is used.
i2c_driver – An existing i2c driver object. If not provided a driver object is created.
- Returns
The RFID device object.
- Return type
Object
-
begin
()[source]¶ Initialize the operation of the Qwiic GPIO
- Returns
Returns true if the initialization was successful, otherwise False.
- Return type
void
-
change_address
(new_address)[source]¶ Changes the I2C address of the Qwiic RFID reader
- Parameters
new_address – the new address to set the RFID reader to
- Return type
bool
Reads and clears the tags from the buffer
- Return type
void - does not return anything
-
get_all_prec_times
(time_array)[source]¶ Gets all times in the buffer
- Parameters
time_array – list of upto 20 times the RFID tag was read from the I2C bus
- Return type
void - does not return anything
Gets all the tags in the buffer
- Parameters
tag_array – list of upto 20 RFID tag numbers
- Return type
void - does not return anything
-
get_prec_req_time
()[source]¶ Gets the time when the RFID tag was last scanned
- Returns
Returns time in seconds
- Return type
int
-
class
qwiic_rfid.
QwiicRFID
(address=None, i2c_driver=None)[source]¶ - Parameters
address – The I2C address to use for the device. If not provied, the default address is used.
i2c_driver – An existing i2c driver object. If not provided a driver object is created.
- Returns
The RFID device object.
- Return type
Object
-
begin
()[source]¶ Initialize the operation of the Qwiic GPIO
- Returns
Returns true if the initialization was successful, otherwise False.
- Return type
void
-
change_address
(new_address)[source]¶ Changes the I2C address of the Qwiic RFID reader
- Parameters
new_address – the new address to set the RFID reader to
- Return type
bool
-
clear_tags
()[source]¶ Reads and clears the tags from the buffer
- Return type
void - does not return anything
-
get_all_prec_times
(time_array)[source]¶ Gets all times in the buffer
- Parameters
time_array – list of upto 20 times the RFID tag was read from the I2C bus
- Return type
void - does not return anything
-
get_all_tags
(tag_array)[source]¶ Gets all the tags in the buffer
- Parameters
tag_array – list of upto 20 RFID tag numbers
- Return type
void - does not return anything
-
get_prec_req_time
()[source]¶ Gets the time when the RFID tag was last scanned
- Returns
Returns time in seconds
- Return type
int
Example 1¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 | # !/usr/bin/env python
# ----------------------------------------------------------------
# qwiic_rfid_ex1.py
#
# Basic example that reads tag and prints ID and the time requested
# when prompted by user.
# ----------------------------------------------------------------
#
# Written by Priyanka Makin @ SparkFun Electronics, January 2021
#
# This python library supports the SparkFun Electronics qwiic
# sensor/board ecosystem on a Raspberry Pi (and compatible) single
# board computers.
#
# More information on qwiic is at https://www.sparkfun.com/qwiic
#
# Do you like this library? Help support SParkFun. Buy a board!
# https://www.sparkfun.com/products/15191
#
# ================================================================
# Copyright (c) 2021 SparkFun Electronics
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in all
# copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
#==================================================================================
# Example 1
#
# This example gets the latest tag scanned and it's associated time from the
# Qwiic RFID Reader when the user enters "1" into the terminal. The
# "scan" time is not the time of the day the RFID card was scanned but rather the
# time between when the card was scanned and when you the user requested the RFID
# tag from the Qwiic RFID Reader.
from __future__ import print_function
import qwiic_rfid
import time
import sys
def run_example():
print("\nSparkFun Qwiic RFID Reader Example 1")
my_RFID = qwiic_rfid.QwiicRFID()
if my_RFID.begin() == False:
print("\nThe Qwiic RFID Reader isn't connected to the system. Please check your connection", file=sys.stderr)
return
print("\nReady to scan some tags!")
while True:
val = input("\nEnter 1 to get tag ID and scan time: ")
if int(val) == 1:
print("\nGetting your tag ID...")
tag = my_RFID.get_tag()
print("\nTag ID: " + tag)
scan_time = my_RFID.get_prec_req_time()
# If this time is too precise, try:
# scan_time = my_RFID.get_req_time()
print("\nScan Time: " + str(scan_time))
time.sleep(0.02)
if __name__ == '__main__':
try:
run_example()
except (KeyboardInterrupt, SystemExit) as exErr:
print("\nEnding Example 1")
sys.exit(0)
|
Example 2¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 | # !/usr/bin/env python
# ----------------------------------------------------------------
# qwiic_rfid_ex2.py
#
# Basic example that reads RFID tags and prints all the IDs and the
# times requested in the buffer when prompted by user.
# ----------------------------------------------------------------
#
# Written by Priyanka Makin @ SparkFun Electronics, January 2021
#
# This python library supports the SparkFun Electronics qwiic
# sensor/board ecosystem on a Raspberry Pi (and compatible) single
# board computers.
#
# More information on qwiic is at https://www.sparkfun.com/qwiic
#
# Do you like this library? Help support SParkFun. Buy a board!
# https://www.sparkfun.com/products/15191
#
# ================================================================
# Copyright (c) 2021 SparkFun Electronics
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in all
# copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
#==================================================================================
# Example 2
#
# This example code demonstrates how to get every RFID card off of the Qwiic RFID
# reader. The Qwiic RFID reader can hold up to 20 cards and their scan times at a
# time. If more than 20 are read then the first card is overwritten. If you
# expect this to be the case then getting the scan time will help to see when the
# RFID card was scanned. A brief note about time. This time is not the time when the
# RFID card was scanned but the time between when the RFID card was scanned and it
# was requested by you, the user. There are two time functions available for large
# reads: getAllTimes() and getAllPrecTimes(), both return time in seconds but the
# second option gives you a time with two decimal point precision (0.00)
from __future__ import print_function
import qwiic_rfid
import time
import sys
def run_example():
print("\nSparkFun Qwiic RFID Example 2\n")
my_RFID = qwiic_rfid.QwiicRFID()
if my_RFID.begin() == False:
print("The Qwiic RFID Reader isn't connected to the system. Please check your connection", \
file=sys.stderr)
return
print("\nReady to scan some tags!")
all_tags = [None] * my_RFID.MAX_TAG_STORAGE
all_times = [None] * my_RFID.MAX_TAG_STORAGE
while True:
val = input("\nEnter 1 to get all ID's and scan times: ")
if int(val) == 1:
my_RFID.get_all_tags(all_tags)
my_RFID.get_all_prec_times(all_times)
for i in range(0, my_RFID.MAX_TAG_STORAGE):
print("\nRIFD Tag: " + all_tags[i])
print("\nScan Time: " + str(all_times[i]))
time.sleep(0.02)
if __name__ == '__main__':
try:
run_example()
except (KeyboardInterrupt, SystemExit) as exErr:
print("\nEnding Example 2")
sys.exit(0)
|
Example 3¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 | # !/usr/bin/env python
# ----------------------------------------------------------------
# qwiic_rfid_ex3.py
#
# Example that takes user input to change the I2C address of Qwiic RFID
# ----------------------------------------------------------------
#
# Written by Priyanka Makin @ SparkFun Electronics, January 2021
#
# This python library supports the SparkFun Electronics qwiic
# sensor/board ecosystem on a Raspberry Pi (and compatible) single
# board computers.
#
# More information on qwiic is at https://www.sparkfun.com/qwiic
#
# Do you like this library? Help support SParkFun. Buy a board!
# https://www.sparkfun.com/products/15191
#
# ================================================================
# Copyright (c) 2021 SparkFun Electronics
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in all
# copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
#==================================================================================
# Example 3
#
# This example code demonstrates how to change the address of the Qwiic RFID Tag
# Reader to one of your choosing. There is a set range of available addresses from
# 0x07 to 0x78, so make sure your chosen address falls within this range.
from __future__ import print_function
import qwiic_i2c
import qwiic_rfid
import time
import sys
def run_example():
print("\nSparkFun Qwiic RFID Reader Example 3")
my_RFID = qwiic_rfid.QwiicRFID()
if my_RFID.begin() == False:
print("\nThe Qwiic RFID Reader isn't connected to the system. Please check your connection", file=sys.stderr)
return
print("\nReady!")
print("\nEnter a new I2C address for the Qwiic RFID Reader to use.")
print("\nDon't use the 0x prefix. For instance if you wanted to")
print("\nchange the address to 0x5B, you would type 5B and hit enter.")
new_address = raw_input("\nNew Address: ")
new_address = int(new_address, 16)
# Check if the user entered a valid address
if new_address > 0x08 and new_address < 0x77:
print("\nCharacters received and new address valid!")
print("\nAttempting to set RFID reader address...")
my_RFID.change_address(new_address)
print("\nAddress successfully changed!")
# Check that the RFID Reader acknowledges on new address
time.sleep(0.02)
if my_RFID.begin() == False:
print("\nThe Qwiic RFID Reader isn't connected to the system. Please check your connection", file=sys.stderr)
else:
print("\nRFID Reader acknowledged on new address!")
else:
print("\nAddress entered not a valid I2C address")
if __name__ == '__main__':
try:
run_example()
except (KeyboardInterrupt, SystemExit) as exErr:
print("\nEnding Example 3")
sys.exit(0)
|