扑克牌上大屏,唯一可靠的做法是每张牌贴高频标签 + 每个座位桌面下埋一个天线。 这不是软件问题,是物理问题——所以价格、工期、失败点都集中在桌子和天线上,不在代码上。 下面是我们实测和行业方案的结论,含选型、成本、施工顺序和验收方法。
RFID 牌桌翻车,九成不是软件写错,是这四条被忽略了。先看它们,再谈买什么。
13.56MHz 的磁场随距离平方衰减,普通天线在 10cm 外基本读不到。 想「一张大天线覆盖整张牌桌」——不可能,物理上就不成立。
结论:9 座桌 = 9 个天线,通过多路切换器接到一台多通道读写器上。
桌面下的钢筋、金属桌腿、铁质筹码盒,都会让读距腰斩甚至归零。 天线离金属件至少 5cm,并加铁氧体屏蔽片(几十块一张)。
木桌最好;贴皮密度板的次之;不锈钢台面基本要重做桌面。
相邻座位距离近时,你的牌可能被隔壁天线读到(叫串读)。 软件层已经处理:RSSI 低于 40 不认,且同一张牌出现在两个座位直接判冲突、不覆盖。
发牌手一抖、牌叠在一起、信号抖动,都会漏读。这是常态,不是故障。
所以系统设计成:连续 3 次读到同样 2 张才算定牌,定不下来就亮黄灯让人去确认, 绝不自己猜。这一条是我们和很多「看着能跑」的方案最大的区别。
同一件事有三种做法,差的不是功能,是「谁承担调试」。店里只有一两张直播桌,第三条最划算。
| 路线 | 单桌成本 | 工期 | 优点 | 代价 |
|---|---|---|---|---|
| A 商用整桌套件 国外 PokerGFX 系 / 深圳厂家 |
3 万–8 万 | 3–6 周 含定制桌面 |
开箱可用稳定性已验证 桌面已开好槽、天线已固定、软件配套 | 贵锁死厂家 改样式、改流程都要找对方;部分套件只支持它自己的直播软件 |
| B 半自研 买读写器+天线+牌,自己做桌面 |
4,000–12,000 | 2–3 周 含木工 |
成本可控对接我们现成系统 想换桌型、加座位都自由 | 要调天线要懂一点电子 头一次装大概 2–3 天调试期,之后稳定 |
| C 全自研 自己画板、绕天线、写固件 |
1,500–3,000 | 2–3 个月 且不保证成功 |
最便宜 | 不建议 天线匹配、Q 值、屏蔽、EMC 全是坑,省下的钱不够买时间 |
下列型号是国内能直接买到的常见规格,价格为 2026 年电商参考价,仅作预算依据。 采购前请把「频率 + 协议 + 通道数」三项和卖家书面确认——同名不同料的情况很普遍。
| 部件 | 规格要点 | 数量/桌 | 参考单价 | 挑错的后果 |
|---|---|---|---|---|
| RFID 扑克牌 | 13.56MHz / ISO15693(ICODE SLIX 芯片),标签预埋在牌背夹层 | 2–3 副 | ¥300–800/副 | 买成 125kHz(低频)或 UHF 的牌,读写器完全读不到,直接报废 |
| 多通道读写器 | 13.56MHz,支持 外接天线 + 天线轮询,4 或 8 通道,串口/网口输出 | 3 台(管 9 座) | ¥1,500–3,500 | 一台 4 通道 = 4 个座位,不是 4 张桌。按「桌」算通道,预算会差三倍 |
| 天线切换器 | 4 路 / 8 路 / 16 路,按座位数配 | 通常不用 | ¥150–500 | 读头自带天线轮询就不需要它;只有通道不够硬扩时才加,每加一级信号衰减一点,读距变短 |
| 13.56MHz 天线板 | 圆形或方形,直径 20–25cm,带屏蔽层(背面贴铁氧体) | 9 个 | ¥40–120 | 无屏蔽的天线装在木桌下,下面有金属结构就会失效 |
| 铁氧体屏蔽片 | 100×100mm 软磁片,贴在天线背面 | 9 张 | ¥8–20 | 省掉它,金属桌腿附近的天线读距掉一半以上 |
| 边缘网关 | 树莓派 4B(2G 起)/ 迷你工控机,跑我们的网关进程 | 1 台(管全场) | ¥400–1,200 | 用 ESP32 也能做,但协议解析和断线重连要自己写,不划算 |
| 线材 | 天线用 50Ω 同轴线(RG174/RG58),串口用屏蔽双绞 | 按桌长 | ¥100–300 | 用普通电线代替同轴线,阻抗不匹配,读距直接崩 |
| 桌面改造 | 桌下开浅槽走线 + 天线固定板;或整块桌面重做 | 1 张 | ¥800–3,000 | 天线直接放桌面上(没藏起来),玩家一压牌就读不到,且难看 |
| 项目 | 金额 | 备注 |
|---|---|---|
| 读头 3 台(管 9 座) | ¥4,500–10,500 | 4 通道/台,一台管 4 个座位 |
| 天线 9 个 + 屏蔽片 9 张 | ¥430–1,260 | 20–25cm 短距天线,背面贴铁氧体 |
| RFID 扑克牌 2–3 副 | ¥600–2,400 | 定制嵌标;自贴验证版约 ¥50/副 |
| 边缘网关 | ¥400–1,200 | 全场共用一台 |
| 线材与辅料 | ¥100–300 | 50Ω 同轴 + SMA 接插件 |
| 桌面改造(木工) | ¥800–3,000 | 取决于桌型和是否重做桌面 |
| 合计 · 9 座全感应(第一张桌) | ¥6,800–18,700 | 第一张含调试成本,第二张起可省 30% |
| 合计 · 只读公共牌(2 天线) | ¥3,000–7,000 | 底牌仍人工录入;不做桌面改造再省 800–3,000 |
读头、天线、屏蔽片、线材全是标准工业件,厂家官网和 1688 一天能配齐。 真正需要定制、有起订量、有交期的只有一样:嵌了标签的扑克牌。 所以采购顺序不是「先买设备」,是「先用最便宜的东西把牌验证通」。
| 买什么 | 去哪买 | 量级 | 要点 |
|---|---|---|---|
| 多通道读头 | 上海孚恩电子 fn-tech.com 的 FN HFD1408 系列同类:明华澳汉、安的电子也做外接天线的 HF 读头 |
¥1,500–3,500 每台 |
认准三样:13.56MHz / ISO15693 / 1–4 路 SMA 外接天线口,再加 RS232·485 输出和 DLL + Demo。缺一样就别买 |
| 天线 | 优先跟读头同厂配(阻抗匹配由厂家保证);自配去 1688 搜「13.56MHz 天线 15693」 | ¥40–120 每个 |
要 20–25cm 小天线,读距压到 8–12cm。厂商标配的 55–65cm 远距天线不能用,见下面红框 |
| RFID 扑克牌 | ① 义乌 / 东莞扑克厂定制嵌标(打样) ② 自己做:买标签贴牌背(验证用) ③ 进口:Angel、GPI / Cartamundi(整箱起) |
¥300–800/副 自贴版 ≈ ¥50/副 |
唯一有起订量和交期的一项。定制常见 1000–3000 副起、打样 15–30 天,这决定了整个项目什么时候能用 |
| ICODE SLIX 标签 | 1688 或深圳 / 东莞 / 泉州的标签厂,搜「ICODE SLIX 15693 标签」 | ¥0.4–1.2 每片 |
40×70mm 或 50×50mm,越薄越好(0.2mm FPC 基材)。100 片起就能下单,打样几乎不要钱 |
| 铁氧体屏蔽片 | 1688 搜「隔磁片 软磁片 100×100」 | ¥8–20/张 | 贴天线背面。桌下只要有一根金属横梁就必须加,不加读距掉一半以上 |
| 同轴线 / 接插件 | 1688 搜「RG174 SMA 射频线」 | ¥10–25/根 | 必须是 50Ω 射频线。长度按座位到读头的实际走线定,宁长勿短 |
| 边缘网关 | 京东 / 淘宝 树莓派 4B(2G 起),或迷你工控机 | ¥400–1,200 | 全场共用一台。手边有闲置笔记本,第一阶段先拿它跑也行 |
| 桌面开槽 | 本地木工,或广告制作(亚克力固定板) | ¥800–3,000 | 先改一张,跑通了再复制。一次订 12 张的材料是最常见的浪费 |
| 档 | 买什么 | 花费 | 能干什么 |
|---|---|---|---|
| ① 验证包 | 1 台读头 + 1 个配套小天线 + 100 片标签 + 2 副普通扑克自己贴 | ¥1,200–2,000 | 在真桌上验「8cm 内读得到吗、RSSI 够不够、软件链路通不通」 |
| ② 最小可用 单桌 |
2 个天线(发牌区 + 弃牌区)+ 复用验证包那台读头 + 自贴牌 | ¥1,500–3,000 | 自动识别公共牌,底牌仍由操作员在 op.html 录入 |
| ③ 全座位 单桌 |
9 个天线 + 3 台 4 通道读头 + 定制嵌标牌 | ¥6,000–13,000 | 玩家把底牌扣在感应区,自动亮牌、自动算胜率 |
我的建议是只买①。一千多块钱、一周时间,就能回答「这套东西在我这张桌子上到底能不能用」。 这个答案决定后面要不要花一万。
第 6、7 条最容易被忽略,也最容易在联调时卡住——不少国产读头只回 UID 不回 RSSI, 那就做不了「连续 3 次 + 信号强度达标才定牌」,屏幕会一直闪。
从牌背到屏幕上的一行字,中间经过五跳。任何一跳断了,屏幕就停在上一帧——所以每一跳都有独立的重连。
牌桌旁边的机器和服务器不在一个网段,甚至可能断网几分钟。 网关独立跑,串口断了它自己重连,网络断了它把判定结果压在本地队列里, 恢复后补传——主服务那边完全不用知道现场发生了什么。
天线位置差 3cm,读距差一倍。这一段是整件事里最需要手工耐心的地方。
标出桌腿位置、横梁、任何金属件。选木桌或贴皮密度板。 如果可以,优先选整块实木或密度板,避免金属框架的桌子。
玩家放牌的位置通常在桌沿向内 15–25cm、座位正前方。 天线圆心对准这个点,不要对准玩家胸口——牌不会被推那么远。
槽要能放下天线板 + 铁氧体片 + 一点点余量。 槽底如果直接看到金属横梁,先贴一层 2mm 绝缘板再放天线。
从上往下:桌面 → 天线板 → 铁氧体片 → 导线。 铁氧体片一定在天的背面(朝下那面),它的作用是挡住下方金属的干扰, 贴反了等于没贴。
同轴线沿桌腿内侧面用卡扣固定,与 220V 电源线保持 10cm 以上。 平行走线会引入工频干扰,表现出来就是「别人的牌偶尔被读到」。
切换器 1 口 → 1 号座位,2 口 → 2 号座位,依此类推。
顺序错了也能在配置里映射(antennas),但现场排错会麻烦十倍。
打开 感应区校准页, 在每个座位放两张牌,看是否 3 秒内变绿、RSSI 是否 ≥ 40。 不达标的座位回去调天线位置或加屏蔽片。
9 个座位同时放牌,检查有没有串读(一张牌被两个座位读到)。 有的话降低该天线的功率或抬高信号门槛。
系统读到的是标签号(比如 E0040150A1B2C3D4),它本身不知道这是黑桃 A。
你必须先做一次「52 张牌逐张登记」,把标签号和牌面对上。
data/cards.json
我们给了命令行工具:node scripts/rfid-enroll.js,
接上读写器就能逐张登记,没有硬件时会走模拟。
deck 字段区分。
你不需要为硬件再写一套系统。下面这些代码已经在本地原型里跑着,接真硬件只需要改配置文件。
src/rfid/gateway.js 负责轮询天线、做稳定判定、上报。
支持三种协议:ASCII 行、十六进制帧、模拟器。
# 没有硬件也想先看效果
node src/rfid/gateway.js --sim
# 接真读写器
node src/rfid/gateway.js
同一张牌被两个座位读到时,系统拒绝写入并记一条 conflict 日志,
玩家状态一点不动。绝不会出现「两个人拿着同一张黑桃 A」的荒唐数据。
读不到、只读到一张、信号不足——全都只写日志 + 亮黄灯, 不猜、不补、不弃牌。等录入员确认。
rfid.config.json){
"stableHits": 3, // 连续几次一致才定牌,天线差就调高到 4
"minRssi": 40, // 信号门槛,串读严重就调到 55
"intervalMs": 900, // 轮询间隔,越短越灵敏也越容易抖
"readers": [{
"id": "R1",
"tableId": 1,
"protocol": "line", // sim | line | frame
"port": "COM3",
"baud": 115200,
"antennas": { "1": 1, "2": 2, "3": 3 } // 天线口 → 座位号
}]
}
装完别急着用。逐条过一遍,任何一条不过就回去调,别指望"用起来会好"。
conflict 为 0reading 不计入定牌。
但天线装得太低时仍然会读到,所以验收必须测。
硬件买「13.56MHz 多通道读写器 + 每座位天线 + 带标签的牌」,走 B 路线,先改一张桌。 软件这一侧已经能跑:网关、稳定判定、撞牌拦截、校准页、异常日志全在。 你只要把天线装对、把 52 张牌登记好,剩下的接上就能出画面。