Skip to content

使用 Arduino 制作的 Aime 兼容读卡器。

Notifications You must be signed in to change notification settings

softmanmaker/Arduino-Aime-Reader

 
 

Repository files navigation

Arduino-Aime-Reader

使用 Arduino + PN532 制作的 Aime 兼容读卡器。

本仓库为Fork仓库,支持更多的MCU以及开发板。

  • 支持卡片类型: FeliCa(Amusement IC、Suica、八达通等)和 MIFARE(Aime,Banapassport)
  • 逻辑实现是通过对官方读卡器串口数据进行分析猜测出来的,并非逆向,不保证正确实现
  • 通信数据格式参考了 Segatools 和官方读卡器抓包数据,可在 Example.txtnfc.txt 查看
  • PCB与外壳均开源,请查阅/PCB目录
  • 可以通过baudrate_tool轻易的修改内置波特率和LED参数而无需重新刷写固件

使用方法:

  1. 按照 PN532 的提示安装库
  2. 按照/PCB 目录内对应硬件的使用方式,短接读卡器的mode-sw跳线进入下载模式,同时将读卡器与电脑中间接好线,并调整 PN532 上的拨码开关
  3. 上传 ReaderTest 测试硬件是否工作正常
  4. 若读卡正常,重新上传Arduino-Aime-Reader,按照支持列表打开设备管理器设置 COM 端口号并设置好实际需要使用的波特率
  5. 按照游戏的波特率更改好游戏配置文件的high_baudrate选项,115200true38400false
  6. 读卡器默认情况下为115200波特率,如果你的游戏仅支持38400波特率(SDHD 60FPS),需要运行baudrate_tool以更改读卡器上的设置
  7. 如果有使用 Segatools,参考 segatools.ini 设置教程 关闭 Aime 模拟读卡器
  8. 上传程序打开游戏测试

如果需要自定义 Aime 卡,安装 MifareClassicTool,修改 Aime 卡示例 后写入空白 MIFARE UID/CUID 卡,即可刷卡使用。

波特率的概念:正确运行读卡器需要游戏,计算机本地端口,以及读卡器三个地方的设置全部一致才可以。游戏内的波特率一般是不可更改的,计算机本地端口的波特率可以在设置管理器里面修改,读卡器的波特率请通过baudrate_tool进行修改。只有三个设置全部一致才可以使用。

使用CDC虚拟串口连接计算机的读卡器(STM32),或具有自适应波特率功能的读卡器不需要修改读卡器波特率,因为CDC具有无视波特率的特性。

支持游戏列表:

代号 默认 COM 号 支持的卡 默认波特率
SDDT/SDEZ COM1 FeliCa,MIFARE 115200
SDEY COM2 MIFARE 38400
SDHD COM4 FeliCa,MIFARE cvt=38400,sp=115200
SBZV/SDDF COM10 FeliCa,MIFARE 38400
SDBT COM12 FeliCa,MIFARE 38400
  • 如果读卡器没有正常工作,可以尝试运行baudrate_tool以更改读卡器上的波特率
  • 参考 config_common.json 内 aime > unit > port 确认端口号
  • 如果 "high_baudrate" : true 则波特率是115200,否则就是38400
  • "high_baudrate" : true 的情况下,本读卡器程序支持 emoney 功能,端末认证和刷卡支付均正常(需要游戏和服务器支持)

开发板适配情况:

开发板名 主控 备注
SparkFun Pro Micro ATmega32U4 需要发送 DTR/RTS,未完全测试
SparkFun SAMD21 Dev Breakout ATSAMD21G18 未完全测试
NodeMCU 1.0 ESP-12E + CP2102 & CH340 CH340通讯,可能需要修改内部波特率
NodeMCU-32S ESP32-S + CH340 主要适配环境
Arduino Uno ATmega328P + CH340 可用,部分UNO板可能需要发送DTR/RTS,具体视实际使用硬件而定
Air001 Dev Chip Air001 + CH340 CH340通讯,可能需要修改内部波特率
STM32  BulePill STM32F103C6T6/C8T6/CBT6 使用CDC链接,不需要修改波特率
STM32  F072 STM32F072C8T6 使用CDC链接,不需要修改波特率
Raspberry Pi Pico Raspberry RP2040 使用CDC链接,不需要修改波特率

已知问题:

  • 在 NDA_08 命令的写入 Felica 操作没有实现,因为未确认是否会影响卡片后续使用
  • 未确定res.status错误码的定义,因此res.status的值可能是错误的
  • 因为 PN532 库不支持同时读取多张卡片,所以未实现mifare_select_tag,只会读到最先识别的卡片

引用库:

About

使用 Arduino 制作的 Aime 兼容读卡器。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 82.1%
  • C++ 17.9%