• I






      
           

Научно-популярный образовательный ресурс для юных и начинающих радиолюбителей - Popular science educational resource for young and novice hams

Основы электричества, учебные материалы и опыт профессионалов - Basics of electricity, educational materials and professional experience

КОНКУРС
language
 
Поиск junradio

Радиодетали
ОК
Сервисы

Stock Images
Покупка - продажа
Фото и изображений


 
Выгодный обмен
электронных валют

Друзья JR



JUNIOR RADIO

 

Как настроить чип Raspberry Pi RFID RC522

 

 

В этом руководстве по Raspberry Pi RFID RC522 я расскажу вам, как настроить и подключить чип RFID RC522 к Raspberry Pi. Этот проект представляет собой классную схему, с которой можно поиграть, и открывает вам широкий спектр различных проектов, от использования ее в качестве системы посещаемости до использования ее для открытия замка. RFID RC522 - это очень дешевый считыватель и записывающий RFID (радиочастотная идентификация), основанный на микроконтроллере MFRC522. Этот микроконтроллер предоставляет свои данные через протокол SPI и работает, создавая электромагнитное поле 13,56 МГц, которое он использует для связи с метками RFID. Убедитесь, что бирки, которые вы приобретаете для своего RFID RC522, работают на частоте 13,56 МГц, иначе мы не сможем их прочитать. Мы покажем вам, как подключить RC522, а также покажем, как писать сценарии Python для взаимодействия с чипом, чтобы вы могли как читать, так и записывать свои RFID-метки.

 

 

Вы можете расширить это руководство, чтобы использовать что-то вроде ЖК-дисплея 16 × 2 для Raspberry Pi , что удобно, если вы хотите показать некоторую информацию или отобразить визуальную подсказку для конечного пользователя.

Сборка RFID RC522 Одна вещь, которую вы заметите при покупке RFID RC522 Reader, заключается в том, что 90% из них не поставляются с уже впаянными контактами заголовка. Отсутствие контактов означает, что вам придется делать это самостоятельно, к счастью, пайка контактов заголовка - довольно простая задача. , даже для новичков.

1. Во-первых, если контакты заголовка, которые вы получили с RC522, не подходящего размера, то защелкните их, чтобы у вас остался только один ряд из восьми контактов.

2.Вставьте штифты заголовка в отверстия RC522. Один из удобных трюков - вставить длинную сторону контактов заголовка в макетную плату, а затем поместить схему поверх контактов заголовка. Макетная плата будет плотно удерживать контакты, облегчая их припаивание к цепи RFID RC522.

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

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

 Подключение RFID RC522

На вашем RFID RC522 вы заметите, что есть 8 возможных соединений, это SDA (последовательный сигнал данных), SCK (последовательные часы), MOSI (главный выход, подчиненный вход ), MISO (главный вход подчиненного выхода), IRQ (прерывание). Request), GND (заземление), RST (цепь сброса) и 3,3 В (вход питания 3,3 В). Нам нужно будет подключить все это, кроме IRQ, к контактам GPIO Raspberry Pi. Вы можете подключить их напрямую к контактам GPIO или, как мы это делали в этом руководстве, подключить RFID RC522 к нашей макетной плате, а затем подключить оттуда к контактам GPIO Raspberry Pi. Подключить RFID RC522 к Raspberry Pi довольно просто: вам нужно подключить всего 7 контактов GPIO непосредственно к считывателю RFID. Следуйте приведенной ниже таблице и ознакомьтесь с нашим руководством по GPIO, чтобы увидеть положения контактов GPIO, к которым вам необходимо подключить RC522.

SDA подключается к выводу 24 .

SCK подключается к контакту 23 .

MOSI подключается к контакту 19 .

MISO подключается к контакту 21 .

GND подключается к контакту 6 .

RST подключается к выводу 22 .

3,3 В подключается к контакту 1 .

 

 

 Настройка Raspbian для RFID RC522

Прежде чем мы начнем процесс использования RFID RC522 на нашем Raspberry Pi, нам сначала нужно внести изменения в его конфигурацию. По умолчанию у Raspberry Pi отключен SPI (последовательный периферийный интерфейс), что является небольшой проблемой, поскольку это то, через что проходит наша схема считывателя RFID. Не волнуйтесь, поскольку повторно включить этот интерфейс довольно просто, просто следуйте нашим инструкциям ниже, чтобы настроить Raspberry Pi и Raspbian для использования интерфейса SPI.

1.Давайте начнем с открытия инструмента raspi-config , и мы можем сделать это, открыв терминал и выполнив следующую команду.

sudo raspi-config

2.Этот инструмент загрузит экран, показывающий множество различных опций.  Здесь с помощью клавиш со стрелками выберите « 5 опций интерфейса ». Выбрав эту опцию, нажмите Enter .

3.Теперь на следующем экране вы хотите использовать клавиши со стрелками, чтобы выбрать « P4 SPI », снова нажмите Enter, чтобы выбрать опцию, когда она будет выделена.

4.Теперь вас спросят, хотите ли вы включить интерфейс SPI, выберите Да с помощью клавиш со стрелками и нажмите Enter, чтобы продолжить. Вам нужно будет немного подождать, пока инструмент raspi- config сделает свое дело, включив SPI.

5.После того, как интерфейс SPI был успешно активирован инструментом raspi-config , вы должны увидеть следующий текст на экране: « Интерфейс SPI включен ». Прежде чем интерфейс SPI будет полностью включен, нам сначала нужно перезапустить Raspberry Pi. Для этого сначала вернитесь в терминал, нажав Enter, а затем ESC . Введите следующую команду Linux в терминал Raspberry Pi, чтобы перезапустить Raspberry Pi.

sudo reboot

6.После того, как ваш Raspberry Pi завершит перезагрузку, теперь мы можем проверить, действительно ли он включен. Самый простой способ сделать это - запустить следующую команду, чтобы проверить, есть ли в списке spi_bcm2835 .

lsmod | grep spi

Если вы видите spi_bcm2835 , вы можете продолжить изучение этого руководства и перейти к следующему разделу. Если по какой-то причине он не появился при вводе предыдущей команды, попробуйте выполнить следующие три шага.

7. Если по какой-то причине модуль SPI не активирован, мы можем отредактировать файл конфигурации загрузки вручную, выполнив следующую команду на нашем Raspberry Pi.

sudo nano /boot/config.txt

8.В файле конфигурации используйте CTRL+, Wчтобы найти « dtparam = spi = on ». Если вы его нашли, проверьте, нет ли перед ним символа # . Если есть, удалите его, поскольку он закомментировал строку активации. Если вы вообще не можете найти строку, добавьте « dtparam = spi = on » в конец файла. После внесения изменений вы можете нажать CTRL+, Xзатем нажать, Yа затем Enterсохранить изменения. Теперь вы можете снова перейти к шагу 5 , перезагрузив Raspberry Pi, а затем проверив, включен ли модуль.

 Подготовка Python к RFID RC522

Теперь, когда мы подключили нашу схему RFID RC522 к Raspberry Pi, мы можем включить ее и начать процесс программирования простых скриптов на Python для взаимодействия с чипом. Сценарии, которые мы покажем вам, как писать, покажут вам, как читать данные с чипов RFID и как записывать в них. Они дадут вам общее представление о том, как обрабатываются данные, и станут основой для дальнейших руководств по RFID RC522.

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

sudo apt-get update

sudo apt-get upgrade

2.Теперь последнее, что нам нужно, прежде чем мы сможем продолжить, - это установить пакеты python3-dev , python-pip и  git . Просто запустите следующую команду на своем Raspberry Pi, чтобы установить все необходимые пакеты для этого руководства по настройке вашего считывателя RFID.

sudo apt-get install python3-dev python3-pip

3.Для начала мы должны сначала установить Python Library spidev на нашу Raspberry Pi с помощью инструмента python « pip », который мы загрузили на предыдущем шаге. Библиотека spidev помогает обрабатывать взаимодействие с SPI и является ключевым компонентом этого руководства, поскольку нам нужно, чтобы Raspberry Pi взаимодействовал с RFID RC522. Выполните следующую команду на своем Raspberry Pi, чтобы установить spidev на Raspberry Pi через pip. Обратите внимание, что здесь мы используем sudo, чтобы убедиться, что пакет установлен, чтобы его могли использовать все пользователи, а не только текущий пользователь.

sudo pip3 install spidev

4.Теперь, когда мы установили библиотеку spidev на нашу Raspberry Pi, мы можем перейти к установке библиотеки MFRC522 с помощью pip. Вы можете проверить код RFID MFRC522 Python на PiMyLifeUp Github, если вам интересно узнать, как работает библиотека или улучшить ее поведение.

В нашу библиотеку MFRC522 включены два файла, которые мы используем: MFRC522.py, который является реализацией интерфейса RFID RC522, эта библиотека выполняет всю тяжелую работу по взаимодействию с RFID через интерфейс SPI Pi. SimpleMFRC522.py, который берет файл MFRC522.py и значительно упрощает его, заставляя вас иметь дело только с парой функций вместо нескольких. Чтобы установить библиотеку MFRC522 на Raspberry Pi с помощью pip, выполните следующую команду.

sudo pip3 install mfrc522

5.Теперь, когда библиотека сохранена в нашем Raspberry Pi, мы можем начать программировать для нашего RFID RC522. Для начала мы покажем вам, как записывать данные на ваши RFID-карты с помощью RC522. Просто перейдите в следующий раздел, чтобы начать программировать наш первый скрипт Python.

 Запись с помощью RFID RC522

В нашем первом скрипте Python мы покажем вам, как записывать данные из RC522 в ваши RFID-метки. Благодаря сценарию SimpleMFRC522 это будет относительно просто, но мы все равно рассмотрим, как работает каждая часть кода.

1. Теперь давайте начнем с создания папки, в которой мы будем хранить пару наших скриптов. Мы будем называть эту папку «pi-rfid», создайте ее, выполнив следующую команду.

mkdir ~/pi-rfid

2. Начните с изменения каталога в нашу недавно клонированную папку и начните писать наш скрипт  Python Write.py .

cd ~/pi-rfid

sudo nano Write.py

3. В этом файле напишите следующие строки кода. Этот код в основном запрашивает текст для ввода, а затем записывает этот текст в метку RFID.

#!/usr/bin/env python

import RPi.GPIO as GPIO

from mfrc522 import SimpleMFRC522

Первая строка этого сегмента кода помогает сообщить терминалу, как интерпретировать файл, и дает ему знать, что он должен использовать Python при его выполнении, а не что-то еще, например Bash. Наш первый импорт, RPi.GPIO, имеет все функции, необходимые для взаимодействия с выводами GPIO, и нам это нужно, чтобы убедиться, что они очищены после завершения работы скрипта. Второй импорт, импорт в нашу библиотеку SimpleMFRC522 , это то, что мы на самом деле будем использовать для общения с RFID RC522, он значительно упрощает работу с чипом по сравнению с базовой библиотекой MFRC522.

reader = SimpleMFRC522()

Эта строка создает копию SimpleMFRC522 как объект, запускает его функцию настройки, а затем сохраняет все это в нашей переменной чтения.

try:

        text = input('New data:')

        print("Now place your tag to write")

        reader.write(text)

        print("Written")

Наш следующий блок кода мы сохраняем в операторе try, чтобы мы могли перехватывать любые исключения и должным образом очищать их. Убедитесь, что вы сохранили «вкладки» после попытки: поскольку Python чувствителен к пробелам, и именно так он различается между блоками кода. Вторая строка здесь читает ввод из командной строки, и мы используем ввод в Python 3 для чтения всего ввода и сохранения его в нашей текстовой переменной. В третьей строке мы используем print (), чтобы уведомить пользователя о том, что теперь он может разместить свой RFID-тег на считывателе для записи. После этого в нашей четвертой строке кода мы используем наш объект чтения для записи значений, которые мы сохранили в текстовой переменной, в тег RFID, это скажет цепи RFID RC522 записать текстовые значения в определенный сектор. Наконец, в 5-й строке кода мы снова используем print (), чтобы уведомить пользователя об успешной записи в тег RFID.

finally:

        GPIO.cleanup()

Наши последние две строки кода описывают выход из скрипта. Наконец, всегда происходит после оператора try, то есть независимо от того, что мы запускаем функцию GPIO.cleanup () . Эти строки имеют решающее значение, поскольку невыполнение очистки может помешать правильной работе других сценариев.

4. Когда вы закончите писать свой скрипт, он должен выглядеть примерно так, как показано ниже.

#!/usr/bin/env python

 

import RPi.GPIO as GPIO

from mfrc522 import SimpleMFRC522

 

reader = SimpleMFRC522()

 

try:

        text = input('New data:')

        print("Now place your tag to write")

        reader.write(text)

        print("Written")

finally:

        GPIO.cleanup()

Убедившись, что код выглядит правильно, вы можете сохранить файл, нажав CTRL+, Xзатем нажав Yи, наконец, нажав ENTER.

5.Теперь, когда мы написали наш сценарий, мы захотим его протестировать. Перед тестированием скрипта убедитесь, что у вас под рукой есть RFID-метка. Когда все будет готово, введите следующую команду в терминал Raspberry Pi.

sudo python3 Write.py

6.Вам будет предложено ввести новые данные, в нашем случае мы просто введем pimylifeup, так как это коротко и просто. Нажмите Enter, когда будете довольны тем, что написали.

7.После этого просто поместите метку RFID поверх схемы RFID RC522. Как только он обнаружит это, он немедленно запишет новые данные в тег. Если все прошло успешно, в командной строке должно появиться сообщение « Написано ». Вы можете посмотреть на наш пример вывода ниже, чтобы увидеть, как выглядит успешный запуск.

pi@raspberrypi:~/pi-rfid $ sudo python3 Write.py

New data:pimylifeup

Now place your tag to write

Written

8.Вы успешно написали свой сценарий Write.py , и теперь мы можем перейти к тому, чтобы показать вам, как читать данные из RFID RC522, в следующем сегменте этого руководства.

 Чтение с помощью RFID RC522

Теперь, когда мы написали наш скрипт для записи в RFID-метки с помощью RC522, мы можем написать скрипт, который будет считывать эти данные обратно с метки.

1.Давайте начнем с изменения каталога, чтобы убедиться, что мы находимся в нужном месте, а затем мы можем запустить nano, чтобы начать писать наш скрипт Read.py.

cd ~/pi-rfid

sudo nano Read.py

2.В этом файле напишите следующие строки кода. Этот сценарий в основном будет сидеть и ждать, пока вы поместите свою RFID-метку в считыватель RFID RC522, а затем он выведет данные, которые он считывает, с метки.

#!/usr/bin/env python

import RPi.GPIO as GPIO

from mfrc522 import SimpleMFRC522

Первая строка кода сообщает операционной системе, как обрабатывать файл, когда пользователь его запускает. В противном случае он попытается просто запустить его как обычный файл сценария, а не как файл Python. Первый импорт - RPi.GPIO . Эта библиотека содержит все функции для работы с контактами GPIO Raspberry Pi , и мы в основном импортируем это, чтобы гарантировать, что мы очистим, когда скрипт завершит выполнение. Второй импорт - SimpleMFRC522 . Этот сценарий содержит несколько вспомогательных функций, которые значительно упрощают работу с записью и чтением с RFID RC522, без этого сценарии стали бы довольно длинными.

reader = SimpleMFRC522()

Эта строка очень важна, поскольку она вызывает функцию создания SimpleMFRC522, а затем сохраняет ее в нашей переменной чтения как объект, чтобы мы могли взаимодействовать с ней позже.

try:

        id, text = reader.read()

        print(id)

        print(text)

Следующий блок кода содержится в операторе try , и мы используем его, чтобы улавливать любые исключения, которые могут возникнуть, и правильно с ними справляться. Вам необходимо убедиться, что вы используете « вкладки », как показано после попытки: поскольку Python чувствителен к пробелам. Вторая строка в этом блоке кода вызывает наш объект-считыватель, в этом случае он сообщает схеме, что нужно начать чтение любой метки RFID, помещенной поверх считывателя RC522. В третьей и четвертой строках мы используем print () для распечатки информации, полученной при чтении RFID-чипа, включая идентификатор, связанный с RFID-меткой, и текст, который хранится на метке.

finally:

        GPIO.cleanup()

Две последние строки кода обрабатывают завершение сценария. Оператор finally всегда запускается после оператора try, даже если мы получаем исключение. Этот оператор try гарантирует, что независимо от того, что мы запускаем, функцию GPIO.cleanup () . Это очень важно, поскольку отсутствие очистки GPIO может помешать правильной работе других сценариев.

3.Теперь, когда вы закончили писать сценарий Read.py для вашего RFID RC522, он должен выглядеть примерно так, как показано ниже.

#!/usr/bin/env python

 

import RPi.GPIO as GPIO

from mfrc522 import SimpleMFRC522

 

reader = SimpleMFRC522()

 

try:

        id, text = reader.read()

        print(id)

        print(text)

finally:

        GPIO.cleanup()

Убедившись, что вы ввели код правильно, вы можете сохранить файл, нажав Ctrl+, Xзатем нажав Yи, наконец, нажав ENTER.

4.Теперь, когда мы, наконец, закончили наш сценарий Read.py, нам нужно протестировать его. Прежде чем мы протестируем сценарий, возьмите один из RFID-тегов, который вы хотите прочитать. Как только вы будете готовы, введите следующую команду в терминал Raspberry Pi.

sudo python3 Read.py

5.Теперь, когда скрипт запущен, все, что вам нужно сделать, это поместить метку RFID поверх вашей схемы RFID RC522. Как только скрипт Python обнаружит, что RFID-тег помещен сверху, он немедленно прочитает данные и распечатает их вам. Пример того, как будет выглядеть успешный результат, показан ниже.

pi@raspberrypi:~/pi-rfid $ sudo python3 Read.py

827843705425

pimylifeup

7. Если вы успешно получили обратно данные из сценария Read.py с текстом, который вы отправили на карту с помощью сценария Write.py, значит, вы успешно настроили Raspberry Pi для подключения к вашей цепи RFID RC522.

 




Необходимо добавить материалы...
Результат опроса Результаты Все опросы нашего сайта Архив опросов
Всего голосовало: 373



          

Радио для всех© 2024