ATrappmann / PN5180-Library

PN5180 library for Arduino
GNU Lesser General Public License v2.1
105 stars 92 forks source link

How to switch to next slot #15

Open key8931 opened 5 years ago

key8931 commented 5 years ago

I work with ISO 15693, and I want to work with 16 slots and always no response, the doc says I need send EOF, but how?

ma-ze commented 5 years ago

I'm also interested in this. For me it would be enough to recognize multiple UIDs at the same time but sadly not getting that to work.

NicM1989 commented 5 years ago

I work with ISO 15693, and I want to work with 16 slots and always no response, the doc says I need send EOF, but how?

Hi key8931. Can I ask what you've tried so far to implement the 16 slot read? I am looking into adding to Trappmann's code to be able to handle multiple tag reads (anticollision). As far as I can make out the existing examples and libraries are setup to handle 1 card read at once and won't implement anticollision handling.... please correct me if i'm wrong. The below is taken from the PN5180ISO15693.cpp library: I'm assuming you've set bit 6 of the Request Flags byte to 1 and tried to perform some extra read functions to handle to returned data? I'll keep looking into it and let you know if I have any luck.


JelleME commented 4 years ago

Hi everyone, I too am interested in an anticollision protocol since I need to detect multiple UIDs at the same time. However I have had no luck at using the 16 slots, which would be the proper way to implement anticollision.

For now I have found a workaround by using the Quiet state of the ISO-15693 tags (I use ICODE-SLI tags but SLIX or SLIX2 should also have this option), see figure.

image

By setting the address flag and putting the tags to the Quiet state the tag will still respond to addressed commands as long as the inventory flag is not set. Keep in mind that this workaround will only work because in my application I know the tag UIDs beforehand, which allows me to put them to the Quiet state blindly (by sending the stay Quiet commands for all known UIDs). If you have a similar situation, I hope this method maybe useful to you.

I am however still interested in a proper anticollision protocol for anyone who makes progress on this!

Cheers.

tueddy commented 4 years ago

An indian guy has a video for this and also an education software based on this library. It's like the NFC cockpit software and maybe helps to solve your problem? https://www.youtube.com/watch?v=0C7oAYbJQTA

JelleME commented 4 years ago

Hi tueddy, thank you for the video, it did indeed give some good insights on more possibilities with this board. Unfortunately, as you said, the backend of his software is based on this library and in the video at 11:03 he specifically says using inventory slot 16 is not implemented. I may look into this a bit more when I have time.

NicM1989 commented 4 years ago

I also used the 'stay quiet' command as a work-around like JelleME, but yes this method won't work if you don' t know the UIDs of the multiple tags overlaying the reader. I managed to read five tags successfully (see images below) but haven't tested more than that.

I used the following sequence for N number of tags: At beginning of program: Send all tags quiet by adressing them with stay quiet command 1 at a time Loop sequence: 'select' 1st tag >> 'get inventory' of 1st tag>>Send 1st tag 'quiet'>> repeat for N tags >> start scan cycle again.

image

image

image

alansbor commented 3 years ago

Hi An interesting cycle. "Cycle sequence: 'select' 1st tag >> 'get inventory' 1st tag >> send 1st tag silently >> repeat for N tags >> start scan cycle again."

But how did you implement it, can you show your code?

aetherium-ignis commented 3 years ago

Hi In case someone finds it helpful, I got it thanks to the application note AN12650 of nxp in which they have an example in pseudocode. https://www.nxp.com.cn/docs/en/application-note/AN12650.pdf