1. 项目概述:从概念到现实的声学操控
超声波相控阵,听起来像是实验室里的高端设备,但通过一个精心设计的DIY项目,你完全可以将它搬进你的工作室。这个项目的核心,是构建一个由256个独立的40kHz超声波换能器组成的16x16阵列,并通过一块FPGA(现场可编程门阵列)对每一个换能器发射声波的相位进行独立、精确的实时控制。这听起来很复杂,但简单来说,它就像指挥一支由256名乐手组成的交响乐团,通过微调每位乐手开始演奏的时间(相位),让所有声波在空间中的特定一点完美叠加,形成强大的“声学焦点”。
这个焦点能做什么?它的能力超乎你的想象。首先,它能产生足够强的声辐射压力,在焦点处形成一个稳定的“声阱”,足以捕获并悬浮起轻小的聚苯乙烯泡沫球或水滴,实现声悬浮。其次,当这个焦点快速扫过你的手掌皮肤时,你能清晰地感觉到一种按压或振动的触感,这就是空中触觉反馈。最后,由于超声波在空气中传播的非线性效应,两个40kHz的声波可以“混合”产生可听的声音,并且这个声音只会在声束聚焦的路径上被听到,从而实现定向扬声器的效果,让声音像手电筒的光束一样定向传播。
我之所以投入精力研究并复现这个项目,是因为它完美地融合了硬件设计、嵌入式编程和物理原理,是极客精神和工程实践的绝佳体现。它不仅仅是一个“玩具”,更是一个强大的原型平台,适用于交互艺术装置、新型人机交互界面研究,甚至是物理教学演示。整个项目的物料成本大约在200美元左右,需要你具备一定的表面贴装焊接经验和嵌入式系统调试能力。接下来,我将拆解整个构建过程,分享从电路板制作到最终调试的每一个细节与踩过的坑。
2. 核心硬件设计与选型解析
构建一个稳定可靠的超声波相控阵,硬件是基石。这部分的设计直接决定了系统的性能上限和调试难度。
2.1 核心元件选型与供应链策略
整个系统的核心是超声波换能器。必须选择中心频率为40kHz、直径约10mm的型号。我使用的是Manorshi的MSO-P1040H07T,性价比很高。这里有一个关键点:这类换能器通常有最小起订量(MOQ),比如500个。直接联系供应商,他们通常愿意以稍高的单价出售较小数量(如256个)。另一个可靠的品牌是Ningbo的FBULS1007P-T。在购买前,务必索要样品测试其谐振频率和灵敏度的一致性,批次差异会导致后期校准工作量剧增。
驱动芯片的选择关乎输出功率和可靠性。原设计使用MIC4127,这是一款双通道、高速、低侧MOSFET驱动器。它的关键参数是峰值输出电流可达1.5A,足以快速驱动换能器的容性负载。备选方案如TC4427A性能类似,而MIC4478虽然支持更高电压(32V),但价格昂贵,除非你需要极高的声压,否则MIC4127是更经济的选择。购买时注意选择SOIC-8封装。
主控单元采用Waveshare的CoreEP4CE6 FPGA核心板。选择Cyclone IV EP4CE6芯片的原因在于其拥有足够的逻辑单元(约6K LE)和用户I/O口来控制256个通道。FPGA的并行处理能力是实现对256路相位进行实时、同步控制的唯一可行方案,微控制器(MCU)无法胜任。配套的USB Blaster下载器是编程必备。
注意:电源规划至关重要。系统有两个主要电源轨:逻辑电源(5V)和发射器电源(Power Rail, 6-18V)。逻辑电源为FPGA、移位寄存器和驱动芯片的逻辑部分供电,要求不高,但需稳定。发射器电源直接决定换能器的输出声压,电压越高,声压越强,悬浮能力也越强,但功耗和发热也越大。我建议从9V开始调试。你需要一个双路输出的可调稳压电源,或者两个独立的电源模块。
2.2 PCB布局与电源完整性考量
PCB是项目的骨架,其设计质量直接影响信号完整性和最终效果。板子尺寸为183x169mm,双面板设计。布局的核心挑战是如何将256个换能器、128个驱动芯片和32个移位寄存器有机地整合,并确保控制信号和电力输送的纯净。
信号链设计:FPGA的I/O口数量有限,无法直接控制256个通道。这里采用了经典的“行列扫描”架构的变体——串行转并行加级联。FPGA通过几根SPI-like的线(数据、时钟、锁存)连接至第一颗74HC595移位寄存器。每颗595可以控制8个输出,32颗595级联起来,就能用区区几根线控制256个通道。每个595的输出连接到一个MIC4127驱动器的输入,由驱动器来放大电流,驱动换能器。
电源网络设计:这是最容易出问题的地方。板上存在数字(5V, 3.3V)和模拟(18V Power Rail)两种电源。必须采用星型接地或单点接地策略,避免数字噪声通过地线串扰到敏感的功率输出部分。在PCB上,应将功率地(PGND)和数字地(DGND)在电源输入端子处单点连接。同时,必须在每个驱动芯片的电源引脚附近放置去耦电容。我使用了160个0805封装的0.1μF陶瓷电容,分别放置在每对驱动芯片的5V和18V电源引脚旁,这是抑制高频开关噪声、保证每个通道独立工作的关键。
换能器焊盘设计:每个换能器有两个焊盘。一个连接驱动器的输出(信号),另一个连接地。PCB上交替排列信号和地孔,但每两行,信号孔的位置会交换一次。在焊接时,必须对照PCB丝印或原理图,用万用表确认每个孔连接的是什么,切不可凭感觉乱焊,否则会导致一半的换能器相位反相,无法形成有效聚焦。
3. 焊接组装全流程与工艺要点
焊接是整个项目中最耗时、也最考验耐心的环节。采用“先贴片,后通孔”的顺序,并强烈推荐使用回流焊炉。
3.1 SMD元件焊接:钢网与回流曲线
- PCB与钢网准备:收到PCB和定制钢网后,首先用异丙醇和无尘布彻底清洁。将PCB固定在平整台面上,四周用废板或胶带垫高,使其与钢网紧密贴合。对齐钢网,确保每个焊盘开口精确对应。
- 涂抹焊膏:使用刮刀将焊膏均匀刮过钢网。力度要适中,一次成功,避免来回涂抹导致焊膏渗漏或不足。移开钢网后,PCB上应有一层均匀、饱满的焊膏涂层。
- 贴放元件:这是最需要细心和好工具的一步。使用尖头镊子,对照BOM和位号图,依次贴放元件。特别注意元件的方向:
- MIC4127驱动器:芯片上有一个小圆点或凹坑标识第1脚。PCB上也有一个白丝印框或圆点。关键来了:由于PCB布局优化,每一行驱动器的方向是交替的!比如,第1行芯片的1脚朝左,第2行就朝右。必须逐行核对,我在这里贴反了好几个,返工极其痛苦。
- 74HC595移位寄存器:同样需要注意方向,但通常是同一方向。
- 0805电容:无极性,方向任意。
- 回流焊接:将贴好元件的PCB小心放入回流焊炉。使用焊膏供应商推荐的温度曲线。一个典型的无铅焊膏曲线可能是:150-180°C预热60-90秒,然后快速升温至峰值温度235-245°C,保持30-45秒,最后冷却。没有回流焊炉也可以用热风枪配合加热板,但需要对温度和风速有极好的控制,否则容易吹飞小元件或加热不均。
3.2 通孔元件焊接与初步检测
SMD元件焊接并冷却后,进行通孔元件的焊接。
- 焊接FPGA插座和侧边连接器:将2x22的排母剪成合适长度,对照FPGA核心板上的孔位,先将其插在核心板上,然后一起对准PCB上的孔位放好,这样能保证插座间距绝对准确。用胶带临时固定后,翻过来焊接。侧边的电源端子、串口插座等也一并焊好。
- 上电前关键检查:焊接完成后,切勿立即通电!必须进行以下检查:
- 目视检查:用放大镜检查有无桥连、虚焊、元件错位。
- 短路测试:使用万用表蜂鸣档,重点测量5V对地和18V Power Rail对地是否短路。这是最重要的安全步骤,任何电源对地短路都会在通电瞬间损坏大量芯片。
- 基本连通性:随机抽查几个驱动芯片的输入脚(连接595输出)与对应595输出焊盘的连通性。
3.3 换能器焊接与机械固定
- 制作或准备垫高支架:为了防止换能器引脚过长导致背面短路,并让所有换能器发声面处于同一平面,需要在PCB和换能器之间加一个垫片。可以用激光切割亚克力或3D打印一个带有256个孔的网格板,厚度约2-3mm。
- 极性测试与标记(强烈建议):换能器虽然标有“+”和“-”,但批次间可能有误。最可靠的方法是用一个已知好的驱动通道(或信号发生器)连接一个换能器,用另一个换能器作为接收器靠近它,用示波器观察接收信号。当驱动信号上升沿时,接收到的正弦波峰值如果为正,则驱动换能器的正极接的就是信号端。在焊接前,用油性笔在所有换能器的正极(信号端)做上标记。这个步骤能省去后期大量的软件相位校准工作。
- 焊接:将垫片放在PCB上,然后把所有换能器按标记插入对应的孔中(标记端对准信号孔)。确保所有换能器安装平整。翻过PCB,在背面焊接。由于焊点众多,建议使用刀头烙铁和高质量的含铅焊锡丝,效率更高。
4. FPGA固件烧录与通道功能验证
硬件组装完毕,接下来是让系统“大脑”开始工作。
4.1 搭建开发环境与初次烧录
- 安装软件:你需要安装较旧版本的Quartus II 13.0 SP1(Web Edition即可)和对应的USB-Blaster驱动。同时,需要安装Java JDK 11来运行后续的Ultraino控制软件。
- 独立编程FPGA核心板:在将核心板插到主PCB之前,先单独对其编程。连接USB-Blaster到核心板的JTAG口,并通过Micro USB线或单独的5V电源为其供电。打开Quartus Programmer,添加项目提供的
PrimaryNoCalib.jic文件。选择JTAG模式,识别到设备后,点击“Start”。烧录完成后,核心板上的用户LED(通常是L4)应该开始闪烁,这表明FPGA已经运行起来了。 - 集成到主板并上电:将编程好的FPGA核心板按正确方向插入主PCB的插座。再次用万用表确认5V和18V电源对地无短路。然后,先连接5V电源(可用USB供电),观察电流是否正常(通常小于0.1A)。再连接可调电源到18V电源输入端,先将电压调至0V,然后慢慢调高至9V,同时监视电流。正常空载(未开启任何通道)下,18V电源的电流应几乎为0。
4.2 逐通道信号测试
这是验证硬件焊接和FPGA驱动是否正常的关键步骤。
- 连接示波器:将示波器探头地线夹在PCB的GND测试点上。使用示波器的两个通道。
- 寻找参考信号:PCB上有一个标记为“D”的测试点(或通过原理图找到FPGA输出的原始PWM信号点)。将示波器的一个通道(设为触发源)连接至此,应能看到一个3.3V、40kHz的方波。
- 测试驱动输出:将示波器的另一个通道连接到任意一个换能器的信号焊盘上。由于驱动芯片的放大,这里应该能看到一个与参考信号同频、但幅度接近电源电压(9V)的方波(由于换能器的容性负载,边沿会变得圆滑)。
- 系统化测试:你可以通过临时修改FPGA测试代码,或者使用后续的Ultraino软件,逐个打开通道,用示波器检查每个换能器信号端的输出。记录下所有没有输出或输出异常的通道编号。出现几个坏通道是正常的,可能是焊接问题或芯片损坏。如果出现整行或整列不工作,则需要检查对应移位寄存器(74HC595)的焊接和级联信号。
实操心得:在这个阶段,我遇到了一个诡异的问题:单个通道测试正常,但同时打开多个通道时,某些通道会失效。排查后发现,是电源功率不足导致的。当大量通道同时打开时,瞬间的电流需求很大,如果电源响应慢或线缆太细,会导致电压瞬间跌落,使得驱动芯片工作异常。解决方案是使用响应速度快的开关电源,并加粗电源连线,同时在18V电源入口处并联一个大容量(如1000μF)的电解电容储能。
5. 系统校准:让256个声音同步
硬件正常后,要让256个换能器像一支军队一样协同工作,必须进行相位校准。因为每个换能器、每个驱动通道的电气延迟都有微小差异。
5.1 使用Ultraino软件进行交互式校准
- 连接通信链路:使用Arduino Nano作为USB转TTL串口桥接器。将Arduino的TX、RX、5V、GND分别连接到主PCB的对应引脚。在Arduino IDE中上传一个空程序(例如Empty Sketch),其作用是让Arduino的USB转串口功能直通。
- 运行Ultraino:打开Ultraino仿真软件,加载一个与你的硬件配置匹配的仿真文件(如单板的配置文件)。
- 建立连接:在“Devices”选项卡中,选择“ChainedFPGA”协议,点击“Connect”,选择Arduino对应的串口。如果连接成功,软件界面会与硬件同步。
- 校准流程:
- 将一个小型、完好的超声波接收换能器(或一个已知极性的发射换能器作为接收器)连接到示波器的另一个通道。
- 在Ultraino软件中,选中第一个换能器图标,按‘W’键打开它。
- 将接收换能器紧贴被测换能器放置。此时示波器上应同时看到参考方波(通道1)和接收到的正弦波(通道2)。
- 目标:调整软件中该通道的相位偏移值(按‘H’/‘J’微调,按‘K’翻转180度),使得参考方波的上升沿与接收正弦波的峰值点对齐。这保证了所有换能器在发出声波时,在空间某点的波前是同步的。
- 按‘M’键切换到下一个换能器,重复此过程,直到完成全部256个。软件会自动保存每个通道的校准值。
5.2 将校准值固化到FPGA中
软件校准很方便,但每次使用都需要电脑和软件。对于需要独立工作的装置,可以将校准值“烧死”进FPGA。
- 导出校准数据:在Ultraino中完成校准后,导出校准文件。文件里包含了每个通道的相位偏移值。
- 修改FPGA源码:在Quartus工程中,找到负责分配相位的模块(如
Distributor.v或类似)。将导出的256个相位偏移值,以常数数组的形式替换掉原来的默认值(通常是全零)。 - 重新编译与生成固化文件:这个过程非常耗时,可能需要30分钟到1小时。编译成功后,你会得到一个
.sof文件。但FPGA的配置存储器是掉电易失的,我们需要将其转换为可烧录到配置Flash中的.jic文件。 - 生成并烧录JIC文件:在Quartus中打开“File” -> “Convert Programming Files”。选择输出文件类型为
.jic,配置器件选择EPCS16,FPGA型号选择Cyclone IV E: EP4CE6。在“Input files to convert”部分,添加刚才生成的.sof文件。点击“Generate”生成.jic文件。最后,使用Programmer工具,将这个.jic文件烧录到FPGA核心板的配置Flash中。此后,一上电,FPGA就会加载带有校准信息的配置,无需软件干预。
6. 核心应用实现与调试
一切就绪,现在可以探索这个相控阵的神奇应用了。
6.1 单板声悬浮:创造静态声阱
这是最直观的应用。你需要一个声学反射面,比如一块光滑的亚克力板或木板。
- 设置:将阵列板面朝下,平行放置在反射面上方,距离约为16厘米(这个距离接近最佳焦距,可根据公式调整)。在Ultraino软件中,加载单板仿真文件。
- 创建焦点:在软件的3D视图中,点击反射面(软件中通常显示为一个“切片”),你点击的位置就会出现一个焦点标记。确保“连接硬件”和“启用发射”的选项被勾选。
- 悬浮颗粒:使用干燥的聚苯乙烯泡沫球(直径0.5-1mm)或小水滴。从侧面轻轻吹送或滴落颗粒到焦点附近。如果一切正常,你会看到颗粒被稳定地捕获在焦点位置,并可能缓慢旋转。你可以用鼠标拖动焦点,颗粒也会随之移动。
- 参数调节:悬浮的稳定性取决于焦点声压的强度。在软件中可以调节发射信号的占空比(Duty Cycle)来改变输出功率。功率太大会将颗粒吹飞,太小则无法捕获。需要耐心微调。
6.2 双板3D悬浮与多焦点操控
单板悬浮是二维的,颗粒被“钉”在反射面上方。要实现真正的三维悬浮,需要两个阵列相对放置。
- 硬件连接:你需要制作第二块阵列板(作为“次级板”)。两块板通过支架面对面放置,间距在10-20厘米之间可调。两块板的FPGA需要以“主-从”模式连接。通常,主板的串口输出连接到从板的串口输入,实现级联控制。
- 软件配置:在Ultraino中加载
twoOpposedArrays.xml仿真文件。在连接设备时,先连接主板的串口,然后点击“Con Extra”按钮连接从板的串口(可能需要根据评论区的代码修复Bug)。 - 创建三维声阱:在软件中,你可以分别在顶部和底部阵列的声场中设置焦点。当两个焦点在三维空间中精确重合时,会形成一个三维的声压梯度陷阱,将颗粒稳定悬浮在空中,不与任何物理表面接触。
- 多焦点与动态控制:Ultraino软件支持创建多个焦点,并让它们按照预设轨迹运动。你可以编程让多个颗粒同时悬浮并跳舞。这涉及到更复杂的声学算法(如声学全息图或时间反演),FPGA需要实时计算每个换能器到每个焦点的距离差并修正相位。
6.3 空中触觉反馈的实现
让皮肤感觉到“无形”的声波,原理是利用声辐射压力对皮肤表面的周期性按压。
- 调制原理:单纯的40kHz超声波人耳听不见,皮肤也感觉不到。需要对其进行幅度调制。例如,用200Hz的低频信号去开关40kHz的超声波束。这样,在焦点处就会产生200Hz的声压变化,皮肤就能感知为振动。
- FPGA实现:项目提供了专门的触觉反馈FPGA代码。它并非简单地全局调制,而是采用了一种“顺序扫描”的策略。即快速地在不同换能器子集之间循环切换,使得在焦点处合成的声压呈现出低频调制效果,但同时让整体的可听噪声(由非线性效应产生)最小化。你需要烧录这个专门的固件。
- 体验:将手放在阵列前方,在软件中创建一个焦点并移动到手掌位置。开启触觉模式,你就能感觉到一个清晰的、局部的振动点。通过控制焦点的移动路径,可以在皮肤上“画出”简单的图形或字母。
6.4 定向扬声器功能
这是基于“参量阵”原理。当两个高频(如40kHz)声波在空气中以足够高的强度传播时,由于空气的非线性特性,它们会产生和频(80kHz)与差频(0Hz,即直流,和可听频段,如1kHz)。差频信号(可听声)会沿着原高频声束的方向传播,从而具有极强的方向性。
- 实现方法:在FPGA中,你需要对40kHz的载波信号进行双边带调制。例如,要产生1kHz的声音,你需要让换能器同时发射40kHz和(40kHz ± 1kHz)即39kHz和41kHz的信号。这三者在空气中相互作用,最终会产生可听的1kHz声音,并且其波束角非常小。
- 应用:你可以让焦点沿着一条路径快速扫描,并通过动态改变调制信号,使得在不同位置产生不同的可听声。这样,只有站在声束路径上的人才能听到声音,旁边的人则几乎听不见,创造出一种“音束”或“定向私密语音”的效果。
7. 高级扩展与问题深度排查
在基础功能实现后,你可以尝试更多可能性,并需要准备好应对各种复杂问题。
7.1 使用ESP32实现脱机控制
依赖PC运行Ultraino软件限制了装置的便携性。你可以用ESP32微控制器来替代PC。
- 硬件连接:ESP32通过串口与主FPGA板通信。同时,可以从主板的18V电源轨通过一个DC-DC降压模块(如LM2596)为ESP32提供5V电源。
- 功能实现:在ESP32上编程,实现一些预置的焦点运动模式(如螺旋线、立方体顶点)、简单的悬浮控制逻辑,甚至可以通过Wi-Fi接收来自手机或电脑的指令,动态改变焦点位置。项目Github仓库提供了ESP32控制器的示例代码,这是一个很好的起点。
- 优势:这使得整个系统可以嵌入到独立的艺术装置或交互展品中,无需连接笨重的电脑。
7.2 多板级联扩展声场
单个16x16阵列的声场范围和焦点强度有限。通过级联多个阵列板,可以扩大有效作用区域。
- 串联与并联:
- 串联(Chained):如之前所述,一块主板的输出控制下一块主板。优点是只需一个串口控制,同步性好。缺点是数据链路过长,可能增加延迟。
- 并联(Parallel):每块板子都通过一个独立的USB转串口模块连接到电脑。在Ultraino软件中,你需要为每块板子建立一个连接(使用
SimpleFPGA协议)。软件需要计算每个焦点相对于每块板子的相位,并分别发送指令。这要求软件和算法能够处理多设备协同。
- 声场拼接:多块板子可以排列成更大的平面,甚至曲面。在软件中,你需要将每块板子的物理位置和朝向作为参数输入,软件会统一计算全局坐标系下的焦点,并分解到每块板子。
7.3 系统性故障排查指南
在调试过程中,你几乎一定会遇到各种问题。以下是一个系统化的排查思路:
| 问题现象 | 可能原因 | 排查步骤 |
|---|---|---|
| 上电后电流异常大(>0.5A)或电源发烫 | 电源短路;驱动芯片损坏短路。 | 1. 立即断电。2. 用万用表仔细检查5V和18V对地电阻,应大于几十欧姆。3. 检查所有MIC4127芯片,触摸是否有异常发热点。4. 使用热成像仪或冷却喷雾定位短路芯片。 |
| FPGA编程失败,JTAG链无法识别 | USB-Blaster驱动问题;JTAG连接线接触不良;FPGA核心板未供电。 | 1. 确认Quartus Programmer中已选择正确的USB-Blaster。2. 重新拔插JTAG排线,检查有无弯针。3. 确保FPGA核心板在编程时已接通5V电源(可通过核心板LED判断)。4. 尝试更换USB-Blaster或USB口。 |
| 部分通道无输出,但对应595输出正常 | 该通道的MIC4127驱动器损坏或焊接不良;去耦电容短路。 | 1. 用示波器测量MIC4127的输入脚(来自595),确认有3.3V方波。2. 测量MIC4127的输出脚,应为高电平(接近18V)或方波。若无,更换该驱动器。3. 检查该驱动器旁的0.1μF电容是否短路。 |
| 整行或整列通道不工作 | 为该行/列提供数据的74HC595损坏、虚焊或级联信号断线。 | 1. 检查该595的电源(5V)和地。2. 用示波器检查其数据输入(SER)、时钟(SRCLK)、锁存(RCLK)信号是否正常。3. 检查其输出使能(OE)引脚是否被错误拉高(应接地)。4. 检查其到下一颗595的级联输出(Q7‘)是否连通。 |
| 软件能控制部分通道,但控制逻辑混乱(如打开A通道,B通道响应) | 74HC595的级联顺序在PCB设计或FPGA代码中定义错误;FPGA引脚分配文件(.qsf)有误。 | 1. 核对原理图,确认595的级联顺序(SER -> QA...QH -> QH’ -> 下一颗SER)。2. 核对FPGA代码中,生成移位数据的逻辑是否与硬件连接顺序匹配。这是一个非常棘手的逻辑错误,需要仔细对照。 |
| 悬浮不稳定,颗粒容易掉落 | 焦点功率不足;环境气流干扰;反射面不平整或吸声;换能器相位未校准好。 | 1. 提高18V电源电压(如升至12V),注意散热和电流。2. 在安静无风的环境下操作。3. 使用光滑、坚硬的反射面(如玻璃、大理石)。4. 重新进行精细的相位校准,确保所有通道同步。5. 尝试在软件中稍微增加焦点大小(声束宽度)。 |
| 双板模式中,其中一块板无反应 | 主从板连接线错误;从板FPGA固件错误(应烧录Secondary固件);Ultraino软件中多板连接配置错误或存在Bug。 | 1. 检查主板的串口输出(TX)是否连接到从板的串口输入(RX)。2. 确认从板烧录的是SecondaryNoCalib.jic文件。3. 参考项目评论区关于“Con Extra”按钮Bug的修复方法,修改Ultraino的Java源代码。 |
一个真实踩坑记录:我曾遇到一个诡异问题,悬浮焦点总是偏离鼠标点击位置几厘米。排查了很久,最终发现是Ultraino仿真文件中定义的阵列物理尺寸(换能器间距)与我实际制作的PCB尺寸有微小出入。软件根据这个尺寸计算波程差,尺寸错了,焦点位置自然就错了。务必确保仿真文件中的pitchX和pitchY参数(换能器中心间距)与你PCB的实际情况完全一致。
构建这样一个超声波相控阵系统是一场充满挑战的旅程,它横跨了电路设计、精密焊接、嵌入式编程和声学物理。每一个环节的失误都可能让最终效果大打折扣。但当你第一次看到泡沫球违背重力悬浮起来,或者感觉到凭空出现的触感时,那种成就感是无与伦比的。这个项目不仅是一个酷炫的装置,更是一个强大的学习和研究平台。你可以在此基础上尝试更复杂的多焦点算法、探索不同的调制方式用于触觉渲染,或是将其集成到更大的交互艺术项目中。硬件开源的力量在于,你可以站在前人的肩膀上,去触碰那些曾经只存在于论文中的未来科技。