首页/新闻资讯/正文详情

3D打印从原型到量产:金属增材与桌面机实战解析

发布时间:2026/9/24 21:46:41 来源:云帆数科 栏目:资讯中心
3D打印从原型到量产:金属增材与桌面机实战解析
先看这三条新闻第四条可能大家没怎么注意“京东亦庄科学教室引入3D打印机”。把它们放在一起看其实特别有意思——宝马的WAAM电弧增材制造量产、OPPO Find N6用铂力特3D打印铰链、科学教室放桌面级3D打印机这根本不是一个行业的事但它们都在说同一件事3D打印正在从“实验室里的原型工具”变成“工厂里的量产设备和教室里的教育工具”而且这个拐点大概率就是这一两年。我之前在增材制造行业混了挺久从金属打印设备到桌面机都折腾过。今天这篇就把这三条新闻拆开来讲顺便把最近后台问得最多的几个实操问题一起解决掉ESP8266怎么做无线打印、3D打印机械臂毕业设计怎么落地、打印眼镜模型该旋转多少度。文章里面既有技术逻辑也有能直接抄作业的参数和步骤。1. 三条消息其实指向同一个信号金属3D打印开始“上桌吃饭”很多人对3D打印的印象还停留在“打印个玩具”或者“做个手板”。但宝马、OPPO、铂力特这轮动作直接把3D打印拉到了“量产制造”级别。这背后的技术逻辑和行业变化值得好好捋一捋。1.1 宝马2027年WAAM量产为什么要选电弧而不是激光先说WAAM全称是Wire Arc Additive Manufacturing中文叫电弧增材制造原理跟焊接非常接近金属丝材作为原料电弧作为热源一层一层地融化、堆积最终长成一个金属零件。宝马计划2027年用WAAM量产零部件很多人第一反应是“为什么不用激光铺粉那种金属打印”答案其实很现实看零件大小和成本。激光粉末床熔融LPBF也就是常见的SLM精度高能做非常复杂的内部流道但沉积速率很慢一般只有每小时几十克到一两百克而且设备腔体尺寸有限成本也高。WAAM的沉积速率可以达到每小时几公斤甚至更高没有腔体尺寸限制能做飞机起落架、火箭燃料箱级别的大件。代价是精度低成形后表面粗糙通常需要再走一道CNC加工。宝马选择WAAM不是因为它是新技术而是因为它能在“大尺寸结构件”这个场景里把材料利用率、生产周期和成本控制到量产可接受的程度。这里有个容易忽略的细节WAAM不是“一条丝走到底”那么简单。电弧的输入热量非常大零件在堆积过程中会有明显的热积累层间温度控制不好残余应力会很大甚至直接开裂。所以工业级的WAAM设备通常配备红外测温或者热电偶通过算法控制层间冷却时间有的还会加装轧制机构在每层堆积后施加压力来细化晶粒。对比项WAAM电弧增材LPBF/SLM激光铺粉原料形态金属丝材金属粉末沉积速率每小时数公斤级每小时几十到几百克成形精度较低通常±0.5mm以上较高可控制在±0.1mm内零件尺寸几乎不受限受腔体尺寸限制后处理需求通常需要CNC精加工部分场景可直接使用典型场景大型结构件、毛坯替代复杂异形件、精密小件所以宝马这条新闻本质上是在告诉我们增材制造已经不再“高不可攀”了它开始跟传统锻造、铸造在量产线上正面竞争。这对国内做WAAM设备和工艺的企业来说也是个强烈信号——这项技术从航天的“金字招牌”往汽车方向走路径已经明确。1.2 OPPO铰链背后的铂力特手机里藏着的金属增材OPPO Find N6采用铂力特3D打印铰链这条新闻的含金量很高但很多人没意识到。铂力特是国内金属3D打印设备与服务的老牌厂商它的设备在航空航天领域用得非常广如今被消费电子大厂采用说明金属打印已经在“高附加值精密零件”这个方向上形成了稳定的量产能力。铰链这东西为什么适合3D打印因为折叠屏手机的铰链结构极其紧凑零件壁厚可能只有0.6到1毫米还要承担几十万次的开合疲劳寿命。如果用传统CNC加工材料去除率高达80%以上成本高、周期长如果用MIM金属注射成形开模周期和模具成本又是大问题。3D打印钛合金则可以做到近净成形小批量迭代时不需要开模设计调整非常灵活。但手机铰链对金属打印的要求比航天零件还要“苛刻”。航空航天零件看强度和耐温手机零件除了强度还要看表面粗糙度、尺寸一致性、疲劳寿命。钛合金打印之后如果表面有微小缺陷开合几十万次就可能出现裂纹。所以铂力特这类厂商真正的护城河不只是打印设备还包括整套工艺参数、粉末材料、后处理工艺比如热等静压、化学抛光的协同。OPPO敢在旗舰机上用说明这条产线的良率和稳定性已经通过了消费电子级别的验证。1.3 京东科学教室的桌面机3D打印正在变成“基础教育”第三条消息看起来最普通——京东亦庄科学教室引入3D打印机。但放在这个时间点看它代表的是3D打印从专业领域向基础教育渗透的趋势。现在的科学教室已经不再是摆几个火箭模型就完事了而是让孩子真的动手设计、建模、打印、迭代这实际上是工程思维和数字化设计思维的最早期训练。桌面级FDM打印机在教育场景里最大的价值不是打印精度而是“快速试错”。孩子设计了一个小车打印出来装上电机跑起来发现轮距不对回到软件里改一下再打印一版二十分钟后就能拿到新零件。这种“设计—打印—测试—修改”的循环才是3D打印在教育里最不可替代的东西。它不是教孩子“用工具”而是教孩子“迭代”。2. WAAM、钛合金铰链与桌面机核心技术点逐个拆新闻看完了接下来是硬核部分。三条新闻对应三条技术线WAAM的工艺控制、消费电子钛合金铰链的打印难点、桌面机从玩具到工具的关键升级。逐条拆解讲清楚原理和注意事项。2.1 WAAM工艺的关键参数与控制思路WAAM的核心矛盾在于“快和准不可兼得”。沉积速率要是拉得高熔池就大层与层之间的温度和几何形状就不稳定最后零件的尺寸误差和内部缺陷都会增加。实际生产中有几个参数非常关键热输入控制电流和电压决定了电弧能量也决定了丝材融化速度。热输入过高熔池流动剧烈容易产生飞溅和气孔热输入过低层间结合不好会出现未熔合缺陷。常见做法是采用脉冲电弧通过周期性降低电流让熔池在间隙期稍微冷却从而控制热积累。路径规划堆积路径决定残余应力分布和变形趋势。大面积平面如果一直朝一个方向走应力会往终端累积导致翘曲。工业软件里通常会设置“岛形”路径把大面积分成小块正反交替堆积应力就被分散掉了。层间温度控制这是新手最容易忽视的点。电弧的热输入很大如果图层层连续堆积不停温度会越来越高成形件整体变成“热软”状态变形非常严重。可靠的方案是加装热电偶或红外测温设定层间温度上限比如200℃达到温度就等冷却或者用风扇强制冷却。惰性气体保护电弧在高温下会把空气中的氧和氮带入熔池造成氧化夹杂和氮气孔。工业上通常采用局部保护罩在熔池周围喷氩气有些复杂结构甚至要放进充氩的密封舱体。WAAM还有一个天然短板成形精度。它做出来的零件更像“毛坯”表面条纹明显尺寸余量通常要留2到5毫米然后通过CNC加工到最终尺寸。所以选WAAM时不要把它和“净成形”画等号这是工艺选型时最容易踩的坑。2.2 消费电子钛合金铰链的打印难点金属铰链的打印跟大型结构件是两套完全不同的逻辑。它用的是LPBF工艺激光在粉末床上逐层扫描每次铺粉厚度可能只有30到50微米。零件小、精度高、结构复杂但挑战也集中在这几点第一薄壁结构的变形控制。铰链零件壁厚只有不到1毫米打印时激光扫描产生的热应力很容易把薄壁拉变形。解决办法是在设计阶段加辅助支撑打印后再去除或者调整扫描策略采用分区扫描、跳层扫描让热量分布更均匀。壁厚太薄时甚至要主动加厚到可打印范围再通过后处理减薄这个取舍在产品设计阶段就要定下来。第二微小孔洞和内部结构的粉末清理。铰链上有转轴孔、润滑槽、装配定位结构打印完成后残留在内部粉末如果清理不干净轻则影响装配重则在振动环境下掉出粉末颗粒直接废掉整台设备。常见的清理手段包括人工吹粉、超声波清洗、真空吸尘等复杂内部结构还得设计专门的排粉通道否则激光打印完的零件根本没法用。第三疲劳性能。手机铰链开合寿命要求通常在20万次以上对材料内部缺陷非常敏感。打印件的内部气孔、未熔合粉末就是天然的疲劳裂纹源。所以消费电子级金属打印件很多都要经过热等静压HIP处理在高温高压下让内部孔隙闭合材料致密度才能达到锻造件水平。2.3 教学用桌面机从打印“样子货”到打印“能用的东西”科学教室里的桌面级打印机跟工业机最大的区别就是没有专职操作员。所以教育场景对设备的要求不是“上限高”而是“下限稳”。我接触过不少学校和培训机构发现能真正长期用下来的基本都有这几个共同点一是操作尽量傻瓜化。自动调平、断料检测这些功能不是噱头是老师能脱离技术文档独立上课的前提。二是模型来源要丰富。最好有现成的模型库能直接下载打印不需要每个人都从建模开始。三是安全性和稳定性。机器最好全封闭、加热温度可控、外壳不烫手——毕竟教室里坐的可能是小学生。但我也要提醒一句如果只停留在“下载模型—切片—打印”这个循环里那3D打印机在教室里最终会变成一台“高级玩具打印机”。真正有价值的是让孩子参与建模哪怕是用最简单的Tinkercad拖拽积木块也能培养三维空间思维。这也是我个人觉得教育场景里的3D打印核心是课程设计而不是设备本身的原因。3. 从新闻到实操ESP8266无线打印、机械臂毕业设计、眼镜摆放角度新闻毕竟是别人的事自己动手才是真的。最近后台一堆人问ESP8266怎么给3D打印机加无线打印、3D打印机械臂毕业设计从头到尾怎么做、打印眼镜模型旋转多少度合适。这三个问题看着散其实都是桌面级3D打印的经典实操场景顺着一条线全讲透。3.1 给3D打印机加装ESP8266实现无线打印先说结论ESP8266确实可以让3D打印机支持无线打印而且成本非常低几十块钱就能搞定。核心思路是让ESP8266充当“WiFi转串口”的桥梁——打印机主板通过串口接收G代码ESP8266连上家里的WiFi电脑或手机通过WiFi把文件发给ESP8266ESP8266再通过串口转给打印机主板。硬件上需要这些东西一块ESP8266开发板常见的NodeMCU或者Wemos D1 mini都行一根USB线烧录固件用打印机主板上的串口接口或者USB转TTL模块如果主板串口的电平是5V需要加一个电平转换模块防止烧坏ESP8266软件方案我推荐用ESP3D这个开源固件。你不用自己写代码直接刷进去就行。流程大概是下载ESP3D固件根据你的开发板型号选对应的bin文件用esptool或乐鑫的Flash Download Tools烧录到ESP8266把ESP8266的TX接到打印机主板的RXRX接到主板的TXGND共地手机连上ESP8266开的热点或者把ESP8266配到家里的WiFi网络浏览器访问ESP8266的IP地址打开Web控制台通过Web页面上传G代码文件、实时控制打印机、查看温度实际操作中最容易出问题的不是刷固件而是接线。ESP8266和主板之间的TX/RX是交叉的TX接RX、RX接TX。而且很多打印机主板串口是5V电平ESP8266是3.3V电平直接接容易导致ESP8266烧掉甚至会反向给主板灌电压导致主板重启。稳妥起见加一个逻辑电平转换模块成本几块钱但能省很多事。另外还有一个不算技巧的技巧ESP8266工作在2.4GHz频段如果家里路由器开了双频合一建议把2.4G和5G分开或者直接把打印机挂在2.4GHz访客网络上信号更稳定不然经常会出现“连得上但掉线”的问题。3.2 3D打印机械臂毕业设计怎么落地3D打印机械臂是毕业设计里的常青树。很多机械相关专业的学生都在做这个题目但对于没接触过增材制造的人来说最容易翻车的往往不是控制和编程而是打印出来的结构件“装不上、拧不动、断得快”。我的建议是先算后打别上来就挑个漂亮模型。确定了最大负载之后算一下各个关节需要的驱动力矩。公式很简单力矩 力臂长度 × 末端负载重量再加上关节本身的重量。比如力臂20厘米、末端负载500克那肩关节至少要承受10公斤·厘米的力矩再乘一个1.5倍安全系数就得选额定扭矩15公斤·厘米以上的舵机或带减速的步进电机。打印结构件时有几个参数值得注意填充率受力件底座、大臂、小臂建议40%以上甚至可以到60%配合2到3层外壳强度会明显好于默认的20%填充壁厚承力位置至少留3到4毫米以上的壁厚太薄了打出来跟纸片一样拧螺丝直接会裂轴孔配合打印孔的公差控制很难建议实际直径比轴径放大0.3毫米左右装配时会更顺畅。如果发现太松可以在孔内加一层PTFE胶带或者套一个铜套组装阶段的顺序也很重要。我见过很多学生先把整条机械臂装好再走线结果线把舵机的活动卡死。正确的做法是每装一个关节就单独调试一次舵机角度确认运动范围正常再装下一节。尤其要注意舵机的中位角度先校准好再装结构件不然装机后会出现“所有关节都偏了十几度”的怪问题。控制方案上最简单可靠的是Arduino Mega PCA9685舵机驱动板16路PWM信号够用且稳定。上位机可以用Python写一个简单的串口控制界面通过发送角度指令来控制机械臂运动。如果想加上位机视觉识别、逆运动学那题目就自然从“机械结构”延伸到“智能控制”了毕业设计的评分上限会高不少。3.3 打印眼镜模型旋转角度应该怎么定“3D打印眼镜时旋转多少度合适”这个热词很多人可能不理解。其实说的是FDM打印眼镜框时模型在打印平台上的摆放方向。这不只是美观问题直接决定了你镜框能不能打出来、强度够不够。眼镜框的结构有个特点镜腿是细长伸展的镜圈是环形的。如果直接平放在打印平台上镜腿会悬空需要大量支撑拆支撑的时候很容易把细腿弄断而且贴合镜片的那一面也会留下难看的支撑痕迹。如果整个模型竖着放镜片区域很容易产生大角度悬垂越往上越难打。我实际测试下来的经验是把眼镜模型在平台上侧放倾斜大概45度是一个比较稳妥的起点。这个角度下镜框轮廓和镜腿都能获得不错的表面质量层纹方向也大致沿着镜框的环向方向强度比平放好不少。具体操作时先在切片软件里预览一下支撑范围观察哪些位置会产生悬垂。如果镜圈内侧悬垂角度过大可以适当增加支撑或者把角度调整到60度左右让镜圈区域更平缓。还需要注意打印眼镜时材料的选择会影响角度策略。PLA材料收缩小、打印难度低但对温度敏感夏天放车里容易变形PETG韧性好适合日常佩戴但打印时更容易拉丝尼龙材料强度高但吸湿严重需要烘干箱配合而且打印时翘边风险大。选材料时不必追求“最高级”而是看你的使用场景。如果只是做个好看的浏览模型PLA完全够用如果想真正戴着出门PETG更靠谱。另外还有个经常被忽略的细节眼镜框上的铰链位置。打印完成后要装螺丝如果孔位设计得太贴近层纹方向拧螺丝时容易崩裂。解决办法是打印时给铰链孔位置上强化层或者后期用热熔铜螺母嵌进去强度会好很多。4. 常见问题速查与避坑实录不管你是玩桌面机还是搞工业机有些问题几乎人人都遇过。下面这些是我这些年实操中高频出现的情况整理成一张速查表方便你打印出来贴在机器旁边。问题现象最常见原因处理办法首层不粘底板Z轴偏移过大、热床温度偏低、平台有油污重新调平喷头与底板间隙控制在0.1mm左右PLA热床55-60℃PETG要65-70℃用酒精或清洁剂擦平台拉丝严重回抽距离不足、打印温度偏高、耗材受潮增大回抽距离直驱1-2mm远程3-5mm降低打印温度5-10℃换干燥耗材或烘干翘边、脱板环境温度低、无裙边/底边、材料本身收缩大给打印区域加围挡使用Brim裙边增加附着面积ABS等材料建议用磁吸柔性板层错位皮带松动、打印速度过快、电流不稳检查并张紧X/Y皮带降低加速度设置检查主板散热打印件表面有“小疙瘩”喷嘴堵塞、回抽时进入空气更换喷嘴或做冷抽清洁回抽距离不要过大无线打印频繁掉线ESP8266供电不足、波特率不匹配、2.4GHz频段干扰改用独立5V电源给ESP8266供电检查串口波特率是否与固件设置一致路由器关闭双频合一我再补几个不常被写进文档的体验第一FDM打印机的“铁三角”顺序是先调平、再定温度、最后才调速度。很多人一上来就调速度打出来的东西各种毛病其实根子都是前两步没做好。第二耗材防潮比选品牌重要。同样一卷PLA在南方潮湿天气放一个月打印质量能肉眼可见地下降。我习惯在耗材箱里放干燥剂打印前测一下耗材直径偏差超过0.05mm就直接换。第三遇到问题先记录再改参数。打印失败的件别急着扔看看是哪一层开始出问题很多时候问题根源在切片软件里而不在机器上。还有一个容易踩的坑是关于模型旋转角度的。有人会觉得“只要切片软件能预览出来就一定能打出来”其实预览只是一个理论模拟。真实打印中温度、材料收缩、环境气流都会影响结果特别是细长结构件最好打印之前就多打一版小比例验证件确认尺寸和稳定性了再上最终模型。这个习惯在大尺寸打印时尤其重要。根据我自己的经验桌面级3D打印最大的门槛不是设备而是调试的耐心。机器本身很便宜真正的学习成本在于你怎么理解材料、温度、速度、结构之间的关系。每次失败都是信息量很大的反馈记录下来比盲目调参数有效得多。5. 三条新闻之外我更想说的一点经验把宝马、OPPO、京东教室这三件事放在一起看你会发现3D打印已经不再是一个“酷炫概念”它正在以三种完全不同的姿态进入现实在工厂里它是能跟锻造、铸造抢量产订单的制造工艺在手机里它是让折叠结构变得更可靠、更轻薄的工程方案在教室里它是培养下一代工程师思维的基础教具。我个人的体会是做3D打印这行不要被“新技术”三个字冲昏头脑。WAAM再好它也得解决热应力、精度、后处理这些老问题桌面机再便宜它也离不开材料、温度、调平这些基本功。技术路线可以不断翻新但底层逻辑从来没变你加工的始终是真实材料你要做的永远是在速度、精度、成本之间找到那个平衡点。理解了这一点不管是看新闻、选设备还是自己做设计都不容易跑偏。最后再分享一个小技巧不管你用哪款3D建模软件养成保存“设计版本”的习惯——就是每改一版就另存一个带日期的文件千万别覆盖老版本。打印失败太常见了但如果有历史版本你永远有机会快速回退到上一版继续调而不是从零重画。这个习惯帮我省下的时间比我买过的所有耗材都值钱。

相关推荐

Python铁路客货运量时序预测:从SARIMA到LSTM实战
Python铁路客货运量时序预测:从SARIMA到LSTM实战

简介:面向毕业设计、期末大作业及课程设计等实践场景,这套围绕铁路货运量与客运量数据的时序建模预测方案,提供完整的Python源代码、训练好的模型及配套数据集。资源共50个文件,核心包括17个Python脚本、4个R脚本,以及… · 2026/9/24 21:46:41

大模型推理性能优化:从TLB Miss到Linux大页配置实战
大模型推理性能优化:从TLB Miss到Linux大页配置实战

刚接手一个推理服务性能优化时,我被一个现象卡了整整三天:CPU 使用率已经冲到 95% 以上,GPU 利用率却只有 40% 左右,QPS 死活上不去。perf 一抓,发现系统把大量时间花在了内存地址翻译上,dTLB-load-misses … · 2026/9/24 21:46:41

快速排序实战避坑指南:分区、pivot与栈管理
快速排序实战避坑指南:分区、pivot与栈管理

1. 快速排序不是“快”在名字上,而是快在分治逻辑里很多人第一次看到“快速排序”这四个字,下意识觉得:哦,它比冒泡快、比插入快,所以叫快速排序。但实际翻开源码或手推过程时才发现——它中间那几轮递归调用&#xff… · 2026/9/24 21:46:35

Python代码格式化工具Black:统一风格、减少争议的工程化实践
Python代码格式化工具Black:统一风格、减少争议的工程化实践

1. 为什么你的Python代码需要一台“无情的格式机器”先说个真实场景。你肯定遇到过:Git提交记录里一半的改动都不是业务逻辑,而是同事把单引号换成了双引号,或者在函数参数后面多加了一个空格。代码评审本来该聊性能、聊架构、聊边界条件&… · 2026/9/24 22:24:17

Java线程状态转换与内存模型:从原理到jstack实操
Java线程状态转换与内存模型:从原理到jstack实操

很多Java开发者学到这里,都会有一种“好像懂了,但一深究就露馅”的感觉。线程状态转换和Java内存模型其实属于并发编程的“底层地基”,面试必考,排查线上问题也绕不开。但市面上讲这块的资料,要么是枯燥的官方文档翻译… · 2026/9/24 22:24:17

字符串处理全指南:从内存原理到C/Python/Java高频操作避坑
字符串处理全指南:从内存原理到C/Python/Java高频操作避坑

有一次我在 Bash 终端里不小心贴入了一段从网页复制过来的长字符串,回车后屏幕没有回到正常的$提示符,反而冒出一个>和一个奇怪的else?。我当时以为是终端卡死了,后来才反应过来:字符串里的引号没有闭合,Shell 进入… · 2026/9/24 22:24:17

自聚焦透镜(GRIN Lens)原理、选型与装调实战详解
自聚焦透镜(GRIN Lens)原理、选型与装调实战详解

做光通信和光学模组调试这行时间长了,你会发现工位上总会躺着几种不起眼却特别关键的小元件。圆柱形、端面抛光、长度只有几毫米,乍看像一段普通玻璃柱,但它在光纤准直、CWDM波分复用、内窥镜成像里都是核心角色。我说的就是自聚焦透镜&#… · 2026/9/24 22:24:17

模板代码优化策略:从C++模板到AI提示词的实用指南
模板代码优化策略:从C++模板到AI提示词的实用指南

做技术的人,几乎每天都离不开“模板”这两个字。C里写模板类和模板函数,前端套Bootstrap后台管理模板,Java后端用poi-tl生成Word报价单,算法竞赛用树状数组模板,视觉工程师在Halcon里建模板匹配,现在连AI提… · 2026/9/24 22:24:17

低显存跑通LTX2.3全功能:ComfyUI精简流部署与显存优化实战
低显存跑通LTX2.3全功能:ComfyUI精简流部署与显存优化实战

能玩转LTX2.3,并且把显存压在低水位还跑得动全功能的人,估计都有过一段“看着进度条走一半就爆显存”的崩溃经历。LTX2.3这个模型,在视频生成圈里口碑一直很两极:一边是它能同时搞定文生视频、图生视频、首尾帧、视频编辑和局部重… · 2026/9/24 22:24:11

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程
基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为… · 2026/9/24 0:00:13

1D-CNN时间序列建模实战:从Conv1d原理到工业落地
1D-CNN时间序列建模实战:从Conv1d原理到工业落地

简介:面向时间序列数据建模的一维卷积神经网络完整实现,适合深度学习入门者及需要快速验证时序模型的研究者,能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小,只有3KB,内含3个Python脚… · 2026/9/24 0:00:26

柔软的L:汉语语流中被忽视的舌肌张力控制
柔软的L:汉语语流中被忽视的舌肌张力控制

1. 这个“L”不是字母表里的L,而是舌尖上的L最近在几个方言群和语音教学社群里,反复看到有人发一句:“也说字母L:柔软的长舌”。初看以为是英语发音课笔记,点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码