Этот проект мы сделали совместно с моим сыном Николаем. Я помог на начальной стадии со сборкой устройства, программированием на Python занимался Николай.
Железо
Проект сделан на Raspberry Pi B+, NFC датчике от ELECHOUSE на базе чипа PN532, LED матрице 8*8 на базе MAX7219.
Матрица подключена по интерфейсу SPI, для работы использовались библиотеки из этого проекта. NFC датчик также был подключен по SPI, только уже эмулированному на цифровых пинах. Для работы с ним использовались библиотеки от аналогичного модуля от Adafruit.
MiFare Ultralight
Как известно, Московский метрополитен использует бесконтактные карточки Mifare для прохода на станции. Разумеется, тема чтения/записи таких билетов широко известна в узких кругах. Мы тоже начали со считывания и вывода в консоль количества оставшихся поездок. Но поскольку метро мы часто не пользуемся, дублировать метрошный девайс для отображения аналогичной информации было как-то не интересно.
Изучив теорию в популярной форме, мы заинтересовались возможностью записи на карточки и использования их просто как носителей информации. Вообще на карточках Ultralight есть 12 блоков по 4 байта, доступных для записи. На наших билетах нам удалось перезаписывать нижние 8 блоков по 4 байта, т.е. всего 32 байта.
Софт
В качестве полезного упражнения я подал идею записывать на карточки простенький мультфильм для LED матрицы. Таким образом поднося разные карточки к считывателю, можно проигрывать разные анимации. Первоначальная идея была записывать 4 полных кадра. Николай усовершенствовал систему заменив последний кадр на управляющую последовательность, описывающую, как показывать оставшиеся три кадра (повторения, паузы и т.д.).
Программа на Python’e разрабатывалась под Windows, с использованием IDE JetBrains PyCharm. На Raspberry была установлен стандартный Raspbian (Jessy), из специальных настроек – был разрешён SPI. Доступ к Raspberry был только по SSH (SuperPutty), SFTP (Filezilla). Так что заодно оттачивалось мастерство работы в shell 🙂
Выводы
Использованные метрополитеновские карточки это интересный ресурс, особенно для недорогих проектов в кружках, лагерях и т.д.
С течение времени у нас появлялись и другие идеи использования карточек в играх, например:
- В играх типа монополии можно сделать “настоящие” кредитки.
- В играх с карточками, где у героев есть разные способности, можно автоматически рассчитывать результат сражения.
- Чипы из карточек можно прикреплять к внешне одинаковым предметам для идентификации.
- Уникальные неперезаписываемые идентификаторы карточек можно использовать для доступа в помещения, открытия ящиков с вещами и т.п.
Возможно что-то из этого мы и сами сделаем, на то они и каникулы 🙂
Leave a Reply
You must be logged in to post a comment.