From 2965a6159920a3dbf79598e238d29cbc52ad2987 Mon Sep 17 00:00:00 2001 From: Azalea <22280294+hykilpikonna@users.noreply.github.com> Date: Sat, 25 Nov 2023 13:22:40 -0500 Subject: [PATCH] [+] Readme docs --- CardReader/README.md | 42 ++++++++++++++++++ CardReader/docs/image_2023-11-25_13-12-38.png | Bin 0 -> 4119 bytes CardReader/docs/image_2023-11-25_13-13-23.png | Bin 0 -> 2148 bytes README.md | 3 +- 4 files changed, 43 insertions(+), 2 deletions(-) create mode 100644 CardReader/README.md create mode 100644 CardReader/docs/image_2023-11-25_13-12-38.png create mode 100644 CardReader/docs/image_2023-11-25_13-13-23.png diff --git a/CardReader/README.md b/CardReader/README.md new file mode 100644 index 0000000..54b6931 --- /dev/null +++ b/CardReader/README.md @@ -0,0 +1,42 @@ +# CardReader + +一个为 SEGA/Bemani 街机音游设计的、可以兼容任何 NFC 卡的读卡器固件!(这样就可以用学生卡公交卡登录了!) + +## How it works / 实现方式 + +其实强制支持不同 NFC 卡的方式非常简单。因为 SEGA/Bemani 的游戏都是直接读了 Felica IDm 序列号发给服务器,所以如果想要让其他非 Felica 卡兼容的话,只需要把序列号转换成 Felica 的格式就可以了。具体的话,就是把 ID 垫零变成 8 字节,然后把前两个字节改成 0x01 0x2E 就可以了。 + +## Usage / 使用方法: + +### 制作与固件烧录 + +1. 买一块 ESP32 开发板、一块 PN532 NFC 模块(我是直接买了[红月的 PCB ¥109](https://m.tb.cn/h.5RS0tuc?tk=jL1vW2UxDH3),看起来好看一点还有 RGB 灯) +2. 把这个仓库 clone 下来 +3. 下载 [PlatformIO Core](https://platformio.org/),在 [PlatformIO Boards](https://docs.platformio.org/en/latest/boards/espressif32) 里面找到你的型号,然后编辑 `platformio.ini` 里面的 `board` 字段 +4. 把 PN532 模块的 I2C_SDA、I2C_SCL、GND、VCC 连接到 ESP32 开发板上 +5. 如果有 RGB 灯的话在 `src/main.cpp` 里面改一下 `setup()` 里面的 LED 引脚 +6. `pio run -t upload -t monitor` 烧录之后测试 + +### 与音游连接 + +1. 如果你想玩 SEGA 的游戏,编辑 segatools.ini, 把设置改成如下: + +```ini +[aime] +enable = 1 +felicaPath = C:\MUGS\felica.txt # 这里改成一个固定的 Felica.txt 路径, 所有游戏共享 +felicaGen = 0 +scan = 0x6B +``` + +2. 如果你想玩 Bemani 的游戏,在 Spice2x 里面设置 Felica.txt 路径,然后把 Insert Card 按钮映射成 "Naive" 0x6B (小键盘 +) 按键即可 + +![](docs/image_2023-11-25_13-12-38.png) + +![](docs/image_2023-11-25_13-13-23.png) + +3. 下载 Python, 安装 `pip install pyserial`,然后运行 `python receiver.py`,这样接上读卡器之后就可以自动转存卡片然后自动按下 Insert Card 按钮了 + +## Dependencies / 依赖: + +* PN532 Library: https://github.com/Seeed-Studio/PN532/ \ No newline at end of file diff --git a/CardReader/docs/image_2023-11-25_13-12-38.png b/CardReader/docs/image_2023-11-25_13-12-38.png new file mode 100644 index 0000000000000000000000000000000000000000..2cc285c35540c2d3dfa4c8df91104b6d836d2dcc GIT binary patch literal 4119 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 VV}4NcLoxsW002ovPDHLkV1mzI{TBcL literal 0 HcmV?d00001 diff --git a/CardReader/docs/image_2023-11-25_13-13-23.png b/CardReader/docs/image_2023-11-25_13-13-23.png new file mode 100644 index 0000000000000000000000000000000000000000..6df6ba038f21db01cf1778fe8fdb3fe58db8fbfc GIT binary patch literal 2148 zcmV-q2%GnbP)U#rJp zLx1Dqrq)yOyiiZnxX*HeoQWffN&@0;X?-yTc*t_Q7~nM3f~9_T^4O z|A({|$Z*Fda%Yxh}4Woq?n}i<4(__qCb9Xq1|CEnzFE2~RApg_7 zJv}hGELqI&NrW4AyPdr3yC1oDU5rNr005IC^mBJO6mw(&ykyB3TQK%LRoz@OUdmL= zB+A-k%$MaV+{Iat!ue4sbrCDlhYsR95g&KLEr#*#iSB5&OG-|6ecWcV+3)wYqo_=q z?X$bK)CIN%KjiyKe1AH^@O}~iKzBfvAd&!C8c8`Hn~C-(vVacyxK3$#Ru+ITo}QkP zC^O~r3NoQ<65?ze$P%OiZ3!eHi84>w_kWT^0{|FB;!~$6Y06N7>neZh5 z0DyU+D-*s1Q6RYl0Q3$~nG^Z)@$s>C2-SFac*wC^$kIVfduzX~+9GT}a*z<;*J)*X zu~(9cD9Q}HKUO{~&d<-4kCZjW;_^0>A_Wi!l{=V+hlllgP2ZR=(2IcT=q;Q{?dsVE zU*>f1YVgV-*f>8wZ{&0asc^jf()V4Mkuiws?hXfc)nS1>`}Cji-;)?m{(#YCJ7-se zr@CxbFUuAH$z|6lr>(o$w{~8D!q7$4J8osB{QV_Asl1eF9ELNyjQO%HyETrNQ%#H6 z_Nk8*lz@!`b4u2z2vQcOzGl5%^YwC(Ow+JzR#_6YVcg6(8gsN*+XRepc$!LPw$shH ze_QPhjypjPl$?**Gtnf|u(y|&x~;{Y_3D&0M&%oeJCvEym&7xKKf7MND}OnGb|rPC*NAC4Z)SSlt{G-jM)SzlnO#W|-eb6{*U#6hQ5 zf=Jm3lT`QYK-LyK7!srKxWM$4q6l9$`Y9Dg3mOB{u}PHKl^O2Ku(7RdNBz^tZr!)| za=8rX`fVwrv5%8GLEnmO7!Ok)G=PMNKQ8eyo)L$Khy}xnM+V8D#_6%;YURUFY9|U< z6r>k7-u{!|`ehh;4#eX6`h4k>jxl8w3flB0 z?=v##47dvcfMO8mT5Sbwg0$^Z>G2ZZ?;|e|hpyZT>-AdJgFL(F7OHzoTX7jNE6c;C z+$$)Sjn|xr_uPwR@h5SQC-{+4jz}+?1jv%uq=`4YL~6;a$q|c-u;oLrRb;CjbGGB* z_({pL1RE~*p5@|>gOan%lQ(bP+~41?R;%DziNs`b9OIoVNodUk@!wSrTKkrgv)OF+ z`+bsKRdhymT~!YN5V1A*dEQUrMh=Yk$rC-_$3bg;dUmR|JWU1DKDDMatGlXt0088G zcYuZ7e;FgBnICZDn5wN32B1?#8`WJ^JpceQaXcOu@87@AT}@<}oa(aDzT{{NgLHViLmWL4l08ot6-1%ik`A|opvQpxNECB$3v$(##{_x>L?J!!Q z@mX0T`KD^S`zinc@fdGdoiGNS#mA2y^X^09dJ>Q(I++M>r4Q$dbD z*qyz92><|)mc{4KpEK#*xPG7!!nWLtzW!ZJ`Ht6>UL6!gj apz|*WExOFiknI!z0000 - 在这里会放一些开源硬件的实验作品(还在学习中... qwq ## Index / 索引 * [Coyote-Pikachu](./Coyote-Pikachu/) 让某电击小盒子变成一只皮卡丘的外壳 ⚡️ * [TaikoStick](./TaikoStick/) 一对可以在任何表面上打太鼓达人的鼓槌 🥁 +* [CardReader](./CardReader/) 一个为 SEGA/Bemani 街机音游设计的读卡器固件 💳 \ No newline at end of file