太棒了!在Scratch中编程无人机是一个非常有趣且富有挑战性的项目,它完美地结合了图形化编程和实体硬件,能让你直观地看到代码如何控制现实世界中的物体。

下面我将为你提供一个从零到一的完整指南,包括准备工作、编程原理、核心代码块示例和项目创意。
第一部分:准备工作
在开始之前,你需要准备好以下硬件和软件:
硬件
- 无人机: 最好是支持SDK(软件开发工具包)或可以通过Wi-Fi/蓝牙进行串口通信的无人机,对于初学者,推荐选择以下类型:
- Tello (由Ryze Tech开发): 强烈推荐! Tello是学习无人机编程的绝佳选择,它价格亲民,通过Wi-Fi连接,并且有非常成熟的社区和SDK支持,它本身不支持直接用Scratch编程,但可以通过一个“中间件”来实现。
- 支持mBlock的无人机: 一些教育型无人机(如某些Makeblock或DJI的迷你无人机)可以直接与mBlock(基于Scratch的编程环境)配合使用,这是最简单的方式。
- 支持Micro:bit的无人机: 一些无人机可以通过Micro:bit进行控制,而Micro:bit也可以用类似Scratch的图形化界面编程。
- 电脑/平板: 用于运行Scratch或相关编程环境。
- Wi-Fi环境 (如果是Tello): Tello需要连接到你的电脑或手机创建的热点。
软件 (以最流行的Tello + Scratch为例)
你需要一个“桥梁”软件来将Scratch的指令翻译成Tello能听懂的语言,目前最主流的选择是 Tello EDU 或 Tello Talent 官方配套的App,它们本身就内置了类似Scratch的积木式编程界面。
如果你想用标准的Scratch 3.0网页版或离线版,你需要使用第三方开发的插件或桥接软件,

- TelloScratch: 一个专门为Tello开发的浏览器扩展,可以在Scratch 3.0网页版中直接添加Tello的指令积木。
- nodeTello + Scratch Link: 更技术流的方案,通过本地服务器和Scratch Link实现连接。
对于初学者,我建议直接使用Tello官方App的编程界面,因为它最稳定、功能最全。
第二部分:编程原理
Scratch本身不能直接控制无人机,所以整个工作流程是这样的:
你的Scratch代码 (在电脑上) → [数据传输 (Wi-Fi/蓝牙)] → 中间件/App (作为翻译官) → [指令] → 无人机 (接收并执行指令)
这个“中间件/App”就是关键,它负责监听Scratch发出的消息,然后将这些消息转换成Tello的SDK指令(如 takeoff, land, forward 50 等)。

第三部分:核心编程概念与代码示例
下面我们以Tello EDU App的编程界面为例,介绍无人机编程的核心积木和逻辑。
连接与起飞/降落
这是所有程序的基础。
// 当绿旗被点击时 当 ⚑ 被点击 // 连接到无人机 (非常重要!) 连接到无人机 // 等待连接成功,否则后续指令会失败 等待 (2) 秒 // 起飞! 起飞 // 在空中停留一会儿 等待 (3) 秒 // 安全降落 降落
基础飞行控制
无人机的移动通常是基于它自身的朝向。
// 向前飞行50厘米 向前 (50) 步 // 向左旋转90度 左转 (90) 度 // 向后飞行30厘米 向后 (30) 步 // 向右旋转90度 右转 (90) 度 // 向上飞行20厘米 向上 (20) 步 // 向下飞行10厘米 向下 (10) 步
注意: 在Scratch中,移动X步 通常是小车或角色的移动,而在无人机编程中,它被重定义为“前进X厘米”。
事件驱动编程
使用键盘或传感器来实时控制无人机。
// 当按下 "w" 键时,无人机向前飞 当 [w v] 键被按下 向前 (50) 步 // 当按下 "s" 键时,无人机向后飞 当 [s v] 键被按下 向后 (50) 步 // 当按下 "a" 键时,无人机向左飞 当 [a v] 键被按下 左转 (30) 度 // 当按下 "d" 键时,无人机向右飞 当 [d v] 键被按下 右转 (30) 度 // 当按下 "空格" 键时,无人机起飞 当 [空格 v] 键被按下 起飞 // 当按下 "l" 键时,无人机降落 当 [l v] 键被按下 降落
循环与组合动作
让无人机执行一个预定的舞蹈或飞行路径。
// 定义一个“方块”飞行的积木
定义 方块飞行
重复 (4) 次
向前 (100) 步
右转 (90) 度
等待 (1) 秒
end
// 当绿旗被点击
当 ⚑ 被点击
连接到无人机
等待 (2) 秒
起飞
方块飞行 // 调用我们定义好的动作
降落
传感器数据 (高级)
Tello可以获取一些传感器数据,如飞行时间、电池电量、距离传感器等,你可以在程序中使用这些数据来做判断。
// 获取电池电量并显示
当 ⚑ 被点击
连接到无人机
重复直到 <<(电池电量) < (20)>> // 当电量低于20%时停止
说 (连接中... v) (2) 秒
将 [飞行时间 v] 设为 (飞行时间)
将 [电池 v] 设为 (电池电量)
说 (飞行时间: (飞行时间)秒 电池: (电池)%) (2) 秒
等待 (2) 秒
end
降落
说 (电量低,请降落!)
第四部分:项目创意与挑战
一旦掌握了基础,你就可以尝试更有趣的项目了!
-
空中画笔:
- 在无人机下方挂上一支笔和一个小重物(确保平衡)。
- 编程让无人机按照特定路径(如圆形、心形、你的名字的字母)飞行,它就能在纸上“画画”了!
-
自动避障飞行器 (简化版):
- 利用Tello的前向距离传感器。
- 编程让无人机不断检测前方的距离。
- 如果距离小于100厘米,就自动旋转90度,然后继续前进。
-
无人机灯光秀:
如果你的无人机支持(如Tello EDU可以改变LED灯颜色),编程让它在空中变换灯光颜色、闪烁,配合音乐,创造一场灯光秀。
-
“捉迷藏”游戏:
- 用键盘控制一个角色在Scratch舞台上移动,代表“玩家”。
- 无人机的位置由舞台上的另一个角色控制。
- 编程逻辑:当无人机角色碰到玩家角色时,无人机会自动起飞并“逃跑”(随机飞向一个方向)。
-
空中寻宝:
- 在房间里放置几个不同颜色的物体作为“宝藏”。
- 无人机起飞后,你需要用键盘控制它去寻找特定颜色的物体。
- 当无人机悬停在宝藏上方时,按下空格键“拾取”,程序会记录你的得分。
安全第一!
- 开阔场地: 在室内或室外空旷、无障碍物的地方飞行。
- 注意电量: 时刻关注电池电量,及时降落充电。
- 遵守法规: 了解并遵守你所在地区关于无人机飞行的法律法规。
- 小心人机: 确保周围没有人和宠物,特别是无人机起飞和降落时。
祝你编程愉快,享受控制无人机翱翔天空的乐趣!
