nkargas / gen2-uhf-rfid-reader Goto Github PK
View Code? Open in Web Editor NEWGen2 UHF RFID reader with USRP and GNU Radio. Tested with USRPN200 and GNU Radio v3.7.4
License: GNU General Public License v3.0
Gen2 UHF RFID reader with USRP and GNU Radio. Tested with USRPN200 and GNU Radio v3.7.4
License: GNU General Public License v3.0
Thank you @nkargas for the awesome code and a starter for me. I face an issue with multiple tags with their own EPC name instead of Tag ID such as e1 etc 0, 1. How we are able to replace the original tag name?
Originally posted by @MuhammadZakirKhan in #4 (comment)
Hello,dear nkargas,sorry to disturb you.
It went well when the cmake command was executed.But I got a issue on the command(make install). The error is shown as follows:[build] rfid_swig_doc.i:23: Error: Unterminated character constant.
I had corrected the program errors about the version.What makes me confused is that the file rfid_swig_doc.i was generated automatically by the command make install.I have no idea how to fix this after looking up a lot of information.
The operating environment of the program is Ubuntu 20.04 +python 3.8.5 64bit+clang 10.0.0.
Looking forward to your reply.Thank you.
Hello,
I tried compiling the program but I get these two kind of errors:
gr-rfid/lib/gate_impl.cc:36:9: error: could not convert 'gnuradio::get_initial_sptr(T*) with T = gr::rfid::gate_impl' from 'std::shared_ptrgr::rfid::gate_impl' to 'gr::rfid::gate::sptr' {aka 'boost::shared_ptrgr::rfid::gate'}
35 | return gnuradio::get_initial_sptr
| ~~~~~~~~~~~~~~~~~~~~~~~~~~
36 | (new gate_impl(sample_rate));
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
| |
| std::shared_ptrgr::rfid::gate_impl
and
gr-rfid/lib/gate_impl.cc:58:45: error: invalid operands of types 'const char [14]' and 'int' to binary 'operator<<'
58 | GR_LOG_INFO(d_logger, "T1 samples : " << n_samples_T1);
| ~~~~~~~~~~~~~~~ ^~ ~~~~~~~~~~~~
| | |
| const char [14] int
Completely in the dark about the first one. While regarding the second one, for what I can remember about C++, that was not a valid syntax for concatenating strings (at least before C++11).
I tested it on Fedora 27, Ubuntu 22.04 and Gentoo. Same errors.
GCC 12.3 and Gnuradio 3.10.6 (on Gentoo).
Any idea?
Thank you in advance
when I want to compile for Gnuradio 3.8.1 I faced this error...
error: invalid operands of types ‘const char [14]’ and ‘int’ to binary ‘operator<<’
58 | GR_LOG_INFO(d_logger, "T1 samples : " << n_samples_T1);
| ~~~~~~~~~~~~~~~ ^~ ~~~~~~~~~~~~
| | |
| const char [14] int
/home/sp/Documents/Gen2-UHF-RFID-Reader-master/gr-rfid/lib/gate_impl.cc:59:45: error: invalid operands of types ‘const char [14]’ and ‘int’ to binary ‘operator<<’
59 | GR_LOG_INFO(d_logger, "PW samples : " << n_samples_PW);
| ~~~~~~~~~~~~~~~ ^~ ~~~~~~~~~~~~
| | |
I try to add some of my files in the 'lib' directory and use the class that I made. But every time I tried to call any function in the class at the 'tag_decoder.cc', 'reader.py' occurs AttributeError written below.
AttributeError: 'module' object has no attribute 'gate'
And of course when I erase what I wrote in 'tag_decoder.cc', this problem disappears...... Is there anyone can help me?
During running, the output is without plot:
UINFO: READER COMMAND DETECTED
INFO: RN16 DECODED
INFO: SEND ACK
INFO: SEND CW
INFO: READER COMMAND DETECTED
INFO: EPC FAIL TO DECODE
INFO: QUERY
INFO: INVENTORY ROUND : 506 SLOT NUMBER : 1
INFO: READER COMMAND DETECTED
INFO: RN16 DECODED
INFO: SEND ACK
INFO: SEND CW
INFO: READER COMMAND DETECTED
INFO: EPC FAIL TO DECODE
INFO: QUERY
INFO: INVENTORY ROUND : 507 SLOT NUMBER : 1
Gen2-UHF-RFID-Reader/gr-rfid/lib/reader_impl.cc
Lines 95 to 96 in 346bf12
Hello,
Thank you for your work on this project! I downloaded the repository to my Mac and in the process of the sudo make install
command encountered the error below. I believe I was able to fix it on my computer (the GNU Radio blocks installed smoothly) by casting the second input of the function linked above to an integer:
std::fill_n(rtcal.begin(), (int)(rtcal.size() - n_pw_s), 1); // RTcal
std::fill_n(trcal.begin(), (int)(trcal.size() - n_pw_s), 1); // TRcal
Below is the error before explicit casting; please let me know if there is a better solution or reason.
In file included from /opt/local/include/gnuradio/io_signature.h:27:
In file included from /opt/local/include/gnuradio/runtime_types.h:27:
In file included from /opt/local/include/gnuradio/types.h:27:
In file included from /opt/local/include/boost/shared_ptr.hpp:17:
In file included from /opt/local/include/boost/smart_ptr/shared_ptr.hpp:28:
In file included from /opt/local/include/boost/smart_ptr/detail/shared_count.hpp:29:
In file included from /opt/local/include/boost/smart_ptr/detail/sp_counted_base.hpp:45:
In file included from /opt/local/include/boost/smart_ptr/detail/sp_counted_base_clang.hpp:18:
In file included from /opt/local/include/boost/detail/sp_typeinfo.hpp:20:
In file included from /opt/local/include/boost/core/typeinfo.hpp:119:
In file included from /opt/local/include/boost/core/demangle.hpp:14:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/string:439:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/algorithm:2072:36: error:
call to '__convert_to_integral' is ambiguous
return _VSTD::__fill_n(__first, __convert_to_integral(__n), __value_);
^~~~~~~~~~~~~~~~~~~~~
/Users/HannahSi/Documents/GNURadio/Gen2-UHF-RFID-Reader/gr-rfid/lib/reader_impl.cc:95:12: note:
in instantiation of function template specialization
'std::__1::fill_n<std::__1::__wrap_iter<float *>, float, int>' requested
here
std::fill_n(rtcal.begin(), rtcal.size() - n_pw_s, 1); // RTcal
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/type_traits:3721:5: note:
candidate function
int __convert_to_integral(int __val) { return __val; }
^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/type_traits:3724:10: note:
candidate function
unsigned __convert_to_integral(unsigned __val) { return __val; }
^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/type_traits:3727:6: note:
candidate function
long __convert_to_integral(long __val) { return __val; }
^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/type_traits:3730:15: note:
candidate function
unsigned long __convert_to_integral(unsigned long __val) { return __val; }
^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/type_traits:3733:11: note:
candidate function
long long __convert_to_integral(long long __val) { return __val; }
^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/type_traits:3736:20: note:
candidate function
unsigned long long __convert_to_integral(unsigned long long __val) {retu...
^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/type_traits:3740:12: note:
candidate function
__int128_t __convert_to_integral(__int128_t __val) { return __val; }
^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/type_traits:3743:13: note:
candidate function
__uint128_t __convert_to_integral(__uint128_t __val) { return __val; }
^
1 error generated.
make[2]: *** [lib/CMakeFiles/gnuradio-rfid.dir/reader_impl.cc.o] Error 1
make[1]: *** [lib/CMakeFiles/gnuradio-rfid.dir/all] Error 2
make: *** [all] Error 2
Hello and thanks for the interesting project. I'm trying make it works with B210 board. Do you have any experience or any suggest in porting to B210? Currently the project as it is does not work properly
thanks in advance.
F.
Hello, at present, a single label can be obtained normally, but it is difficult to obtain information from multiple labels at the same time. If multiple tags were decoded successfully at the same time, how would they be classified in the source file?
Does anyone know what it would take to port this project over to work on an N310?
Dear @nkargas,
what is the default transmitter power in the USRP? Can we change it in the script?
I downloaded the package. ran configured, cmake and then make. It went through after some fixing ( reinstalling cmake3, doxygen..etc).
And then I created a conf.conf to specify my XML file path at usr/local/share/gnuradio/grc/blocks. When I opened my GRC I was able to find the rfid_blocks.
However when I try to drag it to make a flow graph, there is error like this
I suspected there were something wrong when compiling, so I ran a ctest in gr-rfid/build, but the result is not informative at all:
I am using ubuntu 14 and gnuradio 3.7
anyone having similar trouble or any idea?
thanks in advance.
Firstly, when I run the software, it is found that the transmitter does not send any signal and only the receiver is working all the time. The program can only trigger the behavior of transmitting signal under certain conditions. Normally it's supposed to be firing sine waves all the time.
Secondly, why does the RFX900 daughterboard need to call the function of set_auto_dc_offset(false) and SBX daughterboard doesn’t.
Looking forward for your rely! Best wishes for you!
hi
i try to run your code in offline mode in linux after install well,
by test the file named file_source_test ,
but i cannot get any resoults in the result file in misc/data,
the only thing i could see is command line ;
| Correctly decoded EPC : 70
| Number of unique tags : 1
| Tag ID : 27 Num of reads : 70
how can i do to solve this problem?
Hi,Thank for your outstanding work for this repository. But I only have the WBX daughterboard but SBX or RFX 900. So can you help me how to modify the code or add some code to use this daughterboard. Thanks a lot.
Hi everyone,
If we are able to detect multiple tags using EPC. Is it possible to get other information from the tag such as Phase and Amplitude or Angle of arrival estimation.?
Can anyone give me a rough idea I will write a script for it?
Thanks in advance
I am very new in USRP and using this code to decode the EPCs of RFID tags. Currently, I made it workable in USRP N2100 with SBX daughterboard to decode commercial UHF tags. I want to now extract the RSSI/Phase of this reflected signal like an Impinj RFID reader. It would be great if someone can suggest on this. Thanks in advance.
When the program is running, u appears first and then d appears continuously
Dear Nikosl:
I found such issue: "AttributeError: 'module' object has no attribute 'gate'" when I try to compile the source code. Do you have any idea about this error? Do I miss something?
Best
Lei
I got a series of UOOOOOOOOOOOOO as shown in beneath. It seems that my PC speed cannot catch up the sampling rate, leading to the overflow. Do you have any idea how to deal with this issue?
==========================================================
Using Volk machine: avx2_64_mmx_orc
gr::log :INFO: gate0 - T1 samples : 96
gr::log :INFO: gate0 - PW samples : 4
gr::log :INFO: gate0 - Samples of Tag bit : 10
gr::log :INFO: gate0 - Size of window : 100
gr::log :INFO: gate0 - Size of window for dc offset estimation : 48
gr::log :INFO: gate0 - Duration of window for dc offset estimation : 120 us
gr::log :INFO: gate0 - Initializing reader state...
gr::log :INFO: tag_decoder0 - Number of samples of Tag bit : 10
gr::log :INFO: reader0 - Block initialized
gr::log :INFO: reader0 - Number of samples data 0 : 24
gr::log :INFO: reader0 - Number of samples data 1 : 48
gr::log :INFO: reader0 - Number of samples cw : 250
gr::log :INFO: reader0 - Number of samples delim : 12
gr::log :INFO: reader0 - Number of slots : 1
gr::log :INFO: reader0 - Carrier wave after a query transmission in samples : 1295
gr::log :INFO: reader0 - Carrier wave after ACK transmission in samples : 4575
-- Initializing core control...
-- Performing register loopback test... pass
-- Performing register loopback test... pass
-- Performing register loopback test... pass
-- Performing CODEC loopback test... pass
-- Performing CODEC loopback test... pass
-- Setting time source to internal
-- Asking for clock rate 16 MHz
-- Actually got clock rate 16 MHz
-- Performing timer loopback test... pass
-- Performing timer loopback test... pass
'Q' to quit
UOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOUOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOqOOOOO
Now I want to use USRP to implement Gen2 UHF RFID reader. I would like to ask you some questions and look forward to your reply.
We are currently using N210 and SBX child board, environment is Ubuntu 16.04, UHD3.14.0, GnuRadio3.7, protocol package Gen2-UHF-RFID-Reader.
The sending query was set to '1000', but in most cases, you could not send so much data. Is it because of the buffer size? Is there any way to solve it?
The second problem is that when multiple tags are read at the same time, the number of EPCs decoded correctly decreases significantly.We guess that this problem is due to the influence of label coupling. We tried to put the label farther away, but it could not be detected after the distance of the label reached 5cm.So, I also want to ask you, is it because the front-end gain size is not set properly? How to determine the gain of N210 in general?
Moreover, when reading multiple tags, the number of times each tag is read varies greatly.Is it also due to the gain.
Look forward to your reply!
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.