Badge RC522

Envie d'ajouter des fonctions à votre Raspberry Pi ? Faites un tour sur ce forum...

Modérateur : Francois

estelle
Raspinaute
Messages : 154
Enregistré le : jeu. 24 déc. 2015 17:14

Badge RC522

Message par estelle » lun. 13 nov. 2017 17:04

Bonjour,

J'ai installé un lecteur de badge RC522 qui fonctionne très bien seulement voilà lorsque l'on lance la lecture et qu'il n'y a pas de badge le programme stoppe sur la fonction : rdr.wait_for_tag() jusqu'au moment où l'on détecte un badge
Le problème est que le PI ne fait plus rien d'autres en attendant
Le programme fait appel à : from pirc522 import RFID
J'ai bien un répertoire "pirc522" qui a été crée et qui contient un fichier "rfid.py" avec une fonction "rdr.wait_for_tag()" et un while waiting assez facile à modifier pour au bout d'un certain temps en fasse un "BREAK" pour sortir de la boucle et passer à autre chose.....

Code : Tout sélectionner

def wait_for_tag(self):
        # enable IRQ on detect
        self.init()
        self.irq.clear()
        self.dev_write(0x04, 0x00)
        self.dev_write(0x02, 0xA0)
        # wait for it
        waiting = True
        compteur = 0
        while waiting:
            self.dev_write(0x09, 0x26)
            self.dev_write(0x01, 0x0C)
            self.dev_write(0x0D, 0x87)
            waiting = not self.irq.wait(0.1)           
        self.irq.clear()
        self.init()
Ma question concerne le "from pirc522 import RFID"
Es ce un accès externe au PI ?
A+

estelle
Raspinaute
Messages : 154
Enregistré le : jeu. 24 déc. 2015 17:14

Re: Badge RC522

Message par estelle » lun. 13 nov. 2017 18:15

Apparemment "vague nerd" a déjà beaucoup travaillé sur le sujet

J'ai peur que se soit des accès à des git externes ....

nexen
Raspinaute
Messages : 175
Enregistré le : lun. 29 sept. 2014 13:58

Re: Badge RC522

Message par nexen » lun. 13 nov. 2017 20:26

Bonjour estelle,
Non :) c'est juste qu'il importe une partie de la librairie dans ton programme plutôt que toute la lib

en clair il dit : J'importe la partie RFID du GROS truc Pirc522..il n'appel rien d'autre

pour le reste je ne sais pas te répondre.

estelle
Raspinaute
Messages : 154
Enregistré le : jeu. 24 déc. 2015 17:14

Re: Badge RC522

Message par estelle » lun. 13 nov. 2017 20:43

L'idéal serai d'avoir la totalité des librairies sur le PI

nexen
Raspinaute
Messages : 175
Enregistré le : lun. 29 sept. 2014 13:58

Re: Badge RC522

Message par nexen » lun. 13 nov. 2017 20:45

je me suis mal exprimé.... En fait tu as la LIB sur ton pi déjà .... mais lorsqu'il la monte en mémoire in ne prend qu'une partie.

il ne va rien chercher sur internet.

estelle
Raspinaute
Messages : 154
Enregistré le : jeu. 24 déc. 2015 17:14

Re: Badge RC522

Message par estelle » lun. 13 nov. 2017 21:18

Sauf qu lorsque je supprime le fichier cela fonctionne toujours ...

estelle
Raspinaute
Messages : 154
Enregistré le : jeu. 24 déc. 2015 17:14

Re: Badge RC522

Message par estelle » mar. 14 nov. 2017 09:00

En faisant une recherche sur "rfid"
J'ai trouvé le fichier rfid.py sur cette arborescence:
"usr/local/lib/pyton2.7/dist-packages/pirc522/"

C'est certainement le chemin de stockage des paquets lors de l'installation

et en "/home/pi/Documents/pi-rc522/pirc522/" où j'ai modifié la fonction " wait_for_tag(self)" du fichier "rfid.py"

Code : Tout sélectionner

 def wait_for_tag(self):
        # enable IRQ on detect
        self.init()
        self.irq.clear()
        self.dev_write(0x04, 0x00)
        self.dev_write(0x02, 0xA0)
        # wait for it
        waiting = True
        compteur = 0
        while waiting:
            self.dev_write(0x09, 0x26)
            self.dev_write(0x01, 0x0C)
            self.dev_write(0x0D, 0x87)
            waiting = not self.irq.wait(0.1)      
            compteur = compteur + 1
            if (compteur > 10000):
              break     
        self.irq.clear()
        self.init()


J'ai ajouté un compteur et un Break pour sortir de la boucle
Cela ne fonctionne pas
Le programme attends toujours la présence d'un tag

Je suis perdue !!
Qui peut éclairer ma lanterne ?
A+

maxmed
Messages : 13
Enregistré le : lun. 13 nov. 2017 12:30

Re: Badge RC522

Message par maxmed » mar. 14 nov. 2017 13:59

bonjour,

qu est ce que tu entend par le pi ne fait plus rien en attendant? je n'ai pas bien saisie ton problème

estelle
Raspinaute
Messages : 154
Enregistré le : jeu. 24 déc. 2015 17:14

Re: Badge RC522

Message par estelle » mar. 14 nov. 2017 17:10

Tant que je n'approche pas le badge le pi reste dans la boucle "waiting" à l'infini
Je souhaiterais au bout d'un certain temps sortir de ce "while"
Voili voilà
A+

maxmed
Messages : 13
Enregistré le : lun. 13 nov. 2017 12:30

Re: Badge RC522

Message par maxmed » mar. 14 nov. 2017 19:07

si je lit bien la doc https://github.com/ondryaso/pi-rc522
l'attente du badge est geré par

while True:
rdr.wait_for_tag()
(error, tag_type) = rdr.request()
if not error:
print("Tag detected")
(error, uid) = rdr.anticoll()
if not error:
print("UID: " + str(uid))
# Select Tag is required before Auth
if not rdr.select_tag(uid):
# Auth for block 10 (block 2 of sector 2) using default shipping key A
if not rdr.card_auth(rdr.auth_a, 10, [0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF], uid):
# This will print something like (False, [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
print("Reading block 10: " + str(rdr.read(10)))
# Always stop crypto1 when done working
rdr.stop_crypto()

# Calls GPIO cleanup
rdr.cleanup()

autrement dit tu as une boucle true au depart et une autre dans le fichier RFID.py meme si tu quitte la première boucle la deuxième te renverra au même point non ?

Répondre

Retourner vers « Les cartes d'extension pour les Raspberry Pi »