青少年无人机编程启蒙

青少年无人机编程启蒙

——用 Scratch 3.0 + Tello EDU 开启你的飞行编程之旅

作者团队 | 青少年编程教育研究中心

适用对象 | 小学 3-6 年级(8-12 岁)

编程基础 | 零基础即可轻松上手

�� 写给小读者的话

亲爱的小朋友,你好呀!

你有没有想过,有一天你能指挥一架无人机在空中飞来飞去?不是用手拿着遥控器,而是用你编写的程序来控制它?听起来是不是很酷?

别担心,你不需要是”编程天才”,也不需要读过很多很多的书。只要你有好奇心,愿意动手试一试,这本书就能带你走进一个全新的世界——用代码让无人机听你的话!

在接下来的旅程中,你会认识两位好朋友:小飞(一只梦想飞行的小猫)和码码(一个热爱编程的小机器人)。它们会陪着你,一步步学习编程,一步步让无人机起飞、转弯、翻滚,甚至编队表演!

准备好了吗?让我们一起出发吧!

第 1 章 你好,无人机!

�� 本章目标:认识无人机的基本概念,了解 Tello EDU 的组成部分,掌握安全飞行守则,完成第一次动手操作。

�� 趣味导入

【小飞和码码的故事】

小飞趴在窗台上,仰着头看天空。一架白色的小飞机嗡嗡地飞过,在蓝天白云间灵活地转着圈。

“哇——”小飞的眼睛亮了起来,”那是什么?好酷啊!”

“那是无人机!”码码从桌子上滑了过来,屏幕上显示着大大的笑脸,”你知道吗?无人机就像一只听话的小鸟,你用编程就能让它飞到你想去的地方!”

“编程?”小飞的耳朵竖了起来,”我也可以吗?”

“当然可以啦!”码码眨了眨眼睛,”跟着这本书,我们一起来让无人机飞起来!”

1.1 无人机是什么?

无人机就是”没有人坐在上面”的飞机

小朋友,你坐过飞机吗?普通的飞机里面坐着飞行员(或者自动飞行系统),但无人机不一样——它的身体里面没有飞行员,它是从地面上用遥控器或者电脑程序来控制的!

用一句话来解释:

�� 无人机(Drone) = 不用人坐在里面,靠遥控器或电脑程序控制飞行的飞行器

“无人机”的学名叫”无人驾驶飞行器“(Unmanned Aerial Vehicle,简称 UAV)。”UAV”这个词看起来有点复杂,但你可以这样记:

• U = Unmanned(无人的)

• A = Aerial(空中的)

• V = Vehicle(交通工具)

连起来就是”在空中飞行的、没有人的交通工具”!

无人机长什么样?

无人机的样子有很多种,就像一个家庭有不同的成员一样。最常见的无人机有下面几种形状:

�� 四旋翼无人机(Quadcopter)

这是最常见的一种,有 4 个螺旋桨(也叫”旋翼”),像个小”十”字。我们这本书要用的 Tello EDU 就是这种类型!

�� 六旋翼无人机(Hexacopter)

有 6 个螺旋桨,力气更大,能带更重的东西,比如专业的摄像机。

�� 八旋翼无人机(Octocopter)

有 8 个螺旋桨,是个大力士!通常用在电影拍摄和工业领域。

�� 固定翼无人机

长得像普通飞机,有一对大翅膀,飞得又快又远,常用于航拍地图和农业喷洒。

[配图:四种常见无人机外形对比图——四旋翼、六旋翼、八旋翼、固定翼]

�� 你知道吗?

四旋翼无人机之所以最流行,是因为它只需要 4 个电机就能实现前后左右上下六个方向的运动,既简单又灵活!这就像我们用 4 个轮子就能让汽车在地上跑一样巧妙。

无人机是怎么飞的?

无人机飞起来的秘密就藏在螺旋桨里!

每个螺旋桨旋转的时候,会把空气向下推。根据牛顿第三定律(作用力与反作用力),空气也会给螺旋桨一个向上的推力。当这个向上的推力大于无人机自身的重量时,无人机就飞起来啦!

上升:4 个螺旋桨一起加速旋转 → 推力变大 → 飞起来!

下降:螺旋桨减速 → 推力变小 → 慢慢降落

前进:后面的螺旋桨转得快一些,前面的慢一些 → 无人机身体前倾 → 向前飞

转弯:对角线的两个螺旋桨加速,另外两个减速 → 无人机旋转

[配图:无人机飞行原理示意图,展示螺旋桨转速变化与飞行方向的关系]

�� 你知道吗?

你可能注意到了,4 个螺旋桨的旋转方向是不同的——两个顺时针转,两个逆时针转。为什么要这样呢?因为如果 4 个桨叶都朝同一个方向转,无人机会像陀螺一样不停旋转,根本没法正常飞行!两个方向转,互相抵消,无人机才能稳稳地飞!

1.2 无人机在生活中的应用

你可能会想:”无人机不就是玩具吗?”其实,无人机的用处可大了去了!让我们一起来看看,无人机在各行各业都在做什么:

�� 航拍摄影

这是大家最熟悉的用途了!无人机带着高清摄像头飞到空中,拍下壮观的风景、美丽的城市夜景,甚至电影里那些超酷的空中镜头,很多都是无人机拍的!

你看过一些旅行纪录片吗?那些从高空俯瞰大海、山川、城市全景的画面,大部分都是无人机的杰作。

[配图:无人机航拍的城市全景照片]

�� 农业植保

在田野里,农民伯伯用无人机来喷洒农药和施肥。一架农业无人机一次能装很多药水,飞过的速度比人工快几十倍!

而且无人机喷洒得很均匀,不会喷多也不会喷少,既省药水又环保。

[配图:农业无人机在稻田上空喷洒作业]

�� 快递配送

想象一下,你网购了一个包裹,不是快递员骑着电动车送来,而是一架无人机直接从仓库飞到你家阳台!这已经不是科幻电影了——很多公司已经在测试无人机送快递了!

在一些偏远山区,无人机更是大显身手,把药品和物资送到交通不便的地方。

[配图:无人机送货场景]

�� 救援搜救

当发生地震、洪水或者有人在山里迷路时,无人机可以飞到人类难以到达的地方,用摄像头搜索被困的人,帮救援队找到需要帮助的人。

有些无人机还能携带急救药品和救生圈,在第一时间送到被困者手中。

�� 科学考察

科学家带着无人机去南极看企鹅,去火山口拍岩浆,去森林深处数动物的数量。无人机替人类去了很多危险的地方!

��️ 建筑巡检

在建筑工地,工程师用无人机来检查高楼大厦的外墙、桥梁的结构、风力发电机的叶片。以前要搭脚手架或者用望远镜才能看到的地方,现在无人机飞一圈就搞定了!

�� 你知道吗?

全球无人机的市场规模正在快速增长。据统计,到 2025 年,全球无人机市场规模预计将超过 300 亿美元!在中国,无人机技术走在世界前列,大疆(DJI)等中国企业的产品畅销全世界。

未来,也许你会成为设计下一代无人机的人哦!

1.3 Tello EDU 开箱认识

终于到了认识我们的”主角”的时候了!Tello EDU 是一款专为教育设计的小型无人机,它小巧轻便、安全可靠,而且最重要的是——它可以用 Scratch 编程来控制!

�� 开箱清单

当你打开 Tello EDU 的包装盒,你会看到以下部件:

序号部件名称说明数量
1Tello EDU 机身无人机本体,包含摄像头、传感器、电机等1
2螺旋桨(A 桨)顺时针旋转的桨叶,桨尖有 A 标记2
3螺旋桨(B 桨)逆时针旋转的桨叶,桨尖有 B 标记2
4电池可充电锂电池,续航约 13 分钟1
5电池仓盖保护电池的盖子1
6螺旋桨保护罩套在机身外面的保护圈,防止撞伤1
7说明书使用指南1

[配图:Tello EDU 开箱全家福,标注各个部件]

�� 认识 Tello EDU 的各个部位

让我们仔细看看 Tello EDU 机身上都有哪些部件:

�� 正面(前方)

• 摄像头:一个小小的圆形镜头,就像无人机的”眼睛”。它可以拍摄 720P 高清照片和 1080P 视频。

• LED 指示灯:告诉你无人机当前的状态(比如是否已连接、电量是否充足等)。

�� 背面(后方)

• 电池仓:安装电池的地方。

• 电池卡扣:固定电池的卡扣。

�� 底部(下方)

• 气压计传感器:测量高度,让无人机知道自己离地面有多高。

• ToF 距离传感器:向下发射红外光,测量离地面的距离(就像蝙蝠用超声波探路一样!)。

• 序列号标签:印有产品的编号等信息。

�� 顶部(上方)

• 天线(隐藏在机身内部)。

�� 四个侧面

• 4 个电机:分别带动 4 个螺旋桨旋转。

• 电机编号:每个电机旁边标有 1-4 的数字,方便你安装对应的螺旋桨。

• 螺旋桨安装卡扣:用来固定螺旋桨的小卡扣。

[配图:Tello EDU 机身各部位标注图,从正面、背面、底部、顶部四个角度展示]

�� 螺旋桨的 ABCD 标记

螺旋桨的安装非常重要!请仔细看螺旋桨和电机上标记:

• A 桨(CW,顺时针桨):安装在标有 A 或 CW 的电机上

• B 桨(CCW,逆时针桨):安装在标有 B 或 CCW 的电机上

⚠️ 重要提醒:A 桨和 B 桨是不能互换的!如果装反了,无人机会飞不起来甚至翻跟头。安装时一定要仔细检查!

[配图:A 桨和 B 桨的外形对比图,以及正确的安装位置示意图]

1.4 安全飞行守则

��️ 安全小卫士

安全飞行是最重要的!在让无人机飞起来之前,请你和爸爸妈妈一起阅读下面的安全守则。记住,安全第一,快乐第二!

�� 安全飞行十大守则

为了方便记忆,我们把这些安全守则编成了一首小儿歌:

�� 无人机安全飞行歌 ��

小螺旋桨,转得快,

手指千万别靠近。

飞行之前看四周,

远离人群和宠物。

室内飞行空间小,

桌椅花瓶要挪走。

头发飘飘要注意,

扎起长发更安全。

电量不足快降落,

电池发热要休息。

飞行结束关开关,

安全第一记心间!

详细安全守则

守则 1:螺旋桨旋转时,远离螺旋桨

螺旋桨旋转速度非常快(每分钟上万转!),虽然 Tello EDU 的螺旋桨很小很轻,但还是有可能割伤手指。所以,永远不要把手指伸进旋转的螺旋桨里!

守则 2:飞行前检查周围环境

• 清除飞行区域内的障碍物(桌椅、花瓶、吊灯等)

• 确保飞行区域上方没有低矮的障碍物

• 确保没有宠物或小朋友靠近飞行区域

守则 3:注意头发和宽松衣物

如果你的头发比较长,飞行时请扎起来。宽松的衣服、围巾等也要整理好,避免被螺旋桨卷入。

守则 4:不要在拥挤的地方飞行

确保飞行区域周围没有人围观。万一无人机失控,不会伤到人。

守则 5:电量低于 10% 立即降落

当 Tello EDU 电量低于 10% 时,无人机会发出低电量警告。这时请立即让无人机降落,否则它可能会突然掉下来!

守则 6:飞行后让电池冷却

飞行结束后,电池会有些发热。请等电池冷却几分钟再充电或再次飞行。

守则 7:不要在水面上飞行

虽然 Tello EDU 可以在室内飞行,但请远离水源。万一掉进水里,无人机会损坏的。

守则 8:不要在公共场所飞行

Tello EDU 是室内教育无人机,不适合在户外空旷的地方飞(风大了会被吹跑!)。也不要在机场附近或人群密集的地方飞行。

守则 9:使用保护罩

新手练习时,建议始终安装螺旋桨保护罩。保护罩可以防止无人机撞墙时损坏,也能保护周围的人不被螺旋桨碰到。

守则 10:在大人陪伴下飞行

虽然 Tello EDU 很安全,但建议你在家长或老师的陪伴下飞行。有大人看着,会更安全也更放心。

��️ 安全小卫士提醒

安全不是限制你玩耍,而是让你玩得更开心、更放心!每一次飞行前,都花 1 分钟检查一下安全事项,养成好习惯!

1.5 动手时间:安装螺旋桨与充电

好啦,理论知识已经准备好了,现在让我们动手操作!

�� 任务一:安装螺旋桨

准备工具:Tello EDU 机身、4 个螺旋桨

步骤:

第一步:找到 A 和 B 标记

• 仔细看每个电机旁边的标记,有的标着 A,有的标着 B。

• 再看每个螺旋桨,桨叶根部也标着 A 或 B。

第二步:匹配安装

• 把 A 桨安装到标有 A 的电机上。

• 把 B 桨安装到标有 B 的电机上。

• 安装方法:把螺旋桨中心的小孔对准电机轴,轻轻按下去,听到”咔嗒”一声就固定好了。

第三步:检查是否牢固

• 轻轻拉一下每个螺旋桨,确保它不会松动。

• 用手转一下螺旋桨,确保它转动顺畅,没有卡顿。

第四步:安装保护罩

• 把保护罩卡到机身四周的卡槽里。

• 保护罩要完全卡紧,不能有松动的部分。

[配图:螺旋桨安装步骤分解图,标注 A/B 桨的正确安装位置]

�� 小妙招

安装螺旋桨时,可以用手轻轻按住螺旋桨的中心,然后向下一压,这样更容易卡紧。千万不要用很大的力,否则可能会弄坏电机哦!

�� 任务二:给电池充电

准备工具:Tello EDU 电池、USB 充电线(或充电座)

步骤:

第一步:取出电池

• 按下电池仓盖上的卡扣,轻轻拉出电池。

• 注意电池的正负极方向,装回去的时候要按照同样的方向。

第二步:连接充电

• 把 USB 充电线插入电池的充电接口。

• 另一端插入电脑的 USB 口或者手机充电头(输出 5V/1A 的充电器即可)。

第三步:等待充满

• 充电时,电池上的指示灯会亮红灯(表示正在充电)。

• 当指示灯熄灭或变绿(取决于电池型号),就表示充满啦!

• 充满大约需要 90 分钟

第四步:安装电池

• 把充满电的电池推回电池仓,直到听到”咔嗒”声。

• 确保电池安装牢固,不会松动。

[配图:电池充电和安装步骤图]

⚠️ 安全小卫士提醒

– 不要使用超过 5V 的充电器,否则可能损坏电池。

– 充电时不要覆盖电池,保持通风。

– 如果电池鼓包、变形或有异味,立即停止使用,告诉家长处理。

– 不要在无人看管的情况下给电池充电。

1.6 开机与连接(先睹为快)

�� 虽然我们会在下一章详细学习编程连接,但这里先让你体验一下开机的乐趣!

开机步骤:

• 长按开机键:按住 Tello EDU 机身上的电源键约 2 秒钟,直到指示灯开始闪烁。

• 等待初始化:无人机发出”嘀”的一声,螺旋桨保护罩上的指示灯亮起。这表示无人机已经启动,正在等待连接。

• 连接手机:打开手机 WiFi 设置,找到以 “TELLO-” 开头的 WiFi 信号,点击连接。

• 打开 APP(可选):下载并打开 Tello APP(爸爸妈妈帮忙安装),就能用手机操控无人机了!

[配图:开机步骤示意图]

�� 你知道吗?

Tello EDU 开机后,它会创建一个自己的 WiFi 热点。这就像你的手机开热点分享网络给别人一样。我们的电脑要通过连接这个 WiFi,才能和无人机”说话”哦!

不过现在先不急着用电脑连接,先用手机 APP 体验一下手动飞行的乐趣吧!(但一定要在爸爸妈妈的陪伴下哦!)

�� 本章小结

恭喜你完成了第一章的学习!让我们回顾一下你都学到了什么:

✅ 知识清单

知识点你学会了吗?
无人机(UAV)是什么
四旋翼无人机的飞行原理
无人机在生活中的 6 种应用
Tello EDU 的各个部件名称
A 桨和 B 桨的区别和安装方法
安全飞行十大守则
安装螺旋桨的方法
给电池充电的方法

�� 本章重点回顾

• 无人机就是没有人坐在里面的飞行器,靠遥控器或程序控制。

• 四旋翼无人机通过改变 4 个螺旋桨的转速来实现各种方向的飞行。

• Tello EDU 是一款专为编程教育设计的小型无人机,有摄像头、传感器和编程接口。

• 安全永远是第一位的,飞行前一定要检查环境、安装保护罩、注意电量。

• A 桨和 B 桨不能互换,安装时一定要看标记。

�� 课后小任务

• 观察题:仔细看看你的 Tello EDU,找出所有的传感器位置,并画在纸上。

• 思考题:为什么四旋翼无人机需要两种旋转方向的螺旋桨?试着用”转椅子”来体验一下——坐在旋转椅上,如果你不停地向一个方向推墙,椅子会怎么转?

• 实践题:在爸爸妈妈的陪伴下,给 Tello EDU 充满电,安装好螺旋桨和保护罩,用手机 APP 体验一次飞行。

• 创意题:画一画你心中最厉害的无人机是什么样的?它有什么特别的功能?

第 2 章 认识编程好朋友 Scratch

�� 本章目标:认识 Scratch 编程环境,学会基本操作,写出第一个小程序,理解”事件”和”顺序执行”的概念。

�� 趣味导入

【小飞和码码的故事】

“码码,无人机很酷,但是怎么让它飞起来呢?总不能一直用手机 APP 手动操控吧?”小飞有些不甘心地说。

“当然可以自动飞行!”码码兴奋地说,”这就需要用到——编程!”

“编程?就是那种满屏都是英文字母的东西?好难啊……”小飞有点害怕。

“别怕别怕!”码码笑着调出了一个彩色界面,”我们来认识一个特别好的编程朋友——Scratch!在 Scratch 里编程就像搭积木一样简单,完全不需要写英文代码!”

小飞好奇地看着屏幕上那些五颜六色的积木块,说:”真的吗?看起来好好玩!”

“走吧,我带你一起认识 Scratch!”

2.1 Scratch 是什么?

搭积木 = 写程序!

你玩过乐高积木吗?把一块一块的积木拼在一起,就能搭出城堡、汽车、机器人……

Scratch 编程和搭积木一模一样!只不过,Scratch 里的积木不是塑料块,而是电脑屏幕上的彩色方块。你把不同的积木拖到一起、拼在一起,就能让电脑做各种事情——画画、做游戏、做动画,甚至控制无人机!

�� Scratch 是由美国麻省理工学院(MIT)的媒体实验室开发的一款图形化编程语言。”图形化”的意思就是——你看到的不是文字代码,而是好看的图形和颜色!

为什么选 Scratch?

Scratch 有几个特别适合小朋友的特点:

✅ 不用打字写代码

用鼠标拖动积木块就能编程,不用担心拼写错误、忘记标点符号之类的问题。

✅ 立刻看到效果

写完程序一点”运行”,马上就能看到结果。画了个圆就看到圆,让小猫走就看到小猫走,特别有成就感!

✅ 社区很热闹

全世界有很多小朋友在用 Scratch,你可以分享自己的作品,也可以看看别人做了什么有趣的东西。

✅ 能连接无人机!

Scratch 3.0 支持扩展功能,可以连接 Tello EDU 无人机,这才是我们选它的最重要原因!

�� 你知道吗?

Scratch 的名字来自”scratch DJ”(唱片骑师)——DJ 用手指在唱片上刮擦(scratch)来创造音乐,而 Scratch 编程让你用手指在屏幕上拖动积木来创造程序,概念很像呢!

Scratch 已经有超过 1 亿 个注册作品了,全世界有 200 多个国家和地区的青少年在使用它!

2.2 Scratch 界面介绍

让我们打开 Scratch,来认识一下它的”家”。

�� 如何打开 Scratch

– 方法一(在线版):打开浏览器,访问 https://scratch.mit.edu ,点击”创建”按钮。

– 方法二(离线版):安装 Scratch 桌面版(爸爸妈妈帮忙下载安装),双击打开。

两种方式功能基本一样,但连接无人机时需要用离线版哦!

Scratch 的四大区域

打开 Scratch 后,你会看到一个分成几个区域的界面。让我们一个个来认识:

[配图:Scratch 3.0 完整界面截图,用箭头标注四大区域]

区域一:舞台区(Stage)—— “表演”的地方

舞台区在屏幕的右上角,是角色们”表演”的地方。你写的程序里,角色说什么话、走到哪里、变成什么样,都会在这个舞台上展示出来。

舞台就像一个小小的剧场,你的角色(小猫、小狗、外星人……)都在这里上演你的故事。

舞台上方还有几个按钮:

• �� 绿旗:点击它,程序就开始运行!就像说”开始表演!”

• �� 红圆:点击它,程序就停止运行。就像说”停!”

• 全屏按钮:让舞台变成全屏,看起来更过瘾!

区域二:角色区(Sprite Pane)—— “演员”集合的地方

角色区在舞台的下方,显示当前项目中的所有角色。默认的”演员”就是 Scratch 的吉祥物——小猫

你可以在这里:

• 点击角色,选中它来编辑程序

• 点击��️画笔画一个全新的角色

• 点击��文件夹从电脑里导入图片当角色

• 点击��骰子从 Scratch 自带的角色库里挑选

区域三:积木区(Block Palette)—— “积木”仓库

积木区在屏幕的左侧,是所有积木的大仓库。这里面的积木按照功能分成了 9 大类,每类用不同的颜色标记:

颜色类别名称功能说明
�� 蓝色运动(Motion)控制角色移动、旋转、转向
�� 紫色外观(Looks)控制角色说话、换造型、改变大小
�� 粉色声音(Sound)播放声音、改变音量
�� 黄色事件(Events)程序的”开始”信号(如点击绿旗)
�� 橙色控制(Control)循环、等待、条件判断
�� 红色侦测(Sensing)碰到东西、按键、颜色检测
�� 绿色运算(Operators)加减乘除、比较大小
�� 天蓝色变量(Variables)存储数据的”盒子”
�� 深蓝色我的积木(My Blocks)自定义积木(高级功能)

[配图:Scratch 积木区截图,标注 9 大类积木的颜色和名称]

区域四:代码区(Code Area)—— “搭积木”的工作台

代码区在屏幕的中间,是真正搭积木的地方。你从左侧积木区把积木拖到这里,一块一块地拼起来,组成完整的程序。

代码区就是你的”工作台”,所有的编程工作都在这里完成。

2.3 第一个程序:让小猫说 “Hello!”

现在,让我们动手写第一个程序!超级简单,保证你 30 秒就能完成!

跟我做

第一步:确保选中了小猫角色

在角色区点击小猫,确保它周围有蓝色边框。

第二步:找到”事件”类积木

在左侧积木区,点击��黄色的”事件”类别。

第三步:拖出”当��被点击”积木

找到写着”当 �� 被点击”的积木,用鼠标按住它,拖到中间的代码区。

第四步:找到”外观”类积木

点击��紫色的”外观”类别。

第五步:拖出”说 Hello! 2 秒”积木

找到写着”说 Hello! 2 秒”的积木,拖到代码区。

第六步:把两块积木拼在一起

把”说 Hello!”积木的下端靠近”当��被点击”积木的下端。当它们靠近时,你会看到积木边缘出现高光效果(像拼图一样),松开鼠标,两块积木就拼在了一起!

[配图:Scratch 代码区截图,展示”当��被点击”和”说 Hello! 2 秒”两块积木拼在一起]

第七步:点击绿旗运行!

点击舞台上方的��绿旗,你会看到小猫头顶出现一个气泡,里面写着”Hello!”,2 秒后气泡消失。

�� 恭喜你!你的第一个 Scratch 程序完成了!

代码说明

用积木描述格式来表示,就是:

当 �� 被点击

→ 说 [Hello!] (2) 秒

这表示:

• 当绿旗被点击时(程序的”开始”信号)

• 让小猫说”Hello!”,说 2 秒钟

是不是很简单?就这么两行”积木”,就是一个完整的程序!

2.4 事件与顺序执行

什么是”事件”?

事件就是程序的“开始信号”。就像学校上课铃响了,同学们就知道”该开始上课了”。在 Scratch 里,最常见的事件就是”当��被点击”。

常见的事件积木有:

事件积木说明
当 �� 被点击点击绿旗时开始执行
当按下 [空格] 键按下键盘某个键时开始
当角色被点击用鼠标点击角色时开始
当背景切换到 [背景1]背景切换时开始
当接收到消息 [消息1]收到一条”消息”时开始

�� 小贴士:每个程序都要有一个事件积木来”开头”。就像写作文要有标题一样,事件积木就是程序的”标题”——它告诉 Scratch:”从这里开始执行!”

什么是”顺序执行”?

顺序执行就是从上往下、一步一步地执行指令。Scratch 会按照积木从上到下的排列顺序,一块一块地执行。

比如我们写这样一个程序:

当 �� 被点击

→ 说 [你好!] (2) 秒

→ 说 [我要走了!] (2) 秒

→ 移到 x: [0] y: [0]

→ 说 [拜拜!] (2) 秒

执行顺序是:

• 先说”你好!”,等 2 秒

• 再说”我要走了!”,等 2 秒

• 然后移动到舞台中央

• 最后说”拜拜!”,等 2 秒

就像排队一样,第一个做完,第二个才做,不会同时做。

�� 记住这个口诀

事件开头打头阵,积木排队往下行。

一个做完下一个,顺序执行要记清。

修改数字试一试

Scratch 的积木里经常有可以修改的数字(白色的输入框)。让我们修改一下刚才的程序:

试试这样做:

• 把”说 Hello! 2 秒”中的 “Hello!” 改成你的名字

• 把 “2” 秒改成 “5” 秒

• 点击绿旗运行

看看效果有什么不同?

你还可以再添加一块积木:

当 �� 被点击

→ 说 [你好,我是小飞!] (3) 秒

→ 将大小设为 (150) %

→ 等待 (1) 秒

→ 将大小设为 (100) %

→ 说 [看我变大了又变小了!] (3) 秒

运行看看效果——小猫先变大了,然后又变小了!

2.5 练习:让角色画画

现在我们来做一个更有趣的程序——让小猫在舞台上画画!

准备工作:使用”画笔”扩展

Scratch 有一个”画笔”功能,可以让角色在舞台上留下痕迹,像画画一样。但画笔功能默认没有显示,需要先添加。

添加画笔扩展的步骤:

• 在 Scratch 左下角,找到一个蓝色的小方块图标(扩展按钮),点击它。

• 在弹出的扩展列表中,找到”画笔”(Pen),点击它。

• 添加成功后,积木区左侧会多出一个绿色的”画笔”类别!

[配图:扩展按钮位置和画笔扩展添加界面截图]

画一个正方形

添加好画笔后,让我们来画一个正方形!

程序:

当 �� 被点击

→ 全部擦除

→ 将笔的粗细设为 (3)

→ 将笔的颜色设为 (红色)

→ 落笔

→ 重复 (4) 次

    → 移动 (100) 步

    → 右转 (90) 度

代码说明:

• 全部擦除:把舞台上之前画的都擦掉,开始一张”白纸”。

• 将笔的粗细设为 3:画出的线条粗细。

• 将笔的颜色设为红色:画出的线条颜色。你也可以改成蓝色、绿色等。

• 落笔:把”笔”放到纸上(开始画线)。如果”抬笔”,角色移动就不会画线。

• 重复 4 次:正方形有 4 条边,所以重复 4 次。

• 移动 100 步:向前画一条 100 步长的线。

• 右转 90 度:每画完一条边,转 90 度(直角),准备画下一条边。

[配图:画正方形的完整积木程序截图]

点击绿旗运行,你会看到小猫在舞台上画出一个完美的红色正方形!

画一个三角形

正方形会画了,三角形呢?

提示一下:三角形有 3 条边,需要转 3 次,每次转 120 度(不是 60 度哦!因为 Scratch 的”右转”是角色自身的转向角度)。

程序:

当 �� 被点击

→ 全部擦除

→ 将笔的粗细设为 (3)

→ 将笔的颜色设为 (蓝色)

→ 落笔

→ 重复 (3) 次

    → 移动 (100) 步

    → 右转 (120) 度

画一个五角星

更酷的五角星!五角星有 5 个角,每次转 144 度

程序:

当 �� 被点击

→ 全部擦除

→ 将笔的粗细设为 (2)

→ 将笔的颜色设为 (黄色)

→ 落笔

→ 重复 (5) 次

    → 移动 (100) 步

    → 右转 (144) 度

�� 彩虹色多边形

让我们加上颜色变化,画一个彩色的多边形!

程序:

当 �� 被点击

→ 全部擦除

→ 将笔的粗细设为 (3)

→ 落笔

→ 将笔的 [颜色] 设为 (0)

→ 重复 (36) 次

    → 移动 (10) 步

    → 右转 (10) 度

    → 将笔的 [颜色] 增加 (10)

运行看看——画出了一个颜色不断变化的圆形(36 边形)!每次转 10 度,转 36 次刚好转了 360 度(一圈),而且颜色也在不断变化,像彩虹一样美!

�� 动脑筋

如果每次右转 20 度,需要重复多少次才能画完一圈?(提示:360 ÷ 20 = ?)

如果每次右转 45 度呢?(360 ÷ 45 = ?)

这些就是八边形!试试看吧!

�� 本章小结

哇!你已经学会 Scratch 编程了!让我们回顾一下本章学到的知识:

✅ 知识清单

知识点你学会了吗?
Scratch 是什么(图形化编程)
Scratch 界面的四大区域
9 大类积木的颜色和功能
“当��被点击”事件
顺序执行的概念
添加”画笔”扩展
用画笔绘制正方形、三角形、五角星
颜色变化的效果

�� 本章重点回顾

• Scratch 是一款图形化编程语言,用拖拽积木的方式编程,不需要写文字代码。

• Scratch 界面分为 舞台区、角色区、积木区、代码区 四大区域。

• 积木按功能分为 9 大类,用不同颜色区分。

• 每个程序都需要一个 事件积木 作为开头。

• 程序按照积木 从上到下的顺序 一步步执行。

• 利用 画笔扩展 可以让角色在舞台上画画。

�� 课后小任务

• 基础题:在 Scratch 中,让小猫说”大家好,我是 [你的名字]!”,持续 3 秒。

• 进阶题:让小猫先说”我向左走”,然后向左走 50 步;再说”我向右走”,向右走 100 步。

• 创意题:用画笔画一个你喜欢的图案(比如房子、花朵、星星),试着加上颜色变化。

• 挑战题:能不能画一个六边形?提示:6 条边,每次转多少度?(360 ÷ 6 = ?)

�� 小飞的鼓励

“哈哈, Scratch 真的像搭积木一样简单!我已经迫不及待想用 Scratch 来控制无人机了!码码,下一章快开始吧!”

“别急别急!先把基础打好,下一章我们就让 Tello EDU 和 Scratch 牵手,正式开始飞行编程之旅!”码码笑着说。

第 3 章 让无人机听你的话

�� 本章目标:学会用 WiFi 连接 Tello EDU,安装 Tello Scratch 扩展,掌握基础飞行指令积木,完成第一个飞行程序。

�� 趣味导入

【小飞和码码的故事】

“码码!我已经学会 Scratch 了!画了正方形、三角形、五角星!”小飞兴奋得跳了起来。

“太棒了!”码码竖起了大拇指,”现在,是时候让你真正的’主角’登场了——让 Tello EDU 和 Scratch 连起来!”

“怎么连?用线吗?”

“不用线!用 WiFi!就像你的手机连家里的路由器一样,我们的电脑也要连上 Tello EDU 的 WiFi,这样就能’对话’了。”

“那连上以后呢?”

“连上以后,Scratch 里就会多出一套’飞行积木’——用这些积木,你可以指挥无人机起飞、前进、转弯、翻滚,就像指挥一个空中舞者!”

小飞的眼睛闪闪发光:”那就快开始吧!”

3.1 Scratch 与 Tello EDU 的连接方法

连接原理:WiFi 通信

Tello EDU 开机后,会创建一个自己的 WiFi 热点(就像一个小型路由器)。我们的电脑连接这个 WiFi 后,就可以通过网络和无人机通信了。

具体来说:

• 电脑 → WiFi → Tello EDU:电脑通过 WiFi 发送指令给无人机。

• Tello EDU → WiFi → 电脑:无人机把摄像头画面、传感器数据传回电脑。

这就像你用对讲机说话,声音通过无线电波传到对方的对讲机里。只不过我们用 WiFi 来”说话”。

[配图:电脑、WiFi 信号、Tello EDU 三者通信示意图]

连接步骤(图文详解)

⚠️ 安全小卫士提醒

开始连接之前,请确保:

– ✅ Tello EDU 已充满电

– ✅ 已安装好螺旋桨和保护罩

– ✅ 飞行区域已清理干净

– ✅ 爸爸妈妈在旁边

第一步:启动 Tello EDU

按住机身上的电源键约 2 秒,直到指示灯闪烁。无人机会发出”嘀”的一声,表示已开机。

第二步:连接 WiFi

• 在电脑上,点击 WiFi 图标,查看可用的 WiFi 网络。

• 找到名为 “TELLO-XXXXXX”(X 代表数字和字母)的 WiFi 信号。

• 点击连接(Tello 的 WiFi 不需要密码,直接点击就能连上)。

⚠️ 重要提醒:连接 Tello 的 WiFi 后,你的电脑可能会暂时上不了网,这是正常的!因为电脑的网络连到了 Tello,不是路由器。等我们完成操作断开连接后,就能恢复上网了。

第三步:打开 Scratch 离线版

确保你安装的是 Scratch 离线版(桌面版),在线版无法连接无人机。

第四步:添加 Tello 扩展

• 在 Scratch 左下角,点击蓝色扩展按钮。

• 在扩展列表中,你会看到”Tello Drone”(如果没看到,可能需要安装 Tello 扩展服务器,具体步骤见下一节)。

• 点击”Tello Drone”,积木区左侧就会多出一组飞行积木

[配图:扩展选择界面,标注 Tello Drone 扩展位置]

第五步:连接确认

添加好 Tello 扩展后,Scratch 会自动尝试与无人机通信。如果连接成功,你会看到积木区中的飞行积木变为可用状态。

�� 小妙招

如果连接不成功,试试这些办法:

1. 关闭 Tello,等 5 秒再重新开机。

2. 断开 WiFi 连接,重新连接 Tello 的 WiFi。

3. 关闭 Scratch,重新打开。

4. 检查电脑上是否有防火墙阻止了 Scratch 的网络访问。

3.2 安装 Tello Scratch 扩展

什么是 Tello Scratch 扩展?

Tello Scratch 扩展是一套额外的积木,专门用来控制 Tello 无人机。它不是 Scratch 自带的,需要额外安装。

安装这个扩展后,你的积木区就会多出一类”飞行积木”,里面有起飞、降落、前进、后退等指令。

安装方法

方法一:使用 Tello Scratch Link(推荐)

Tello 官方提供了 Tello Scratch Link 工具,安装后 Scratch 就能自动识别 Tello 扩展。

步骤:

• 在电脑上打开浏览器,访问 Tello 官方网站的教育板块。

• 下载并安装 Tello Scratch Link(根据你的电脑系统选择 Windows 或 Mac 版本)。

• 安装完成后,运行 Tello Scratch Link,它会在后台运行(系统托盘会有一个图标)。

• 打开 Scratch 离线版,点击扩展按钮,就能看到”Tello Drone”选项了。

[配图:Tello Scratch Link 安装流程截图]

方法二:使用第三方扩展(替代方案)

如果官方扩展不可用,也有一些社区开发的替代方案,比如基于 Python 的 Tello Scratch 服务器。这需要爸爸妈妈帮忙安装。

�� 你知道吗?

Tello 扩展的安装可能因版本和系统不同而有所差异。如果遇到问题,可以在 Tello 官方论坛或者教育社区搜索解决方案。记住,遇到问题不要灰心,很多编程高手都是从”解决问题”中成长起来的!

3.3 基础指令积木详解

现在让我们认识一下 Tello 扩展给我们带来的”飞行积木”们!

基础飞行指令一览

Tello 扩展的积木可以分为以下几类:

�� 连接类

积木功能
连接 Tello与无人机建立连接
断开 Tello断开与无人机的连接

�� 起飞降落类

积木功能
Tello 起飞无人机起飞,悬停在约 1 米高度
Tello 降落无人机安全降落

�� 移动类

积木功能范围
Tello 向前飞行 (20) 厘米向前飞行指定距离20-500 厘米
Tello 向后飞行 (20) 厘米向后飞行指定距离20-500 厘米
Tello 向左飞行 (20) 厘米向左飞行指定距离20-500 厘米
Tello 向右飞行 (20) 厘米向右飞行指定距离20-500 厘米

�� 高度控制类

积木功能范围
Tello 向上飞行 (20) 厘米向上升高指定距离20-500 厘米
Tello 向下飞行 (20) 厘米向下降低指定距离20-500 厘米

�� 旋转类

积木功能范围
Tello 向左旋转 (90) 度向左旋转指定角度1-360 度
Tello 向右旋转 (90) 度向右旋转指定角度1-360 度

�� 翻滚类

积木功能
Tello 向前翻滚向前翻一个跟头
Tello 向后翻滚向后翻一个跟头
Tello 向左翻滚向左翻一个跟头
Tello 向右翻滚向右翻一个跟头

�� 摄像头类

积木功能
Tello 拍照拍一张照片
Tello 录像开始/停止录像

�� 数据查询类

积木功能
Tello 高度获取当前飞行高度
Tello 电池电量获取电池剩余电量
Tello 飞行时间获取已飞行时间
Tello 温度获取当前温度
Tello 气压获取当前气压值
Tello 加速度 x/y/z获取三个方向的加速度

[配图:Tello 扩展所有积木的截图]

方向说明:无人机的”前后左右”

无人机的”前后左右”和你想象的可能不一样!

• 前方 = 摄像头的方向(也就是无人机的”头”朝向的方向)

• 后方 = 摄像头相反的方向

• 左方 = 面向摄像头方向的左边

• 右方 = 面向摄像头方向的右边

�� 小贴士

想象你自己站在无人机上,面朝摄像头的方向。你的前方就是无人机的前方,你的左边就是无人机的左边。

当你让无人机”向右旋转90度”后,它的”前方”就变成了原来的右边!所以下一次”向前飞行”,它就去原来的右边了。这一点非常重要,一定要记住!

[配图:无人机前后左右方向标注图]

3.4 第一个飞行程序:起飞 → 前进 → 降落

好了,一切准备就绪!让我们来写第一个真正的飞行程序!

安全准备

��️ 安全小卫士飞行前检查清单

– ✅ 螺旋桨安装正确(A 桨在 A 位,B 桨在 B 位)

– ✅ 保护罩已安装

– ✅ 飞行区域至少 2 米 × 2 米,无障碍物

– ✅ 周围没有人围观(至少保持 1 米距离)

– ✅ 头发扎好,衣物整齐

– ✅ 电池电量充足(至少 50% 以上)

编写程序

打开 Scratch,确保 Tello 扩展已加载,然后把下面的积木拼起来:

当 �� 被点击

→ 连接 Tello

→ 等待 (2) 秒

→ Tello 起飞

→ 等待 (2) 秒

→ Tello 向前飞行 (50) 厘米

→ 等待 (3) 秒

→ Tello 降落

[配图:第一个飞行程序的完整积木截图]

程序说明

让我们一行一行来看这个程序:

• 当 �� 被点击:你点击绿旗,程序开始。

• 连接 Tello:电脑和无人机”握手”建立连接。

• 等待 2 秒:给无人机一点时间准备。就像运动员起跑前要”各就各位”一样。

• Tello 起飞:无人机起飞,升到约 1 米高,悬停在空中。

• 等待 2 秒:让无人机稳定悬停。

• Tello 向前飞行 50 厘米:无人机向前方飞 50 厘米(半米)。

• 等待 3 秒:等无人机完成飞行动作。

• Tello 降落:无人机慢慢降落,安全着陆!

�� 为什么需要”等待”?

因为无人机执行每个动作需要时间!如果”起飞”的积木后面紧跟”向前飞行”,无人机还没来得及稳定就开始向前飞,可能会晃得很厉害。加上”等待”积木,就像给无人机一个”准备好了”的信号。

这叫做程序的时间控制——好的程序要合理安排时间,就像人的行动也要一步一步来。

运行程序

• 把 Tello EDU 放在空旷的地面上。

• 确保所有人都退到安全距离。

• 点击 Scratch 的 �� 绿旗!

• 看着你的无人机按照你编写的程序起飞、前进、降落!

�� 太棒了!你的无人机按照你的代码飞了!这就是”编程控制”的魔力!

3.5 小挑战:让无人机飞一个 “L” 形路线

第一个飞行程序成功了!现在让我们来挑战一个稍微复杂的路线——“L” 形!

什么是 “L” 形路线?

想象一个字母 “L”,它由两段直线组成:先向前走一段,然后转 90 度(向右转),再向前走一段。

起点 ●──────→ 前进 50cm

             │

             ↓ 右转 90 度

             │

             ↓ 前进 50cm

             │

             ● 终点

设计程序

想想看,你需要哪些积木?

提示:起飞 → 前进 → 转弯 → 前进 → 降落

参考答案:

当 �� 被点击

→ 连接 Tello

→ 等待 (2) 秒

→ Tello 起飞

→ 等待 (2) 秒

→ Tello 向前飞行 (50) 厘米

→ 等待 (3) 秒

→ Tello 向右旋转 (90) 度

→ 等待 (2) 秒

→ Tello 向前飞行 (50) 厘米

→ 等待 (3) 秒

→ Tello 降落

[配图:L 形飞行路线示意图和对应的积木程序]

进阶挑战:飞一个 “U” 形

如果 “L” 形难不住你,试试 “U” 形!

起点 ●──────→ 前进 50cm

             │

             ↓ 右转 90 度

             │

             ↓ 前进 80cm

             │

             ↓ 右转 90 度

             │

        ←─── ● 前进 50cm

             │

             ● 终点(在起点旁边)

参考答案:

当 �� 被点击

→ 连接 Tello

→ 等待 (2) 秒

→ Tello 起飞

→ 等待 (2) 秒

→ Tello 向前飞行 (50) 厘米

→ 等待 (3) 秒

→ Tello 向右旋转 (90) 度

→ 等待 (2) 秒

→ Tello 向前飞行 (80) 厘米

→ 等待 (3) 秒

→ Tello 向右旋转 (90) 度

→ 等待 (2) 秒

→ Tello 向前飞行 (50) 厘米

→ 等待 (3) 秒

→ Tello 降落

超级挑战:飞一个 “口” 形(回到起点)

能不能让无人机飞一个正方形路线,最后回到起点?

提示:需要 4 次”前进 + 右转90度”。

参考答案:

当 �� 被点击

→ 连接 Tello

→ 等待 (2) 秒

→ Tello 起飞

→ 等待 (2) 秒

→ Tello 向前飞行 (50) 厘米

→ 等待 (3) 秒

→ Tello 向右旋转 (90) 度

→ 等待 (2) 秒

→ Tello 向前飞行 (50) 厘米

→ 等待 (3) 秒

→ Tello 向右旋转 (90) 度

→ 等待 (2) 秒

→ Tello 向前飞行 (50) 厘米

→ 等待 (3) 秒

→ Tello 向右旋转 (90) 度

→ 等待 (2) 秒

→ Tello 向前飞行 (50) 厘米

→ 等待 (3) 秒

→ Tello 降落

�� 动脑筋

上面的正方形程序里,有没有”重复”的部分?

看看:”向前飞行50厘米”和”右转90度”这个组合重复了好几次!

没错,有 4 次完全一样的”前进+转弯” 组合。有没有什么办法让程序更简洁呢?

这就是下一章——循环的力量要告诉你的秘密!

�� 本章小结

太厉害了!你已经成功让无人机按照你的程序飞行了!

✅ 知识清单

知识点你学会了吗?
电脑通过 WiFi 连接 Tello EDU
安装 Tello Scratch 扩展
基础飞行指令积木(起飞、降落、前进、后退、旋转)
无人机”前后左右”的定义
“等待”积木的作用
编写第一个飞行程序
让无人机飞 L 形、U 形、正方形路线

�� 本章重点回顾

• 连接方式:电脑通过 WiFi 连接 Tello EDU,实现无线通信和控制。

• 扩展安装:安装 Tello Scratch 扩展后,Scratch 里多出飞行积木。

• 基础指令:起飞、降落、前进/后退/左右飞行、左右旋转、翻滚等。

• 方向规则:无人机的”前后左右”是以摄像头方向为前方的。

• 等待很重要:每个动作之间加”等待”,让无人机有足够时间完成动作。

• 正方形路线:4 次”前进 + 右转90度”,可以飞出一个正方形。

�� 课后小任务

• 基础题:编写程序,让无人机起飞后向右飞 30 厘米,然后降落。

• 进阶题:编写程序,让无人机飞一个长方形(长 60 厘米,宽 30 厘米)。

• 挑战题:编写程序,让无人机飞一个 “Z” 形路线。

• 创意题:设计一条你自己喜欢的飞行路线,画出来,再编写程序让无人机飞出来。

�� 小飞的话

“我发现编程控制无人机真的很有成就感!虽然要等一会儿,但看着无人机按照我的指令飞起来,就像魔法一样!”

码码说:”魔法的本质就是编程。不过你有没有发现,飞正方形的时候,我们重复写了 4 次一样的代码?下一章,我们要学习一种让代码变简洁的’超能力’——循环!”

第 4 章 循环的力量

�� 本章目标:理解循环的概念,掌握”重复 N 次”和”重复执行”积木,用循环让无人机飞各种图形,体验循环嵌套。

�� 趣味导入

【小飞和码码的故事】

“码码,我昨天让无人机飞了一个正方形路线!”小飞骄傲地说。

“太棒了!那你用了多少块积木?”码码问。

“呃……让我数数……起飞、前进、转弯、前进、转弯、前进、转弯、前进、转弯、降落……哇,好多块!”

“哈哈,是不是觉得很麻烦?如果让你飞一个八边形,要写 8 次’前进+转弯’,十六边形要写 16 次……”

“天哪,那不得写到手酸?”

“所以今天我要教你一个’超能力’——循环!有了循环,飞正方形只需要写一次’前进+转弯’,然后告诉 Scratch’重复 4 次’就好了!”

“真的吗?这也太神奇了吧!快教教我!”

4.1 什么是循环?

生活中的循环

其实循环就在你身边,你每天都在经历循环!

�� 每天早上起床后的流程:

• 起床

• 刷牙

• 洗脸

• 穿衣服

• 吃早饭

周一重复、周二重复、周三重复……周一到周五,每天都在重复同样的事情! 这就是循环!

�� 时钟的指针:

秒针走 60 秒回到原点,分针走 60 分钟回到原点,时针走 12 小时回到原点……时间就是在一圈一圈的循环中流逝的。

�� 四季更替:

春天 → 夏天 → 秋天 → 冬天 → 春天 → 夏天 → 秋天 → 冬天……年复一年,四季不断循环。

编程中的循环

在编程里,循环就是让一段代码重复执行多次

上一章我们写正方形飞行的程序时,”前进 + 右转90度”这个组合重复了 4 次。在 Scratch 里,我们不需要写 4 遍,而是用一个”重复”积木把它包起来:

不用循环(笨办法):

Tello 向前飞行 (50) 厘米

等待 (3) 秒

Tello 向右旋转 (90) 度

等待 (2) 秒

Tello 向前飞行 (50) 厘米

等待 (3) 秒

Tello 向右旋转 (90) 度

等待 (2) 秒

Tello 向前飞行 (50) 厘米

等待 (3) 秒

Tello 向右旋转 (90) 度

等待 (2) 秒

Tello 向前飞行 (50) 厘米

等待 (3) 秒

Tello 向右旋转 (90) 度

等待 (2) 秒

用循环(聪明办法):

重复 (4) 次

    → Tello 向前飞行 (50) 厘米

    → 等待 (3) 秒

    → Tello 向右旋转 (90) 度

    → 等待 (2) 秒

�� 看!用循环后,原来 16 行代码变成了 4 行!

这就是循环的魅力——用更少的代码,做更多的事!

4.2 重复积木讲解

两种重复积木

Scratch 的 ��橙色”控制”类别里有两种常用的重复积木:

�� 重复 N 次(固定次数循环)

重复 (10) 次

    → [要重复执行的积木]

这个积木就像老师说:”把这段课文读 10 遍!” 你知道要读多少遍——10 遍,不多不少。

�� 重复执行(无限循环)

重复执行

    → [要重复执行的积木]

这个积木没有数字,意思就是”一直重复下去,永远不会自己停下来”。除非你点击 �� 红色停止按钮。

�� 注意:在控制无人机时,我们通常用”重复 N 次”,因为无人机不能无限飞下去(电池会耗尽的!)。”重复执行”一般用在不需要让无人机停止的演示场景中。

认识”重复 N 次”积木

“重复 ( ) 次”积木长得像一个 C 形的夹子,可以把其他积木”夹”在里面:

┌─────────────────────┐

│ 重复 ( 4 ) 次       │

│ ┌─────────────────┐ │

│ │ [被夹住的积木]   │ │

│ │ [被夹住的积木]   │ │

│ └─────────────────┘ │

└─────────────────────┘

• 括号里的数字可以修改——想重复几次就改成几。

• 被”夹住”的积木会在每次循环中全部执行一遍。

[配图:重复 N 次积木的截图,标注各个部分]

4.3 让无人机飞正方形

让我们用循环来重新编写正方形飞行程序!

完整程序

当 �� 被点击

→ 连接 Tello

→ 等待 (2) 秒

→ Tello 起飞

→ 等待 (2) 秒

→ 重复 (4) 次

    → Tello 向前飞行 (50) 厘米

    → 等待 (3) 秒

    → Tello 向右旋转 (90) 度

    → 等待 (2) 秒

→ Tello 降落

[配图:使用循环的正方形飞行程序积木截图]

程序解析

让我们来看看 Scratch 是怎么执行这个程序的:

步骤动作说明
1连接 Tello建立通信连接
2等待 2 秒准备时间
3起飞飞到 1 米高度
4等待 2 秒稳定悬停
5循环第 1 次前进 50cm → 等待 → 右转 90° → 等待
6循环第 2 次前进 50cm → 等待 → 右转 90° → 等待
7循环第 3 次前进 50cm → 等待 → 右转 90° → 等待
8循环第 4 次前进 50cm → 等待 → 右转 90° → 等待
9降落安全着陆

4 次循环,每次前进 50cm + 右转 90°,总共转了 4 × 90° = 360°(一圈),刚好回到起点!

�� 数学小发现

正方形有 4 条边,每条边之间的夹角是 90°。

4 × 90° = 360°(一整圈)。

这个规律对所有的封闭图形都适用:

– 三角形:3 × 120° = 360° ✅

– 正方形:4 × 90° = 360° ✅

– 五边形:5 × 72° = 360° ✅

– 六边形:6 × 60° = 360° ✅

– N 边形:N × (360°/N) = 360° ✅

记住这个规律:每次旋转的角度 = 360° ÷ 边数

4.4 飞三角形、飞五角星

飞三角形

三角形有 3 条边,每次旋转 360° ÷ 3 = 120°。

当 �� 被点击

→ 连接 Tello

→ 等待 (2) 秒

→ Tello 起飞

→ 等待 (2) 秒

→ 重复 (3) 次

    → Tello 向前飞行 (50) 厘米

    → 等待 (3) 秒

    → Tello 向右旋转 (120) 度

    → 等待 (2) 秒

→ Tello 降落

飞五边形

五边形有 5 条边,每次旋转 360° ÷ 5 = 72°。

当 �� 被点击

→ 连接 Tello

→ 等待 (2) 秒

→ Tello 起飞

→ 等待 (2) 秒

→ 重复 (5) 次

    → Tello 向前飞行 (40) 厘米

    → 等待 (3) 秒

    → Tello 向右旋转 (72) 度

    → 等待 (2) 秒

→ Tello 降落

飞六边形

六边形有 6 条边,每次旋转 360° ÷ 6 = 60°。

当 �� 被点击

→ 连接 Tello

→ 等待 (2) 秒

→ Tello 起飞

→ 等待 (2) 秒

→ 重复 (6) 次

    → Tello 向前飞行 (40) 厘米

    → 等待 (3) 秒

    → Tello 向右旋转 (60) 度

    → 等待 (2) 秒

→ Tello 降落

�� 用变量控制边数(预告)

你有没有发现,飞不同图形时,只需要改两个数字——重复次数旋转角度

如果我们可以用一个”盒子”来存放这两个数字,每次只需要改”盒子”里的值就好了。这个”盒子”就是变量,我们在第 6 章会详细学习!

�� 动脑筋

用循环来控制无人机飞不同图形,你觉得边数越多,图形越像什么?

答案:边数越多,图形越接近圆形!如果边数是 36,每次前进 20cm、旋转 10°,飞出来的就是一个近似的圆形!

4.5 连续翻滚动作

现在让我们试试更酷的动作——翻滚!

Tello EDU 可以做前滚翻、后滚翻、左滚翻、右滚翻。想象一下,无人机在空中连续翻了 4 个跟头,是不是超级酷?

连续前翻滚

当 �� 被点击

→ 连接 Tello

→ 等待 (2) 秒

→ Tello 起飞

→ 等待 (2) 秒

→ 重复 (4) 次

    → Tello 向前翻滚

    → 等待 (2) 秒

→ Tello 降落

[配图:连续翻滚程序积木截图]

混合翻滚

不只翻同一个方向!我们可以让无人机前后左右都翻一遍:

当 �� 被点击

→ 连接 Tello

→ 等待 (2) 秒

→ Tello 起飞

→ 等待 (2) 秒

→ Tello 向前翻滚

→ 等待 (2) 秒

→ Tello 向右翻滚

→ 等待 (2) 秒

→ Tello 向后翻滚

→ 等待 (2) 秒

→ Tello 向左翻滚

→ 等待 (2) 秒

→ Tello 降落

这样无人机就像在跳”翻滚舞”一样,前、右、后、左各翻一个跟头!

⚠️ 安全小卫士提醒

翻滚时无人机会下降一些高度,所以:

– 确保飞行高度足够(至少在 1.5 米以上)

– 翻滚动作之间要留够等待时间(至少 2 秒)

– 飞行区域上方不能有障碍物

4.6 循环嵌套初体验

循环嵌套就是在一个循环里面再套一个循环,就像俄罗斯套娃一样!

什么是嵌套?

举个例子,你想让无人机飞一个”花形”图案——飞一个正方形,然后在每个顶点翻一个跟头。

这可以分解为:

• 外层循环:重复 4 次(正方形的 4 个边)

• 内层动作 1:前进 50cm

• 内层动作 2:翻滚一次

• 内层动作 3:右转 90°

但是如果我们想让这个”花形”重复 3 圈呢?

重复 (3) 次                    ← 外层循环:飞 3 圈

    → 重复 (4) 次              ← 内层循环:每圈飞 4 条边

        → Tello 向前飞行 (40) 厘米

        → 等待 (2) 秒

        → Tello 向前翻滚

        → 等待 (2) 秒

        → Tello 向右旋转 (90) 度

        → 等待 (2) 秒

这里:

• 外层循环执行 3 次

• 每次外层循环时,内层循环执行 4 次

• 总共飞了 3 × 4 = 12 条边!

[配图:循环嵌套的积木截图,用颜色标注外层和内层循环]

�� 小贴士

循环嵌套是很强大的编程技巧,但也要注意不要嵌套太多层,否则程序会变得很复杂,无人机可能来不及执行。对于 Tello EDU,建议嵌套不超过 2 层。

螺旋飞行

用循环嵌套可以做出螺旋飞行的效果——每一圈比上一圈飞得更高!

当 �� 被点击

→ 连接 Tello

→ 等待 (2) 秒

→ Tello 起飞

→ 等待 (2) 秒

→ 重复 (4) 次

    → 重复 (4) 次

        → Tello 向前飞行 (30) 厘米

        → 等待 (2) 秒

        → Tello 向右旋转 (90) 度

        → 等待 (2) 秒

    → Tello 向上飞行 (15) 厘米

    → 等待 (2) 秒

→ Tello 降落

效果:无人机每飞完一个正方形,就上升 15 厘米,再飞下一个正方形,形成螺旋上升的轨迹!

[配图:螺旋飞行轨迹示意图]

4.7 挑战任务:设计你自己的循环飞行图案

现在是自由创作时间!用你学到的循环知识,设计一个独特的飞行图案。

灵感库

这里有几个创意方向供你参考:

创意 1:螺旋上升圆形

重复 (8) 次

    → Tello 向前飞行 (20) 厘米

    → 等待 (2) 秒

    → Tello 向右旋转 (45) 度

    → 等待 (1) 秒

    → Tello 向上飞行 (5) 厘米

    → 等待 (1) 秒

(8 次,每次转 45° = 360°,画一个圆;每圈上升 5cm,螺旋上升 40cm)

创意 2:之字形前进

重复 (5) 次

    → Tello 向右旋转 (45) 度

    → 等待 (1) 秒

    → Tello 向前飞行 (30) 厘米

    → 等待 (2) 秒

    → Tello 向左旋转 (90) 度

    → 等待 (1) 秒

    → Tello 向前飞行 (30) 厘米

    → 等待 (2) 秒

    → Tello 向右旋转 (45) 度

    → 等待 (1) 秒

创意 3:跳舞的无人机

重复 (3) 次

    → Tello 向前翻滚

    → 等待 (2) 秒

    → Tello 向上飞行 (10) 厘米

    → 等待 (1) 秒

    → Tello 向右旋转 (180) 度

    → 等待 (2) 秒

    → Tello 向后翻滚

    → 等待 (2) 秒

    → Tello 向下飞行 (10) 厘米

    → 等待 (1) 秒

    → Tello 向右旋转 (180) 度

    → 等待 (2) 秒

设计步骤

第一步:画草图

先在纸上画出你想要的飞行路线。标注每一段的距离和转弯角度。

第二步:分解动作

把飞行路线分解成一个一个的动作:前进多少、转多少度、翻滚等。

第三步:找规律

看看有没有重复的部分?有的话就用循环包起来。

第四步:编写程序

把分解好的动作写成 Scratch 积木程序。

第五步:测试修改

运行程序,看看效果。不满意的地方调整数字再试。

[配图:设计流程示意图——画草图→分解动作→找规律→编写程序→测试修改]

�� 小妙招

编写循环程序时,先在纸上写出来,算一算需要多少步。特别是计算旋转角度时,记住公式:

每次旋转角度 = 360° ÷ 重复次数

比如想转 8 次画一个八角形:360° ÷ 8 = 45°。

想转 12 次画一个十二边形:360° ÷ 12 = 30°。

�� 本章小结

恭喜你掌握了循环这个强大的编程工具!

✅ 知识清单

知识点你学会了吗?
循环的概念(重复执行一段代码)
“重复 N 次”积木的使用
“重复执行”积木的使用
用循环飞正方形(4次,转90°)
用循环飞三角形(3次,转120°)
用循环飞五边形、六边形
连续翻滚动作
循环嵌套的概念
设计自己的循环飞行图案

�� 本章重点回顾

• 循环就是让一段代码重复执行多次,可以大大简化程序。

• “重复 N 次”:执行固定次数的循环,最常用。

• “重复执行”:无限循环,一直执行直到手动停止。

• 封闭图形规律:每次旋转角度 = 360° ÷ 边数。

• 循环嵌套:循环里面套循环,可以做更复杂的动作。

• 设计流程:画草图 → 分解动作 → 找规律 → 编写程序 → 测试修改。

�� 课后小任务

• 基础题:用循环编写程序,让无人机飞一个正八边形(8条边)。

• 进阶题:用循环嵌套,让无人机飞 3 个正方形,每个正方形之间旋转 30°。

• 挑战题:设计一个”8 字形”(像数字 8)的飞行路线。提示:先飞一个圆(转36次,每次10°),然后转向,再飞一个圆。

• 创意题:自由设计一个飞行图案,画出来并编写程序,在下节课上和同学们分享!

�� 码码的提示

“循环是编程中最重要的概念之一。以后你会在各种程序中看到循环的身影——游戏、动画、APP,哪里都有它!现在你已经会用循环控制无人机了,这是一个很棒的开始!”

“不过,你有没有想过——如果无人机能自己判断’前方有障碍物’然后自动转弯,那该多好啊?这就需要用到另一种’超能力’——条件判断。准备好进入下一章了吗?”

第 5 章 聪明的判断

�� 本章目标:理解条件判断的概念,掌握”如果…那么…”和”如果…那么…否则…”积木,学会用传感器数据做出智能决策。

�� 趣味导入

【小飞和码码的故事】

“码码,我觉得无人机还不太聪明。”小飞皱着眉头说。

“为什么这么说?”码码好奇地问。

“你看,我们让它前进50厘米,它就前进50厘米。但如果前方有一堵墙呢?它还是会傻傻地撞上去!”

“哈!你说得对!”码码笑了,”这是因为我们的程序只告诉无人机’前进’,没有告诉它’如果遇到障碍就停下’。”

“那怎么让它变聪明呢?”

“我们需要教它学会判断!就像你过马路时,看到红灯就停,看到绿灯就走。无人机也需要学会’如果…那么…’的思考方式。”

“‘如果前面有墙,那么转弯’——是这样吗?”

“完全正确!这就是条件判断——给程序加上’如果’,让无人机学会自己思考和决策!”

5.1 什么是条件判断?

生活中的条件判断

你每天都在做判断,只是可能没注意到:

• 如果明天下雨,那么我带伞。

• 如果作业写完了,那么我可以看动画片。

• 如果肚子饿了,那么我去吃饭。

• 如果闹钟响了,那么我起床。否则我继续睡。

这就是条件判断——先检查某个条件是否满足,然后根据结果决定做什么

Scratch 中的条件判断积木

在 Scratch 的 ��橙色”控制”类别中,有两种条件判断积木:

�� 如果…那么…(单条件)

如果 <条件> 那么

    → [要做的事]

先检查”条件”是否成立。如果成立(为”真”),就执行”要做的事”;如果不成立(为”假”),就跳过,什么都不做。

�� 如果…那么…否则…(双条件)

如果 <条件> 那么

    → [条件成立时做的事]

否则

    → [条件不成立时做的事]

先检查”条件”是否成立。如果成立,执行”条件成立时做的事”;如果不成立,执行”条件不成立时做的事”。两种情况一定会执行其中一种!

[配图:两种条件判断积木的截图]

条件是什么?

条件是一个可以判断对错(真假)的表达式

比如:

• 电池电量 < 20——这个条件可以是对的(电量真的低于20)或错的(电量高于20)。

• 高度 > 100——高度真的超过 100 厘米吗?

• 距离 < 30——离障碍物真的不到 30 厘米吗?

�� 小贴士

条件积木是菱形的(尖尖的角),和方方的动作积木不一样。在 Scratch 里,看形状就能分清:

– 方形积木 = 做一件事(命令)

– 菱形积木 = 判断一个条件(结果是”真”或”假”)

– 圆角积木 = 一个数值(数字或文字)

5.2 如果碰到障碍物就转向

这是最实用的条件判断应用之一!

原理

Tello EDU 底部有一个 ToF 距离传感器(ToF = Time of Flight,飞行时间),它可以测量无人机到下方地面的距离。我们可以在程序中判断:

• 如果距离小于某个值(说明靠近了障碍物),那么就转弯避开。

程序

当 �� 被点击

→ 连接 Tello

→ 等待 (2) 秒

→ Tello 起飞

→ 等待 (2) 秒

→ 重复 (10) 次

    → 如果 <(Tello 距离) < (30)> 那么

        → Tello 向右旋转 (90) 度

        → 等待 (2) 秒

    → Tello 向前飞行 (30) 厘米

    → 等待 (2) 秒

→ Tello 降落

程序解析

• 无人机起飞。

• 进入循环(重复 10 次)。

• 每次循环时,先检查距离传感器的值:

• 如果距离 < 30 厘米(说明靠近了障碍物),就右转 90° 避开。

• 如果距离 ≥ 30 厘米,什么都不做,直接继续前进。

• 前进 30 厘米。

• 循环 10 次后降落。

�� 动脑筋

上面的程序中,”距离”是指无人机到下方地面的距离。但在实际避障中,我们更关心的是无人机到前方墙壁的距离。Tello EDU 只有向下的 ToF 传感器,没有前方的传感器。

不过我们可以用一种”聪明”的方法来模拟前方避障——让无人机在固定时间内前进固定距离,如果电池消耗突然加快(速度变慢),可能是碰到了障碍物。当然,这比较复杂。

更简单的方法是:通过设定合适的飞行距离,确保无人机不会飞到障碍物附近。比如在 3 米 × 3 米的房间里,每次前进不超过 50 厘米,配合多次转弯,就能安全地”探索”房间了。

5.3 如果高度超过 1 米就下降

这个程序让无人机保持在一个安全的高度范围内飞行。

程序

当 �� 被点击

→ 连接 Tello

→ 等待 (2) 秒

→ Tello 起飞

→ 等待 (2) 秒

→ 重复 (8) 次

    → 如果 <(Tello 高度) > (100)> 那么

        → Tello 向下飞行 (20) 厘米

        → 等待 (2) 秒

        → 说 [太高了!降一点…] (2) 秒

    → 如果 <(Tello 高度) < (50)> 那么

        → Tello 向上飞行 (20) 厘米

        → 等待 (2) 秒

        → 说 [太低了!升一点…] (2) 秒

    → Tello 向前飞行 (30) 厘米

    → 等待 (2) 秒

→ Tello 降落

程序解析

这个程序有两个条件判断:

判断 1:如果高度 > 100 厘米(超过 1 米),就下降 20 厘米。

判断 2:如果高度 < 50 厘米(低于 0.5 米),就上升 20 厘米。

这样无人机就会自动保持在 50-100 厘米的高度范围内飞行,像一个自动高度调节器!

�� 你知道吗?

真正的无人机(比如大疆的无人机)也有类似的功能,叫做”自动高度保持“。它通过气压计和超声波传感器不断测量高度,然后自动调整油门来保持高度不变。我们的程序做的就是同样的事情,只是更简单一些!

5.4 “如果…否则”的应用

让我们用”如果…否则”让无人机做出更丰富的反应。

电池电量提醒程序

当 �� 被点击

→ 连接 Tello

→ 等待 (2) 秒

→ Tello 起飞

→ 等待 (2) 秒

→ 重复 (5) 次

    → 如果 <(Tello 电池电量) < (30)> 那么

        → 说 [电量不足!准备降落!] (3) 秒

        → Tello 降落

    → 否则

        → 说 [电量充足,继续飞行!] (2) 秒

        → Tello 向前飞行 (40) 厘米

        → 等待 (3) 秒

→ Tello 降落

温度提醒程序

当 �� 被点击

→ 连接 Tello

→ 等待 (2) 秒

→ 如果 <(Tello 温度) > (40)> 那么

    → 说 [温度太高了!让我休息一下…] (3) 秒

→ 否则

    → 如果 <(Tello 温度) < (10)> 那么

        → 说 [好冷啊!让我热热身…] (3) 秒

    → 否则

        → 说 [温度刚刚好,准备起飞!] (3) 秒

        → Tello 起飞

�� 注意:这个程序展示了”条件的嵌套”——在一个”如果…否则”的”否则”里面,又放了一个”如果…否则”。这在编程中很常见,但嵌套太深会让程序很难读懂,要注意保持清晰。

5.5 简单迷宫飞行程序

让我们来做一个更有趣的项目——让无人机在一个简单的”迷宫”中飞行!

设计迷宫

我们用一个 2 米 × 2 米的空地作为”迷宫”,在几个位置放上纸箱子作为”墙壁”。

[配图:简单迷宫平面图,标注起点、终点和纸箱位置]

迷宫飞行策略

一个简单但有效的迷宫飞行策略是:

• 无人机起飞。

• 前进一段距离。

• 如果检测到障碍物(用距离传感器判断),右转 90° 避开。

• 重复以上步骤,直到到达终点。

程序

当 �� 被点击

→ 连接 Tello

→ 等待 (2) 秒

→ Tello 起飞

→ 等待 (2) 秒

→ 说 [开始迷宫探险!] (2) 秒

→ 重复 (15) 次

    → 如果 <(Tello 距离) < (25)> 那么

        → 说 [发现障碍物!右转!] (2) 秒

        → Tello 向右旋转 (90) 度

        → 等待 (2) 秒

    → Tello 向上飞行 (5) 厘米

    → 等待 (1) 秒

    → Tello 向前飞行 (25) 厘米

    → 等待 (2) 秒

→ 说 [到达终点!] (3) 秒

→ Tello 降落

�� 小贴士

迷宫飞行是最考验耐心和挑战精神的项目!因为每次飞行时,无人机的起始位置和方向可能不完全一样,所以程序可能需要多次调试才能完美通过迷宫。

不要怕失败,每次失败都是学习的机会!

5.6 小挑战:让无人机在房间里”探险”

探险任务

设定一个目标:让无人机在一个 3 米 × 3 米的房间里,尽可能多地”探索”不同的区域。

探险策略

策略 1:网格探索

让无人机按照网格路线飞行,像扫地机器人一样系统地覆盖每个区域。

当 �� 被点击

→ 连接 Tello

→ 等待 (2) 秒

→ Tello 起飞

→ 等待 (2) 秒

→ 重复 (3) 次

    → 重复 (3) 次

        → Tello 向前飞行 (60) 厘米

        → 等待 (3) 秒

        → 如果 <(Tello 距离) < (20)> 那么

            → Tello 向后飞行 (20) 厘米

            → 等待 (2) 秒

    → Tello 向右旋转 (90) 度

    → 等待 (2) 秒

    → Tello 向前飞行 (60) 厘米

    → 等待 (3) 秒

    → Tello 向右旋转 (90) 度

    → 等待 (2) 秒

→ Tello 降落

策略 2:随机漫步

利用随机数让无人机做出”随机”的决策——有时候前进,有时候转弯,像一个好奇的小探险家。

当 �� 被点击

→ 连接 Tello

→ 等待 (2) 秒

→ Tello 起飞

→ 等待 (2) 秒

→ 重复 (12) 次

    → 如果 <(在 1 和 3 之间取随机数) = (1)> 那么

        → Tello 向前飞行 (30) 厘米

        → 等待 (2) 秒

    → 如果 <(在 1 和 3 之间取随机数) = (2)> 那么

        → Tello 向右旋转 (90) 度

        → 等待 (2) 秒

    → 如果 <(在 1 和 3 之间取随机数) = (3)> 那么

        → Tello 向左旋转 (90) 度

        → 等待 (2) 秒

    → 如果 <(Tello 高度) > (120)> 那么

        → Tello 向下飞行 (20) 厘米

        → 等待 (2) 秒

    → 如果 <(Tello 高度) < (50)> 那么

        → Tello 向上飞行 (20) 厘米

        → 等待 (2) 秒

→ Tello 降落

�� 动脑筋

随机漫步的策略看起来不太”聪明”,但在某些情况下,它反而能探索到更多区域!这是因为随机数让无人机不会重复走同样的路线。

在计算机科学中,有一种叫做”随机搜索算法“的方法,就是利用随机性来解决问题。很多高级的人工智能系统也会使用随机搜索的思想!

�� 本章小结

你已经让无人机学会了”思考”!

✅ 知识清单

知识点你学会了吗?
条件判断的概念
“如果…那么…”积木
“如果…那么…否则…”积木
用距离传感器做避障判断
用高度数据做自动调节
用电池电量做降落决策
迷宫飞行程序
随机探索策略

�� 本章重点回顾

• 条件判断让程序能够根据不同情况做不同的事。

• “如果…那么…”:条件成立才执行,不成立就跳过。

• “如果…否则…”:两种情况必选其一。

• 条件的值是”真”或”假”,用菱形积木表示。

• 结合传感器数据,无人机可以做出更智能的决策。

• 随机数可以让无人机的行为更灵活多样。

�� 课后小任务

• 基础题:写一个程序,让无人机起飞后,如果电量大于 50% 就前进 50 厘米,否则直接降落。

• 进阶题:写一个程序,让无人机在飞行时,如果高度超过 80 厘米就下降,如果低于 40 厘米就上升,保持在 40-80 厘米之间。

• 挑战题:设计一个更复杂的迷宫(可以画在纸上),并编写通过迷宫的程序。

• 创意题:用条件判断和循环结合,设计一个”智能巡逻”程序——无人机在一个区域内自动巡逻,遇到边界就转弯。

�� 小飞的感悟

“加了条件判断以后,无人机变得聪明多了!它不再只是一个’听话的工具’,更像一个’会思考的伙伴’!”

码码说:”没错!条件判断是编程中最核心的概念之一。几乎每一个有用的程序都会用到条件判断。不过,要让无人机更聪明,我们还需要一种能力——把数据存起来、计算和比较。这就需要用到变量。下一章见!”

第 6 章 变量与计分

�� 本章目标:理解变量的概念,学会创建和使用变量,用变量实现计时器、计分板和游戏逻辑。

�� 趣味导入

【小飞和码码的故事】

“码码,我有一个问题。”小飞歪着头说。

“什么问题?”

“我想让无人机记录它飞了多长时间,还想让它做一个小游戏——在飞行过程中’收集’目标。可是,我怎么知道飞了多久?又怎么知道收集了多少个目标?这些数据存在哪里?”

码码的屏幕亮了起来:”好问题!这些需要一个’盒子’来存放——这个盒子就叫做变量!”

“变量?听起来很数学的样子……”

“别怕!变量其实就是你家的储物盒——你可以给它贴标签,把东西放进去,也可以随时拿出来看看里面有什么,甚至把里面的东西换掉。”

“好像没那么难了!”

6.1 什么是变量?

用”盒子”理解变量

想象你有一堆储物盒,每个盒子上贴着一个标签:

• 一个盒子标签写着”飞行时间”,里面装着数字 30(表示飞了 30 秒)

• 一个盒子标签写着”分数”,里面装着数字 100(表示得了 100 分)

• 一个盒子标签写着”名字”,里面装着文字 “小飞”(表示名字是小飞)

在编程里,变量就是一个带标签的盒子。标签就是变量的名字,盒子里装的东西就是变量的值。

而且这个盒子有一个特别的功能:你可以随时更换盒子里的东西!

比如飞行时间刚开始是 0,飞了 1 秒变成 1,飞了 2 秒变成 2……盒子(变量)没变,但里面的数字一直在变。这就是”变”量的含义——值可以变化的量

Scratch 中的变量积木

在 Scratch 的 ��天蓝色”变量”类别中,你可以找到变量相关的积木:

积木功能
新建变量 [变量名]创建一个新变量
将 [变量] 设为 (0)给变量赋值(把东西放进盒子)
将 [变量] 增加 (1)让变量增加一个值
显示变量 [变量]在舞台上显示变量的值
隐藏变量 [变量]隐藏变量的显示
(变量)读取变量的值(使用盒子里的东西)

[配图:变量类别的所有积木截图]

创建变量的步骤

第一步: 在 Scratch 积木区左侧,点击 ��天蓝色的”变量”类别。

第二步: 点击”建立一个变量”按钮。

第三步: 在弹出的对话框中,输入变量名称(比如”飞行时间”),然后点击”确定”。

第四步: 舞台上会出现一个小方框,显示 “飞行时间: 0″。这就是变量在舞台上的显示!

[配图:创建变量的步骤截图]

�� 小贴士

变量的名字要起得有意义,让人一看就知道它装的是什么。

– ✅ 好名字:”飞行时间””分数””高度记录”

– ❌ 差名字:”a””bb””变量1″

6.2 创建变量:飞行计时器

让我们创建一个飞行计时器——记录无人机已经飞了多长时间!

程序设计

当 �� 被点击

→ 将 [飞行时间] 设为 (0)

→ 连接 Tello

→ 等待 (2) 秒

→ Tello 起飞

→ 等待 (2) 秒

→ 显示变量 [飞行时间]

→ 重复 (10) 次

    → 将 [飞行时间] 增加 (1)

    → 等待 (1) 秒

    → Tello 向前飞行 (20) 厘米

    → 等待 (2) 秒

→ 说 [飞行总时间:] 和 (飞行时间) 和 [秒] (3) 秒

→ Tello 降落

程序解析

• 先把”飞行时间”归零(就像比赛开始前,计时器归零一样)。

• 连接无人机并起飞。

• 显示变量,在舞台上看到”飞行时间: 0″。

• 进入循环 10 次:

• 每次循环,”飞行时间”加 1(表示过了 1 秒)。

• 等待 1 秒(真正的等待 1 秒)。

• 向前飞 20 厘米。

• 等待 2 秒(等飞行完成)。

• 飞行结束后,用”说”积木显示总飞行时间。

• 降落。

�� 注意:这个计时器是”大概”的时间,因为每次飞行动作也需要时间。如果你想更精确地计时,可以用 Scratch 的”当前时间”积木来实现。

6.3 高度计分板

让我们来做一个高度记录器——记录无人机飞行过程中到达过的最高高度!

需要的变量

• 当前高度:实时显示无人机的高度。

• 最高高度:记录飞行过程中达到过的最高值。

程序

当 �� 被点击

→ 将 [最高高度] 设为 (0)

→ 连接 Tello

→ 等待 (2) 秒

→ Tello 起飞

→ 等待 (2) 秒

→ 显示变量 [最高高度]

→ 重复 (6) 次

    → Tello 向上飞行 (20) 厘米

    → 等待 (2) 秒

    → 如果 <(Tello 高度) > (最高高度)> 那么

        → 将 [最高高度] 设为 (Tello 高度)

    → 说 [当前高度:] 和 (Tello 高度) 和 [厘米] (2) 秒

    → Tello 向前飞行 (30) 厘米

    → 等待 (2) 秒

→ 说 [最高高度记录:] 和 (最高高度) 和 [厘米!] (3) 秒

→ Tello 降落

程序解析

这个程序的关键是这段代码:

如果 <(Tello 高度) > (最高高度)> 那么

    → 将 [最高高度] 设为 (Tello 高度)

每次循环时,它会比较”当前高度”和”最高高度”:

• 如果当前高度 > 已记录的最高高度,就更新最高高度。

• 如果当前高度 ≤ 已记录的最高高度,什么都不做。

这样,”最高高度”变量里永远存着飞行过程中达到的最高值!

�� 动脑筋

这个”找最大值”的思路在编程中非常常见!比如:

– 找全班同学的最高分

– 找一周中的最高气温

– 找游戏中获得的最高分数

方法都是一样的——用一个变量记住”目前为止最大的值”,每次遇到新的值就比一比,如果更大就更新!

6.4 收集物品小游戏(模拟)

让我们来做一个有趣的”飞行收集”小游戏!

游戏规则

• 在 Scratch 舞台上,随机出现”目标”(比如星星图标)。

• 无人机在真实空间中飞行。

• 我们用程序模拟”收集”——无人机每完成一个特定动作(比如成功转弯一次),就得 10 分。

• 如果无人机电量低于 30%,游戏结束。

程序设计

当 �� 被点击

→ 将 [分数] 设为 (0)

→ 将 [剩余电量] 设为 (100)

→ 显示变量 [分数]

→ 连接 Tello

→ 等待 (2) 秒

→ Tello 起飞

→ 等待 (2) 秒

→ 说 [收集游戏开始!] (2) 秒

→ 重复执行

    → 如果 <(Tello 电池电量) < (30)> 那么

        → 说 [电量不足!游戏结束!] (3) 秒

        → 停止 [全部脚本]

    → Tello 向前飞行 (30) 厘米

    → 等待 (2) 秒

    → 将 [分数] 增加 (10)

    → 说 [+10分!当前分数:] 和 (分数) (2) 秒

    → Tello 向右旋转 (90) 度

    → 等待 (2) 秒

    → 将 [分数] 增加 (5)

    → 说 [转弯奖励+5!当前分数:] 和 (分数) (2) 秒

    → 如果 <(在 1 和 4 之间取随机数) = (1)> 那么

        → Tello 向前翻滚

        → 等待 (2) 秒

        → 将 [分数] 增加 (20)

        → 说 [翻滚奖励+20!] (2) 秒

�� 注意:这个游戏使用”重复执行”(无限循环),但当电量低于 30% 时会用”停止全部脚本”来终止程序,确保安全。

6.5 最高分记录

让我们来加一个”最高分”功能——看看每次飞行的最高得分!

需要的变量

• 分数:当前游戏的分数。

• 最高分:所有游戏中的最高分数。

程序核心逻辑

当 �� 被点击

→ 如果 <(分数) > (最高分)> 那么

    → 将 [最高分] 设为 (分数)

    → 说 [新纪录!最高分:] 和 (最高分) (3) 秒

→ 否则

    → 说 [本次分数:] 和 (分数) 和 [,最高分:] 和 (最高分) (3) 秒

完整游戏程序

当 �� 被点击

→ 将 [分数] 设为 (0)

→ 显示变量 [分数]

→ 显示变量 [最高分]

→ 连接 Tello

→ 等待 (2) 秒

→ Tello 起飞

→ 等待 (2) 秒

→ 说 [飞行挑战开始!] (2) 秒

→ 重复 (8) 次

    → 如果 <(Tello 电池电量) < (25)> 那么

        → 说 [电量不足,提前结束!] (3) 秒

        → Tello 降落

        → 停止 [全部脚本]

    → 将 [动作选择] 设为 (在 1 和 3 之间取随机数)

    → 如果 <(动作选择) = (1)> 那么

        → Tello 向前飞行 (30) 厘米

        → 等待 (2) 秒

        → 将 [分数] 增加 (10)

    → 如果 <(动作选择) = (2)> 那么

        → Tello 向右旋转 (90) 度

        → 等待 (2) 秒

        → 将 [分数] 增加 (15)

    → 如果 <(动作选择) = (3)> 那么

        → Tello 向前翻滚

        → 等待 (2) 秒

        → 将 [分数] 增加 (25)

    → 说 [当前分数:] 和 (分数) (1) 秒

→ Tello 降落

→ 等待 (2) 秒

→ 如果 <(分数) > (最高分)> 那么

    → 将 [最高分] 设为 (分数)

    → 说 [�� 新纪录!] (3) 秒

→ 说 [本次:] 和 (分数) 和 [分,最高:] 和 (最高分) 和 [分] (5) 秒

�� 小妙招

注意 Scratch 中的变量默认是”适用于所有角色”的。如果你只有一个角色(比如就显示信息),这没问题。但如果你的游戏有多个角色,每个角色有自己的分数,你需要创建”仅限此角色”的变量。

6.6 挑战:做一个”飞行英雄”积分游戏

游戏设计

故事背景:你是一位”飞行英雄”,驾驶无人机在空中执行任务。每完成一个动作就获得积分,但要小心电量!电量耗尽前尽可能多地获取积分!

计分规则

动作得分
前进 30 厘米10 分
转弯 90 度15 分
翻滚一次30 分
上升 20 厘米10 分
连续动作(前进+转弯)额外 +20 分
电量低于 30% 时安全降落额外 +50 分

完整程序

当 �� 被点击

→ 将 [分数] 设为 (0)

→ 将 [连续前进次数] 设为 (0)

→ 将 [游戏状态] 设为 [进行中]

→ 显示变量 [分数]

→ 连接 Tello

→ 等待 (2) 秒

→ Tello 起飞

→ 等待 (2) 秒

→ 说 [飞行英雄,出发!] (2) 秒

→ 重复执行

    → 如果 <(Tello 电池电量) < (25)> 那么

        → 将 [游戏状态] 设为 [结束]

        → 如果 <(游戏状态) = [结束]> 那么

            → 说 [电量警报!快速降落!] (3) 秒

            → Tello 降落

            → 等待 (2) 秒

            → 将 [分数] 增加 (50)

            → 说 [安全降落奖励+50!] (2) 秒

            → 停止 [全部脚本]

    → 将 [动作] 设为 (在 1 和 5 之间取随机数)

    → 如果 <(动作) = (1)> 那么

        → Tello 向前飞行 (30) 厘米

        → 等待 (3) 秒

        → 将 [分数] 增加 (10)

        → 将 [连续前进次数] 增加 (1)

        → 如果 <(连续前进次数) > (2)> 那么

            → 将 [分数] 增加 (20)

            → 说 [连续前进奖励+20!] (2) 秒

    → 如果 <(动作) = (2)> 那么

        → Tello 向右旋转 (90) 度

        → 等待 (2) 秒

        → 将 [分数] 增加 (15)

        → 将 [连续前进次数] 设为 (0)

    → 如果 <(动作) = (3)> 那么

        → Tello 向左旋转 (90) 度

        → 等待 (2) 秒

        → 将 [分数] 增加 (15)

        → 将 [连续前进次数] 设为 (0)

    → 如果 <(动作) = (4)> 那么

        → Tello 向前翻滚

        → 等待 (2) 秒

        → 将 [分数] 增加 (30)

        → 将 [连续前进次数] 设为 (0)

    → 如果 <(动作) = (5)> 那么

        → Tello 向上飞行 (15) 厘米

        → 等待 (2) 秒

        → 将 [分数] 增加 (10)

    → 如果 <(Tello 高度) > (150)> 那么

        → Tello 向下飞行 (20) 厘米

        → 等待 (2) 秒

    → 说 [分数:] 和 (分数) (1) 秒

游戏规则解释

• 随机动作:程序从 5 种动作中随机选一种执行,增加趣味性。

• 连续前进奖励:如果连续前进超过 2 次,额外加 20 分。这鼓励有策略的飞行。

• 转弯清零:转弯动作会重置”连续前进次数”,让玩家规划路线。

• 安全降落奖励:当电量低于 25% 时,程序自动结束游戏并降落,安全降落加 50 分。

• 高度保护:如果高度超过 150 厘米,自动下降,确保安全。

�� 小妙招

你可以根据实际情况调整积分规则和动作种类。比如加入”向后翻滚 +40 分””下降 -5 分”等更丰富的规则。

�� 本章小结

你已经掌握了变量这个重要的编程工具!

✅ 知识清单

知识点你学会了吗?
变量的概念(带标签的盒子)
创建变量
设置变量值(设为)
修改变量值(增加)
显示和隐藏变量
飞行计时器
高度记录器(找最大值)
积分游戏
最高分记录

�� 本章重点回顾

• 变量就像一个带标签的盒子,可以存放数字或文字。

• “设为”是往盒子里放东西,“增加”是把盒子里的数字变大。

• 显示变量可以在舞台上实时看到变量的值。

• 找最大值的方法:用变量记住当前最大值,每次遇到新的值就比较并更新。

• 积分游戏结合了变量、条件判断、循环等多种编程概念。

• 好的变量名让人一看就懂它的用途。

�� 课后小任务

• 基础题:创建一个变量”飞行次数”,让无人机每完成一次起飞降落,次数加 1。

• 进阶题:创建一个”最低电量”变量,记录飞行过程中出现过的最低电量值。

• 挑战题:设计一个”飞行闯关”游戏——第 1 关需要获得 50 分才能”过关”,第 2 关需要 100 分,依此类推。

• 创意题:设计一个你自己的积分规则,至少包含 5 种不同的动作和对应的分数。

�� 码码的鼓励

“变量是编程中非常重要的概念!几乎所有程序都会用到变量——存分数、存名字、存时间……没有变量,程序就无法’记住’任何东西。”

“现在你已经会飞、会循环、会判断、还会用变量了!接下来,我们要深入了解 Tello EDU 身上的’感觉器官’——传感器,让无人机真正’感知’周围的世界!”

第 7 章 传感器大探险

�� 本章目标:了解 Tello EDU 的传感器种类,学会读取传感器数据,用传感器数据控制飞行行为,完成趣味传感器实验。

�� 趣味导入

【小飞和码码的故事】

“码码,我有个问题——无人机怎么知道自己飞了多高?怎么知道离地面有多远?”小飞好奇地问。

“问得好!”码码说,”这要感谢无人机身上的传感器!”

“传感器?是什么?”

“传感器就像无人机的’感觉器官’。你有眼睛能看、耳朵能听、皮肤能感受到温度——无人机也有类似的’器官’!”

“真的吗?让我看看无人机的’眼睛’和’耳朵’在哪里!”

“哈哈,它们藏得比较深。来,我给你一个个介绍!”

7.1 Tello 有哪些传感器?

四大传感器

Tello EDU 身上藏着四个重要的传感器,它们各司其职:

�� 传感器一:ToF 距离传感器

ToF = Time of Flight(飞行时间)

位置:机身底部

功能:测量无人机到正下方地面的距离

工作原理(简化版):

传感器向地面发射一束红外光,光碰到地面后反弹回来。传感器测量光”去”和”回”用了多少时间,就可以算出距离了。

光速非常快(约 30 万公里/秒),但在这么短的距离内,还是可以精确测量的。

距离 = 光速 × 时间 ÷ 2(因为光走了”去 + 回”两倍距离)

测量范围:约 10 厘米到 800 厘米(8 米)

用途:定高飞行、着陆检测、距离预警

[配图:ToF 传感器工作原理示意图——发射红外光→碰到地面→反弹回来]

��️ 传感器二:气压计

位置:机身内部

功能:测量大气压力,间接计算高度

工作原理(简化版):

你知道越高(海拔越高)空气越稀薄吗?气压计就是利用这个道理——大气压力越低,说明海拔越高。通过测量气压的变化,就能算出高度的变化。

�� 小知识:海平面的大气压约为 1013 百帕(hPa)。海拔每升高 100 米,气压大约降低 12 百帕。

用途:精确的高度测量、定高悬停

�� 传感器三:摄像头

位置:机身正面

功能:拍摄照片和视频,实时传回画面

技术参数

• 照片分辨率:720P(1280 × 720 像素)

• 视频分辨率:1080P(1920 × 1080 像素)

• 视角:约 82.6°

用途:航拍、人脸识别、视觉跟踪、拍照记录

�� 你知道吗?

720P 的照片大约有 92 万个像素点(1280 × 720 = 921,600)。每个像素点都有红、绿、蓝三种颜色值。也就是说,一张照片包含了大约 276 万个数据!这就是”数字图像”的本质——无数个小小的颜色方块拼在一起。

⚡ 传感器四:加速度计(IMU 惯性测量单元)

位置:机身内部

功能:测量无人机在三个方向上的加速度和姿态

工作原理(简化版):

加速度计就像你耳朵里的”前庭系统”(帮助你保持平衡的器官)。当无人机加速、减速、倾斜或旋转时,加速度计能感受到这些变化。

Tello 的 IMU 包含:

• 加速度计:测量三个方向(x、y、z)的加速度

• 陀螺仪:测量三个方向的旋转角速度

用途:保持飞行稳定、检测姿态、翻滚动作控制

[配图:Tello EDU 四个传感器的位置标注图]

�� 你知道吗?

你的手机里也有这些传感器!加速度计让手机知道你是在竖着拿还是横着拿;气压计让天气 APP 知道海拔高度;摄像头就更不用说了。你的手机其实就是一个小型”机器人”!

7.2 读取传感器数据

现在让我们学会在 Scratch 中读取这些传感器的数据。

Tello 扩展的传感器积木

Tello 扩展提供了以下数据查询积木(在 ��变量类或专门的 Tello 数据类别中):

积木名称返回值说明
Tello 高度数字(厘米)当前飞行高度
Tello 距离数字(厘米)到下方地面的距离
Tello 飞行时间数字(秒)已飞行时间
Tello 电池电量数字(%)电池剩余百分比
Tello 温度数字(°C)机身温度
Tello 气压数字(hPa)大气压力
Tello 加速度 x数字x 方向加速度
Tello 加速度 y数字y 方向加速度
Tello 加速度 z数字z 方向加速度
Tello 速度 x数字(厘米/秒)x 方向速度
Tello 速度 y数字(厘米/秒)y 方向速度
Tello 速度 z数字(厘米/秒)z 方向速度

[配图:传感器数据查询积木截图]

实时显示传感器数据

让我们做一个”仪表盘”,在舞台上实时显示无人机的各项数据:

当 �� 被点击

→ 连接 Tello

→ 等待 (2) 秒

→ Tello 起飞

→ 等待 (2) 秒

→ 将 [显示模式] 设为 [仪表盘]

→ 重复执行

    → 如果 <(显示模式) = [仪表盘]> 那么

        → 说 [高度:] 和 (Tello 高度) 和 [cm] 换行 

           和 [距离:] 和 (Tello 距离) 和 [cm] 换行

           和 [电量:] 和 (Tello 电池电量) 和 [%] 换行

           和 [温度:] 和 (Tello 温度) 和 [°C] 换行

           和 [时间:] 和 (Tello 飞行时间) 和 [秒] (0.5) 秒

这个程序让无人机起飞后,持续在屏幕上显示各种传感器数据,就像汽车的仪表盘一样!

�� 注意:实际使用时,需要根据 Scratch 的积木能力调整显示方式。如果”换行”不容易实现,可以分多个角色分别显示不同数据,或者每隔几秒轮流显示。

7.3 根据高度改变飞行速度

让我们写一个”智能飞行”程序——根据当前高度自动调整飞行行为:

当 �� 被点击

→ 连接 Tello

→ 等待 (2) 秒

→ Tello 起飞

→ 等待 (2) 秒

→ 重复 (10) 次

    → 如果 <(Tello 高度) > (120)> 那么

        → 说 [高度太高!慢速前进] (2) 秒

        → Tello 向前飞行 (20) 厘米

        → 等待 (3) 秒

        → Tello 向下飞行 (10) 厘米

        → 等待 (2) 秒

    → 如果 <((Tello 高度) > (60)) 且 ((Tello 高度) < (120))> 那么

        → 说 [高度适中!正常前进] (2) 秒

        → Tello 向前飞行 (40) 厘米

        → 等待 (3) 秒

    → 如果 <(Tello 高度) < (60)> 那么

        → 说 [高度太低!快速前进并上升] (2) 秒

        → Tello 向前飞行 (50) 厘米

        → 等待 (3) 秒

        → Tello 向上飞行 (15) 厘米

        → 等待 (2) 秒

→ Tello 降落

程序逻辑

这个程序根据高度把飞行分为三个区域:

高度范围行为前进距离
> 120cm(太高)慢速前进 + 下降20cm
60-120cm(适中)正常前进40cm
< 60cm(太低)快速前进 + 上升50cm

这就好像无人机有了”高度感”——它知道自己飞得太高还是太低,自动调整飞行策略!

7.4 根据距离发出警报

让我们做一个”安全卫士”程序——当无人机距离地面太近时发出警报!

程序

当 �� 被点击

→ 连接 Tello

→ 等待 (2) 秒

→ Tello 起飞

→ 等待 (2) 秒

→ 重复执行

    → 如果 <(Tello 距离) < (20)> 那么

        → 说 [�� 危险!距离太近!] (2) 秒

        → Tello 向上飞行 (20) 厘米

        → 等待 (2) 秒

        → 播放声音 [警报声]

    → 如果 <((Tello 距离) > (20)) 且 ((Tello 距离) < (50))> 那么

        → 说 [⚠️ 注意:距离较近] (1) 秒

    → 如果 <(Tello 距离) > (50)> 那么

        → 说 [✅ 距离安全] (0.5) 秒

    → 等待 (1) 秒

    → 如果 <(Tello 电池电量) < (20)> 那么

        → 说 [电量不足,自动降落!] (3) 秒

        → Tello 降落

        → 停止 [全部脚本]

三级警报系统

这个程序实现了一个三级警报系统:

级别距离范围警报级别动作
�� 红色< 20cm危险!立即上升 + 警报声
�� 黄色20-50cm注意文字提醒
�� 绿色> 50cm安全正常显示

�� 小妙招

这个三级警报的思路在很多领域都有应用:

– 天气预报:蓝色预警、黄色预警、橙色预警、红色预警

– 空气质量:优、良、轻度污染、重度污染

– 考试成绩:不及格、及格、良好、优秀

把连续的数据分成几个”等级”,每个等级对应不同的反应——这是一种非常重要的编程思维!

7.5 趣味实验:无人机”测身高”

实验原理

你能用无人机来测量你的身高吗?当然可以!原理很简单:

• 让无人机飞到你头顶上方。

• 读取无人机到地面的距离(通过 ToF 传感器)。

• 你的身高 = 无人机到地面的距离 – 无人机到你头顶的距离。

当然,更简单的方法是:

• 先让无人机在地面上,读取距离(设为 D1)。

• 然后把无人机升到你的头顶高度,读取距离(设为 D2)。

• 你的身高大约是 D1 – D2 的差值。

不过这个方法需要比较精确的控制。让我们用更简单的方式来做——

“大概”测身高实验

当 �� 被点击

→ 连接 Tello

→ 等待 (2) 秒

→ 说 [实验开始!请站在无人机下方] (3) 秒

→ 等待 (2) 秒

→ 说 [无人机在地面上,测量地面距离…] (3) 秒

→ 将 [地面距离] 设为 (Tello 距离)

→ 等待 (2) 秒

→ 说 [无人机开始上升,请保持不动…] (3) 秒

→ Tello 起飞

→ 等待 (2) 秒

→ 说 [测量头顶距离…] (3) 秒

→ 将 [头顶距离] 设为 (Tello 距离)

→ Tello 降落

→ 等待 (2) 秒

→ 将 [估算身高] 设为 ((地面距离) – (头顶距离))

→ 说 [估算身高约:] 和 (估算身高) 和 [厘米] (5) 秒

⚠️ 安全小卫士提醒

这个实验中,无人机会在人头顶上方飞行,请特别注意:

– 确保螺旋桨保护罩已安装

– 人不要乱动,保持站立稳定

– 如果感觉不安全,可以随时用手动方式让无人机降落

– 建议在爸爸妈妈的陪伴下进行

�� 你知道吗?

这种利用传感器间接测量目标尺寸的方法,在实际应用中很常见!比如:

– 农业无人机通过传感器测量作物高度,判断生长情况

– 建筑工人用激光测距仪测量楼层高度

– 自动驾驶汽车用雷达测量与前车的距离

7.6 综合实验:传感器数据记录器

让我们来做一个”数据记录器”——记录飞行过程中的各种数据,看看数据是怎么变化的!

程序

当 �� 被点击

→ 将 [记录次数] 设为 (0)

→ 将 [最大高度] 设为 (0)

→ 将 [最小高度] 设为 (999)

→ 将 [平均温度] 设为 (0)

→ 将 [温度总和] 设为 (0)

→ 连接 Tello

→ 等待 (2) 秒

→ Tello 起飞

→ 等待 (2) 秒

→ 重复 (12) 次

    → 将 [记录次数] 增加 (1)

    → 如果 <(Tello 高度) > (最大高度)> 那么

        → 将 [最大高度] 设为 (Tello 高度)

    → 如果 <(Tello 高度) < (最小高度)> 那么

        → 将 [最小高度] 设为 (Tello 高度)

    → 将 [温度总和] 增加 (Tello 温度)

    → Tello 向前飞行 (25) 厘米

    → 等待 (2) 秒

    → Tello 向右旋转 (30) 度

    → 等待 (1) 秒

→ Tello 降落

→ 等待 (2) 秒

→ 将 [平均温度] 设为 ((温度总和) / (记录次数))

→ 说 [飞行报告:] 换行

   和 [记录次数:] 和 (记录次数) 换行

   和 [最大高度:] 和 (最大高度) 和 [cm] 换行

   和 [最小高度:] 和 (最小高度) 和 [cm] 换行

   和 [平均温度:] 和 (平均温度) 和 [°C] (10) 秒

数据分析

飞行结束后,你可以把数据记录下来,在纸上画成图表:

[配图:传感器数据变化折线图示例——横轴是时间,纵轴是高度/温度]

�� 动脑筋

1. 为什么飞行过程中温度会变化?(提示:电机会发热!)

2. 为什么高度在不断变化?(提示:每次转弯时高度可能变化)

3. 如果把平均温度乘以飞行次数,能得到什么?

�� 本章小结

你已经了解了无人机的”感觉器官”!

✅ 知识清单

知识点你学会了吗?
Tello 的四种传感器(ToF、气压计、摄像头、IMU)
ToF 距离传感器的工作原理
读取传感器数据的方法
根据高度调整飞行策略
根据距离发出警报
三级警报系统的设计
用传感器做趣味实验
数据记录与分析

�� 本章重点回顾

• ToF 传感器通过测量红外光的往返时间来计算距离。

• 气压计通过测量大气压力来间接测量高度。

• 摄像头可以拍照、录像,还支持图像识别。

• IMU(加速度计+陀螺仪)测量无人机的加速度和姿态,保持飞行稳定。

• 读取传感器数据可以让无人机做出更智能的决策。

• 把连续数据分级处理是一种重要的编程思维。

�� 课后小任务

• 基础题:写一个程序,实时显示无人机的高度和电量。

• 进阶题:设计一个”温度监测”程序,当温度超过 40°C 时自动降落并提醒。

• 挑战题:用传感器数据做一个”飞行日记”——每次飞行结束后,显示本次飞行的最大高度、最小高度、平均温度等数据。

• 创意题:设计一个你自己的传感器实验(比如用无人机测量桌子的高度、窗户的宽度等),写下实验步骤和结果。

�� 小飞的话

“原来无人机有这么多’感觉器官’!难怪它能飞得那么稳、那么准。”

码码说:”而且,摄像头这个’器官’特别厉害——它不只是拍照那么简单,还能’认出’人脸!下一章,我们就来学习用摄像头做人脸识别!”

第 8 章 拍照与人脸识别

�� 本章目标:学会调用 Tello 摄像头,在 Scratch 中显示摄像头画面,实现拍照功能,了解简单的人脸检测和视频侦测技术。

�� 趣味导入

【小飞和码码的故事】

“码码码码!”小飞兴奋地跑过来,”你知道吗?无人机还能’认’出人脸!”

“当然啦!”码码一点也不意外,”Tello EDU 有一个摄像头,就像无人机的’眼睛’。通过摄像头看到的画面,配合一些特殊的算法,就能’认出’人脸。”

“算法?又是什么新东西?”

“算法就是解决问题的步骤和方法。比如’找人脸’的算法,就是一步一步地在画面中搜索’像人脸的图案’。”

“听起来好厉害!快教我怎么做!”

8.1 调用 Tello 摄像头

摄像头的工作原理

Tello EDU 的摄像头通过 WiFi 将视频画面实时传回电脑。你电脑上看到的画面并不是”直接”看到的,而是无人机拍下来,通过 WiFi 传到电脑上显示的。

这就像视频通话——你的手机摄像头拍到你,画面通过网络传到对方的手机上显示。

在 Scratch 中显示摄像头画面

Tello 扩展提供了摄像头相关的积木。连接成功后,可以在舞台上显示无人机摄像头拍摄到的实时画面。

基本步骤:

当 �� 被点击

→ 连接 Tello

→ 等待 (2) 秒

→ Tello 摄像头开启

→ 显示 Tello 摄像头画面

[配图:摄像头画面在 Scratch 舞台上显示的截图]

�� 注意:摄像头画面的显示位置可能需要调整。在 Scratch 中,你可以通过设置角色位置和大小来控制画面的显示区域。

8.2 拍照功能

基础拍照程序

当 �� 被点击

→ 连接 Tello

→ 等待 (2) 秒

→ Tello 摄像头开启

→ Tello 起飞

→ 等待 (2) 秒

→ 说 [3…] (1) 秒

→ 说 [2…] (1) 秒

→ 说 [1…茄子!] (1) 秒

→ Tello 拍照

→ 说 [照片已拍摄!] (2) 秒

→ Tello 降落

定时拍照程序

让无人机每隔几秒自动拍一张照片:

当 �� 被点击

→ 连接 Tello

→ 等待 (2) 秒

→ Tello 摄像头开启

→ 将 [照片数量] 设为 (0)

→ Tello 起飞

→ 等待 (2) 秒

→ 重复 (5) 次

    → Tello 向前飞行 (30) 厘米

    → 等待 (2) 秒

    → Tello 拍照

    → 将 [照片数量] 增加 (1)

    → 说 [第] 和 (照片数量) 和 [张照片已拍摄!] (2) 秒

    → Tello 向右旋转 (72) 度

    → 等待 (2) 秒

→ 说 [共拍摄] 和 (照片数量) 和 [张照片!] (3) 秒

→ Tello 降落

�� 小妙招

这个程序让无人机在 5 个不同角度各拍一张照片,就像拍了一组 360° 环绕照片!每次前进 30cm 然后右转 72°(360°÷5=72°),5 次刚好转一圈。

8.3 Scratch 视频侦测功能

什么是视频侦测?

Scratch 自带一个”视频侦测”(Video Sensing)扩展,可以通过电脑的摄像头(或者通过 Tello 传回的画面)来检测运动。

视频侦测可以做什么:

• 检测运动:画面中有东西在动吗?动了多少?

• 检测边缘:某个角色是否碰到了画面中运动的部分?

• 复制画面:把摄像头画面显示在舞台上

添加视频侦测扩展

• 在 Scratch 左下角点击扩展按钮。

• 找到”视频侦测”(Video Sensing)扩展。

• 点击添加。

添加后,积木区会出现一个绿色的”视频侦测”类别。

[配图:视频侦测扩展的添加步骤截图]

视频侦测积木一览

积木功能
当视频运动 > (10)当画面中检测到的运动量超过设定值时触发
在 [舞台] 上的视频 [运动]获取指定区域的运动量
将视频 [透明度] 设为 (50)设置摄像头画面的透明度
将视频切换为 [打开]打开/关闭摄像头画面

[配图:视频侦测类别积木截图]

8.4 简单人脸检测

简化版”人脸检测”

真正的”人脸识别”需要复杂的 AI 算法。但在 Scratch 中,我们可以用一种简化的方法来”模拟”人脸检测:

思路:利用视频侦测积木检测画面中的运动。当有人靠近摄像头并移动时,运动量会变化。我们可以通过运动量的变化来判断”画面中是否有人”。

程序

当 �� 被点击

→ 连接 Tello

→ 等待 (2) 秒

→ Tello 摄像头开启

→ Tello 起飞

→ 等待 (2) 秒

→ 将视频切换为 [打开]

→ 将视频 [透明度] 设为 (50)

→ 重复执行

    → 如果 <(在 [舞台] 上的视频 [运动]) > (30)> 那么

        → 说 [�� 检测到有人!] (1) 秒

        → 将视频 [透明度] 设为 (0)

    → 否则

        → 说 [�� 画面中没有检测到运动] (0.5) 秒

        → 将视频 [透明度] 设为 (80)

    → 等待 (0.5) 秒

�� 说明

这个程序并不是真正的”人脸识别”,而是”运动检测”。但它展示了一个重要概念:通过摄像头获取画面 → 分析画面内容 → 做出反应。真正的 AI 人脸识别也是这个流程,只是”分析”那一步用了更复杂的算法。

8.5 “追脸”飞行器小游戏

游戏创意

让我们做一个”追脸”小游戏——无人机尝试”追”着你的脸飞行!

当然,由于 Tello 的运动是离散的(每次飞一段固定距离),不是完全实时的跟踪,所以这个”追脸”更像是一个”朝目标飞过去”的简化版本。

程序设计

思路:利用 Scratch 角色的位置来模拟——创建一个”目标”角色,玩家通过移动身体(在摄像头前移动)来控制目标位置,无人机则尝试飞向目标。

当 �� 被点击

→ 连接 Tello

→ 等待 (2) 秒

→ Tello 摄像头开启

→ Tello 起飞

→ 等待 (2) 秒

→ 将视频切换为 [打开]

→ 将视频 [透明度] 设为 (50)

→ 说 [追脸游戏开始!在摄像头前移动,我会跟着你!] (3) 秒

→ 重复 (15) 次

    → 将 [运动量] 设为 (在 [舞台] 上的视频 [运动])

    → 如果 <(运动量) > (20)> 那么

        → 说 [检测到运动!调整方向…] (1) 秒

        → 如果 <(在 [舞台] 上的视频 [运动]) 在 [x 方向]> 那么

            → Tello 向左飞行 (15) 厘米

            → 等待 (1) 秒

        → Tello 向前飞行 (20) 厘米

        → 等待 (2) 秒

    → 否则

        → 说 [保持不动…] (1) 秒

    → 如果 <(Tello 高度) > (120)> 那么

        → Tello 向下飞行 (10) 厘米

        → 等待 (1) 秒

    → 如果 <(Tello 高度) < (50)> 那么

        → Tello 向上飞行 (10) 厘米

        → 等待 (1) 秒

→ 说 [游戏结束!] (2) 秒

→ Tello 降落

⚠️ 安全小卫士提醒

“追脸”游戏中,无人机可能会朝人的方向飞行。请:

– 务必安装保护罩

– 保持安全距离(至少 1 米)

– 飞行速度不要太快

– 手边准备好随时手动降落的方法

8.6 挑战:给无人机加一个”笑脸识别”

挑战说明

虽然 Scratch 没有内置的”笑脸识别”功能,但我们可以用一种创造性的方法来实现类似的效果!

思路

• 在 Scratch 中创建一个”笑脸”造型的角色。

• 利用视频侦测检测运动。

• 当检测到运动时(代表有人在摄像头前),笑脸角色出现。

• 当运动停止时,笑脸角色消失。

程序

主程序(无人机控制):

当 �� 被点击

→ 连接 Tello

→ 等待 (2) 秒

→ Tello 摄像头开启

→ Tello 起飞

→ 等待 (2) 秒

→ 广播 [开始检测]

→ 将视频切换为 [打开]

→ 将视频 [透明度] 设为 (30)

→ 重复 (10) 次

    → Tello 向前飞行 (20) 厘米

    → 等待 (2) 秒

    → Tello 向右旋转 (36) 度

    → 等待 (1) 秒

    → Tello 拍照

→ Tello 降落

→ 广播 [检测结束]

笑脸角色程序:

当接收到 [开始检测]

→ 隐藏

→ 重复执行

    → 如果 <(在 [舞台] 上的视频 [运动]) > (25)> 那么

        → 显示

        → 移到 [鼠标指针]

        → 说 [�� 检测到笑脸!] (1) 秒

    → 否则

        → 隐藏

        → 等待 (0.5) 秒

当接收到 [检测结束]

→ 停止 [这个角色的其他脚本]

→ 隐藏

�� 小妙招

这个程序用了”广播”功能来实现两个角色之间的通信:

– 主程序广播”开始检测”→笑脸角色收到后开始工作

– 主程序广播”检测结束”→笑脸角色收到后停止工作

“广播”是 Scratch 中角色之间传递信息的方式,就像对讲机一样——一个人喊话,所有人都能听到!

进阶想法

如果你有编程基础,可以在电脑上运行 Python 程序,用 OpenCV(一个计算机视觉库)来做真正的”人脸检测”,然后通过 Socket 通信把检测结果发送给 Scratch。这需要爸爸妈妈帮忙,但这是真正的 AI 技术!

[配图:OpenCV 人脸检测效果示意——画面中人脸被绿色方框标注]

�� 你知道吗?

你手机上的”人脸解锁”功能,用的就是类似的技术!手机前置摄像头拍到你→ 检测画面中是否有人脸 → 比对是不是你的脸 → 如果是就解锁。整个过程不到 1 秒!

人脸识别技术已经被广泛应用在:手机解锁、门禁系统、支付验证、相册自动分类、安防监控等领域。

�� 本章小结

你已经学会了无人机的”视觉”功能!

✅ 知识清单

知识点你学会了吗?
调用 Tello 摄像头
在 Scratch 中显示摄像头画面
拍照功能
定时拍照
视频侦测扩展
运动检测
“追脸”飞行器
“笑脸识别”模拟
“广播”实现角色通信

�� 本章重点回顾

• 摄像头是无人机的”眼睛”,通过 WiFi 把画面传回电脑。

• 拍照可以用代码控制,配合飞行动作可以拍多角度照片。

• 视频侦测可以检测画面中的运动,用于判断画面是否发生变化。

• 人脸检测需要复杂的 AI 算法,但可以用运动检测来”模拟”。

• 广播是角色之间通信的方式,可以实现协同工作。

• 真正的 AI 视觉(如人脸识别)需要 Python + OpenCV 等工具。

�� 课后小任务

• 基础题:写一个程序,让无人机起飞后,每隔 3 秒拍一张照片,共拍 5 张。

• 进阶题:做一个”拍照打卡”游戏——无人机飞到指定位置拍照,然后换位置再拍。

• 挑战题:用视频侦测做一个”动作捕捉”程序——根据你在摄像头前的动作来控制屏幕上的角色。

• 创意题:设计一个”无人机摄影师”程序——无人机按照规划好的路线飞行,在每个位置拍照,最后做一个”相册展示”。

�� 码码的话

“视觉是人工智能中非常重要的一个领域。你现在做的虽然只是最基础的尝试,但已经是走在 AI 的路上了!”

“不过,一个人操控一架无人机已经很酷了,如果能同时操控好几架呢?让它们排成队形一起飞,像表演一样——这就是下一章要学的编队飞行!”

第 9 章 编队飞行小表演

�� 本章目标:了解多架 Tello 协同飞行的概念,理解编队通信原理,设计编队队形,完成综合编队飞行表演项目。

�� 趣味导入

【小飞和码码的故事】

“码码,你看过无人机编队表演吗?”小飞激动地说,”几百架无人机在夜空中组成各种图案——星星、花朵、文字……太壮观了!”

“看过看过!”码码的眼睛也亮了起来,”那叫’无人机灯光秀’,是用成百上千架无人机协同飞行完成的。”

“我们能用 Tello EDU 也做一个小型的编队表演吗?”

“当然可以!虽然 Tello EDU 的数量可能没有那么多,但原理是一样的!我们可以让 3 架、5 架甚至更多 Tello 一起飞行,按照预先编好的程序排成各种队形!”

“3 架 Tello 同时飞?那得怎么写程序?每架无人机一个程序吗?”

“哈哈,这就是编队飞行的秘密了!让我慢慢告诉你……”

9.1 多架 Tello 协同飞行概念

什么是编队飞行?

编队飞行就是多架无人机按照预定的位置和路线同时飞行,形成一个整体的”图案”或”表演”。

就像学校运动会上的团体操表演——很多同学按照预定的动作一起表演,形成一个壮观的图案。编队飞行就是”空中的团体操”!

为什么编队飞行很难?

单人飞行很简单:你只需要告诉一架无人机”飞到 A 点”。但编队飞行需要考虑更多问题:

�� 问题 1:位置关系

每架无人机在编队中的位置是不同的。比如 3 架无人机排成一条线,它们的位置分别是:

• 1 号机:x=0, y=0

• 2 号机:x=100, y=0(在 1 号右边 100 厘米)

• 3 号机:x=200, y=0(在 2 号右边 100 厘米)

每架无人机飞行的路线虽然类似,但起点和终点不同!

�� 问题 2:同步问题

如果 1 号机飞得快,3 号机飞得慢,队形就会乱掉。所以必须确保所有无人机同时开始、同时完成每个动作。

�� 问题 3:防撞

无人机之间的距离不能太近,否则会相撞。Tello EDU 建议两机之间至少保持 1 米的距离。

�� 问题 4:WiFi 干扰

每架 Tello EDU 都有自己的 WiFi 信号。如果多架无人机离得太近,WiFi 信号可能会互相干扰。这就是为什么需要专门的”编队模式”。

[配图:多架 Tello 编队飞行的示意图]

Tello EDU 编队的两种模式

模式一:AP 模式(接入点模式)

• 每架 Tello 连接到一个共同的路由器

• 电脑也连接到同一个路由器

• 通过局域网统一控制所有无人机

• 优点:控制更稳定

• 需要:一个路由器

模式二:STA 模式(站模式)

• 每架 Tello 连接到一个指定的 WiFi

• 更灵活,但设置更复杂

• 适合更专业的编队应用

对于我们的学习项目,我们可以用简化版的方式:

• 用一个路由器把所有 Tello 和电脑连起来

• 用 Python 程序(需要爸爸妈妈帮忙)分别控制每架无人机

• 或者,用 Scratch 的”广播”功能来模拟编队效果

9.2 编队通信原理(简化版)

通信模型

在多架无人机的编队中,通信就像一场”交响乐”:

• 指挥家(电脑/主控程序):发出指令给每个乐手

• 乐手们(每架无人机):收到指令后各自演奏

电脑(指挥家)

  ├── → Tello 1号(小提琴)

  ├── → Tello 2号(长笛)

  └── → Tello 3号(鼓)

编号与地址

每架 Tello EDU 都有一个独特的 WiFi 名称(SSID),格式是 “TELLO-XXXXXX”。在编队飞行中,我们需要:

• 给每架无人机一个编号(比如 1 号、2 号、3 号)

• 电脑通过不同的 WiFi 地址向每架无人机发送指令

• 每架无人机只响应给自己的指令

简化的”编队脚本”

在实际编队中,我们通常会写一个主脚本(Master Script),里面定义了每架无人机在每个时间点的动作:

时间 0 秒:

  1 号机 → 起飞

  2 号机 → 起飞

  3 号机 → 起飞

时间 3 秒:

  1 号机 → 向前飞 50cm

  2 号机 → 向前飞 50cm

  3 号机 → 向前飞 50cm

时间 6 秒:

  1 号机 → 向左转 45°

  2 号机 → 不动

  3 号机 → 向右转 45°

时间 9 秒:

  所有 → 降落

[配图:编队飞行的时间-动作表,横轴是时间,纵轴是每架无人机的动作]

�� 你知道吗?

2018 年,英特尔用 2000 架无人机完成了编队飞行表演,创造了吉尼斯世界纪录!2019 年,这个数字被中国的一家公司提升到了 2500 架

控制这么多无人机同时飞行,需要:

– 高精度的 GPS 定位系统

– 专门的编队控制软件

– 强大的通信网络

– 严格的安全措施

我们现在用 3 架 Tello EDU 就能体验编队的基本原理了!

9.3 编队队形设计

让我们来设计几种经典的编队队形!

队形一:一字形

3 架无人机排成一条直线。

        1号    2号    3号

位置:  (0,0) (100,0) (200,0)

飞行程序思路:

起飞后:

  1 号机 → 飞到 (0, 0)(原地不动)

  2 号机 → 飞到 (100, 0)(向右 100cm)

  3 号机 → 飞到 (200, 0)(向右 200cm)

变队形时:

  同时向前飞行相同距离 → 保持一字形前进

队形二:V 字形

3 架无人机排成 V 字形(像大雁南飞的队形!)。

           2号

          /

    1号—

          \

           3号

位置:

  1 号机:(0, 0)     —— V 字的尖角

  2 号机:(-50, 80)  —— V 的左翼

  3 号机:(50, 80)   —— V 的右翼

飞行程序思路:

起飞后:

  1 号机 → 飞到 (0, 0)

  2 号机 → 向左飞 50cm,再向前飞 80cm

  3 号机 → 向右飞 50cm,再向前飞 80cm

队形三:三角形

3 架无人机排成等边三角形。

        1号

       / \

      /   \

    2号—3号

位置:

  1 号机:(0, 0)       —— 顶点

  2 号机:(-50, 87)    —— 左下(87 ≈ 50√3)

  3 号机:(50, 87)     —— 右下

�� 动脑筋

等边三角形的高 = 边长 × √3 ÷ 2 ≈ 边长 × 0.866

如果边长是 100cm,高就是 86.6cm ≈ 87cm

所以左下位置是 (-50, 87),右下位置是 (50, 87)

队形四:圆形

3 架无人机排成一个圆形(3 个点均匀分布在圆上)。

     1号

    /   \

   /     \

  3号—2号

位置(圆心在 (100, 100),半径 80cm):

  1 号机:(100, 20)     —— 正上方

  2 号机:(169, 140)    —— 右下方(100+80×sin(120°), 100-80×cos(120°))

  3 号机:(31, 140)     —— 左下方

[配图:四种编队队形的俯视图,标注每架无人机的位置坐标]

�� 小贴士

设计队形时,先在纸上画出俯视图(从上方看),标注每架无人机的位置。这样就能清楚地看到队形是什么样子,也方便计算每架无人机应该飞到哪里。

9.4 音乐同步飞行表演

让我们给编队飞行加上音乐,做一个有声有色的飞行表演!

音乐与飞行的同步

思路:把飞行动作和音乐节拍对应起来。比如每 2 秒一个节拍,每个节拍做一次飞行动作。

Scratch 中的音乐积木

Scratch 有内置的”音乐”扩展,可以演奏音符:

积木功能
演奏音符 (60) (0.5) 拍演奏一个音符
将乐器设为 (1)选择乐器(1=钢琴, 2=电钢琴…)
将速度设为 (60) 拍/分钟设置演奏速度

同步飞行程序

当 �� 被点击

→ 将速度设为 (120) 拍/分钟

→ 连接 Tello

→ 等待 (2) 秒

→ 说 [表演开始!] (2) 秒

→ Tello 起飞

→ 演奏音符 (60) (1) 拍  —— C 音

→ 等待 (1) 秒

→ Tello 向前飞行 (30) 厘米

→ 演奏音符 (62) (1) 拍  —— D 音

→ 等待 (1) 秒

→ Tello 向右旋转 (90) 度

→ 演奏音符 (64) (1) 拍  —— E 音

→ 等待 (1) 秒

→ Tello 向前飞行 (30) 厘米

→ 演奏音符 (65) (1) 拍  —— F 音

→ 等待 (1) 秒

→ Tello 向右旋转 (90) 度

→ 演奏音符 (67) (1) 拍  —— G 音

→ 等待 (1) 秒

→ Tello 向前飞行 (30) 厘米

→ 演奏音符 (69) (1) 拍  —— A 音

→ 等待 (1) 秒

→ Tello 向右旋转 (90) 度

→ 演奏音符 (71) (1) 拍  —— B 音

→ 等待 (1) 秒

→ Tello 向前飞行 (30) 厘米

→ 演奏音符 (72) (1) 拍  —— 高音 C

→ Tello 降落

→ 说 [表演结束!谢谢!] (3) 秒

加上灯光效果

Tello EDU 有 LED 灯,可以通过编程控制 LED 的颜色变化。配合音乐和飞行动作,可以创造出非常炫酷的效果!

→ 重复 (4) 次

    → 设置 LED 颜色为 [红色]

    → Tello 向前飞行 (30) 厘米

    → 演奏音符 (60) (1) 拍

    → 等待 (1) 秒

    → 设置 LED 颜色为 [蓝色]

    → Tello 向右旋转 (90) 度

    → 演奏音符 (64) (1) 拍

    → 等待 (1) 秒

�� 小妙招

设计音乐飞行表演时,可以先选好一首简单的曲子(比如《小星星》《欢乐颂》),然后按照曲子的节拍来安排飞行动作。每个音符对应一个动作,旋律就是飞行路线!

9.5 综合项目:设计一场 3 机编队表演

项目目标

设计一场由 3 架 Tello EDU 完成的编队飞行表演,时长约 2-3 分钟。

表演流程设计

第一幕:出场(30 秒)

  – 3 架无人机依次起飞

  – 飞到各自的起始位置

  – 形成 V 字形队形

第二幕:变换队形(30 秒)

  – V 字形 → 一字形

  – 一字形 → 三角形

  – 每次变换配合音乐

第三幕:飞行表演(60 秒)

  – 编队前进

  – 编队旋转

  – 高度变化

  – 同步翻滚

第四幕:谢幕(30 秒)

  – 回到初始位置

  – 依次降落

  – LED 灯光闪烁”致谢”

每架无人机的飞行路线

[配图:3 架无人机在整个表演中的飞行路线俯视图]

1 号机(V 字尖端)路线:

起飞 → (0, 0) → 前进 50cm → 左转 45° → 前进 30cm → 右转 90° → 前进 30cm → 回到 (0, 0) → 降落

2 号机(V 字左翼)路线:

起飞 → (-50, 80) → 前进 50cm → 左转 45° → 前进 30cm → 右转 90° → 前进 30cm → 回到 (-50, 80) → 降落

3 号机(V 字右翼)路线:

起飞 → (50, 80) → 前进 50cm → 左转 45° → 前进 30cm → 右转 90° → 前进 30cm → 回到 (50, 80) → 降落

�� 注意:3 架无人机的”相对动作”是相同的(都是前进 50cm、左转 45°…),只是各自的”绝对位置”不同。这就是编队飞行的关键——每架无人机执行相同的相对动作,但起点不同。

实现方式

方式一:简化模拟(推荐初学者)

如果只有一架 Tello EDU,可以用 Scratch 的多个角色来模拟编队效果:

• 创建 3 个角色,分别代表 3 架无人机(用不同颜色区分)。

• 每个角色按照预定的路线移动。

• 真实无人机只飞其中一个角色的路线(作为”演示机”)。

• 舞台上的 3 个角色模拟显示整体编队效果。

方式二:真实编队(需要 3 架 Tello EDU)

如果有 3 架 Tello EDU,可以用 Python 程序(爸爸妈妈帮忙)实现真实的多机控制:

# 简化版编队控制程序

import time

# 定义三架无人机的初始位置

positions = {

    ‘drone1’: {‘x’: 0, ‘y’: 0},

    ‘drone2’: {‘x’: -50, ‘y’: 80},

    ‘drone3’: {‘x’: 50, ‘y’: 80}

}

# 起飞

for drone in positions:

    drone.takeoff()

    time.sleep(2)

# 前进 50cm

for drone in positions:

    drone.forward(50)

    time.sleep(1)

# 左转 45°

for drone in positions:

    drone.rotate_ccw(45)

    time.sleep(1)

# 降落

for drone in positions:

    drone.land()

    time.sleep(1)

表演评分标准

评分项说明分值
队形准确度编队队形是否整齐20 分
同步性3 架无人机动作是否同步20 分
创意性队形变换是否有创意20 分
安全性是否有安全措施,飞行是否稳定20 分
音乐配合飞行动作与音乐是否配合20 分

�� 本章小结

你已经了解了编队飞行的基本概念!

✅ 知识清单

知识点你学会了吗?
编队飞行的概念
编队飞行的难点(位置、同步、防撞、WiFi)
编队通信的基本原理
一字形编队
V 字形编队
三角形编队
圆形编队
音乐同步飞行
3 机编队表演设计

�� 本章重点回顾

• 编队飞行是多架无人机按照预定队形同时飞行。

• 编队的难点在于位置控制、时间同步、防撞和通信

• 每架无人机执行相同的相对动作,但起点位置不同

• 四种经典队形:一字形、V 字形、三角形、圆形。

• 音乐同步可以让表演更有趣——每个节拍对应一个动作。

• 编队表演的设计分为四幕:出场、变换、表演、谢幕。

�� 课后小任务

• 基础题:在纸上画出 4 架无人机的”菱形”编队,标注每架的位置。

• 进阶题:设计一个 V 字形编队飞行的 Scratch 模拟程序(用 3 个角色模拟 3 架无人机)。

• 挑战题:为一首你喜欢的歌曲(比如《小星星》)编排飞行+音乐表演。

• 创意题:设计一个 5 架无人机的编队表演方案,至少包含 3 种队形变换。

�� 小飞和码码的对话

小飞:”编队飞行太酷了!3 架无人机一起飞,比 1 架好看多了!”

码码:”是的!而且这还只是 3 架,真正的灯光秀可以用上千架!”

小飞:”我已经迫不及待想要设计我自己的编队表演了!”

码码:”别急!我们还剩最后一章——你的飞行创意项目。在这章里,你要把前面学的所有知识都用上,做一个完整的创意项目!”

小飞:”好!我要做一个最酷的!”

第 10 章 我的飞行创意项目

�� 本章目标:综合运用所学知识,用”项目设计五步法”完成一个完整的无人机创意项目,总结编程思维,为未来的创客之路奠定基础。

�� 趣味导入

【小飞和码码的故事】

“码码,我们已经学了这么多东西!”小飞掰着手指头数,”Scratch 编程、控制无人机飞行、循环、条件判断、变量、传感器、摄像头、编队……感觉学会了好多超能力!”

“没错!”码码笑着说,”学了这么多,是时候展示你的实力了!”

“展示实力?怎么做?”

“做一个你自己的创意项目!把前面学的所有知识都用上,设计一个独一无二的无人机项目!”

“哇……我有点紧张,又有点兴奋!”

“别紧张!我来教你’项目设计五步法’,跟着这五步走,你一定能做出一个超棒的项目!”

“那我们开始吧!”

10.1 项目设计五步法

五步法总览

无论是做一个小玩具还是开发一个大软件,好的项目都遵循类似的过程。我们把它总结为“五步法”

第 1 步:选题   → 我要做什么?

第 2 步:设计   → 怎么做的?画个计划

第 3 步:编程   → 动手写代码

第 4 步:测试   → 检查对不对

第 5 步:展示   → 给别人看看

[配图:项目设计五步法的流程图]

第 1 步:选题——我要做什么?

选题是项目的起点。好的选题应该是:

• 你感兴趣的:做自己喜欢的事情才有动力!

• 你能做到的:不要选太难的目标,先从小项目开始。

• 有意义的:能解决一个小问题,或者展示一个有趣的想法。

选题 brainstorming(头脑风暴):

不要只想一个方案!先列出 5-10 个想法,然后从中选一个最好的。

比如:

• 无人机自动巡逻系统

• 无人机航拍助手

• 无人机”寻宝”游戏

• 无人机灯光秀

• 无人机”快递员”(模拟)

• 无人机障碍物挑战赛

• 无人机”跟拍”助手

• 无人机”画板”(在空中画画)

• 无人机气象站

• 无人机编队舞蹈

�� 小妙招

选题时可以用”如果…会怎样”的方法:

– 如果无人机能自动巡逻,会怎样?

– 如果无人机能帮人拍照,会怎样?

– 如果多架无人机能跳舞,会怎样?

每一个”如果”都是一个项目灵感!

第 2 步:设计——怎么做的?

选定题目后,不要急着写代码!先做设计:

设计文档包括:

• 项目名称:给你的项目取个响亮的名字。

• 项目描述:用 2-3 句话说清楚你要做什么。

• 功能列表:列出项目要实现的所有功能。

• 流程图:画出程序的执行流程。

• 变量清单:列出需要哪些变量。

• 界面设计:画出舞台上的角色和布局。

设计模板:

�� 项目设计文档

项目名称:____________________

项目描述:

_____________________________

_____________________________

功能列表:

1. ___________________________

2. ___________________________

3. ___________________________

程序流程:

开始 → ______ → ______ → ______ → 结束

需要的变量:

1. ___________________________

2. ___________________________

角色列表:

1. ___________________________

2. ___________________________

[配图:一个填写好的设计文档示例]

第 3 步:编程——动手写代码

按照设计文档,一步一步地在 Scratch 中编写程序。

编程原则:

• 分块编写:不要一次写完所有代码。先把程序分成几个”块”,一块一块地写。

• 先简单后复杂:先让核心功能跑起来,再添加高级功能。

• 边写边测试:每写完一块就测试一下,不要等全部写完再测试。

• 写注释:在积木旁边用文字标注这段代码是做什么的(可以用 Scratch 的”注释”功能)。

第 4 步:测试——检查对不对

测试是最容易被忽视但最重要的步骤!

测试清单:

• ✅ 程序能正常运行吗?

• ✅ 所有功能都实现了吗?

• ✅ 有没有 bug(错误)?

• ✅ 无人机飞行安全吗?

• ✅ 如果电量不足会怎样?

• ✅ 如果连接断开会怎样?

测试方法:

• 桌面测试:不连无人机,在 Scratch 中检查积木逻辑是否正确。

• 模拟测试:连上无人机,但在安全环境下逐步测试每个功能。

• 完整测试:在正式环境中运行完整程序。

• 多次测试:至少测试 3 次,看看每次结果是否一致。

�� 小妙招

发现 bug 不要慌!bug 是编程的”常客”,连最专业的程序员也会写出有 bug 的代码。关键是:

1. 冷静分析问题出在哪里

2. 缩小问题范围(从最后运行的代码开始检查)

3. 尝试修改并重新测试

4. 如果实在解决不了,可以问老师或同学

第 5 步:展示——给别人看看

项目完成后,把你的成果展示给别人看!

展示内容:

• 项目介绍:你做了什么?为什么要做这个?

• 功能演示:现场运行程序,展示效果。

• 技术说明:你用了哪些编程技术?(循环?变量?条件判断?)

• 遇到的困难:开发过程中遇到了什么问题?怎么解决的?

• 未来改进:如果有更多时间,你想怎么改进这个项目?

展示形式:

• 课堂演讲 + 现场演示

• 录制视频展示

• 制作海报展示

• 写成小论文

10.2 创意项目灵感库

如果你还在为选题发愁,这里有 10 个创意方向供你参考:

灵感 1:�� 无人机自动巡逻系统

描述:让无人机按照固定路线自动巡逻一个区域,遇到”异常”(比如高度突然变化)就发出警报。

用到知识:循环 + 条件判断 + 传感器 + 变量

难度:⭐⭐⭐

灵感 2:�� 无人机航拍助手

描述:无人机自动飞到多个预设位置,每个位置拍照,并在拍照前倒计时。

用到知识:基础飞行 + 拍照 + 等待 + 循环

难度:⭐⭐

灵感 3:��️ 无人机”寻宝”游戏

描述:在房间的几个位置放置”宝藏”标记,无人机按照程序依次飞到每个位置”收集”宝藏。

用到知识:基础飞行 + 变量(收集计数)+ 条件判断

难度:⭐⭐⭐

灵感 4:�� 无人机灯光秀

描述:利用 Tello 的 LED 灯,配合飞行动作和音乐,做一个小型灯光秀。

用到知识:LED 控制 + 音乐 + 循环 + 飞行动作

难度:⭐⭐⭐⭐

灵感 5:�� 无人机”快递员”(模拟)

描述:模拟无人机快递——从”仓库”起飞,飞到”收件人”位置,”投递”物品(模拟),然后返回。

用到知识:基础飞行 + 循环 + 变量(包裹数量)

难度:⭐⭐

灵感 6:�� 无人机障碍物挑战赛

描述:设计一个有障碍物的飞行路线,无人机需要穿越障碍物到达终点。

用到知识:基础飞行 + 条件判断 + 传感器

难度:⭐⭐⭐

灵感 7:�� 无人机”跟拍”助手

描述:无人机保持与”目标”(摄像头前的人)的固定距离,自动调整位置。

用到知识:视频侦测 + 条件判断 + 传感器 + 变量

难度:⭐⭐⭐⭐

灵感 8:�� 无人机”画板”

描述:结合 Scratch 的画笔功能,无人机的飞行动作和屏幕上的画笔同步,在空中”画画”。

用到知识:画笔扩展 + 循环 + 基础飞行

难度:⭐⭐⭐

灵感 9:��️ 无人机气象站

描述:无人机在不同高度飞行,记录每个高度的温度、气压等数据,生成”气象报告”。

用到知识:传感器 + 变量 + 循环 + 数据分析

难度:⭐⭐⭐

灵感 10:�� 无人机编队舞蹈

描述:多架无人机(或 Scratch 角色模拟)配合音乐,表演一段”舞蹈”。

用到知识:编队飞行 + 音乐 + 循环 + LED + 飞行动作

难度:⭐⭐⭐⭐⭐

�� 小贴士

这些灵感只是起点!你可以在这些基础上加入自己的想法,创造出独一无二的项目。最好的项目往往是把两三个灵感组合在一起。

比如:”无人机寻宝” + “灯光秀” = 无人机在寻宝过程中 LED 灯不断变化颜色,找到宝藏时灯光闪烁庆祝!

10.3 优秀作品案例展示

案例一:��️ 无人机”森林探险家”

项目描述:无人机模拟在”森林”(用纸箱模拟树木)中探险,自动避开障碍物,记录探索过的区域。

功能列表

• 无人机自动起飞

• 前进一段距离

• 检测”障碍物”(用距离传感器模拟)

• 遇到障碍右转 90°,继续前进

• 用变量记录”探索距离”

• 电量不足时自动返回并降落

核心代码

当 �� 被点击

→ 将 [探索距离] 设为 (0)

→ 将 [转弯次数] 设为 (0)

→ 显示变量 [探索距离]

→ 显示变量 [转弯次数]

→ 连接 Tello

→ 等待 (2) 秒

→ Tello 起飞

→ 等待 (2) 秒

→ 说 [森林探险开始!] (2) 秒

→ 重复执行

    → 如果 <(Tello 电池电量) < (25)> 那么

        → 说 [电量不足,返回基地!] (3) 秒

        → Tello 降落

        → 停止 [全部脚本]

    → 如果 <(Tello 距离) < (25)> 那么

        → 说 [�� 发现树木!右转!] (2) 秒

        → Tello 向右旋转 (90) 度

        → 等待 (2) 秒

        → 将 [转弯次数] 增加 (1)

        → Tello 向前飞行 (20) 厘米

        → 等待 (2) 秒

    → 否则

        → Tello 向前飞行 (30) 厘米

        → 等待 (3) 秒

    → 将 [探索距离] 增加 (30)

    → 说 [已探索:] 和 (探索距离) 和 [厘米] (1) 秒

    → 如果 <(转弯次数) > (8)> 那么

        → 说 [�� 探险完成!] (3) 秒

        → Tello 降落

        → 停止 [全部脚本]

用到的编程知识

• ✅ 循环(重复执行)

• ✅ 条件判断(如果距离 < 25 则转弯)

• ✅ 变量(探索距离、转弯次数)

• ✅ 传感器(距离、电池电量)

• ✅ 安全保护(电量低于 25% 自动降落)

项目亮点

• 结合了条件判断和传感器数据,实现了”自动避障”

• 用变量记录了探索数据

• 有完善的安全保护机制

案例二:�� 无人机”节奏大师”

项目描述:无人机配合音乐节拍飞行,每个音符对应一个飞行动作和 LED 颜色变化。

功能列表

• 起飞后配合《欢乐颂》旋律飞行

• 每个音符对应一个动作(前进、转弯、上升等)

• LED 颜色随节拍变化

• 高潮部分加入翻滚动作

• 结束时 LED 闪烁 + 降落

核心代码片段

→ Tello 起飞

→ 将速度设为 (120) 拍/分钟

→ 设置 LED 颜色为 [红色]

→ 演奏音符 (64) (0.5) 拍  —— E

→ Tello 向前飞行 (15) 厘米

→ 设置 LED 颜色为 [橙色]

→ 演奏音符 (64) (0.5) 拍  —— E

→ Tello 向右旋转 (30) 度

→ 设置 LED 颜色为 [黄色]

→ 演奏音符 (65) (0.5) 拍  —— F

→ Tello 向前飞行 (15) 厘米

→ 设置 LED 颜色为 [绿色]

→ 演奏音符 (67) (0.5) 拍  —— G

→ Tello 向左旋转 (30) 度

→ 设置 LED 颜色为 [蓝色]

→ 演奏音符 (67) (0.5) 拍  —— G

→ Tello 向前飞行 (15) 厘米

→ 设置 LED 颜色为 [紫色]

→ 演奏音符 (65) (0.5) 拍  —— F

→ Tello 向上飞行 (10) 厘米

→ 设置 LED 颜色为 [白色]

→ 演奏音符 (64) (0.5) 拍  —— E

→ Tello 向下飞行 (10) 厘米

→ 设置 LED 颜色为 [红色]

→ 演奏音符 (62) (0.5) 拍  —— D

→ Tello 向前翻滚

→ 设置 LED 颜色为 [彩虹]

→ 演奏音符 (60) (1) 拍   —— C

→ 等待 (1) 秒

用到的编程知识

• ✅ 音乐扩展(演奏音符)

• ✅ LED 控制(颜色变化)

• ✅ 基础飞行动作

• ✅ 顺序执行

• ✅ 循环(副歌部分重复)

项目亮点

• 音乐、灯光、飞行三者完美同步

• 每个元素都有精心设计

• 观赏性很强

案例三:�� 无人机”飞行英雄”积分挑战赛

项目描述:设计一个综合性的积分飞行游戏,包含多种动作和挑战。

功能列表

• 起飞后进入”挑战模式”

• 随机生成挑战动作(前进、转弯、翻滚、升降等)

• 完成动作获得积分

• 连续完成同种动作有额外奖励

• 电量低于 30% 时进入”紧急返航”模式

• 安全降落获得额外分数

• 显示最终得分和历史最高分

核心代码

当 �� 被点击

→ 将 [分数] 设为 (0)

→ 将 [最高分] 设为 (0)

→ 将 [连续次数] 设为 (0)

→ 将 [上次动作] 设为 (0)

→ 显示变量 [分数]

→ 显示变量 [最高分]

→ 连接 Tello

→ 等待 (2) 秒

→ Tello 起飞

→ 等待 (2) 秒

→ 说 [�� 飞行英雄挑战赛开始!] (3) 秒

→ 重复执行

    → 如果 <(Tello 电池电量) < (30)> 那么

        → 说 [⚡ 电量警报!紧急返航!] (3) 秒

        → Tello 降落

        → 等待 (2) 秒

        → 将 [分数] 增加 (50)

        → 说 [安全降落 +50 分!] (2) 秒

        → 如果 <(分数) > (最高分)> 那么

            → 将 [最高分] 设为 (分数)

        → 说 [最终得分:] 和 (分数) 和 [分] (5) 秒

        → 停止 [全部脚本]

    → 将 [当前动作] 设为 (在 1 和 6 之间取随机数)

    → 如果 <(当前动作) = (1)> 那么

        → 说 [挑战:前进!] (1) 秒

        → Tello 向前飞行 (40) 厘米

        → 等待 (3) 秒

        → 将 [分数] 增加 (10)

    → 如果 <(当前动作) = (2)> 那么

        → 说 [挑战:右转!] (1) 秒

        → Tello 向右旋转 (90) 度

        → 等待 (2) 秒

        → 将 [分数] 增加 (15)

    → 如果 <(当前动作) = (3)> 那么

        → 说 [挑战:翻滚!] (1) 秒

        → Tello 向前翻滚

        → 等待 (2) 秒

        → 将 [分数] 增加 (30)

    → 如果 <(当前动作) = (4)> 那么

        → 说 [挑战:上升!] (1) 秒

        → Tello 向上飞行 (20) 厘米

        → 等待 (2) 秒

        → 将 [分数] 增加 (10)

    → 如果 <(当前动作) = (5)> 那么

        → 说 [挑战:下降!] (1) 秒

        → Tello 向下飞行 (20) 厘米

        → 等待 (2) 秒

        → 将 [分数] 增加 (10)

    → 如果 <(当前动作) = (6)> 那么

        → 说 [�� 特殊挑战:连续翻滚!] (2) 秒

        → 重复 (3) 次

            → Tello 向右翻滚

            → 等待 (2) 秒

        → 将 [分数] 增加 (50)

    → 如果 <(当前动作) = (上次动作)> 那么

        → 将 [连续次数] 增加 (1)

        → 如果 <(连续次数) > (1)> 那么

            → 将 [分数] 增加 ((连续次数) × (10))

            → 说 [连续奖励 +] 和 ((连续次数) × (10)) 和 [分!] (2) 秒

    → 否则

        → 将 [连续次数] 设为 (1)

    → 将 [上次动作] 设为 (当前动作)

    → 说 [当前分数:] 和 (分数) (1) 秒

    → 如果 <(Tello 高度) > (150)> 那么

        → Tello 向下飞行 (20) 厘米

        → 等待 (2) 秒

    → 如果 <(Tello 高度) < (40)> 那么

        → Tello 向上飞行 (15) 厘米

        → 等待 (2) 秒

用到的编程知识

• ✅ 循环(重复执行)

• ✅ 条件判断(多个 if-else)

• ✅ 变量(分数、最高分、连续次数等)

• ✅ 随机数

• ✅ 传感器(电量、高度)

• ✅ 安全保护

项目亮点

• 融合了所有学过的编程知识

• 游戏性强,有积分、奖励、最高分等机制

• 安全机制完善

10.4 编程思维总结

恭喜你走到这里!在这一章的最后,让我们回顾一下学习编程过程中培养的重要思维能力。

计算思维(Computational Thinking)

计算思维不是”像计算机一样思考”,而是用解决问题的方法来思考问题。它包括四个核心能力:

�� 能力一:分解(Decomposition)

把一个大的、复杂的问题拆分成小的、简单的部分。

例子

• “设计编队表演”太大了 → 拆分成”设计队形””编写每架机的路线””添加音乐””测试修改”

• “画一个房子”太大了 → 拆分成”画墙壁””画屋顶””画门””画窗户”

�� 记住:再复杂的问题,拆成小块后,每一小块都很简单!

�� 能力二:模式识别(Pattern Recognition)

在问题中找到重复出现的规律或模式。

例子

• 飞正方形:发现”前进+转弯”重复了 4 次 → 用循环

• 传感器数据:发现”检查→判断→行动”重复出现 → 用条件判断

• 编队飞行:发现每架机的相对动作相同 → 提取公共代码

�� 记住:找到规律就能简化问题!循环就是模式识别的最好例子。

�� 能力三:抽象(Abstraction)

忽略不重要的细节,抓住问题的本质。

例子

• 设计迷宫飞行程序时,不需要关心墙壁是什么颜色的,只需要关心”哪里有障碍物”

• 编队飞行时,不需要关心每架无人机的具体型号,只需要关心”它在编队中的位置”

�� 记住:抽象就是”抓住重点,忽略细节”。就像画地图不需要画出每一棵树。

�� 能力四:算法(Algorithm)

设计一步一步的解决方案。

例子

• 做早餐的算法:① 起床 → ② 刷牙 → ③ 煮面 → ④ 等水烧开 → ⑤ 下面条 → ⑥ 等 3 分钟 → ⑦ 盛出来

• 无人机起飞的算法:① 检查电量 → ② 检查环境 → ③ 连接 WiFi → ④ 起飞 → ⑤ 悬停稳定 → ⑥ 执行任务

�� 记住:算法就是”做事的步骤清单”。你写的每一段 Scratch 程序都是一个算法!

编程思维的日常生活应用

计算思维不只用在编程中,它在日常生活中也很有用:

思维能力在编程中在生活中
分解把大程序拆成小模块把大作业分成小任务
模式识别发现重复的代码用循环发现每天重复的习惯可以优化
抽象忽略无关细节考试时抓住题目重点
算法编写程序步骤按照菜谱做菜

10.5 给未来创客的话

你已经走了很远了!

让我们看看你的成长之路:

第 1 章:认识无人机 → 知道了无人机是什么

第 2 章:学习 Scratch → 学会了”搭积木”编程

第 3 章:连接无人机  → 第一次用代码控制飞行

第 4 章:循环的力量  → 让代码变简洁

第 5 章:条件判断    → 让无人机学会思考

第 6 章:变量与计分  → 让程序学会记忆

第 7 章:传感器探险  → 让无人机感知世界

第 8 章:拍照与识别  → 让无人机有了”眼睛”

第 9 章:编队飞行    → 让多架无人机协作

第10章:创意项目    → 综合运用,展示实力

从”完全不知道编程是什么”到”能用代码控制无人机编队飞行”,你已经完成了一次了不起的学习旅程!

未来的路

编程和无人机的世界非常大,你现在学到的只是冰山一角。如果你对这方面感兴趣,未来还有很多可以探索的方向:

�� Python 编程

Python 是更强大的编程语言,可以做出比 Scratch 更复杂的项目。用 Python 可以控制无人机做更高级的动作,甚至可以写人工智能程序!

�� 人工智能(AI)

AI 让计算机学会”思考”——识别人脸、理解语言、做出决策。如果你对第 8 章的人脸识别感兴趣,可以进一步学习 AI 知识!

�� 机器人技术

无人机是一种”会飞的机器人”。除了无人机,还有很多种类的机器人——轮式机器人、机械臂、人形机器人……每一种都很有趣!

�� 3D 打印与创客

你可以用 3D 打印机制作无人机的外壳、保护罩、创意配件。把你的设计从电脑变成实物!

�� 参加比赛

有很多适合青少年的编程和无人机比赛,比如:

• 全国青少年无人机竞赛

• Scratch 创意编程大赛

• 各类 STEM 创新挑战赛

参加比赛不仅能检验你的水平,还能认识很多志同道合的小伙伴!

保持好奇心

�� 码码的寄语

小朋友,编程最重要的不是记住多少积木、多少语法,而是保持好奇心

每当你看到一个有趣的东西,问问自己:”这是怎么做的?我能做一个吗?”

每当你遇到一个问题,不要急着放弃,想想:”有没有别的方法?能不能拆成更小的问题?”

每当你完成一个项目,想想:”还能怎么改进?有没有更酷的想法?”

好奇心是创造力的源泉,而创造力是改变世界的力量。

你已经证明了自己有能力学习编程、控制无人机、创造有趣的项目。这只是开始——未来的世界等着你去探索和创造!

小飞和码码的故事(结局)

【小飞和码码的故事·终章】

阳光洒在书桌上,小飞看着眼前正在平稳飞行的 Tello EDU,嘴角露出了微笑。

“码码,你知道吗?一个月前我还不知道编程是什么。现在我能用代码让无人机飞正方形、翻跟头、甚至编队表演!”

“你进步很快!”码码的屏幕上显示着大大的笑脸。

“我决定了!”小飞的眼睛里闪着光,”我以后要造一架真正有用的无人机!帮农民伯伯喷洒农药,帮救援队搜救迷路的人,帮科学家去那些危险的地方探险!”

“很好的梦想!”码码说,”记住——每一个伟大的发明,都是从’如果…会怎样’开始的。”

“嗯!我会一直问’如果…会怎样’,一直创造,一直学习!”

“那就继续加油吧!”码码的屏幕上出现了一行字——

“编程的世界没有终点,每一行代码都是新的起点。”

[配图:小飞和码码一起看着无人机在阳光中飞行的温馨画面]

�� 本章小结

✅ 知识清单

知识点你学会了吗?
项目设计五步法(选题→设计→编程→测试→展示)
创意项目灵感(10 个方向)
项目设计文档的编写
编程原则(分块编写、先简后繁)
测试方法与测试清单
展示方法与展示内容
计算思维四大能力(分解、模式识别、抽象、算法)
编程思维在日常生活中的应用

�� 本章重点回顾

• 项目设计五步法是做任何项目的基本流程。

• 好的选题应该是感兴趣的、能做到的、有意义的。

• 设计先行——先想清楚再动手,不要急着写代码。

• 分块编程、逐步测试是最有效的编程方法。

• 计算思维包括分解、模式识别、抽象、算法四大能力。

• 保持好奇心是持续进步的关键。

�� 毕业设计任务

任务:设计并完成一个综合创意项目!

要求

• 提交项目设计文档(包括名称、描述、功能列表、流程图)

• 提交完整的 Scratch 程序

• 提交至少 3 次飞行测试的记录(照片或视频)

• 写一篇 300 字左右的项目总结(包括遇到的困难和解决方法)

• 准备 3 分钟的课堂展示

评分标准

评分项说明分值
创意性项目是否有新意20 分
完整性是否包含设计、编程、测试、展示20 分
技术运用是否综合运用了所学知识20 分
安全性是否有安全措施15 分
展示效果现场展示是否清晰流畅15 分
文档质量设计文档和总结是否完整10 分

附录

附录 A:Scratch 积木速查表

运动类(蓝色)

积木说明
移动 (10) 步角色向前走
右转 (15) 度角色向右转
左转 (15) 度角色向左转
移到 x: (0) y: (0)移到指定坐标
在 (1) 秒内滑行到 x: (0) y: (0)缓慢滑行到指定位置

外观类(紫色)

积木说明
说 [Hello!] (2) 秒角色说话
将大小设为 (100) %设置角色大小
将 [颜色] 效果增加 (25)改变颜色效果
显示 / 隐藏显示或隐藏角色
下一个造型切换到下一个造型

声音类(粉色)

积木说明
播放声音 [喵]播放一个声音
将音量设为 (100) %设置音量

事件类(黄色)

积木说明
当 �� 被点击程序开始
当按下 [空格] 键按键触发
广播 [消息1]发送消息
当接收到 [消息1]接收消息

控制类(橙色)

积木说明
等待 (1) 秒暂停等待
重复 (10) 次循环 N 次
重复执行无限循环
如果 <条件> 那么条件判断
如果 <条件> 那么 … 否则条件判断(带否则)
停止 [全部脚本]停止所有程序

侦测类(红色)

积木说明
碰到 [边缘]?检测碰撞
碰到颜色 [红色]?检测颜色
按下 [空格] 键?检测按键
在 (1) 和 (10) 之间取随机数生成随机数

运算类(绿色)

积木说明
( ) + ( )加法
( ) – ( )减法
( ) × ( )乘法
( ) / ( )除法
( ) > ( )大于比较
<( ) 且 ( )>与运算
<( ) 或 ( )>或运算

变量类(天蓝色)

积木说明
将 [变量] 设为 (0)赋值
将 [变量] 增加 (1)增加
显示变量 [变量]显示
隐藏变量 [变量]隐藏

附录 B:Tello EDU 指令速查表

基础飞行指令

指令参数范围说明
起飞起飞悬停(约 1m 高)
降落降落着地
向前飞行20-500 厘米向机头方向飞行
向后飞行20-500 厘米向机尾方向飞行
向左飞行20-500 厘米向左侧飞行
向右飞行20-500 厘米向右侧飞行
向上飞行20-500 厘米升高
向下飞行20-500 厘米降低
向左旋转1-360 度逆时针旋转
向右旋转1-360 度顺时针旋转

翻滚指令

指令说明
向前翻滚向机头方向翻滚
向后翻滚向机尾方向翻滚
向左翻滚向左侧翻滚
向右翻滚向右侧翻滚

传感器数据

数据单位说明
高度厘米当前飞行高度
距离厘米到地面的距离
飞行时间已飞行时间
电池电量%剩余电量百分比
温度°C机身温度
气压hPa大气压力
加速度 x/y/z三轴加速度
速度 x/y/zcm/s三轴速度

Tello EDU 技术参数

参数数值
重量约 80g(含电池)
尺寸98 × 92.5 × 41 mm
最大飞行距离约 100m
最大飞行速度8m/s
最大飞行高度30m
续航时间约 13 分钟
电池容量1100mAh
摄像头720P 照片 / 1080P 视频
WiFi2.4GHz
悬停精度垂直 ±0.1m,水平 ±0.3m

附录 C:常见问题解答

Q1:Scratch 连不上 Tello 怎么办?

A:检查以下几点:

• Tello 是否已开机(指示灯是否闪烁)

• 电脑是否已连接到 Tello 的 WiFi(TELLO-XXXXXX)

• Tello Scratch Link 是否在后台运行

• 尝试关闭防火墙或添加 Scratch 到白名单

• 重启 Tello 和 Scratch

Q2:无人机飞不稳怎么办?

A:可能的原因:

• 螺旋桨没有安装正确(检查 A/B 标记)

• 飞行环境有风(Tello 不适合在户外有风环境飞行)

• 电池电量不足(充满电再试)

• 飞行区域太小(需要至少 2m × 2m 的空间)

Q3:程序执行到一半无人机突然降落?

A:可能是以下原因:

• 电量不足——Tello 电量过低时会自动降落保护

• 连接中断——WiFi 信号不稳定导致连接断开

• 超时保护——长时间没有发送指令,Tello 会自动降落

• 信号干扰——附近有其他 WiFi 设备干扰

Q4:怎么让无人机飞得更精确?

A

• 在室内无风环境飞行

• 使用较小的飞行距离(30-50cm 比 200cm 更精确)

• 每个动作之间加足够的等待时间

• 飞行前确保电量充足

• 多次测试,取最佳结果

Q5:编队飞行时 WiFi 互相干扰怎么办?

A

• 使用 AP 模式,所有 Tello 连接同一个路由器

• 增加无人机之间的距离(至少 1.5m)

• 减少同时通信的频率

• 使用专门的编队控制软件

附录 D:安全指南汇总

飞行前检查清单

• [ ] 螺旋桨安装正确(A 对 A,B 对 B)

• [ ] 保护罩已安装并固定

• [ ] 电池电量充足(≥50%)

• [ ] 飞行区域已清理(无障碍物)

• [ ] 飞行区域足够大(≥2m × 2m)

• [ ] 周围没有围观人员(至少 1m 距离)

• [ ] 头发扎好,衣物整齐

• [ ] 家长或老师在场

飞行中注意事项

• [ ] 不要让手指靠近旋转的螺旋桨

• [ ] 注意观察电量(<30% 准备降落,<20% 立即降落)

• [ ] 注意机身温度(过烫时休息)

• [ ] 不要在头顶上方长时间飞行

• [ ] 不要在水源附近飞行

飞行后注意事项

• [ ] 等待电机冷却后再充电

• [ ] 不要在无人看管时充电

• [ ] 使用 5V/1A 充电器

• [ ] 电池不要放在高温环境中

• [ ] 长时间不使用时,电池保持 50% 左右电量存放

附录 E:术语表

术语英文解释
无人机Drone / UAV无人驾驶飞行器
旋翼Rotor旋转的桨叶,提供升力
螺旋桨Propeller旋翼的叶片
悬停Hover在空中保持不动
编程Programming用代码告诉计算机做什么
程序Program一组指令的集合
积木BlockScratch 中的编程元素
循环Loop重复执行一段代码
条件判断Condition根据条件决定做什么
变量Variable存放数据的”盒子”
传感器Sensor感知环境信息的器件
ToFTime of Flight飞行时间(测距技术)
IMUInertial Measurement Unit惯性测量单元
WiFiWireless Fidelity无线通信技术
算法Algorithm解决问题的步骤
调试Debug找出并修复程序中的错误
扩展ExtensionScratch 的额外功能包

�� 后记

亲爱的小朋友,恭喜你读完了这本书!

从翻开第一页时的”无人机是什么”,到现在能够设计自己的飞行创意项目,你已经完成了一段了不起的旅程。

记住,编程不是目的,而是一种工具——一种帮你实现创意、解决问题、探索世界的工具。无人机也不只是玩具,它是一个让你把想象力变成现实的载体。

未来,你可以用编程做更多更多有趣的事情——做游戏、做动画、做机器人、做网站、做 APP……只要你愿意学,没有什么是做不到的。

保持好奇心,保持勇气,保持对世界的热爱。

你已经是一个小小的创客了。

去创造属于你自己的未来吧! ��

—— 全书完 ——

© 版权声明
THE END
天空因你炽热
点赞8 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容