Branchez le module Grove lecteur RFID sur le port "RPISER" du Grove PI+ (ou du Grove Pi0) qui relaye (avec une tension de 5V) l'interface Série (avec une tension de 3,3V) présente sur le connecteur GPIO du Raspberry PI.
Voir le paragraphe précédent sur l'interface RS232, pour la configuration du système d'explotation et la vérification du fonctionnement de l'interface.
Vous trouverez si dessous un exemple de programme qui se connecte au port série /dev/ttyS0 et attend au plus 10 secondes avant d'afficher le numéro du badge présenté.
# -*- coding:Utf-8 -*- import serial ser = serial.Serial( port='/dev/ttyS0', baudrate = 9600, parity=serial.PARITY_NONE, stopbits=serial.STOPBITS_ONE, bytesize=serial.EIGHTBITS, timeout=0.01 ) print("Badgez votre carte") i=0 buffer=b'' octet=ser.read() while (i<1000) & (len(buffer)<14) : if octet != b'' : buffer+=octet else : i=i+1 octet=ser.read() if buffer != b'': id=str(buffer[1:-1],"UTF-8") print ("Badge id =",id) print ("Trame reçu =",buffer) else: print ("temps écoulé")
Remarques :
La lecture d'un badge envoie une trame de 14 octets commençant par un marqueur de début sur 1 octet (0x02) suivi de 12 caractères correspondant à l'identifiant du badge en hexadécimal et se terminant par un marqueur de fin sur 1 octet (0x03).
Le paramètre timeout de la fonction serial.Serial() sert à indiquer le temps d'attente maximum d'un caractère dans la méthode read() de l'objet retourné par la fonction. Puisque le temps d'attente de lecture d'un caractère est fixé ici à 10ms, il faut appeler 1000 fois la méthode read() sans succès pour que 10 secondes se soient écoulées.