1. 项目概述让老式针织机“开口说话”如果你手头有一台Brother KH-930e这样的老式电子针织机看着它内置的那些有限的图案是不是总有点不甘心这台机器在当年绝对是“黑科技”能把图案数据存储在内存里通过控制面板一点点输入针脚信息。但手动输入一个复杂图案无异于一场对耐心和眼力的终极考验。今天要聊的就是如何绕过这个繁琐的过程直接让计算机和这台“古董”设备对话把你在电脑上设计的任意黑白图案一键上传到针织机的内存里。这本质上是一个经典的串行通信项目。KH-930e设计之初是通过一个专用的Tandy PDD1软盘驱动器来扩展存储的。我们的目标就是用一台现代计算机加上一根自制的电缆来模拟这个软驱的功能从而读写针织机主板上的RAM数据。整个过程涉及硬件接口改造、通信协议破解和软件驱动编写听起来复杂但拆解开来每一步都有清晰的路径。最终你将能自由地备份机器里的所有自定义图案也能将Photoshop、甚至手绘扫描的图案转换成针织机认得的格式并上传实现真正意义上的个性化编织。在开始之前我必须给你打个“预防针”这不是一个“即插即用”的教程。它需要你具备一些基础的动手能力和 troubleshooting 心态。你需要能熟练操作针织机的基本功能至少知道怎么输入一个简单图案最好对命令行不陌生并且有耐心处理可能出现的连接问题。如果你对这些都点头了那么恭喜你即将打开一扇通往硬件黑客和数字制造的有趣大门。接下来我会从硬件连接开始一步步带你走通整个流程。2. 核心硬件制作与改造通信电缆与KH-930e通信的核心是一根经过特殊改装的FTDI USB转串口电缆。FTDI是一家公司的名字其生产的芯片和模块在嵌入式开发中广为使用能可靠地在USB协议和传统的串行通信协议如RS-232、TTL之间进行转换。KH-930e背部的扩展接口使用的是TTL电平的串行通信但它的逻辑电平定义与标准FTDI电缆恰好相反并且物理接口也不匹配因此改造是必须的。2.1 物料清单与原理剖析你需要准备以下材料一根FTDI USB转TTL串口电缆选择3.3V或5V逻辑电平的版本均可KH-930e的接口电路可以兼容。关键在于电缆末端必须是可拆卸的杜邦头或类似接口方便我们重新接线。一个2x4 pin的IDC连接器这是为了匹配KH-930e背部的8针接口。原教程中提到的型号是WM8036-ND你也可以寻找任何间距匹配的2x4针座。基本的焊接工具电烙铁、焊锡、热缩管或电工胶带、剥线钳、剪钳。这里的关键在于理解信号逻辑反转和接口引脚定义。标准的异步串行通信需要三根基本线发送TX、接收RX和地线GND。FTDI芯片默认输出的是“反相TTL”电平即逻辑‘1’为0V逻辑‘0’为3.3V/5V。而KH-930e期望的是标准TTL电平逻辑‘1’为高电平。幸运的是FTDI芯片的驱动层支持通过软件配置来反转TX和RX信号的电平这比在硬件上增加反相器电路要简单得多。KH-930e的8针接口引脚定义面向机器背部接口看是成功的关键。根据社区验证的信息其定义如下Pin 1: 接地 (GND) - 接FTDI电缆的黑色线。Pin 2: 5V 电源 - 接FTDI电缆的红色线。Pin 3: 信号控制线 (可能对应RTS) - 接FTDI电缆的绿色线。Pin 6: 数据接收 (RX) - 接FTDI电缆的橙色线FTDI的TX端。Pin 7: 数据发送 (TX) - 接FTDI电缆的黄色线FTDI的RX端。注意引脚序号通常会在连接器或主板插座旁以微小的数字“1”或白点标示。务必反复确认接错线可能导致设备无法通信最坏情况可能损坏接口电路。2.2 电缆改造实操步骤改造分为两步软件配置反转逻辑电平以及物理重接线序。第一步使用FTDI MProg配置电缆这是Windows环境下的步骤。macOS和Linux用户可能需要使用ftdi_eeprom等命令行工具原理相同。安装FTDI官方驱动VCP驱动确保系统能正确识别电缆。下载并运行FTDI MProg工具。这是一个用于编程FTDI芯片内部EEPROM的实用程序。连接电缆在MProg中点击“Scan”或“Read and Parse”。软件会读取当前电缆的配置。在打开的配置界面中找到“Hardware”或“Port”相关设置将“TX”和“RX”信号的“Invert”选项勾选上。这步操作就是在软件层面将信号逻辑反转。将修改后的配置“Save As”为一个新文件然后点击“Program”按钮写入电缆。编程成功后这根电缆的逻辑电平就与KH-930e匹配了。第二步物理重接与跳线拆卸原接头小心地用镊子挑起FTDI电缆原配接头上的塑料锁扣将五根彩色线黑、棕、红、橙、黄依次拔出。通常我们只用到黑、红、橙、黄、绿如果有的话。准备新接头将2x4 pin的IDC连接器准备好引脚序号1通常标有三角或数字。接线将黑色线GND插入新接头的Pin 1。将红色线VCC插入新接头的Pin 2。接下来是关键的一步FTDI电缆的绿色线通常是RTS信号需要与红色线5V短接。剪断绿色线剥开红色线的一小段外皮将绿色线的金属芯焊接上去然后用热缩管或电工胶带做好绝缘。这样Pin 2和Pin 3在电缆端实际上是连在一起的都接到了5V。这个操作是为了满足KH-930e接口的某种上拉或使能需求是经验证的有效方法。将处理好的“红绿复合线”的另一端即原绿色线的插针端插入新接头的Pin 3。将橙色线FTDI TX插入新接头的Pin 6KH-930e RX。将黄色线FTDI RX插入新接头的Pin 7KH-930e TX。检查与绝缘对照引脚定义图检查至少三遍确保没有错位。将所有裸露的焊点和线头用热缩管包裹好确保不会短路。完成以上步骤你的通信电缆就制作好了。在连接到针织机之前再次确认接线无误这是保护设备的第一步。3. 软件环境搭建与通信测试硬件准备就绪后我们需要在电脑上搭建一个能够模拟软盘驱动器并与针织机通信的软件环境。这套工具链的核心是一个用Python编写的脚本集它实现了KH-930e所使用的特定数据通信协议。3.1 Python环境与依赖库安装无论你的操作系统是Windows、macOS还是Linux都需要先确保安装了Python。推荐使用Python 3.6及以上版本。检查或安装Python打开终端macOS/Linux或命令提示符/PowerShellWindows输入python --version或python3 --version。如果显示版本号则已安装。否则前往Python官网下载安装包安装时务必勾选“Add Python to PATH”选项。安装PySerial库这是Python进行串口通信的核心库。在终端中执行以下命令pip install pyserial如果遇到权限问题可以尝试pip install --user pyserial。3.2 获取并准备通信脚本原始的教程代码托管在Adafruit的GitHub仓库但社区已有更多维护和增强的版本。我建议使用由爱好者维护的、功能更集中的版本例如在GitHub上搜索“brother-kh930”或“knitting-machine”能找到的相关项目。这些项目通常整合了图案插入、查看、文件分割等所有功能。假设你将项目克隆或下载到一个名为brother_kh930的文件夹中。用终端进入该目录cd /path/to/your/brother_kh930列出文件你应该能看到类似以下的核心脚本PDDemulate.py或communicate.py主通信脚本负责与针织机握手和数据传输。dumppattern.py用于解析和显示从针织机备份出来的图案数据文件。insertpattern.py将BMP图片插入到数据文件中的指定图案位置。splitfile2track.py将整合的数据文件分割成针织机可识别的“磁道”文件。3.3 确定串行端口号这是连接成功的关键一步。你需要知道你的电脑将FTDI电缆识别成了哪个串行端口。macOS打开终端输入ls /dev/cu.usbserial*或ls /dev/tty.usbserial*。通常会返回类似/dev/cu.usbserial-A50285BI的结果。记下这个完整的路径。Linux在终端输入ls /dev/ttyUSB*。通常会返回类似/dev/ttyUSB0的结果。Windows打开“设备管理器”可以在开始菜单搜索展开“端口COM和LPT”。你会看到类似“USB Serial Port (COM3)”的条目。记下COM后面的数字如COM3。实操心得在Windows上COM端口号有时会变动。如果第一次是COM3拔插后可能变成COM4。因此每次连接前最好都检查一下设备管理器。在脚本中你需要使用完整的端口标识符例如在Windows上是COM3在macOS上是/dev/cu.usbserial-XXXX。4. 针织机内存数据的备份与查看在尝试写入任何新数据之前备份针织机原有的自定义图案是绝对必要的。这不仅能防止误操作导致心血白费也是理解数据格式的第一步。4.1 执行内存备份操作物理连接将制作好的电缆一端插入电脑USB口另一端插入KH-930e背部的扩展接口。注意接口有防呆设计但对准引脚序号插入更保险。准备备份目录在你的项目文件夹里新建一个名为backup的文件夹用于存放备份数据。运行备份命令打开终端导航到项目目录然后运行主通信脚本。命令格式通常为python PDDemulate.py -r backup/ /dev/ttyUSB0-r参数表示“读取”Read模式即从针织机下载数据。backup/指定数据保存的目录。/dev/ttyUSB0替换为你实际的串口地址Windows下为COM3等形式。在针织机上操作确保针织机已通电“Ready”指示灯亮起。按CE键清除显示屏。输入数字552然后按STEP键。此时显示屏会变暗随后“Ready”和“Pattern No.”指示灯亮起显示屏显示“1”表示磁道1。再次按下STEP键开始传输。机器会发出“嘀”的一声表示传输完成。此时电脑终端上应该有进度提示并在backup文件夹内生成file-01.dat等文件。注意事项如果终端没有任何反应或提示打开串口失败请按以下顺序排查① 串口号是否正确② 电缆驱动是否安装③ 电缆接线特别是TX/RX是否接反④ 针织机是否处于正确的通信模式552STEP。通信波特率等参数通常在脚本中已预设好很可能是9600 bps一般无需修改。4.2 解析与查看备份的图案备份得到的file-01.dat文件是一个二进制文件包含了针织机RAM中所有用户自定义图案的原始数据。我们可以用dumppattern.py脚本查看其内容。在终端中运行python dumppattern.py backup/file-01.dat脚本会输出类似以下的信息Found 5 patterns in file. Pattern 901: 24 stitches wide, 40 rows high Pattern 902: 32 stitches wide, 32 rows high Pattern 903: 16 stitches wide, 20 rows high ...这告诉你机器里存了哪些图案以及它们的尺寸。如果想查看某个图案的具体针脚图样可以指定图案编号python dumppattern.py backup/file-01.dat 902脚本会以ASCII字符的形式在终端里打印出图案例如用#表示下针用.表示空针或浮线这样你就能直观地看到图案的样子。常见问题与排查问题运行dumppattern.py时报错提示文件格式错误或无法识别。排查这通常意味着备份过程不完整或数据损坏。首先确认备份时针织机确实完成了传输并鸣响。其次尝试重新备份一次。最后检查backup文件夹里是否生成了track0.dat和track1.dat或00.dat,01.dat有时主脚本会直接生成这两个磁道文件而file-01.dat可能是由它们合并而成的。不同的脚本版本行为可能略有不同阅读脚本的说明文档很重要。5. 创建并上传自定义图案这是整个项目的终极目标将一张电脑上的图片变成针织机可以编织的图案。5.1 准备源图像格式与尺寸的硬性要求针织机的图案内存本质上是一个个二进制的位图每个比特bit控制一个针脚。因此对源图像有严格限制颜色深度必须为1位位图单色黑白。不能是灰度更不能是彩色。每个像素非黑即白。文件格式保存为BMP格式。虽然脚本可能支持其他格式但BMP是最通用、出错最少的。尺寸匹配图像的像素宽度和高度必须完全等于你打算在针织机上创建的图案的“针数”和“行数”。KH-930e的单个图案最大尺寸受内存限制常见如24x40, 32x32等。你需要在设计前就确定好尺寸。图像处理建议使用专业工具虽然Windows画图可以保存为单色BMP但功能太弱。推荐使用GIMP免费开源或Photoshop。在GIMP中打开图片后选择图像 - 模式 - 索引...在对话框中选择“使用黑白1位调色板”即可转换为1位图像。然后使用图像 - 画布大小来精确调整尺寸。考虑针织特性针织物的针脚不是正方形的通常高度略大于宽度。直接使用正方形像素的图案织出来可能会被纵向拉长。一个经验法则是在设计时先将图像水平方向压缩到原宽的80%-90%再转换为1位图这样织出来的图案比例会更协调。清晰度优先图案边缘要清晰避免复杂的渐变色和细节。简单的线条、几何图形和像素画风格是最理想的。5.2 在针织机上创建“容器”图案由于我们无法直接凭空在数据文件中创建一个新图案所以需要先在针织机的内存中“预留”一个空位。这个过程就像先申请一个指定大小的空白画布。在针织机控制面板上按INPUT键进入图案输入模式。屏幕会显示下一个可用的图案编号例如901。按STEP键确认使用这个编号。输入你想要的图案宽度针数然后按STEP。屏幕会显示机器根据宽度计算出的最大可用行数。按CE清除。输入你想要的图案高度行数这个数字必须小于等于上一步显示的最大行数然后按STEP。再次按INPUT键退出输入模式。现在机器内存中就有了一个编号为901或其他、尺寸为你指定大小的空白图案。重要记下这个图案编号和尺寸必须与你的图片尺寸完全一致。5.3 使用脚本插入图案到数据文件现在我们将电脑上的图片“注入”到这个空的容器中。确保你有最新的备份执行一次4.1节的备份操作获得包含新空白容器的file-01.dat文件。运行图案插入脚本python insertpattern.py backup/file-01.dat 901 my_design.bmp modified.datbackup/file-01.dat: 源数据文件包含空白容器。901: 目标图案编号你刚才创建的容器编号。my_design.bmp: 你准备好的黑白BMP图片文件。modified.dat: 输出的新数据文件名。脚本会检查图片尺寸与容器尺寸是否匹配如果匹配就会将图片数据写入到modified.dat文件中对应图案901的位置。5.4 分割数据文件并上传至针织机针织机像读取软盘一样期望数据按“磁道”组织。因此我们需要将整合的modified.dat文件分割成两个磁道文件。分割文件python splitfile2track.py modified.dat运行后会生成track0.dat和track1.dat两个文件。将它们分别重命名为00.dat和01.dat。这是软盘模拟器约定的命名方式。准备上传目录新建一个文件夹例如叫upload将00.dat和01.dat复制进去。执行上传操作警告此操作会清空针织机RAM中的所有用户图案请再次确认你已备份所有重要图案。在终端运行上传命令写入模式python PDDemulate.py -w upload/ /dev/ttyUSB0-w参数表示“写入”Write模式。在针织机上操作确保“Ready”灯亮。按CE键。输入数字888然后按STEP键。这是执行内存复位清空所有用户图案。屏幕可能会闪烁。再次按CE键清除。输入数字551然后按STEP键。进入数据加载模式“Ready”和“Pattern No.”灯亮屏幕显示“1”。输入1表示从磁道1加载对应我们的01.dat文件这里有个关键点不同脚本或机器版本对磁道编号的定义可能不同。通常00.dat是磁道001.dat是磁道1。如果551STEP后显示的是磁道号让你选择那么你需要根据脚本说明选择正确的磁道。原教程说按“1”但有些社区版本发现需要先传磁道0再传磁道1。这是最容易出错的地方然后按STEP键开始传输。机器鸣响表示传输完成。验证使用针织机的图案选择功能找到你创建的图案编号如901查看预览。或者再次执行一次备份操作然后用dumppattern.py查看901号图案确认是否已变成你设计的图形。6. 深度排错与经验总结即使按照步骤操作你也可能会遇到各种问题。以下是我在多次实践中总结的常见故障点及解决方案。6.1 通信连接失败症状运行PDDemulate.py脚本后终端无任何输出或立即报错退出针织机也无反应。排查步骤检查端口确认使用的串口号绝对正确。在Windows上设备管理器里的COM口可能因USB口不同而变化。检查电缆确认FTDI电缆的TX/RX信号已通过MProg成功反转。可以用一个简单的串口调试工具如Putty、Arduino IDE的串口监视器发送字符同时用万用表测量电缆另一端的TX引脚橙色线电压发送时应有高低电平变化否则配置可能未生效。检查接线这是重中之重。用万用表通断档严格按照第2节的引脚定义逐一检查从IDC接头到FTDI板子焊点的每一根线是否连接正确、没有虚焊。特别检查GND是否连通。检查针织机状态确保针织机处于正确的通信等待状态输入552或551前的“Ready”状态。尝试关闭针织机电源等待10秒后再重启。6.2 图案插入或上传后显示乱码症状上传成功后在针织机上查看图案发现图案错乱、移位或全是杂点。排查步骤尺寸严格匹配百分之百确认你创建的“容器”图案的宽高与BMP图片的像素宽高完全一致。哪怕差一针一行数据对齐就会全部错乱。图像格式确认BMP是1位单色而不是8位灰度或24位彩色。在高级图片编辑器中有时“黑白”模式不等于“1位索引色”务必检查图像属性。磁道顺序这是社区反馈中最常见的问题。KH-930e在加载数据时可能需要先加载00.dat磁道0再加载01.dat磁道1。但原教程脚本和部分衍生脚本的顺序可能相反。如果你的图案乱码尝试交换00.dat和01.dat的文件名或者查阅你所使用脚本的具体说明。一个更稳妥的方法是在上传完成后立即做一次备份然后用dumppattern.py查看生成的数据文件与电脑上的modified.dat进行二进制比较使用fc /b命令 on Windows 或diff命令 on Unix确保两者完全一致。6.3 关于其他型号针织机的兼容性原教程和大部分现有工具都是针对Brother KH-930e开发的。对于其他型号如KH-940, KH-965i甚至兄弟牌的其他系列不能保证兼容。硬件接口不同型号机器的后背扩展接口引脚定义可能不同。切勿盲目接线有烧毁机器的风险。必须找到对应型号的维修手册或技术文档确认其扩展接口的引脚信号。数据协议即使硬件连接通了不同型号机器使用的数据格式、通信协议、命令集也可能完全不同。KH-930e的协议是爱好者们逆向工程出来的其他型号需要同样的逆向工作。尝试建议如果你拥有其他型号第一步是寻找该型号的爱好者社区如Ravelry上的相关小组、特定的Facebook群组或论坛。很可能已经有人做过类似的工作。第二步是极端谨慎地进行硬件测试最好有万用表和一定的电路知识先测量接口电压尝试理清GND、电源和可能的信号线。6.4 个人实操心得与技巧建立工作流将整个过程脚本化。你可以编写一个批处理文件.bat或Shell脚本.sh将备份、插入图案、分割文件、重命名、上传等一系列命令按顺序写好每次只需修改图片文件名和图案编号即可一键运行极大提高效率。版本管理对你修改后的.dat数据文件进行版本管理。每次成功上传一个满意的图案后都将对应的file-01.dat或modified.dat文件妥善保存并备注。这样你可以随时回滚到任何一个历史版本组合不同的图案集。图案设计优化利用网格纸在电脑上设计前先用针织机规格的网格纸手绘草图一格代表一针。这能帮你更好地理解图案在织物上的实际比例和效果。测试小样对于复杂图案先用小尺寸如10x10测试一下效果确认针脚表现和图像处理流程无误后再制作大图。考虑收针设计图案时要考虑到针织物的边缘处理。图案四周最好留出几针空白的边缘这样在收针时图案不会变形。电缆的终极优化原教程中将绿线RTS与红线5V短接的方法是一种变通。理论上可以通过修改Python脚本在通信开始时通过ser.setRTS(True)之类的语句来动态控制RTS引脚的电平从而省去硬件跳线使电缆更加通用。如果你精通Python和PySerial可以尝试改进脚本这将是很有价值的贡献。让一台几十岁的电子纺织设备与现代计算机无缝协作这个过程本身就像一种数字考古与再创造。当你第一次看到自己设计的像素画在哒哒作响的针床上逐渐成形时那种跨越时空的技术融合带来的成就感是独一无二的。这个项目不仅解锁了一台机器的潜能更重要的是它提供了一套方法论如何与一个封闭的、文档稀缺的老旧硬件系统进行交互。这套方法——硬件接口分析、通信协议试探、数据格式解析——完全可以迁移到其他有趣的复古设备改造项目中。