Lire badge RFID

Используйте считыватель RFID с Raspberry Pi.

Обновлено 11 июля 2019 - 0 Комментарии - , , ,

ⓘ Эта статья могла быть частично или полностью переведена с помощью автоматических средств. Приносим извинения за возможные ошибки.

Это руководство является второй частью файла, посвященного обнаружению электроники с помощью Raspberry Pi. Если вы не читали его, я советую вам обратиться к первому руководству по управлению светодиодом с помощью Raspberry Pi.

Будь то системы идентификации, управления запасами, оплаты или домашней автоматизации, чипы RFID используются все чаще и чаще.

В этом руководстве мы увидим, как читать карты RFID с помощью Raspberry Pi и считывателя RFID RC522.

В конце руководства вы сможете прочитать значок RFID, проверить, соответствует ли он ожидаемому, и зажечь зеленый или красный светодиод, в зависимости от результата. Все, что вам нужно сделать, это адаптировать этот базовый пример для проекта по вашему выбору!

Необходимое оборудование

Для выполнения этого урока вам потребуются следующие материалы:

Соберите RFID-считыватель RC522

Когда вы получаете RFID-модуль RC522, вы можете видеть, что он поставляется с набором 2 x 8 контактов. Поэтому первым делом нужно припаять 8 из этих контактов к считывателю RFID. Не паникуйте, паять очень просто!

Поэтому вы должны вставить PIN-коды в гнезда на RFID-карте и припаять их своим утюгом.

Сварной RFID-модуль RC522
Вероятно, вы найдете прямые и изогнутые разъемы. Советую использовать изогнутые, более практичные.

Если вы никогда не занимались сваркой, я рекомендую это отличное руководство по сварке от François на сайте framboise314.fr.

Подключите RFID-считыватель и светодиоды к Raspberry Pi

Прежде чем перейти к написанию кода, который позволит нам считывать значки RFID и управлять светодиодами, мы должны сначала подключить все компоненты к Raspberry Pi.

Напоминаем, что подключение и отключение компонентов всегда должно выполняться при выключенном Raspberry Pi.

Подключите RFID-считыватель RC522 к Raspberry Pi

Первый компонент, который мы собираемся подключить, — это считыватель RFID.

Для управления считывателем RFID мы будем использовать внешнюю библиотеку. К сожалению, это написано с портами GPIO, непосредственно введенными в код. Это означает, что мы не можем настроить их по-другому и поэтому мы вынуждены использовать точно такие же порты, как те, которые предоставлены в библиотеке.

Вот таблица, в которой перечислены порты считывателя и порт GPIO Raspberry Pi, к которому вам нужно будет его подключить.

Соответствие портов GPIO / RC522
Подключите порты RC522 к соответствующим портам на Raspberry Pi.

Напоминаем, что вы найдете карту портов GPIO Raspberry Pi в первом руководстве этой серии.

Подключите светодиоды

После считывателя RFID подключим светодиоды к Raspberry Pi.

Мы собираемся сделать очень простую сборку. Каждый светодиод будет иметь свой анод (удлиненную ножку), подключенный к порту GPIO, а два светодиода будут иметь свой анод, подключенный к одному и тому же резистору, который сам подключен к порту типа заземления GPIO Raspberry Pi.

Таким образом, мы используем один резистор для двух светодиодов и ограничиваем количество кабелей.

В конце концов, как только RFID-карта и светодиоды подключены к Pi, у вас должна получиться сборка, похожая на эту.

Обратите внимание, что вы также можете подключить RC522 напрямую к Raspberry Pi без использования хлебной сети.

Напишите программу для считывания значка RFID.

У нас есть функциональная схема, нам просто нужно активировать порты SPI Raspberry Pi, необходимые для использования считывателя RFID, и написать программу, которая будет считывать значок RFID.

Как и в предыдущем руководстве, программа будет написана на Python. Это руководство не является курсом Python, и мы лишь кратко объясним программу. Если вы хотите узнать больше о Python, мы опубликовали вводный курс программирования с помощью Python.

Активируйте протокол SPI Raspberry Pi

Перед написанием программы давайте включим протокол SPI на нашем Raspberry Pi, чтобы мы могли использовать модуль RFID.

Чтобы активировать его, просто запустите команду sudo raspi-config, на Raspberry, затем выберите Interfacing Options, SPI, Yes и наконец Finish.

Установите библиотеку pi-rc522

Последнее предварительное условие: мы собираемся установить библиотеку Python3 «pi-rc522», которая позволяет вам управлять плеером RC522.

Мы будем использовать Pip3, менеджер библиотек для Python.

Вам просто нужно запустить команду:

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 с записанным в программе и зажигала красный или зеленый светодиод в зависимости от результата.

Скопируйте предыдущий файл в новый файл 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-меток!

Для информации вы можете получить весь код этого руководства на Github Raspbian France.

В следующем уроке мы увидим, как управлять серводвигателем с помощью Raspberry Pi!

доля
Новостная рассылка
Автор:
Raspberry Pi FR
Присоединяйтесь к сообществу Raspberry Pi
Компьютер за 35 долларов уже продано 10 миллионов копий
КУПИТЬ НОВУЮ RASPBERRY PI 4
Связанные руководства
Подключитесь к Raspberry Pi без интернета через последовательный порт. Raspbian France меняет название и становится Raspberry Pi FR! Почему я должен был объяснить Bitcoin France Info, а не моей бабушке? Как сделать роутер Tor с Raspberry Pi. Включайте и выключайте светодиод с помощью Raspberry Pi и Python.
Комментариев нет
доля
Подписаться на новости
Подпишитесь на рассылку новостей.
Тебе понравилась эта статья ?
Подпишитесь и будьте в курсе!