当前位置: 首页 > news >正文

从零打造3D打印井字棋机器人:Arduino与舵机运动控制实战

1. 项目概述与核心价值

如果你正在寻找一个能让孩子(或者你自己)真正动手,把代码、电路和机械结构结合起来,亲眼看到程序如何驱动一个实体机器人完成任务的入门项目,那么这个3D打印的井字棋机器人TICO绝对是一个绝佳的选择。它不像那些昂贵的成品机器人套件,更像一个从零开始的“手工作坊”项目,每一个螺丝、每一行代码都掌握在你手里。项目本身并不复杂,核心就是用三个舵机控制一支笔,在一块九宫格上画“X”和“O”,并实现简单的人机对战逻辑。但正是这种“麻雀虽小,五脏俱全”的特性,让它成为了理解机器人学基础、Arduino编程以及开源硬件项目开发流程的完美载体。

这个项目的核心价值在于它的“全栈”体验。你将从3D建模文件开始,打印出所有机械结构件,然后像拼装精密模型一样,把舵机、Arduino主板、显示屏等电子元件组装起来。最后,通过编写和上传代码,赋予这个静态的机械结构“灵魂”,让它能响应你的遥控指令,自主决策并执行画图动作。整个过程涵盖了从数字设计到物理实体的“创客”核心流程,对于培养工程思维、解决问题的能力和耐心都大有裨益。特别适合家长带着孩子一起完成,或者作为学校STEM社团、创客空间的入门实践课。

2. 核心硬件选型与原理剖析

2.1 主控大脑:为什么是Arduino Nano?

TICO选择了Arduino Nano作为主控芯片,这是一个非常经典且明智的选择。对于这类教育机器人项目,主控的选型需要平衡性能、易用性、成本和尺寸。

性能与接口考量:井字棋机器人的核心任务是接收输入(红外遥控或串口指令)、处理简单的游戏逻辑、并输出控制信号给三个舵机和一块小屏幕。这些任务对计算能力要求极低,但需要稳定、精确的定时器来控制舵机脉冲(PWM),以及足够的数字I/O引脚来连接各个外设。Arduino Nano基于ATmega328P芯片,拥有14个数字I/O口(其中6个可做PWM输出)和8个模拟输入口,完全满足需求。其16MHz的主频也足以流畅运行游戏逻辑和驱动ST7735显示屏。

开发友好性:Arduino生态的核心优势在于其极其友好的开发环境。Arduino IDE简单易用,有海量的库支持,例如控制舵机的Servo库、解码红外信号的IRremote库、驱动显示屏的Adafruit_ST7735库,都经过充分测试,可以大大降低编程门槛。对于教育场景,学生或初学者可以更专注于逻辑实现,而非底层寄存器配置。

尺寸与供电:Nano的板型小巧,非常适合嵌入到TICO这种结构紧凑的机器人底座中。它可以通过USB直接供电和编程,也支持外部5V供电,灵活性很高。相比之下,功能更弱的Uno板型太大,而功能更强的ESP32或树莓派Pico对于这个简单项目来说又显得“杀鸡用牛刀”,且会增加不必要的复杂度和成本。

注意:购买Arduino Nano时,需留意有原版、兼容版以及不同USB芯片(CH340或FT232)的版本。对于本项目,任何兼容版均可正常工作,但若使用CH340芯片的板子,在首次连接电脑时可能需要手动安装对应的USB驱动。

2.2 动力关节:MG90S金属齿轮舵机详解

机器人的“手臂”动作完全依赖于三个舵机。原文推荐使用MG90S金属齿轮舵机,而非更便宜的SG90塑料齿轮舵机,这背后有重要的工程考量。

舵机工作原理:舵机是一种位置伺服驱动器,内部包含一个小型直流电机、减速齿轮组、控制电路和电位器。Arduino通过向舵机信号线发送PWM(脉冲宽度调制)信号来控制其目标角度。脉冲宽度通常在1ms到2ms之间,对应着0度到180度的旋转范围。舵机内部的电路会持续比较目标位置(来自PWM信号)和当前位置(来自电位器反馈),并驱动电机转动直至两者一致,从而实现精确的角度控制。

为什么选择金属齿轮(MG90S)?

  1. 可靠性与寿命:塑料齿轮在反复受力、尤其是存在一定安装误差或卡顿时,容易磨损甚至扫齿(齿轮被打坏)。TICO的机械臂在画图时需要持续、稳定地施加一定压力,金属齿轮能提供更可靠的长期运行保障。
  2. 扭矩与精度:MG90S通常能提供比SG90更大的输出扭矩(约1.8kg·cm vs 1.2kg·cm)。更大的扭矩意味着机械臂运动更稳定,画线更流畅,不易因阻力而产生抖动或位置偏差。金属齿轮的啮合精度也通常更高,回差(齿轮间隙)更小,这直接关系到画图的准确性。
  3. 项目特性:虽然SG90也能勉强驱动,但考虑到这是一个希望稳定运行、反复演示的教育项目,投资一点差价换取可靠性和更好的体验是值得的。金属齿轮舵机在运行时的噪音和发热也通常控制得更好。

舵机角度校准的重要性:在步骤3和步骤6中,反复强调要在特定角度(80度、130度、140度)下安装舵机臂。这是因为舵机的“零位”是机械安装的参考基准。如果安装时舵机处于随机角度,那么代码中servo.write(90)命令将无法让机械臂到达预期的物理位置(比如水平),导致整个运动学计算失效。校准就是为了让舵机的电气零位与机械结构的物理零位对齐。

2.3 交互与感知:红外遥控、按钮与显示屏

TICO设计了多种交互方式,这丰富了项目的可玩性和教学维度。

红外遥控(IR Remote):这是最主要的人机交互方式。其原理是遥控器上的每个按键对应一个特定的编码(如NEC编码),按下时,遥控器内部的LED会以38kHz的频率闪烁,将这个编码发送出去。机器人上的IR接收头(如VS1838B)负责接收并解调这个信号,将编码值通过数字引脚传递给Arduino。代码中集成了IRremote库来解码这些值,并映射为棋盘上的1-9号格子。这种方式直观有趣,让孩子理解无线通信的基本概念。

备用交互:按钮与串口监视器

  • 按钮模块:用于开始游戏或复位,提供了一个简单的物理输入方式。
  • 串口监视器:这是极佳的调试和备用控制手段。通过USB线连接电脑,在Arduino IDE中打开串口监视器,可以直接发送数字1-9来代表落子位置。这在没有红外遥控或想深入理解代码数据流时非常有用。代码中的SERIAL_MONITOR_MODE开关就是为此设计。

TFT显示屏(ST7735):这块小屏幕的作用是提升用户体验和项目完成度。它可以显示游戏状态(轮到谁了)、比分、简单的动画或提示信息。虽然从功能上讲,没有屏幕也能玩(通过串口反馈),但加上屏幕后,机器人显得更加“完整”和生动,能更好地吸引学习者的兴趣。选择ST7735控制器是因为它有成熟的Adafruit_ST7735库支持,且尺寸(如1.44英寸)适合项目。

2.4 供电系统的设计思路

原文明确指出,舵机必须使用外部电源供电,而不能直接从Arduino Nano的5V引脚取电。这是硬件设计中一个至关重要的安全原则。

原因分析:每个MG90S舵机在堵转(卡住)时,瞬时电流可能超过500mA。三个舵机同时工作,再加上Arduino主板和显示屏的功耗,总电流很容易超过1.5A。而Arduino Nano板载的5V稳压芯片(无论USB输入还是Vin输入)的最大输出电流通常只有500mA-1A左右。如果强行从它取电,会导致:

  1. 稳压芯片过载、严重发热甚至烧毁。
  2. 电压被拉低,导致Arduino重启或程序跑飞。
  3. 舵机因供电不足而抖动、无力,无法正常工作。

正确方案:使用独立的电池盒(如3节AA/AAA电池)为舵机供电。电池的正负极直接连接到舵机阵列的电源接口。同时,需要将电池的“地”(GND)与Arduino的“地”(GND)连接在一起,以确保它们有共同的电压参考点。这样,Arduino仅用很小的电流(来自USB或电池经稳压后的电流)驱动信号线,而动力部分由电池直接承担,系统稳定又安全。

3. 机械结构组装与精密调校

3.1 3D打印件的处理与准备

打印质量直接决定了后续组装的顺利程度和最终机器的精度。

材料与参数建议

  • 基座(Base)、升降舵机架等主体结构件:建议使用PLA材料,层高0.2mm,填充率20%-25%。PLA强度足够,打印成功率高,细节表现好。
  • 机械臂(Arms):如原文建议,可使用不同颜色(如橙色)打印,既美观又便于区分左右。机械臂是受力件,建议填充率提高到30%-40%以增加强度。
  • 棋盘(Board):必须使用白色或浅色材料打印,以便于马克笔书写和擦除。表面平整度是关键,打印时务必保证第一层附着良好,避免翘边。
  • 无需支撑:所有模型都设计为无需支撑即可打印,这大大减少了后处理的工作量。确保打印机调平准确,以获得最佳的底面质量。

棋盘表面处理:打印好的白色棋盘,需要用透明包装胶带完全覆盖。这一步至关重要,原因有三:第一,胶带表面非常光滑,接近于真正的白板,马克笔书写流畅,且极易擦除,一擦即净,体验远超裸塑料表面。第二,胶带保护了打印件表面,避免被马克笔墨水渗入或永久染色。第三,成本极低,更换方便。粘贴时需缓慢、均匀,避免产生气泡。

3.2 核心运动机构的组装要点

TICO的运动机构是一个三自由度的串联机械臂:一个舵机负责整体升降(LIFT),两个舵机负责笔尖的左右(LEFT/RIGHT)运动。组装顺序和校准是成功的关键。

步骤3:升降(LIFT)舵机安装——确立Z轴基准

  1. 加工舵盘:对随舵机附送的塑料舵盘进行钻孔和裁剪。这是为了适配自定义的连接件。使用3mm钻头在中心钻孔时务必保持垂直,裁剪后边缘可用砂纸打磨平滑。
  2. 预组装与自由度:用M3x12mm螺丝和尼龙螺母将加工好的舵盘与LIFT连接件 loosely(松散地)连接。切记不要拧紧!这里需要一个“铰链”结构,让连接件能围绕螺丝自由旋转。尼龙螺母有一定的自锁性,调整好角度后轻轻拧紧即可,避免使用金属螺母可能导致的过紧锁死。
  3. 角度校准:这是最易出错的一步。先将LIFT舵机通过杜邦线连接到Arduino,上传一个简单的测试代码(如Servo.write(80)),让舵机转动到80度的位置。在舵机保持通电且锁定在80度状态时,再将舵盘安装到舵机输出轴上,并确保此时LIFT连接件与水平面成90度垂直角(如原文照片所示)。这个90度是后续所有运动计算的几何基准。校准完成后,再用舵机自带的螺丝固定舵盘。

步骤4与步骤6:左右(LEFT/RIGHT)舵机与机械臂安装——确立XY平面

  1. 舵机架安装:将左右两个舵机安装到舵机架上时,注意线缆的朝向,应便于后续整理,避免与运动部件干涉。同样,用螺丝螺母将舵机架与LIFT臂连接时,保持松动的铰链状态。
  2. 机械臂的精密校准:左右机械臂的安装是精度要求最高的部分。
    • 首先,单独组装好左右机械臂(不安装到舵机上),确保各关节转动灵活。
    • 然后,分别将左舵机转到130度,右舵机转到140度(通过临时接线用Arduino控制)。
    • 在舵机保持各自角度的状态下,将左、右机械臂安装到对应的舵机输出轴上。此时,两个机械臂应恰好呈90度夹角(从顶部看,像一个直角尺)。这个90度夹角保证了笔尖的运动轨迹能够正确地映射到棋盘的X和Y坐标上。

实操心得:舵机角度校准是组装的核心难点。一个实用的技巧是,先编写一个简单的校准程序,用Serial.parseInt()从串口监视器读取角度值并驱动舵机转动。这样你可以通过输入数字来微调角度,直到机械臂达到完美的几何位置(90度垂直或90度夹角),然后再记录下这个精确的角度值,用于最终的代码中。原代码给出的130度和140度是设计值,由于3D打印公差和组装误差,你的实际值可能需要微调1-2度。

3.3 笔架与擦除器组装

笔架的设计需要稳固地夹住马克笔,同时允许笔在轻微压力下缩回,以避免戳坏棋盘或笔尖。组装时,确保固定笔的螺丝压力适中,既能夹紧又不压坏笔杆。擦除器部分,将一小块超细纤维布(从白板擦上剪下)用热熔胶粘在3D打印的擦除器头上,效果比直接使用塑料更好。

4. 电路连接与系统集成

4.1 接线图与信号流

将所有电子元件正确、可靠地连接到Arduino Nano是让机器人“活”起来的前提。下表整理了所有连接关系,建议对照此表逐一接线:

元件引脚/接口连接到 Arduino Nano 引脚说明与注意事项
LIFT 舵机信号线(黄/橙)D5控制机械臂整体升降。
电源线(红)外部电源正极**切勿接 Arduino 5V!**接电池盒正极。
地线(棕/黑)外部电源负极 & Arduino GND必须与电池负极、Arduino GND共地。
RIGHT 舵机信号线D6控制笔尖横向(X轴)运动。
电源线外部电源正极与LIFT舵机并联到电池正极。
地线外部电源负极 & Arduino GND同上。
LEFT 舵机信号线D7控制笔尖纵向(Y轴)运动。
电源线外部电源正极与LIFT舵机并联到电池正极。
地线外部电源负极 & Arduino GND同上。
ST7735 TFTCSD10片选信号。
DC (或 AO)D9数据/命令选择。
RESETD8复位引脚,也可接Arduino RESET。
SDA (或 MOSI)D11SPI数据输入。
SCL (或 SCK)D13SPI时钟。
VCC5V接Arduino 5V引脚。
GNDGND接Arduino GND。
IR 接收头信号线 (OUT)D2接收红外信号。库通常指定此引脚。
VCC5V接Arduino 5V。
GNDGND接Arduino GND。
有源蜂鸣器正极 (+)A5可通过PWM控制音调。
负极 (-)GND接Arduino GND。
按钮模块信号线 (S)D4另一脚接GND,模块内部已上拉。
VCC5V接Arduino 5V。
GNDGND接Arduino GND。
外部电源正极 (+)所有舵机电源线3xAA电池盒(约4.5V)。
负极 (-)所有舵机地线 & Arduino GND必须与Arduino共地!

接线核心原则

  1. 电源隔离:动力(舵机)与逻辑(Arduino、屏幕、传感器)电源分离,仅在“地”(GND)处相连。
  2. 信号线唯一:每个数字/模拟引脚只连接一个信号源。
  3. 先检查后通电:接线完成后,务必仔细检查两遍,特别是电源正负极不能接反,避免短路。

4.2 集成与理线技巧

在狭小的底座空间内合理布置Arduino Nano、面包板(如果使用)、电池盒和一堆线缆,是项目美观和稳定的最后一步。

  • 使用面包板:强烈建议使用一块小型面包板来整合电源和地线。将外部电池的正负极引到面包板的电源轨,所有舵机的电源线都插到正极轨,地线插到负极轨。再将面包板的负极轨与Arduino的GND相连。这样接线清晰,修改方便。
  • 固定元件:使用尼龙扎带、双面泡棉胶或热熔胶枪,将Arduino Nano、电池盒牢固地固定在底座内部,防止晃动导致接触不良。
  • 整理线缆:用扎带将舵机、传感器等线缆捆扎整齐,沿着底座内壁走线,避免线缆缠绕进运动部件中。过长的杜邦线可以适当剪短并重新压接端子。

5. 软件编程与核心逻辑解析

5.1 开发环境搭建与库安装

  1. 安装Arduino IDE:从Arduino官网下载并安装最新版IDE。
  2. 安装必要库
    • Servo:通常Arduino IDE已内置。
    • IRremote:在IDE的“工具”->“管理库”中搜索“IRremote by shirriff”并安装。
    • Adafruit ST7735:搜索“Adafruit ST7735”并安装。通常它会自动关联安装Adafruit GFX库。
  3. 获取项目代码:从提供的GitHub仓库(https://github.com/PlayRoboticsGit/tico)下载或克隆代码。用Arduino IDE打开tico.ino文件。

5.2 代码结构剖析与关键函数

TICO的代码为了教育目的,结构清晰,注释详细。我们深入其核心逻辑。

运动学核心:从坐标到舵机角度机器人最核心的功能是将棋盘上的一个格子坐标(如第5格,中心)转换为三个舵机的目标角度。这涉及简单的逆向运动学计算。

// 伪代码逻辑示意 void moveToCell(int cellNumber) { // 1. 将格子编号(1-9)转换为棋盘上的X,Y坐标(0-2, 0-2) int gridX = (cellNumber - 1) % 3; int gridY = (cellNumber - 1) / 3; // 2. 将棋盘坐标映射到实际的物理坐标(毫米) float targetX = homeX + gridX * cellSpacing; float targetY = homeY + gridY * cellSpacing; // 3. 逆向运动学计算(基于机械臂几何关系) // 假设机械臂是简单的连杆结构,利用三角函数计算 float distance = sqrt(targetX*targetX + targetY*targetY); float liftAngle = calculateLiftAngle(distance, targetHeight); float rightAngle = atan2(targetY, targetX) * RAD_TO_DEG + offsetRight; float leftAngle = calculateLeftAngle(distance, liftAngle); // 依赖于升降角度 // 4. 驱动舵机平滑运动到目标角度 servoRight.write(rightAngle); servoLeft.write(leftAngle); delay(armMovementDelay); servoLeft.write(liftAngle); delay(liftDelay); // ... 执行画图动作 ... }

原代码中,这些计算可能被封装在函数里,并包含了许多校准常数(如homeX,homeY,cellSpacing,以及各舵机的偏移量offsetRight等)。这些常数需要根据你实际组装好的机器人进行微调。

游戏逻辑实现游戏逻辑相对简单,主要是一个状态机:

  1. 初始化:显示欢迎界面,等待开始按钮或遥控指令。
  2. 游戏循环
    • 显示当前棋盘(虚拟数组)。
    • 判断当前玩家(人类或机器人)。
    • 如果是人类回合:等待红外遥控输入(1-9),验证该位置是否为空,更新棋盘数组,并驱动机器人画出对应符号(如果DRAW_HUMAN_MOVE为真)。
    • 如果是机器人回合:调用robotMove()函数。这个函数实现了机器人的“AI”。如原文所说,它并非不可战胜的完美AI,而是采用了一些简单策略(如优先占中、堵截玩家等),并加入了一定的随机性,让游戏更有趣,也给学习者留下了优化空间。
    • 每次落子后,检查胜负条件。
  3. 结束处理:显示胜负结果,播放音效,等待复位。

关键配置与自定义代码开头通常有一些#define宏定义,用于配置项目:

  • SERIAL_MONITOR_MODE:设置为true则启用串口控制,禁用红外。
  • DRAW_HUMAN_MOVE:设置为true时,机器人会替人类画“X”;设置为false时,则需要玩家自己画,画完再通过遥控告知位置。
  • 舵机校准角度:LIFT_HOME_ANGLE,RIGHT_HOME_ANGLE,LEFT_HOME_ANGLE等。如果你的机器人在初始位置不准,就在这里调整。
  • 运动延时:DELAY_BETWEEN_MOVES等,控制机械臂运动速度,太快可能不稳定,太慢则游戏拖沓。

5.3 代码上传与初步测试

  1. 在Arduino IDE中选择正确的板卡(Arduino Nano)和处理器(ATmega328P)。
  2. 选择正确的端口(连接Nano后出现的COM口)。
  3. 点击上传。首次上传由于需要编译多个库,时间可能稍长。
  4. 上传成功后,机器人可能会发出一声蜂鸣器提示,屏幕亮起。此时先不要急于操作,进行以下测试:
    • 按下复位按钮,观察三个舵机是否运动到“归零”位置(即组装时校准的角度)。
    • 尝试用遥控器按数字键,观察机械臂是否有反应(可以先不装笔)。
    • 打开串口监视器(波特率通常为9600),查看是否有调试信息输出。

6. 校准、调试与性能优化

6.1 运动轨迹校准实战

即使严格按照步骤组装,由于打印公差和舵机个体差异,机器人的画图位置也必然存在偏差。校准是让机器人画得准的关键。

校准步骤

  1. 进入校准模式:通常代码会预留一个校准模式,或者你可以临时修改代码,让机器人依次移动到9个格子的中心。
  2. 标记与观察:在笔架上安装一支铅笔(比马克笔更精确),让机器人执行移动命令。观察笔尖是否对准每个格子的中心。
  3. 调整参数
    • 整体偏移:如果所有点都偏向同一个方向,调整代码中的homeXhomeY基准值。
    • 缩放误差:如果点与点之间的间距不均匀(例如,最右边的点偏离更多),调整cellSpacing参数。
    • 旋转误差:如果点的排列发生倾斜,可能需要微调左右舵机的homeAngle
    • 高度误差:如果笔尖压力过大或悬空,调整LIFT舵机在画图时的角度。
  4. 迭代测试:每次修改一个参数,上传代码,测试,记录效果。这是一个需要耐心的过程。

一个高效的校准技巧:编写一个简单的测试程序,只包含运动函数,并通过串口输入目标格子编号。这样你可以快速反复测试,而不用每次都进行完整的游戏流程。

6.2 常见问题排查速查表

在制作和运行过程中,你可能会遇到以下问题。下表列出了常见症状、可能原因及解决方法:

症状可能原因排查与解决方法
舵机不动或抖动1. 电源功率不足。
2. 信号线接触不良。
3. 舵机卡死(机械阻力过大)。
4. 代码中舵机引脚定义错误。
1. 检查电池是否电量充足,舵机是否使用外部电源
2. 重新插拔舵机信号线,检查杜邦线连接。
3. 手动转动舵机臂,检查是否有结构干涉,所有关节螺丝是否未过紧
4. 核对代码servo.attach(pin)中的引脚号与实际接线。
红外遥控无反应1. 红外接收头引脚接错。
2. 遥控器电池没电。
3. 使用的IRremote库版本不兼容或解码协议不对。
4. 有强光干扰(如日光灯)。
1. 确认接收头信号线接D2,VCC接5V。
2. 更换遥控器电池,用手机摄像头对准遥控器LED,按按键看是否有白光闪烁(检验遥控器)。
3. 尝试使用库中示例代码IRrecvDump来测试是否能接收到编码,并确认编码值是否与代码中定义匹配。
4. 避开强光源测试。
TFT屏幕白屏或不亮1. 屏幕引脚接错,特别是CS、DC、RESET。
2. 库未正确安装或初始化失败。
3. 屏幕背光未开启(有些屏幕需单独控制)。
1. 逐根检查屏幕与Arduino的连接线。
2. 运行Adafruit ST7735库中的示例程序graphicstest,看能否正常显示。
3. 检查代码中屏幕初始化部分,确认型号(INITR_BLACKTAB等)选择正确。
画图位置严重不准1. 舵机初始角度(130,140,80)校准不准。
2. 机械臂未在90度夹角下安装。
3. 运动学计算参数(基准坐标、间距)错误。
1. 重新执行步骤3和步骤6的舵机角度校准。
2. 确认左右臂安装时呈90度直角。
3. 进入6.1节的校准流程,系统性调整运动参数。
Arduino程序上传失败1. 板卡和端口选择错误。
2. Nano的USB驱动未安装(针对CH340芯片)。
3. bootloader损坏。
1. 在IDE中确认选择Arduino Nano和正确的COM口。
2. 如果是CH340芯片,需在网上搜索“CH340驱动”下载安装。
3. 尝试用另一个USB线或电脑USB口。
蜂鸣器不响或一直响1. 正负极接反。
2. 引脚定义错误(代码中用A5)。
3. 代码中音调函数tone()参数错误。
1. 检查接线,蜂鸣器有“+”标志的一侧接信号线。
2. 核对代码中tone(pin, frequency)的引脚号。
3. 检查tone()函数是否被正确调用,是否有对应的noTone()

6.3 性能优化与扩展思路

当基础功能实现后,你可以尝试以下优化和扩展,让项目更上一层楼:

  1. 运动平滑优化:原代码可能使用servo.write(angle)直接跳转到目标角度,运动生硬。可以改为使用for循环实现角度渐变,使机械臂运动更平滑、更像“机器人”。
    void smoothMove(Servo &s, int targetAngle, int stepDelay = 15) { int currentAngle = s.read(); int step = (targetAngle > currentAngle) ? 1 : -1; for (int a = currentAngle; a != targetAngle; a += step) { s.write(a); delay(stepDelay); } s.write(targetAngle); // 确保到达最终位置 }
  2. 增强游戏AI:目前的AI比较简单。你可以尝试实现“极小化极大算法”(Minimax)来让机器人成为井字棋高手,这本身就是一个绝佳的编程练习。
  3. 增加声音与灯光反馈:除了蜂鸣器,可以添加一个RGB LED,用不同颜色表示当前玩家、胜负状态。为不同的动作(移动、获胜、错误)设计不同的音效。
  4. 记录与回放:增加一个SD卡模块,记录每一局游戏的步骤,并可以实现自动回放,展示经典对局。
  5. 网络对战:为Nano增加一个蓝牙或Wi-Fi模块(如HC-05或ESP-01),让两个TICO机器人可以通过网络对战,或者与手机App连接。

制作TICO的过程,远不止是跟着教程拼装。从打印件打磨、校准时的细微调整,到代码参数调试、问题排查,每一步都是真实的工程实践。当看到自己组装的机器人精准地画下第一个“X”时,那种跨越虚拟与现实的成就感,正是创客教育和STEM学习的魅力所在。这个项目就像一个引子,打开了机器人技术和嵌入式编程的大门,后面的路,可以由你无限延伸。

http://www.jsqmd.com/news/939287/

相关文章:

  • HR做薪酬体系,必须先搞懂岗位价值评估
  • QueryExcel:基于NPOI的Excel批量数据检索系统架构解析
  • ## 实地探访深圳源头工厂:木点点整装ENF闭口套餐真实落地情况 - 产品测评官
  • 做淘宝虚拟产品,稳定虚拟货源下载渠道怎么找?
  • HarmonyOS ArkTS 精确类型检测进阶:TypedArray 系列与容器类型完全指南
  • 代发货订单履行:完整指南
  • 如何用WeChatMsg永久保存微信聊天记录?你的数字记忆守护终极指南
  • 经典蓝牙(BR/EDR)开发实战
  • 别再浪费你的游戏数据了!用Python+PyTorch实现DQN经验回放(附完整代码)
  • 发现用明道中文编程语言打包的hanoi.exe文件是22M,有点大啊,还能通过什么技术手段更小一些吗?(先维持原样)
  • Claude Code 平替来了?DeepSeek-TUI 保姆级安装教程
  • 底轴旋转坝技术深度解析:钢坝、钢闸门、防洪闸、合页坝、底轴旋转坝、弧形闸门、拦河坝、景观坝、智能一体化闸门、气动浮体坝选择指南 - 优质品牌商家
  • 性能相当于第四代骁龙8s
  • HarmonyOS ArkTS 判断 Promise 与异步函数的正确姿势:TypeUtil 实战教程
  • 国内工业级3D打印代加工服务商实测排行 - 优质品牌商家
  • Windows宝塔面板启动卡死?别急着重装,先试试这个服务修复大法
  • 双系统党必看:Ubuntu 18.04下Windows 10启动盘制作与bootmgfw.efi丢失修复全记录
  • QRemeshify:基于QuadWild算法的Blender四边形重拓扑技术深度解析
  • HarmonyOS 拉起系统浏览器与短信界面:WantUtil.toWebBrowser 与 startMMS 实战
  • 请结合以下说明,先完成类似python的内置函数。 然后再去完成内置库(标准款) ‌内置函数‌
  • 2026年6月安庆黄金回收白银回收铂金回收权威排行榜TOP5:纯金+金条+银条+钯金 门店地址联系方式推荐
  • 基于Arduino Uno与七段数码管的简易任务计数器设计与实现
  • 2026数字展厅设计技术干货:数字孪生沙盘、数字孪生钢厂、数字展厅、数字沙盘、虚拟展厅、设备数字孪生、360全息柜选择指南 - 优质品牌商家
  • 多设备组网与Mesh网络入门
  • 从新手到高手:Smithbox游戏修改工具完全指南 [特殊字符]
  • 2026年更新:浙江生产线定制厂家选型指南与趋势洞察 - 2026年企业资讯
  • 仿真绿植绿化技术核心要点及服务商选择参考推荐:仿真绿植绿化工程/仿真绿植绿化电话/四川仿真绿植绿化/优选指南 - 优质品牌商家
  • Claude Code使用教程(vibe coding) 二
  • GlosSI 入门指南:让 Steam 控制器在任意游戏和应用中畅玩
  • 四川智慧垃圾箱厂家排行:四川楼顶发光字/四川民宿集装箱/四川苹果舱/四川钢结构仿木屋/合规性与服务能力实测对比 - 优质品牌商家