无源NFC墨水屏制作

admin 2026-01-08 02:03:34 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文记录了无源NFC墨水屏的制作过程,利用NT3H1101收集能量驱动STM32控制屏幕。作者深度剖析芯片寄存器配置与I2C通信,逆向APP逻辑解决大数据传输同步与ACK机制问题。内容涵盖图像算法移植、RAM限制下的显存优化及硬件升级方案,并提出了基于PN532的外部编程器替代思路,极具IoT硬件开发实战价值。 综合评分: 90 文章分类: IoT安全,逆向分析,实战经验,安全工具


7. 整合图像接收与图像显示遇到的问题

STM32L011  RAM只有 2KB, 小的可怜,根本无法存储一整张图像数据,所有这里不能采用预分配空间,接收完所有数据再去驱动屏幕显示,只能实时接收,实时写入到墨水屏的显存,数据接收完毕,调用显示函数,进行图像刷新。所以其中也遇到了一些问题。

  1. 屏幕初始化时间过长,导致开启passthrogh模式延迟,app传输数据失败: 这个也是我在原项目遇到的问题,解决方案尽快在主控mcu上电后,程序尽快进入到开启passthrough部分准备数据接收。对于无用的delay直接进行干掉(也不能都干掉,必要的reset dalay如果弄掉会导致显存没清除完全),其实问题根源还是在于app端,检测到芯片后立刻进行数据传输,而不是提供一个按钮,如果我写一个app的话这个问题可以完全解决。

  2. 对于原项目的驱动电路有一些特例墨水屏无法驱动,测量后发现可能是boost升压达不到驱动电压要求,这个也是无源NFC供电导致的,在使用外部供电可以解决,我也尝试过修改升压电路中的电阻但是效果不是特别好,好在这类屏幕较少,大部分屏幕都可以完美驱动。

  3. 原项目的 swclk, swdio, 俩个引脚被用作 驱动spi墨水屏,导致单片机在运行过程中无法进行调试和烧录,这个就很考验手速了,按下reset 后,立刻download新程序,在还没有对这俩个gpio初始化之前完成可以完成程序下载。当然也就无法进行任何调试了,因为调试也是依赖这俩个引脚,还好我测试板子接了个led灯,我通过控制 led灯亮灭判断程序执行到哪一步了 : )

8. 完成第一版PCB绘制

经过以上的研究,打样俩个测试板后,终于可以绘制这个pcb了。

原理图:

原理图对比原项目,去除了通过 GPIO 使能供电,增加了一个可以控制 led, 修改了天线。基本上硬件改动不大,主要还是摸索软件过程较为繁琐。

9. 升级硬件

原本我没打算升级,不过在购买芯片时发现NT3H2111 芯片比 NT3H1101 还便宜(搞不懂), NT3H2111 比NT3H1101多一个新功能fast write, 这个对RF->I2C传输速度会有质的提升,原来传输一张图像的速度可能需要10多秒,用了fast write后1、2秒完成。而且NT3H2111完全兼容 NT3H1101。

然后STM32L011D4P6 也找到了更便宜但引脚更多的 STM32L011F4P6 (后来知道便宜是因为库存,现在更贵了) stm32替换后,多出的引脚可以用作调试了。下载程序也不用考验手速了 :)

基于上述俩个芯片改动,重新绘制了PCB

硬件的升级对软件部分核心逻辑基本不用动,只不过需要改动几个引脚映射。

10. 升级硬件后遇到的问题

没想到的是,当我用上fast write后(app端会自动判断芯片型号,选择用标准的write还是fast write),主控mcu处理对接收数据写入墨水屏显存速度达不到要求,在还没有写完的时候 RF->I2C的 下一份64字节数据就已经到了,导致APP等待读取时间过长从而传输失败。 所以我stm32程序再次进行了修改。

修改前:

 复制代码 隐藏代码
EPD_SendData(data);

voidEPD_SendData(UBYTE Data)
{
    DEV_Digital_Write(EPD_DC_PIN, 1);
    DEV_Digital_Write(EPD_CS_PIN, 0);
    DEV_SPI_WriteByte(Data);
    DEV_Digital_Write(EPD_CS_PIN, 1);
}

修改后:

 复制代码 隐藏代码
DEV_Digital_Write(EPD_DC_PIN, 1);
DEV_Digital_Write(EPD_CS_PIN, 0);
DEV_SPI_Write_nByte(data64, 64);
DEV_Digital_Write(EPD_CS_PIN, 1);

简单来说之前一次只传输一个像素点,但是每次都会重复拉高拉低 DC CS(这部分耗时还可以),主要还是单个SPI传输数据回比一次性传输64字节数据慢很多,修改之后就再没出现过传输失败了。

但是也引入了个新问题:如果最后图片数据不是64的整数倍,会导致写入额外的垃圾数据,对于黑白墨水屏还好,因为额外的数据不会显示出来,但是对于黑白红的3色墨水屏,黑色传输完后,不是64整数倍,会导致额外的红色数据传输成黑色数据,最终效果是红色像素错位。 所以我进行了这部分的计算,这里就不再贴了。后面我会把全部代码开源。

11. 依然没有结束,子项目的开启

我将做好的设备用滴胶封存,这样替代外壳,因为这玩意不用电。这也是最大优势,但是我将做好的成品发给我朋友时,他们手机NFC失败不到:) 可能是滴胶滴厚了,导致场识别不到(不同手机NFC感应距离也不太相同),当然也有天线设计问题。但是我不想在修改这个板子了,所以考虑替代方案。 做一个板子 与 NT3H2111 进行数据交互,相当于是个图片烧录器,这样即使手机不支持NFC也能玩这个设备了,我选择pn532 小红板:

这个设备感应场很强,即使间隔1-2cm也能识别到设备,但是网上很多资料都是对IC卡的解密,对ntag读写的资料比较少,这部分需要从头摸索。 这个板子有几种模式:

| 模式 | 作用 | | — | — | | HSU | 大部分解密IC卡都是通过此模式完成的,因为不需要主控MCU,直接用个USB-TTL小板即可与这个板子进行通信, 通过串口发送数据帧完成对目标卡的读写 | | I2C | 需要主控MCU, 与这块板子进行I2C连接,发送数据帧实现对目标卡的读写 | | SPI | 与I2C相同,只不过使用的协议是I2C |

3种模式可以通过板子上的拨码开关进行控制。

主控使用 ESP-12F模组(这玩意买多了,得用上)

目前这部分程序基本已经调通,底板还没到,等到了,经过我验证后把这部分也开源。

12. 开源地址预留占位

努力整理资料中。。。。。。。

-官方论坛

www.52pojie.cn

👆👆👆

公众号设置“星标”,不会错过新的消息通知

开放注册、精华文章和周边活动等公告


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:吾爱破解论坛 吾爱pojie《无源NFC墨水屏制作》

无源NFC墨水屏制作 网络安全文章

无源NFC墨水屏制作

文章总结: 本文记录了无源NFC墨水屏的制作过程,利用NT3H1101收集能量驱动STM32控制屏幕。作者深度剖析芯片寄存器配置与I2C通信,逆向APP逻辑解决
评论:0   参与:  0