Lire badge RFID

Raspberry Pi와 함께 RFID 리더를 사용하십시오.

업데이트 됨 11 7월 2019 - 0 코멘트 - , , ,

ⓘ 이 기사는 자동 도구를 사용하여 부분적으로 또는 전체적으로 번역되었을 수 있습니다. 이로 인해 발생할 수있는 오류에 대해 사과드립니다.

이 튜토리얼은 Raspberry Pi로 전자 장치를 발견하는 데 전념하는 파일의 두 번째 부분입니다. 읽지 않았다면 Raspberry Pi로 LED를 제어하는 첫 번째 자습서를 참조하는 것이 좋습니다.

식별 시스템, 재고 관리, 결제 또는 홈 자동화에 RFID 칩이 점점 더 많이 사용되고 있습니다.

이 튜토리얼에서는 Raspberry Pi 및 RC522 RFID 리더로 RFID 카드를 읽는 방법을 알아 봅니다.

튜토리얼이 끝나면 RFID 배지를 읽고 예상 한 것인지 확인하고 결과에 따라 녹색 또는 빨간색 LED를 켤 수 있습니다. 이 기본 예제를 선택한 프로젝트에 적용하기 만하면됩니다!

필요한 장비

이 튜토리얼을 완료하려면 다음 자료가 필요합니다.

RC522 RFID 리더 조립

RC522 RFID 모듈을 받으면 2 x 8 핀 세트가 함께 제공됨을 알 수 있습니다. 따라서 첫 번째 단계는 RFID 리더에이 핀 8 개를 납땜하는 것입니다. 당황하지 마십시오. 납땜은 매우 쉽습니다!

따라서 PIN을 RFID 카드에 제공된 슬롯에 삽입하고 다리미로 납땜해야합니다.

용접 된 RC522 RFID 모듈
직선 및 곡선 커넥터를 찾을 수 있습니다. 더 실용적인 곡선을 사용하는 것이 좋습니다.

용접 한 적이 없다면 framboise314.fr의 François에서 용접하는 방법을 배우기 위해이 훌륭한 가이드를 추천합니다.

RFID 리더와 LED를 Raspberry Pi에 연결

RFID 배지를 읽고 LED를 제어 할 수있는 코드를 작성하기 전에 먼저 모든 구성 요소를 Raspberry Pi에 연결해야합니다.

참고로, 구성 요소 연결 및 분리는 항상 Raspberry Pi를 끈 상태에서 수행해야합니다.

RC522 RFID 리더를 Raspberry Pi에 연결

연결하려는 첫 번째 구성 요소는 RFID 리더입니다.

RFID 리더를 제어하기 위해 외부 라이브러리를 사용합니다. 불행히도 이것은 코드에 직접 입력 된 GPIO 포트로 작성됩니다. 이것은 우리가 그것들을 다르게 구성 할 수 없다는 것을 의미하며 따라서 우리는 라이브러리에 제공된 것과 정확히 동일한 포트를 사용해야합니다.

다음은 연결해야하는 Raspberry Pi의 리더 포트와 GPIO 포트를 나열한 표입니다.

일치하는 GPIO 포트 / RC522 포트
RC522의 포트를 Raspberry Pi의 해당 포트에 연결합니다.

참고로이 시리즈의 첫 번째 자습서에서 Raspberry Pi의 GPIO 포트 맵을 찾을 수 있습니다.

LED 연결

RFID 리더 다음에 LED를 Raspberry Pi에 연결해 보겠습니다.

우리는 아주 간단한 어셈블리를 만들 것입니다. 각 LED는 GPIO 포트에 연결된 양극 (길쭉한 다리)을 가지며 두 LED는 동일한 저항에 연결된 양극을 가지며, 자체적으로 Raspberry Pi의 접지 형 GPIO 포트에 연결됩니다.

따라서 두 개의 LED에 단일 저항을 사용하고 케이블 수를 제한합니다.

결국 RFID 카드와 LED가 Pi에 연결되면 이와 유사한 어셈블리가 있어야합니다.

브레드 보드를 사용하지 않고 RC522를 Raspberry Pi에 직접 연결할 수도 있습니다.

RFID 배지를 읽는 프로그램을 작성하십시오.

우리는 기능적 회로를 가지고 있으며, RFID 리더를 사용하는 데 필요한 Raspberry Pi의 SPI 포트를 활성화하고 RFID 배지를 읽을 프로그램을 작성하기 만하면됩니다.

이전 튜토리얼에서와 같이 프로그램은 Python으로 작성됩니다. 이 튜토리얼은 Python 과정이 아니며 프로그램에 대해 간략하게 설명합니다. Python에 대해 더 자세히 알고 싶다면 Introductory Programming with Python 과정을 게시했습니다.

Raspberry Pi의 SPI 프로토콜 활성화

프로그램을 작성하기 전에 RFID 모듈을 사용할 수 있도록 Raspberry Pi에서 SPI 프로토콜을 활성화 해 보겠습니다.

활성화하려면 다음 명령을 실행하십시오. sudo raspi-config, Raspberry에서 Interfacing Options, SPI, Yes 그리고 마지막으로 Finish.

pi-rc522 라이브러리 설치

마지막 전제 조건으로 RC522 플레이어를 제어 할 수있는 Python3 "pi-rc522"라이브러리를 설치합니다.

Python 용 라이브러리 관리자 인 Pip3를 사용할 것입니다.

다음 명령을 실행하기 만하면됩니다.

sudo pip3 install pi-rc522

RFID 배지의 식별자를 읽는 프로그램 작성

각 RFID 배지에는 고유 한 식별자가 있습니다. 이 식별자를 읽고이를 승인 된 식별자 목록과 비교하여 배지가 승인되었는지 알 수 있습니다.

따라서 우리는 RFID 배지의 고유 식별자를 읽을 수있는 프로그램을 작성할 것입니다.

이전 튜토리얼에서했던 것처럼 폴더에 프로그램을 작성합니다. /home/pi/electronic (아직 만들지 않은 경우 폴더를 만듭니다).

이 폴더에서 파일을 만듭니다. read_rfid_uid.py 그 안에 다음 코드를 넣으십시오.

#!/usr/bin/env python3.5
#-- coding: utf-8 --

import RPi.GPIO as GPIO #Importe la bibliothèque pour contrôler les GPIOs
from pirc522 import RFID
import time


GPIO.setmode(GPIO.BOARD) #Définit le mode de numérotation (Board)
GPIO.setwarnings(False) #On désactive les messages d'alerte

rc522 = RFID() #On instancie la lib

print('En attente d'un badge (pour quitter, Ctrl + c): ') #On affiche un message demandant à l'utilisateur de passer son badge

#On va faire une boucle infinie pour lire en boucle
while True :
    rc522.wait_for_tag() #On attnd qu'une puce RFID passe à portée
    (error, tag_type) = rc522.request() #Quand une puce a été lue, on récupère ses infos

    if not error : #Si on a pas d'erreur
        (error, uid) = rc522.anticoll() #On nettoie les possibles collisions, ça arrive si plusieurs cartes passent en même temps

        if not error : #Si on a réussi à nettoyer
            print('Vous avez passé le badge avec l'id : {}'.format(uid)) #On affiche l'identifiant unique du badge RFID
            time.sleep(1) #On attend 1 seconde pour ne pas lire le tag des centaines de fois en quelques milli-secondes

파일이 저장되면 다음 명령으로 실행할 권한이 부여됩니다.

sudo chmod +x /home/pi/electronic/read_rfid_uid.py

이제 다음 명령으로 호출하여 프로그램을 시작할 수 있습니다.

/home/pi/electronic/read_rfid_uid.py

리더기 앞에 RFID 배지를 전달할 때마다 고유 식별자가 표시됩니다!

배지가 유효한지 여부를 표시하는 프로그램을 작성하십시오.

이제 배지의 고유 식별자를 읽을 수 있으므로 이전 코드를 조정하여 읽은 식별자를 프로그램에 작성된 식별자와 비교하기 만하면됩니다.

따라서 이전 프로그램을 약간 수정하여 읽은 uid와 프로그램에 작성된 uid를 비교하고 결과에 따라 빨간색 또는 녹색 LED가 켜집니다.

이전 파일을 새 파일로 복사 verify_rfid.py 아래 코드를 수정하십시오.

라인 편집 RFID_UID RFID 태그의 식별자를 넣으십시오!

#!/usr/bin/env python3.5
#-- coding: utf-8 --

import RPi.GPIO as GPIO #Importe la bibliothèque pour contrôler les GPIOs
from pirc522 import RFID
import time


GPIO.setmode(GPIO.BOARD) #Définit le mode de numérotation (Board)
GPIO.setwarnings(False) #On désactive les messages d'alerte

LED_RED = 3 #Définit le numéro du port GPIO qui alimente la led rouge
LED_GREEN = 5 #Définit le numéro du port GPIO qui alimente la led verte
RFID_UID = [21, 35, 5, 43, 57] #Définit l'UID du badge RFID

#Définit la fonction permettant d'allumer une led
def turn_led_on (led) :
    GPIO.setup(led, GPIO.OUT) #Active le contrôle du GPIO
    GPIO.output(led, GPIO.HIGH) #Allume la led

#Définit la fonction permettant d'éteindre une led
def turn_led_off (led) :
    GPIO.setup(led, GPIO.OUT) #Active le contrôle du GPIO
    GPIO.output(led, GPIO.LOW) #Eteind la led

#Définit la fonction permettant d'allumer la rouge et éteindre la verte
def turn_red_on () :
    turn_led_off(LED_GREEN) #Eteind la led verte
    turn_led_on(LED_RED) #Allume la led rouge

#Définit la fonction permettant d'allumer la verte et éteindre la rouge
def turn_green_on () :
    turn_led_off(LED_RED) #Eteind la led rouge
    turn_led_on(LED_GREEN) #Allume la led verte


rc522 = RFID() #On instancie la lib

print('En attente d'un badge (pour quitter, Ctrl + c): ') #On affiche un message demandant à l'utilisateur de passer son badge

#On va faire une boucle infinie pour lire en boucle
while True :
    rc522.wait_for_tag() #On attnd qu'une puce RFID passe à portée
    (error, tag_type) = rc522.request() #Quand une puce a été lue, on récupère ses infos

    if not error : #Si on a pas d'erreur
        (error, uid) = rc522.anticoll() #On nettoie les possibles collisions, ça arrive si plusieurs cartes passent en même temps

        if not error : #Si on a réussi à nettoyer
            if RFID_UID == uid :
                print('Badge {} autorisé !'.format(uid))
                turn_green_on()
            else :
                print('Badge {} interdit !'.format(uid))
                turn_red_on()

            time.sleep(1) #On attend 1 seconde pour ne pas lire le tag des centaines de fois en quelques milli-secondes

프로그램을 실행하고 테스트하기 만하면됩니다!

그런 다음 스마트 잠금 또는 RFID 태그를 사용하여 주크 박스를 만드는 등 자신의 프로젝트에 맞게 코드를 조정할 수 있습니다!

자세한 정보는 Raspbian France의 Github에서이 튜토리얼의 모든 코드를 얻을 수 있습니다.

다음 튜토리얼에서는 Raspberry Pi로 서보 모터를 제어하는 방법을 살펴 보겠습니다!

공유
뉴스 레터
저자 :
Raspberry Pi FR
Raspberry Pi 커뮤니티에 가입
35 달러짜리 컴퓨터는 이미 천만 부 판매
새로운 RASPBERRY PI 4 구입
관련 튜토리얼
Raspberry Pi 및 Python으로 LED를 켜고 끕니다. Raspberry Pi의 TTL 직렬 포트를 활성화하고 작동하는지 확인합니다. 도커 군단으로 라즈베리 파이 클러스터 만들기 Raspberry Pi의 온보드 녹색 LED를 깜박입니다. 입문 과정 인 Python 3 및 Raspberry Pi로 프로그래밍하는 방법을 배웁니다.
댓글이 없습니다
공유
뉴스 레터 가입
뉴스 레터를 구독하십시오.
이 기사가 마음에 드 셨나요?
구독하고 최신 정보를 받아보세요!