睿诚科技协会

Scratch编程如何操控无人机?

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

Scratch编程如何操控无人机?-图1
(图片来源网络,侵删)

下面我将为你提供一个从零到一的完整指南,包括准备工作、编程原理、核心代码块示例和项目创意


第一部分:准备工作

在开始之前,你需要准备好以下硬件和软件:

硬件

  • 无人机: 最好是支持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 EDUTello Talent 官方配套的App,它们本身就内置了类似Scratch的积木式编程界面。

如果你想用标准的Scratch 3.0网页版或离线版,你需要使用第三方开发的插件或桥接软件,

Scratch编程如何操控无人机?-图2
(图片来源网络,侵删)
  • 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 等)。

Scratch编程如何操控无人机?-图3
(图片来源网络,侵删)

第三部分:核心编程概念与代码示例

下面我们以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
  降落
  说 (电量低,请降落!)

第四部分:项目创意与挑战

一旦掌握了基础,你就可以尝试更有趣的项目了!

  1. 空中画笔:

    • 在无人机下方挂上一支笔和一个小重物(确保平衡)。
    • 编程让无人机按照特定路径(如圆形、心形、你的名字的字母)飞行,它就能在纸上“画画”了!
  2. 自动避障飞行器 (简化版):

    • 利用Tello的前向距离传感器。
    • 编程让无人机不断检测前方的距离。
    • 如果距离小于100厘米,就自动旋转90度,然后继续前进。
  3. 无人机灯光秀:

    如果你的无人机支持(如Tello EDU可以改变LED灯颜色),编程让它在空中变换灯光颜色、闪烁,配合音乐,创造一场灯光秀。

  4. “捉迷藏”游戏:

    • 用键盘控制一个角色在Scratch舞台上移动,代表“玩家”。
    • 无人机的位置由舞台上的另一个角色控制。
    • 编程逻辑:当无人机角色碰到玩家角色时,无人机会自动起飞并“逃跑”(随机飞向一个方向)。
  5. 空中寻宝:

    • 在房间里放置几个不同颜色的物体作为“宝藏”。
    • 无人机起飞后,你需要用键盘控制它去寻找特定颜色的物体。
    • 当无人机悬停在宝藏上方时,按下空格键“拾取”,程序会记录你的得分。

安全第一!

  • 开阔场地: 在室内或室外空旷、无障碍物的地方飞行。
  • 注意电量: 时刻关注电池电量,及时降落充电。
  • 遵守法规: 了解并遵守你所在地区关于无人机飞行的法律法规。
  • 小心人机: 确保周围没有人和宠物,特别是无人机起飞和降落时。

祝你编程愉快,享受控制无人机翱翔天空的乐趣!

分享:
扫描分享到社交APP
上一篇
下一篇