This repository contains the code, setup instructions, and tools for interacting with the Zebra FX7500 RFID Reader. It also includes scripts to enable systematic RFID performance measurements under various environmental conditions, and data processing scripts using Bayesian Machine Learning Algorithms.
- π‘ RFID Reader FX7500
For the regular setup of the Zebra FX7500 RFID Reader, please refer to the Regular Set Up Guide.
For the networkless setup of the Zebra FX7500 RFID Reader, please refer to the Networkless Set Up Guide.
This project is licensed under the MIT License. See the LICENSE file for details.
RFID-Reader-FX7500/
βββ arduino_serial/
β βββ __init__.py
β βββ main.py
βββ assets/
β βββ old/
β βββ HOWTO.md
βββ data/
β βββ 00-Examples/
β βββ 01-Preliminary-Measurements/
β βββ 02-Final-Measurements/
βββ docs/
β βββ 01_Regular_Set_Up.md
β βββ 02_Networkless_Set_Up.md
βββ scripts/
β βββ mqtt_set_up.sh
β βββ live_usb_set_up.sh
βββ src/
β βββ __init__.py
β βββ accuracy.py
β βββ data_management.py
β βββ fitting.py
β βββ gaussian_mixture_models_3D.py
β βββ gaussian_mixture_models.py
β βββ plotting.py
β βββ reader.py
β βββ sensors.ino
βββ main_tui.css
βββ tui.py
βββ requirements.txt
βββ LICENSE
βββ README.md
To get started with the Zebra FX7500 RFID Reader, follow these steps:
-
Clone the repository:
git clone https://github.com/Wireless-Information-Networking/RFID-Reader-FX7500.git cd RFID-Reader-FX7500 -
Install the required packages:
pip install -r requirements.txt
-
Set up the MQTT broker:
bash scripts/mqtt_set_up.sh
-
Run the main script:
python main.py
The main script is located at tui.py. It initializes the application, sets up the MQTT broker, and starts the RFID reader control interface.
The plots are generated using the data from the RFID reader. The plotting scripts are located in the src directory:
- src/gaussian_mixture_models.py: Handles 2D Gaussian Mixture Models.
- src/gaussian_mixture_models_3D.py: Handles 3D Gaussian Mixture Models.
- src/plotting.py: Other plotting and helper functions for data visualization.
You can pass parameters through the CLI to customize the behavior of the RFID reader. If a parameter is not provided, the default value defined in the "CONSTANTS" section of main.py will be used.
| Flag | Long Option | Description | Type | Default Value |
|---|---|---|---|---|
-t |
--Tag |
The coded value of the tag of the RFID reader. | int |
0 |
-f |
--Frequency |
The frequency of the RFID reader, in MHz. | float |
865.7 |
-d |
--Distance |
The distance between the RFID reader and the RFID tag, in meters. | float |
0.3 |
-o |
--Obstacle |
The coded value of the obstacle between the RFID reader and the RFID tag. | int |
0 |
-s |
--Duration |
The duration of the reading process, in seconds. | float |
5.0 |
-p |
--Power |
The transmission power of the RFID reader, in dBm | float |
10.0 |
To run the script with custom parameters:
python main.py -t 1 -f 866.0 -d 0.5 -o 2 -s 10In this example:
- The tag is set to
1. - The frequency is set to
866.0MHz. - The distance is set to
0.5meters. - The obstacle is set to
2(Metal). - The duration is set to
10seconds.
If any parameter is not provided, the default value will be used. For example, running:
python main.py -t 1 -f 866.0will use:
- The tag
1. - The frequency
866.0MHz. - The default distance
0.3meters. - The default obstacle
0(None). - The default duration
5.0seconds.
The scripts/mqtt_set_up.sh script installs and configures the Mosquitto MQTT broker.
The scripts/live_usb_set_up.sh script sets up a live USB environment for running the RFID reader application without network access.
The src/reader.py module handles communication with the RFID reader and processes incoming data.
- src/gaussian_mixture_models.py: Implements 2D Gaussian Mixture Models for clustering RFID data.
- src/gaussian_mixture_models_3D.py: Extends Gaussian Mixture Models to 3D for advanced clustering.
The src/fitting.py module uses machine learning techniques to fit experimental RSSI values to the Friis equation.
The src/accuracy.py module evaluates the accuracy of RFID measurements using ROC curves and other metrics.
The src/parser.py module parses CLI arguments and configures the application based on user input.