找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 14546|回复: 6
打印 上一主题 下一主题
收起左侧

开源课程:Arduino创意机器人设计教程(Word文档下载)

[复制链接]
跳转到指定楼层
楼主
ID:450541 发表于 2018-12-20 10:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

机器人教育融机械、传感与控制等为一体,让学生在手脑并用解决实际问题的过程中,有效地提高其逻辑思维能力、判断能力、动手能力和创新能力,是实施素质教育的一个重要平台,十分有利于培养强国需要的高素质人才。为推广机器人教育,中国教育技术协会专业委员会启动了“机器人进课堂”项目。该项目将在全国部分省市以地方课程或校本课程的形式开展机器人教育实验,从试点开始逐步积累经验,扩大影响,直至形成遍及全国的成熟的机器人教育课程。

温州中学有幸成为“机器人进课堂”项目的首批实验学校,于2011年开始实施基于Arduino的机器人课程。本电子教材配合“Arduino创意机器人”课程进行使用,由浙江省温州中学谢作如老师主编,南师大教育科学学院研究生张禄、张丽芳和刘正云三位同学一起参与编写。作为面向中小学的Arduino选修课程,“Arduino创意机器人”设计了大量需要学生动手实践的任务或者实验,引导学生在玩中学、做中学。

本电子教材共设计了22课,其中4节课为选学内容。我们期望教师采用两节课连上的方式,以9个专题18课时的形式展开教学。当然,也可以采用单节课的形式,其中教材中的1课刚好为1课时,根据学生的学习情况,适当调整课时。如果有条件,建议增加几个综合创意的活动课,让课时增加到36。具体教材的课时安排请参考我们提供教学设计、教学课件、教学微视频等资源。

为方便更多的学校开展教学,也方便学生们根据网络视频、教材自学,我们特意为“Arduino创意机器人”教材设计了学习套件,采用了Arduino中国代理商DFRobot公司的各种模块,必选模块的价格为600左右。你也可以根据器材清单,通过淘宝网的其他店铺购买。根据研究进程,我们将推出其他品牌的Arduino学习套件。

本电子教材的讨论地址:blog.sina.com.cn/xiezuoru

Arduino创意机器人学习套件地址:wwwdfrobot点com点cn


教材目录
绪论 认识机器人
第一章 智能LED
第1课 走进Arduino的世界
第2课 闪烁LED
第3课 按钮控制的LED
第4课 聪明的按钮
第5课 呼吸灯
第6课 光控LED
第7课 LED综合创意
第二章 智能风扇
第1课 声控风扇
第2课 换挡风扇
第3课 自动变速风扇
第4课 遥控风扇
第5课 摇头风扇
第6课 自动跟踪风扇
第7课 风扇综合创意
第三章 智能小车
第1课 走直线小车
第2课 跳8字舞的小车
第3课 避障小车
第4课 防跌落小车
第5课 巡线小车一
第6课 巡线小车二
第7课 小车综合创意
附录:Arduino机器人教学套件


绪论 认识机器人

科技每时每刻都在悄然改变着我们的生活,机器人这个以前看似遥不可及的事物已经慢慢融入了我们的日常生活中。什么是机器人?什么是智能机器人?怎么学习机器人技术?在绪论部分,我们将了解机器人,理解机器人的几大主要组成部分以及它们的功能。
【任务导航】
认识机器人的几大主要组成部分及其功能。
了解机器人技术的发展。
【材料阅读】
1.什么是机器人?
机器人(Robot)这个词最早出现在上世纪初捷克科幻作家的一部叫做《罗索姆的万能机器人》的小说中,在原文里本来是写作“Robota”的,后来慢慢演变成了大家都接受的“Robot”一词。不过,大家可别被机器人这个名字所误导,认为机器人就一定长得和我们人类有几分相似。实际上,机器人的外表千奇百怪,很多和我们人类的外表没有半点相似性可言。那么机器人是如何定义的呢?科学家们说,“机器人是一种自动化的机器,能够依靠自身的动力和控制能力实现某种任务,这种机器具备一些与人或生物相似的智能能力,如感知能力、规划能力、动作能力和协同能力等”。按照这个定义,我们日常生活中每天都接触到的很多机械设备,如:自动售货机、全自动洗衣机、自动取款机、甚至是红外感应的自动冲水马桶都能算是机器人了。看!机器人离我们的生活并不远,对吧?
而智能机器人比起一般的机器人来又进了一步。如果一个机器人能够利用传感器感知外部世界,然后依靠自身的智能对外界环境的变化做出反应,那么这种机器人就可以被叫做智能机器人了。
2.机器人的三大组成部分
根据机器人所需要完成的任务不同,它们的设计也是千差万别,光从外貌很难看出规律。不过,如果我们仔细地对它们做个总结就会发现,大多数的机器人无外乎包括下面的几个部分,而且这几大部件都和人类或动物的身体器官能够一一对应呢!
机器人的大脑——主控制器
和我们人类的大脑一样,机器人的大脑——主控制器,是机器人最核心的部件。我们为机器人编写的各种控制程序和人工智能程序都要运行在主控制器中。由机器人的传感器得到的众多的外界环境信息在这里得到汇总,然后控制器中的人工智能程序就会对这些信息进行处理,再随之给各种驱动器、执行器发出控制命令。机器人就是以这种方式去执行各种各样实际的任务了。
那么主控制器具体是什么东西呢?实际上,它就是一种计算机而已。这里的计算机是一个相当宽泛的概念,它们可不仅仅是指我们家里每天用的个人电脑。除了个人电脑外,还有其它形形色色的各种计算机,小到只有同学们指甲盖大小的单片机(MCU),大到要装满几个大房间的超级计算机。而这些计算机中最广泛被用作机器人控制器的还是要数单片机了。同学们可以想一想,如果我们要制造一台全自动洗衣机——前面说过了全自动洗衣机也是一种机器人——那么用上一台个人电脑去做控制器,是不是就有些“杀鸡用牛刀”了呢?这种时候,单片机就可以大展拳脚了。单片机是典型的“麻雀  虽小,五脏俱全”。一片小小的单片机中就包括了中央处理器、存储器、定时器、数字输入/输出接口、模拟输入/输出接口等。本书中所使用的机器人的主控制器就是以一个单片机为核心的,它的计算能力说出来可能会吓同学们一跳,小小的一片单片机一秒钟能做上千万次的运算呢!
机器人的眼睛、耳朵和触角——传感器
如果机器人只能按照我们编好的程序指令有一是一,有二是二地行动,会不会就显得太“笨”了呢?科学家们早就想办法让机器人具备了更高的智能,让它们能够根据环境的变化做出反应。比如说,现在已经有服务机器人可以根据主人家里的温度变化调节空调、暖气,让主人一直处于舒适的环境中。再比如说,在国外的一些博物馆中已经有导游机器人为人们服务了,它们能不知疲倦地带领你进行参观并且进行讲解。但是在博物馆中,人来人往,导游机器人怎么能够防止自己撞上其他游客呢?这些能力就要靠“传感器”来实现了。传感器就像是我们人类的眼睛、鼻子、耳朵或是动物的触角、声纳。它们可以将环境中的声、光、电、磁、温度、湿度等物理量转化为机器人的大脑——控制器可以处理的电信号。控制器通过读取这些电信号就可以很快知道周围发生了什么,然后其中的智能程序就可以根据周围环境的变化,做出实时的响应了。
机器人的手、足——驱动器和执行器
前面所举的机器人的例子,如智能抽水马桶、全自动洗衣机等,都是没有移动能力的机器人。但是想想看,会跑的机器人也许能更好地帮助人类,我们可不想家里的智能管家机器人只能呆在一个房间中,对吧?因此,人们制造了一大类可以自由运动的机器人,它们被称作移动机器人。而帮助它们移动的机械和电子设备就叫做驱动器。同样,机器人的驱动器也是五花八门。大多数机器人就像我们日常生活中常见的各种车辆一样,是用轮子或者履带运动的。也有机器人应用仿生学原理,像人或动物一样用两足、四足或六足的方式运动。还有的机器人可以用螺旋桨产生的推力翱翔在天空,可以像蛟龙一样自由地潜入水下。看,有了驱动器的帮助,是不是机器人变得上山下海,无所不能了呢?
机器人的结构中用来实际完成特定任务的装置就被叫做执行器,比如自动售货机中,把货物取出交给顾客的装置就是执行器。还有一些机器人的执行器更加复杂,也看起来更像是人类的手臂。现代工厂中的焊接机器人、喷漆机器人、码垛机器人就都有一只灵活、强壮的手。也许在工厂中做某些技术活儿时,机器人还是不如有经验的人类师傅。但是在做那些高强度、重复性的劳动时,机器人就会全面胜出了,它们可以不知疲倦地工作,又快又好地完成任务。现在最先进的机器人已经可以进行复杂的外科手术了。这些是不是很神奇呢?
【动手操作】
活动主题:寻找生活中的机器人。
同学们的生活中能见到各种各样机器人的身影,让我们睁大发现的眼睛,去寻找生活中的各种机器人,并且用这节课我们教给大家的思路分析它们的几大组成部分吧,把你的结果填写在下面的表格中。
表1 寻找生活中的机器人
机器人名称
功能
控制器
传感器
驱动器
执行器
例子:智能冲水马桶
感知到有人使用后自动冲水
小单片机
红外热释电传感器
电动冲水装置




































【探究思考】
              不管是《终结者》还是《I,Robot》中AI和机器人试图取代人类,都是一种极为普遍的想法。或许这代表了人类对未来科技的恐慌,但这并未阻止技术的进步。虽然人类往往拥有不可预知的创造性,但机器人在很多方面都具备先天优势。所以,有人说人类将逐步失业,机器人正偷走人类的工作。
              请思考一下,哪些工作将逐步被机器人替代?人类该做出哪些对策?
【视野拓展】
1.机器人是如何帮助人类的?
机器人可以代替人类完成重复性、高强度的体力劳动。在现代化工厂中,大部分枯燥的体力劳动都可以用不知疲倦的工业机器人代替工人师傅们完成了,工人师傅们在电脑屏幕后就可以完成原来又脏又累的工作了。机器人进行重复性工作时的精确度也是人类无法比拟的,因此产品的质量会更有保障。
机器人还可以代替人类在危险或者难以生存的条件下工作。不久的将来,大家就会发现,一旦发生自然灾害后,救灾机器人会冲在第一线,挽救灾区人民的生命和财产。现在已经有发达国家在军队中装备了机器人,这种机器人可以负重几百公斤在各种地貌环境中前进。从月球、火星到海底、火山,凡是科学家们需要探索的地方都少不了机器人的身影。美国发射的几代火星探索机器人已经正在火星上进行科考工作了。
机器人还可以与人类和谐相处。现代社会中生活节奏变得越来越快,在物质丰富的同时也产生了各种社会问题。越来越多的“空巢老人”和行动不便的病人需要人来照顾,面对这些问题,科学技术能如何帮助我们呢?科学家们设计出了各种服务机器人,来满足我们的要求。“请递给我一杯水”“把房间温度调高一些”“帮我接通社区医院的电话”,以后主人们只要像这样说出自己的命令,服务机器人就会及时满足他们的要求了。除了帮做家务,当主人感到孤独时,机器人宠物还可以陪伴主人,给主人精神慰藉。根据最新的报道,法国科学家研制的Nao机器人,已经被用于治愈自闭症儿童,并且产生了惊人的效果。很多患有和人们交流障碍的儿童,通过和Nao机器人的相处改变了自己,也改变了未来。
2.什么是单片机?
单片机是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。从上世纪80年代,由当时的4位、8位单片机,发展到现在的300M的高速单片机。一些功能比较简单的机器人,都是用单片机作为控制器的。
2.怎么学习机器人技术?
机器人技术并非高不可攀的新技术,但是其涉及运动学和动力学、系统结构、传感技术、控制技术等多领域的交叉学科,制作机器人的过程,就是整合科学、技术、数学领域的知识,以工程标准化的思想进行综合实践的过程。学习机器人的过程,大致可以分为模仿、改造、创新三个部分,循序渐进,螺旋上升。如果有能力,建议通过淘宝自行购买相关的学习套件,将自己的创意实现出来。

【挑战自我】
你最想设计的机器人是怎么样的?请大胆想象,并且对照机器人的三大结构,分别写出机器人各个的功能。


第一章智能LED

第1课 走进Arduino的世界
    对喜好机器人与机器人技术的人而言,除了希望了解机器人的定义及其构成之外,更有兴趣的是参与机器人的设计与创新,那么我们到底通过什么来制作机器人呢?大家有没有接触过Arduino?通过这节课的学习,我们将带大家进入到Arduino的神奇世界中来。  
【任务导航】
    1.认识Arduino,了解Arduino控制板的种类;
    2.掌握Arduino驱动的安装;
    3.体验Arduino编程界面。
【材料阅读】
   1.什么是Arduino
    Arduino是一个基于开放源码的软硬件平台,构建于开放源码simple I/O界面版,并具有使用类似Java、C语言的IDE集成开发环境和图形化编程环境。由于源码开放和价格低廉,Arduino目前广泛地应用于欧美等国家和地区的电子设计以及互动艺术设计领域,得到了Make magazine(中文版名称为《爱上制作》)等出版物和Instructable等网站的认可和推荐。Arduino被称为“科技艺术”,作为一种新的“玩具”,甚至新的艺术载体,吸引了各个领域的人们加入到Arduino的神奇世界里来。
  • Arduino板子种类
Arduino先后发布了十多个型号的板子,有可以缝在衣服上的LiLiPad ,也有为Andriod设计的Mega,也有最基础的型号UNO,还有最新的Leonardo,如图1.1.1~1.1.4所示。

   
图1.1.1 LiLyPad
图1.1.2 MEGA
图1.1.3 UNO
图1.1.4 Leonardo
Arduino UNO是USB系列的最新版本,不同于以前的各种Arduino控制器,它不再使用FIDI的USB到串口驱动芯片,而是把Atmega8U2编程为一个USB到串口转换器,目前Arduino UNO已成为Arduino主推的产品。
3.Arduino Romeo V1
本书使用的Arduino控制器是由DFRobot出品的Arduino Romeo V1,如图1.1.5所示。该控制器采用的是最基础且应用最广泛的UNO板卡。它继承了Arduino 328控制器所有的特性而且集成了电机驱动、键盘、IO扩展板、无线数据串行通讯等接口。它不仅可以兼容几乎所有Arduino系列的传感器和扩展板,而且可以直接驱动12个舵机。除此之外,它还提供了更多人性化设计,采用了3P彩色排针,能够对应传感器连接线,防止插错。其中红色对应电源,黑色对应GND,蓝色对应模拟口,绿色对应数字口。
  • 处理器:ATmega328
  • 输出电源:5V2A/3.3V
  • 数字IO脚:(其中,35691011路作为PWM输出),数字口的值为01
  • 模拟输入值:A0-A7,模拟口的值为0-1023之间的任意值;
  • EEPROM1KB
  • IIC3个(其中有两个是90度针脚接头);
  • 测试按钮:5个(S0-S4);
  • 复位按钮:1个(RST);
  • 工作时钟:16MHZ

图1.1.5 Remeo
Arduino Romeo V1的功能和连接说明如图1.1.6所示。
图1.1.6 UNO的功能和连接说明

4.Arduino IDE 安装
得益于Arduino的开源,我们可以访问Arduino的官方网站(www.Arduino.cc),下载Arduino IDE软件,该软件用来编写程序并上传程序到控制器上,下载网址为http://Arduino.cc/en/Main/Software。这里要提醒大家的是下载版本要与计算机的操作系统相匹配。该软件下载之后,无需安装,解压后即可使用,如图1.1.7所示。
图1.1.7 解压后的Arduino IDE文件列表
Arduino IDE的环境不仅有文本式的编程环境(图1.1.8所示),还有图形化积木式的编程环境ArduBlock(图1.1.9所示),本书采用的编程环境是后者。
图1.1.8 Arduino IDE开发环境
图1.1.9 ArduBlock开发环境
    5.Arduino 驱动的安装
Arduino控制器和计算机的连接一般采用USB连接线。计算机第一次连接上Arduino控制器,需要安装驱动,以后再将Arduino控制器连到电脑上之后,就不需要安装驱动了。驱动程序在Arduino IDE安装目录的Drivers文件夹中。下面以Windows 7操作系统为例,介绍驱动安装过程,如图1.1.10~1.1.15所示。
图1.1.10 打开“设备管理器”,找到Arduino UNO设备

图1.1.11 选择“浏览计算机以查找驱动程序软件”


图1.1.12 选择驱动程序Drivers所在的文件夹
图1.1.13 如果系统出现安全提示,选择“安装”
图1.1.14 安装完毕
驱动程序安装之后,在“设备管理器”的端口一项中将增加一个COM口设备,请记下该端口号,如图1.1.15所示,Arduino与计算机通信端口号为COM4。
图1.1.15 通过设备管理器查看Arduino的COM口
最后要在Arduino开发环境中设置相应的串口号以及Arduino板的型号,注意Arduino板卡的型号为Arduino UNO,串口设置要与设备管理器中显示的Arduino的COM口一致(比如我们这里的COM4)。
6.体验Arduino
驱动安装完之后,就可以开始Arduino之旅了。接下来我们用Arduino IDE开发环境中LED闪烁的示例来体验一下Arduino吧。在Arduino UNO板的13号针脚上已经带了一个LED灯,如图1.1.16所示。点击文件——>示例——> Basic——>Blink,这时会弹出一个已经加载到程序编辑区的IDE环境,点击 ,将程序上传到Arduino控制器中,程序上传完之后会有上传成功的提示,大家会看到LED灯在不停的闪烁。
图1.1.16 数字针脚13指示灯

【动手操作】
活动主题一:Arduino 驱动的安装
在装完Arduino驱动之后,要打开设备管理器,查看自己的Arduino UNO的端口,并在打开Arduino IDE之后修改端口号使其保持一致,除此之外还要选择板卡为Arduino UNO。
活动主题二:上传Blink示例程序,观察现象
【探究思考】
请同学们上网或者查阅相关的资料,了解一下通过Arduino平台可以制作哪些有生活意义、有趣的智能人造物。
【视野拓展】

Arduino的历史

Arduino这个经典的开源项目,诞生于意大利的一间设计学校。Arduino的核心开发团队成员包括:Massimo Banzi,David Cuartielles,Tom Igoe,Gianluca Martino,David Mellis和Nicholas Zambetti。
据说,Massimo Banzi的学生们经常抱怨找不到便宜好用的微控制器,2005年冬天,Massimo Banzi跟朋友David Cuartielles讨论了这个问题,David Cuartielles是一个西班牙籍晶片工程师,当时在这所学校做访问学者。两人决定设计自己的电路板,并引入了Banzi的学生David Mellis为电路板设计编程语言。两天以后,David Mellis就写出了程式码。又过了三天,电路板就完工了。这块电路板被命名为Arduino。几乎任何人,即使不懂电脑编程,也能用Arduino做出很酷的东西,比如对感测器作出回应,闪烁灯光,还能控制马达。
随后Banzi,Cuartielles,和Mellis把设计图放到了网上。保持设计的开放源码理念,因为版权法可以监管开源软件,却很难用在硬件上,他们决定采用Creative Commons许可。Creative Commons(CC)是为保护开放版权行为而出现的类似GPL的一种许可。在Creative Commons许可下,任何人都被允许生产电路板的复制品,还能重新设计,甚至销售原设计的复制品。你不需要付版税,甚至不用取得Arduino团队的许可。然而,如果你重新发布了引用设计,你必须说明原始Arduino团队的贡献。如果你调整或改动了电路板,你的最新设计必须使用相同或类似的 Creative Commons许可,以保证新版本的Arduino电路板也会一样的自由和开放。唯一被保留的只有Arduino这个名字,它被注册成了商标。如果有人想用这个名字卖电路板,那他们可能必须付一点商标费用给Arduino的核心开发团队成员。你可以参考Arduino 的官方网站,在那里你会找到各种创意作品的源码,当然也有很多机器人应用实例代码,例如直流电机PWM 调速、舵机控制、超声波测距、红外传感器寻迹等,相信它能使你早日实现DIY 机器人的梦想。
【挑战自我】
同学们已经大概了解了Arduino,请大胆想象,使用Arduino可以制作哪些机器人作品?

第2课 闪烁LED
灯是我们日常生活中最常见的电器之一,已经成为我们日常生活中必不可少的电器,我们可以通过开关或者声音控制灯的亮灭,那么我们能否用Arduino来实现呢?如何实现?这节课我们来用Arduino点亮一盏灯。
【任务导航】
  • 熟悉ArduBlock
  • 搭建电路;
  • 制作一个闪烁的LED
【材料阅读】
1.ArduBlock   
ArduBlock(图1.2.1所示)是一款为Arduino设计的图形化编程软件,是Arduino官方编程环境的第三方软件,目前必须依附于Arduino IDE软件运行。ArduBlock是使用图形化积木搭建的方式编程的,这样的方式加强了编程的可视化和交互性,降低了编程门槛,即使没有编程经验的人也可以尝试给Arduino控制器编写程序。除此之外我们还可以对程序进行批注。
   图 1.2.1 ArduBlock编程环境
程序中的各个模块都是从左侧的模块库里“拖进”编程界面的,然后用这些模块积木进行拼接,拼接对了,会发出一声“咔”的清脆响声。如果要删去模块,直接把不需要的模块“拖出”编程界面即可。当我们编写好一个程序,点击编程环境上方的“上载到Arduino”按钮,会发现Arduino文本式的编程环境上的“上传”图标也开始工作了,而且在Arduino文本式的编程环境里还生成了文本式的代码。程序上传成功之后,文本式的文本环境下面会提示我们“上传成功”。
2.ArduinoLED模块的连接
LED(Light Emitting Diode,发光二极管)是一种能够将电能转化为可见光的固态半导体器件,如图1.2.2所示。它可以直接把电能转化为光,具有体积小、耗电量低、高亮度低热量、使用寿命长的特点,是Arduino机器人作品中实现光效功能的最佳选择。LED发光模块具有红、绿、蓝等多种颜色,并且只能显示一种颜色,如图1.2.3所示。一般来说,LED接到Arduino上,需要串联限流电阻。
     
      图 1.2.2发光二极管                      图 1.2.3 LED发光模块
本书使用的LED发光模块是由DFRobot出品的数字食人鱼LED发光模块,如图1.2.3所示。该发光模块利用SMT将LED二极管焊在可爱的PCB板上,然后引出3P接口,我们通过3P线将LED发光模块插到Arduino的数字口上即可。
不管是LED发光模块还是连接到Arduino控制器的其他传感器,一般有三条连接线,分别为输入电压(标注为“+”或“5V”或“VCC”等)、输出信号(标注为“D”或“S”等)以及地线(标注为“-”或“GND”等),这三条线分别和Arduino控制器的数字口或者模拟口连接。这三条线分别连接电压、数字口或者模拟口、地。以LED发光模块与Arduino的连接为例,连接图如图1.2.4所示。
图1.2.4 控制器与LED发光模块的接连
接好线之后要记住接的针脚号,如图接的是数字针脚3。这里要提醒大家的是在接线的时候,黑色的线接黑色的针脚,即GND,红色的线接红色针脚,即VCC,绿色的线接信号针脚,即D。除此之外,数字针脚0和1用于计算机和Arduino之间的通信,其中数字针脚0用于接收信号,数字针脚1用于发送信号,所以在接线的时候数字针脚0和1不要接。
3.制作闪烁的LED
数字针脚的值为1或0,即高电平或低电平,我们使用的这款LED发光模块,高电平可以点亮LED,而低电平则熄灭LED。
其中【延迟】模块的功能是上一个模块执行的持续时间,例如延迟1000毫秒,指的是上一个模块会持续执行1000毫秒。
【动手操作】
     活动主题一:制作闪烁的LED
在了解了Arduino的相关知识,也熟悉了ArduBlock编程环境之后,我们自己动手制作闪烁的LED吧。
器材:Arduino板子、LED、USB数据线。
1.硬件搭建
    同学们在连接LED发光模块与Arduino控制器时,要注意黑线一般接GND,红线接5V,第三根线接数字针脚,同时要记住自己接的针脚号。在这里提醒大家数字针脚0和1不要接。
  • 参考程序
图 1.2.5 闪烁LED程序
  • 程序下载,观察现象
在下载程序之前,要提醒同学们是查看自己的板卡和端口号是否正确,ArduBlock编程环境里面的数字针脚号是否与LED发光模块接到Arduino控制器上的数字针脚号一致。
    活动主题二:模拟交通灯
红灯亮A秒之后灭掉,绿灯亮B秒之后灭掉,黄灯亮C秒之后灭掉,以此类推。
器材:Arduino板子、三个LED、USB数据线。
1.硬件搭建
    将三个LED发光模块分别接在Arduino控制器的数字口,比如数字针脚3、4、5。
2.参考程序
图 1.2.6模拟交通灯
【探究思考】
    大家已经学会了制作闪烁的LED,想想日常生活中哪些地方用到了LED?这些LED有何功能?有什么效果?
【视野拓展】
全彩的LED
我们前面使用的LED发光模块,尽管有红、绿、蓝等多种颜色,但是只能显示一种颜色。其实,还有一种类型的LED,它可以显示多种颜色,这类LED称为全彩LED。全彩LED内置了红(Red)、绿(Green)和蓝(Blue)三种颜色的灯珠,根据三原色的原理调出多种颜色。常见的LED大屏幕都是利用这种原理进行调色,呈现出全彩的效果。
8*8 LED RGB Matrix是由DFRobot出品的一个XY轴可任意级联的三色全彩LED显示矩阵模块,如图1.2.6所示。它可以用于显示图片和文字,支持多图层和各图层的各种平移效果。
图 1.2.7  8*8 LED RGB Matrix
【挑战自我】
    大家已经学会了制作闪烁的LED,想想还能做哪些效果的LED?流水灯的效果能否实现?


第3课 按钮控制的LED
在上节课我们已经学会了制作闪烁的LED,即用程序来控制LED的变化,而控制的实现只能靠不同时间的间隔来表现一些特殊的闪烁方式,这好像有些呆板了,而且实际应用大都是利用外部信号来控制的,日常生活中我们的灯一般是通过开关来控制的,我们也先用简单的按钮来控制LED吧。
【任务导航】
  • 认识按钮,正确连接电路;
  • 制作“按钮按下亮,放开灭”的LED
3.制作“按钮按下亮,延时一段时间,自动灭”的LED。
【材料阅读】
    1.按钮
按钮,也称为按键,是一种常用的控制电器元件,常用来接通或断开“控制电路”(其中电流很小),从而达到控制电动机或其他电气设备运行目的的一种开关。
我们使用的按钮如图1.3.1所示,也叫做按压式的开关数字输入模块,能够实现非常有趣的互动作品,该按钮模块使用大按钮加优质按键帽,使用方便可以做到“即插即用”。按钮有两种状态,即按下或者放开。我们使用的这款按钮按下是1(HIGH),放开是0(LOW),注意不同厂家生产的按钮可能不同。按钮模块与LED模块一样,也是接Arduino控制器的数字口,通常黑线接GND,红线接5V,绿线接数字针脚。

图1.3.1 按钮
2.选择结构--【如果】
当我们需要判断某些结果来决定是否要执行不同的程序时,选择性结构是一个很方便的结构,判断结果决定是否执行内部的程序。选择性语句的判断有【如果】和【如果—否则】。在程序当中,若有以上几种结构,便会依据不同的条件选择,执行不同的程序片段,以达成不同的目的。这节课我们主要来学习【如果】模块。
选择结构【如果】的基本形式:
图1.3.2 选择结构—【如果】
其语义是:如果条件满足即值为真,则执行模块里面语句,否则不执行该语句。其过程可表示为图1.3.3。其中判断条件既可以是关系运算也可以是逻辑运算。
图1.3.3 选择结构

  • 数字口的输入
     
(1)功能:读取指定数字针脚的输入值。
(2)参数:需要读取输入值的针脚号。
    (3)实例:含义是读取数字针脚3的值。
【动手操作】
主题一:制作“按钮按下亮,放开灭”的LED
1.硬件搭建
连接电路时,按钮模块与LED模块一样,都要接到数字口。
器材:Arduino 控制器、LED模块、按钮模块以及USB数据线。
2.参考程序
图1.3.4 按钮按下亮,放开灭的LED

主题二:制作“按钮按下亮,延时一段时间,自动关闭”的LED
1.生活实例
(1)走廊里的灯,亮了之后过一会自动关闭了。

(2)中国地质大学学生发明了投币式台灯,当硬币投入台灯下的储蓄罐中时,台灯便可开始照明,半小时后,灯自动熄灭。

2.参考程序
   
图1.3.5 按钮按下亮,延时一段时间,自动关闭的LED
【探究思考】
除了以上按钮控制LED亮灭的效果,还可以用按钮控制LED实现哪些效果?
【视野拓展】
波段开关
一般的开关如前面介绍的按钮只有两种状态即按下或者放开,如果说需要输出多个状态的话,我们还需要再接几个按钮到Arduino控制器上面,而波段开关它有多种状态。以DFRobot出品的波段开关为例,如图1.3.6所示,该模块波段开关是一种通过旋转来调整信号输出的开关。它只需要一个模拟口就能读取12个状态,大大节省了其他数字端口。而且这款波段开关具备12个档位,每个档位边上都有LED显示,产生炫酷的灯光效果,我们可以实时了解档位的状态,非常方便。
图1.3.6 波段开关
【挑战自我】
    请同学们尝试实现按钮按下LED亮,再按下LED灭。
第4课 聪明的按钮
     一般来说,家里面的灯都是通过开关来控制的,即按下开,再按下关,那么能否用Arduino实现呢?这节课我们一起来学习用按钮开关实现按下开,再按下关的LED效果。
【任务导航】
    1.掌握布尔类型和变量;
    2.制作“按钮按下开,再按下关”的LED。
【材料阅读】
  • 变量和常量
在编程过程中变量和常量是基本的数据对象。编写程序总是要与各种数据打交道,如马达的速度、等待的时间等,这就需要涉及到变量和常量了。
常量指的是程序在运行过程中,其值不能改变的数据,如图1.4.1所示。其中常量分为数字常量、字符常量、字符串常量等。

图1.4.1 ArduBlock环境中的常量

变量是指在程序中用来代表数据的字符,这些字符的值是可以变化的,其中变量有多种类型,如数字变量、模拟变量、字符变量等等。ArduBlock环境中的部分变量如下图1.4.2所示。

图1.4.2 变量

2.布尔类型
布尔类型(bool)用于表示真/假。该类型的变量值只能是0或者1。无论赋予任何非零值给该类型的变量,它的值都只会是1。
表4-1 布尔类型
灯亮
1
TRUE
高电平
高电位
按下按钮
HIGH
灯灭
0
FALSE
低电平
低电位
放开按钮
LOW

3.非运算符
运算符是告诉编译程序执行特定算术或逻辑操作的符号。运算符主要分为三大类:算术运算符、 关系运算符与逻辑运算符、按位运算符。我们这节课主要来学习逻辑运算符里面的非运算。
非运算是单目符号运算的一种,所谓单目运算符就是只有需要一个操作数的运算符。非运算的符号是“!”,其意思就是取与表达式相反的值,若表达式值为真,则逻辑非运算结果为假。例如,如果数字针脚的值为0,非0就是1即真;相反如果数字针脚的值为1,非1就是0即假。
4.按钮抖动
通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。因而在闭合及断开的瞬间均伴随有一连串的抖动,为了不产生这种现象而做的措施就是按键消抖。而最简单的消抖方法就是加入延时。
【动手操作】
活动主题:制作“按钮按下开,再按下关”的LED
    1.硬件搭建
电路的连接跟上节课一样,这里还是要特别强调一下我们的按钮模块接数字口,并且黑线接GND,红线接5V,第三根线接信号针脚。在接好电路之后,要记住自己接的是哪个数字口。
器材:Arduino Romeo控制器、按钮、LED发光模块以及数据线。
2.参考程序一
图1.4.3 按钮按下开,再按下关的LED
参考程序二
提示:参考程序二加了延时。
参考程序三
提示:参考程序三加了两个延时(按下和放开都加了延时)同时加了当循环。
【探究思考】
  • 请同学们下载程序,仔细观察LED的稳定性如何?解释为什么出现这种现象?如何来解决?
  • 思考一个按钮控制LED,还有哪些情况?
【视野拓展】
  • 按钮抖动现象
通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。因而在闭合及断开的瞬间均伴随有一连串的抖动,为了不产生这种现象而作的措施就是按键消抖,如图1.4.4所示。
    抖动时间的长短由按键的机械特性决定,一般为5ms~10ms。这是一个很重要的时间参数,在很多场合都要用到。
图1.4.4 按键抖动

    按键稳定闭合时间的长短则是由操作人员的按键动作决定的,一般为零点几秒至数秒。键抖动会引起一次按键被误读多次。为确保CPU对键的一次闭合仅作一次处理,必须去除键抖动。在键闭合稳定时读取键的状态,并且必须判别到键释放稳定后再作处理。
  • 按钮消抖
    消抖是为了避免在按键按下或是抬起时电平剧烈抖动带来的影响。按键的消抖,可用硬件或软件两种方法。一般来说,我们会使用软件方法去抖,即检测出键闭合后执行一个延时程序,5ms~10ms的延时,让前沿抖动消失后再一次检测键的状态,如果仍保持闭合状态电平,则确认为真正有键按下。当检测到按键释放后,也要给5ms~10ms的延时,待后沿抖动消失后才能转入该键的处理程序。
    软件消抖的方法是不断检测按键值,直到按键值稳定。实现方法:假设未按键时输入1,按键后输入为0,抖动时不定。可以做以下检测:检测到按键输入为0之后,延时5ms~10ms,再次检测,如果按键还为0,那么就认为有按键输入。延时的5ms~10ms恰好避开了抖动期。
【挑战自我】
  • 思考能否用模拟变量实现按钮按下LED亮,再按下LED灭?
  • 两个按钮控制LED,有哪些效果?思考并尝试实现。

第5课 呼吸灯
在前面的实例当中,我们都是用Arduino控制器来控制LED灯的亮或灭的变化。但是并没有体现LED的电压由高到低或者由低到高的变化,即中间过程没有得到体现。但有时要有,比如在KTV或演唱会上,为了达到很好的灯光效果,有时要使灯的亮暗渐变,即是个连续变化的过程。那我们能否实现呢?
【任务导航】
  • 认识呼吸灯;
  • 掌握PWM
  • 掌握模拟输出;
  • 掌握当循环。
【材料阅读】
1.呼吸灯
呼吸灯,顾名思义,就是灯光在微电脑控制之下完成由亮到暗的逐渐变化,感觉像是在呼吸。广泛应用于手机之上,并成为各大品牌新款手机的卖点之一。如果你的手机里面有未处理的通知,比如说未接来电,未查收的短信等等,呼吸灯就会由暗到亮的变化,像呼吸一样那么有节奏,起到一个通知提醒的作用。
   2.PWM
现今多数系统皆采用数字控制的方式,由核心微处理器接收回传的感测信息,并针对与目标的差值再调整输出。而数字信号只有0与1两种变化,怎么调整输出值的大小满足需求呢?这时我们可以将数字信号转化成模拟信号,这就需要我们的PWM了。
脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中,它可以将数字信号转化为模拟信号。
Arduino Romeo控制器的数字口上有6个针脚支持PWM信号,即3、5、6、9、10和11。PWM的输出值为0~255,LED发光模块接到这几个针脚上面,就可以控制LED的亮度,不会只有单纯的亮跟灭两种选择。这里要注意的是LED发光模块是可以调亮度的,有些LED发光模块不能调节亮度,即便插在这个针脚上面,也无法控制LED的亮度。本书用的LED发光模块是可以调节亮度的。
3.模拟针脚的输出
   
  • 功能:将指定的值给模拟口。
  • 参数:Pin是需要输入值的针脚号;Value的取值为0~255之间的任意值。
    (3)实例:意思就是将模拟针脚3的值设定为255。
  • 当循环
前面介绍的选择结构只能判断一次,只有程序流程重新来过时,才会再次判断。而某些情况下还需要条件满足的时候不断地重复执行某些语句,这就需要循环型的控制语句如重复循环或当循环了。
当循环的基本形式:
功能描述:当条件成立即为真(1)的时候,执行循环体内的语句,且循环体会重复执行;当条件不成立的时候即为假(0)时,跳出循环体,结束循环。如果条件始终成立,则会进入死循环,循环体一直执行下去。
【动手操作】
    活动主题一:数值控制LED亮度
1.硬件搭建
在连接电路时,LED模块要接到数字口支持PWM信号的针脚上,即3、5、6、9、10、和11。
器材:Arduino Romeo控制器、LED发光模块以及数据线。
   2.参考程序
  
   活动主题二:制作呼吸灯

图1.5.1 呼吸灯参考程序
【探究思考】
1.能否用按钮控制LED的亮度情况?如何实现?
2.你会使用条件语气制作呼吸灯?
3.还可以制作哪些效果的LED?
【视野拓展】
  • PWM
    PWM,脉宽调制:即通过一系列脉冲的宽带来调制(或控制)来等效得到所需要的波形(包括形状和幅值),如图1.5.2所示,咱们可以通过很多脉冲来恢复得到正弦波形。这也可以从高中所学积分的面积等效的原理解释。比如第1个脉冲所围的面积,等于第一个脉冲前由正弦波形围成的面积。通过改变方波的占空比,就可以改变等效的输出电压波形。试想一下,如果每个脉冲的宽度相等,则所等效的波形为一条直线,即为直流电压信号。PWM调制广泛应用与电机调速和阀门控制中。比如现在的电动车就是通过PWM调速的。
图1.5.2 PWM
    2.数字信号和模拟信号
    数字信号:是指幅度取值离散的,其值被限制在有限域范围内,如二进制码就是一种离散信号。其特点是抗干扰能力强,易于数字信号处理。现在很多信号基本上都是数字信号,如手机信号,计算机处理信息等等。
模拟信号:是指其信号波形是连续变化的,咱们可以在任意的瞬间取值。由于模拟信号易受干扰影响,不容易处理,一般都是先将模拟信号离散成数字信号,以便处理。两者的区别如图1.5.4所示:
图1.5.4 A/D区别
【挑战自我】
前面我们已经学过了用按钮控制LED的亮灭,请同学们尝试用按钮控制呼吸灯。

第6课 光控LED
    既然Arduino能够输出模拟的电压,那么Arduino能不能感知到外界模拟的信号呢,如声音、光线等信息?这些就需要用到我们的传感器了。这节课我们就来学习利用传感器感知外界的信息来控制LED。
【任务导航】
  • 认识传感器;
2.能够正确连接传感器,并利用传感器信息进行相应的控制;
3.掌握串口监视器的使用。
【材料阅读】
1.传感器
传感器是一种物理装置或生物器官,能够探测、感受外界的信号、物理条件(如光、热、湿度)或化学组成(如烟雾),并将探知的信息传递给其他装置或器官。传感器一般由敏感元件、转换器件 和转换电路三个部分组成,通过敏感元件获取外界信息并转换成电信号输出,然后由控制器进行分析处理,如图1.6.1所示。
图 1.6.1 传感器结构
可以从不同的维度对传感器进行分类,这里我们只介绍以其输出信号为标准对传感器进行分类,可以分为:
模拟传感器——将被测量的非电学量转换成模拟电信号,如声音传感器、光线传感器等。
数字传感器——将被测量的非电学量转换成数字输出信号(包括直接和间接转换),如寻线传感器、防跌落传感器等。
开关传感器——当一个被测量的信号达到某个特定的阈值时,传感器相应地输出一个设定的低电平或高电平信号,如按钮。
其中开关传感器以及数字传感器统称为数字传感器。
2.光线传感器
光线传感器也称环境光线传感器,本书使用的光线传感器是由DFRobot出品的模拟环境光线传感器,如图1.6.2所示。该传感器模块可以用来对环境光线的强度进行检测,通常用来制作随光线强度变化产生特殊效果的互动作品。
图1.6.2 光线传感器
光线传感器是一种模拟传感器,它要接到Arduino Romeo控制板的模拟口上,值的范围为0~1023,光线强弱的不同会输出不同的值,光线越强数值越大,光线越暗数值越小。光线传感器在接线时,也是黑线接GND,红线接5V,第三根线接模拟针脚。光线传感器与Arduino Romeo控制器的连接示意图,如图1.6.3所示。
图1.6.3 光线传感器与Arduino的连接
3.串口监视器
光线传感器可以检测当前环境的光线值,那光线值到底是多少呢?这就需要用到串口监视器了。ArduBlock开发环境下的(串口监视器)用来监控串口的通讯状况。单击串口监视器按钮后将出现类似于如图1.6.4所示的窗口。 串口监视器可以显示从Arduino Romeo 控制器发来的数据,比如光线传感器、声音传感器的值等。Serial Monitor(串口监视器)是非常有用的工具,特别是在调试程序时。
图1.6.4 串口监视器
串口输出要用到,具体使用方法如图1.6.5所示:
图1.6.5 串口输出针脚值
这里要提醒大家的是其中的【message】模块可有可无,而且【message】模块里面的message可以改为其它的字符串;如果我们要输出的模拟传感器的值,我们要选择【和模拟量结合】模块,如果是数字传感器或者LED发光模块的值,我们要选择【和数字量结合】模块,其中数字针脚或者模拟针脚换成我们传感器或者LED发光模块的针脚值。
【动手操作】
活动主题一:读取光线传感器的值
1.硬件搭建
光线传感器模块要接到Arduino控制器模拟口上。
器材:Arduino Romeo控制器、USB线、光线传感器。
  2.参考程序
图1.6.6 串口输出光线传感器的值
活动主题二:制作光控LED
  1.作品描述
如果光线暗,LED点亮,否则LED熄灭。
   2.硬件搭建
光线传感器模块要接到Arduino控制器模拟针脚上,LED发光模块接到Arduino控制器的数字针脚上。
器材:Arduino Romeo控制器、USB线、光线传感器以及LED发光模块。
  3.参考程序
图1.6.7 光控LED
提示:程序中30是光线暗的时候传感器的值。不同的光线传感器数值是不一样的,需要根据具体传感器进行修改。

【探究思考】
利用光线传感器还可以实现哪些效果的LED?光线传感器还可以控制哪些东西?能不能制作其他效果的LED?
【视野拓展】
映射
ArduBlock编程环境中有一个【映射】模块,该模块可以将一定范围内的一个值转化为另一个范围内的值。下面简单介绍一下该模块的使用。

下面给大家举个简单的例子,比如说0~100之间的20可以转化为0~10之间的2。
这节课我们实现了光控LED,即光线暗LED亮,光线强LED灭;我们也知道了光线传感器的值为0~1023,而LED的亮度为0~255,那么能否根据光线光线的强弱控制LED的亮度呢?【利用映射实现】
【挑战自我】
我们已经学会了用按钮或者传感器控制LED的亮灭和明暗,请同学们想想,我们还可以制作哪些有创意的LED?还能用哪些传感器控制我们的LED?

第7课 LED综合创意
通过前面几节课的学习,我们已经了解并学会了利用按钮或者传感器来控制LED的亮度以及明暗情况,在我们一起设计和开发的过程中,同学们有没有产生一些创意的想法呢?这节课我们就来制作一些有创意的LED。
【任务导航】
    1.熟悉防跌落传感器和声音传感器;
2.设计并尝试实现一个创意的LED作品。
【材料阅读】
1.声音传感器
本书所用到的声音传感器使用的是DFrobot出品的模拟声音传感器,如图1.7.1所示。这是一款简单、实惠的电子耳朵,它可以用来对周围环境的声音强度进行检测,并转化为模拟信号,检测到的声音强度与输出电压成正比,它通常用来制作一些与声音有关的机器人作品,例如听到声音点亮LED,延时一段时间LED自动关闭。该传感器模块的接线与光线传感器模块的接线相同,同样接的是模拟口。
图1.7.1 声音传感器
2.防跌落传感器
本书使用的数字防跌落传感器模块采用夏普的红外测距模块,如图1.7.2所示。该模块输出的数字信号,有效距离10cm,当检测到10cm内有障碍物时,输出低电平;而没有检测到障碍物时,输出高电平。该模块也有三个针脚,接线方法与LED发光模块一样,红色接VCC,黑色接GND,第三根线接数字针脚。同样,使用该传感器也可以制作一些创意的机器人作品,例如使用两个防跌落传感器可以制作手势控制LED,比如手势从左到右点亮LED;手势从右到左熄灭LED。
图1.7.2 数字防跌落传感器

【动手操作】
活动主题一:声控灯(听到声音LED亮,再听到声音LED灭)
   1.硬件搭建
在连接电路时,声音传感器模块要接到模拟口上面,LED发光模块接到数字口。
器材:Arduino Romeo 控制器、USB线、声音传感器以及LED模块。
  2.参考程序
图1.7.4 声控LED
活动主题二:制作手势控制LED
  1.硬件搭建
在搭建硬件时,两个数字防跌落传感器以及LED发光模块接到数字口上面。
器材:Arduino Romeo 控制器、USB线、两个数字防跌落传感器以及LED模块。
   2.参考程序
图1.7.4 手势控制LED
活动主题三:其他创意的LED
【探究思考】
同学们互相交换自己的创意LED,并相互评价。
【视野拓展】
风能驱动的LED路灯
这是一款可以被风驱动的LED路灯,如图1.7.5所示。外面的灯罩是透明的扇片并排列成圆筒型,点亮后与我们传统的走马灯相似,而中间就是低能耗的LED灯,只要风速达到1.5米/秒就可以被点亮,LED功率不大却足够照亮附近的区域。
白天只要有风转动灯罩,LED路灯就能将风能转化成电能储存起来,如同涓涓细流般汇聚起来让LED灯点亮整个晚上。这款利用风能的LED路灯将风能发电部分与LED路灯完美地融为一体,简单而实用,而且扇片快速转动时透出光线的效果也是很独特的。无需额外的电网供电与控制,幽蓝色的LED路灯能够很好地融入自然环境,在幽暗的环境里为人们提供一个明亮的守候。
图1.7.5 风能驱动的LED路灯

直接用手指掌控的LED
现实生活中我们习惯用开关来控制灯光的关闭,灯的亮度,现在介绍的是一款可以带触摸的智能控制灯亮程度的LED台灯,如图1.7.6所示。或许这样酷的台灯会出现在某个精致的书吧,在面板上方用手指轻触感应用手指跨度的距离对LED灯光强弱进行控制,关闭灯光的方式是迅速划过面板。
图1.7.6 手指掌控的LED
【挑战自我】
同学们想一想我们还可以制作哪些有创意的LED?我们设计的LED还有哪些地方需要改进?

第二章 智能风扇


第1课 声控风扇
风扇是我们生活中常见的家用电器,它是通过直流电机带动扇叶转动的,可以用Arduino控制风扇吗?如何控制呢?在这节课里,我们可以理解Arduino控制直流电机的方式以及制作声控风扇。
【任务导航】
1. Romeo控制直流电机;
2. 制作声控风扇。
【材料阅读】
1.Romeo控制直流电机
Romeo控制器不仅继承Arduino328控制器所有的特性,而且集成了电机驱动、按钮、IO扩展板、无线数据串行通讯等接口。由于本节课主要用到的是带动风扇的电机,这里就主要讲解一下Romeo中直流电机的控制。
控制LED是将LED模块直接连接到数字针脚,那么控制风扇是不是也将电机直接连接到数字针脚呢?当然不是,因为针脚直接输出的电流太小,无法带动电机转动,所以需要专门的电机输出——Romeo板的L298驱动。
Romeo中电机控制针跳线,将分配用于电机控制针脚为数字口4、5、6、7。拔掉跳线将释放数字口,电机控制器将被禁用。接线图如2.1.1所示,连接电机的地方变式电机驱动模块。另外,Romeo可以使用外接电源,也可不使用,通过跳线控制。
图2.1.1 电机接线图
Romeo控制电机有两种模式:PWM模式和PLL模式,这里我们用到的是PWM模式,PLL模式在视野拓展中会有介绍。通过改变两个数字IO针脚和两个PWM针脚的PWM对直流电动机控制端口实现。如表2.1.1是PWM控制模式的针脚分配,图2.1.2是对应的实物。其中,M1是电机1,M2是电机2。
表2.1.1 PWM针脚分配
针脚
功能
4
电机1的方向控制
5
电机1的PWM控制
6
电机2的PWM控制
7
电机2的方向控制
图2.1.2 PWM控制模式
2.模拟声音传感器
模拟声音传感器在第一章进行了简单的介绍,这里再具体介绍一下。它是一款简单、实惠的电子耳朵,它能“听到”声音的大小,并转化为模拟信号。通过模拟反馈电压信号的大小值体现环境声音的大小。要一个简单的3芯数据线就能将它连接到“大脑”Arduino控制器。Arduino在“听到”不同强弱的声音后做出你设定的反应。它是基于麦克风为声音检测的传感器,可用来对周围环境中的声音强度进行检测,具有300倍的放大器,输出模拟信号能使用3.3V和5V为基准AD采集,可以用来实现根据声音大小进行互动的效果、制作声控机器人、声控开关、声控报警等。实物如图2.1.3所示,接线时注意连接模拟针脚。
图2.1.3 模拟声音传感器
【动手操作】
活动主题:制作我的声控风扇
同学们在了解了相关的知识后,可以自己制作本课的声控风扇了,我们用到的器材主要是Romeo板子、模拟声音传感器、风扇(带直流电机)。
1.硬件搭建(声控风扇的连接)
在连接物理电路时,需要注意:模拟声音传感器接到模拟口(程序中,传感器连接的是模拟口1,电机接的是M1接线柱)。
  • 参考程序
(1)读取模拟声音传感器的值
图2.1.4 读取模拟声音传感器的值
(2)声控风扇
图2.1.5 声控风扇
【探究思考】
请同学们讨论一下,在生活中声控风扇可以用在哪里呢?哪些地方也用到了声音控制?
【视野拓展】
1.直流电机的控制方式
直流电机是将直流电能转换成机械能的装置,是目前应用最广泛的一种机器人驱动器件,具有效率高、调速性能好和起动转矩大等特点。直流电机应用磁感应原理将电能转换为机械能,在磁场中放入通有电流的导体就会产生磁感应效应。
图2.1.7中所示为一个典型的直流电机控制电路。电路得名于“H桥驱动电路”是因为它的形状酷似字母H。在这里,4个三极管组成H的4条垂直腿,而电机就是H中的横杠(注意:图2.1.7及随后的两个图都只是示意图,而不是完整的电路图,其中三极管的驱动电路没有画出来)。
如图所示,H桥式电机驱动电路包括4个三极管和一个电机。要使电机运转,必须导通对角线上的一对三极管。根据不同三极管对的导通情况,电流可能会从左至右或从右至左流过电机,从而控制电机的转向。
图2.1.6 H桥驱动电路示意图
要使电机运转,必须使对角线上的一对三极管导通。例如,如图2.1.8所示,当Q1管和Q4管导通时,电流就从电源正极经Q1从左至右穿过电机,然后再经Q4回到电源负极。按图中电流箭头所示,该流向的电流将驱动电机顺时针转动。当三极管Q1和Q4导通时,电流将从左至右流过电机,从而驱动电机按特定方向转动(电机周围的箭头指示为顺时针方向)。
图2.1.7 H桥驱动电动机顺时针转动
图2.1.9所示为另一对三极管Q2和Q3导通的情况,电流将从右至左流过电机。当三极管Q2和Q3导通时,电流将从右至左流过电机,从而驱动电机沿另一方向转动(电机周围的箭头表示为逆时针方向)。
图2.1.8 H桥驱动电动机逆时针转动
2.PLL控制模式
Romeo也支持PLL相位锁相环控制模式。如表2.1.2是PLL控制模式的针脚分配,图2.1.10是对应的实物图。
表2.1.2 PLL针脚分配
针脚
功能
4
电机1启用控制
5
电机1方向控制
6
电机2方向控制
7
电机2启用控制
图2.1.9 PLL控制模式
对这种控制模式感兴趣的同学可以利用网络查找并了解一下。
【挑战自我】
我们制作的声控风扇有声音时转动,没声音时马上就停掉了,如果想让风扇过一会在停掉,可以怎样解决呢?
回想一下LED中学过按钮可以控制LED的亮灭,可以控制风扇的开关吗?自己尝试一下。

第2课 换挡风扇
家中的风扇一般是可以换挡的,而上节课我们制作的风扇不能实现这个功能。Arduino可以制作出换挡风扇吗?答案是肯定的,这节课就来学习换挡风扇的制作。
【任务导航】
1.掌握选择结构的嵌套;
2.进一步熟悉PWM控制直流电机的速度;
3.制作换挡风扇。
【材料阅读】
1.选择结构
我们前面已经学习过选择结构,包括“如果……”和“如果……否则……”两种基本结构,如图2.2.1所示:
图2.2.1 选择结构
其实选择结构还可以嵌套使用,如图2.2.2所示:
图2.2.2 选择结构的嵌套
2.用按钮换挡
用按钮换挡可以制作出换挡风扇,用自然语言描述换挡风扇的功能:初始状态是空档,风扇静止;按钮按下一次,风扇一档,风扇转动稍快;再按一次,风扇二档,风扇转动更快;再按一次,回空挡,风扇停止转动……
控制风扇转速是通过设定针脚5的值,前提是电机接的M1接线柱;若接M2的话,则是设定针脚6的值。注意:值的取值范围应该是0-255之间。
【动手操作】
活动主题:制作我的换挡风扇
  • 任务描述
同学们在了解了相关的知识后,可以自己制作本课的换挡风扇了,我们用到的器材主要是Romeo板子、按钮、风扇(带直流电机)。
1.硬件搭建(换挡风扇的连接)
在连接物理电路时,需要注意:按钮接到数字口上(程序中,按钮连接的是数字口2,电机接的是M1接线柱)。
2.参考程序
图2.2.3 换挡风扇
【探究思考】
想一想,你做的换挡风扇性能如何,符合你的预期吗?请同学们相互讨论一下,你的风扇还可以做哪些改进,或者是还可以添加哪些创意的效果。
【视野拓展】
1.ArduBlock中控制电机的模块
我们都使用了“设定针脚数字值”和“设定针脚模拟值”这两个模块来控制电机的转动,以控制电机M1为例,我们可以通过设定针脚4的高低电平来控制其转动方向,通过设定针脚5的PWM值来控制其转动速度。
其实,ArduBlock还为我们提供了其它的电机控制模块。在“教育机器人”一栏中,分别有“电机运行”“设置电机”“停止电机”三个电机控制模块。下面我们就分别介绍一下这三个模块。
“电机运行”模块如图2.2.4所示,是同时设置电机M1和M2的转动方向和转动速度。参数的正负代表转动方向,参数值大小代表转动速度,参数范围在-255到255之间。
图2.2.4 “电机运行”模块
“设置电机”模块如图2.2.5所示,是设置某一个电机的转动方向与转动速度。上面参数是电机编号,下面参数是电机转动方向和转动速度,同“电机运行”。
图2.2.5 “设置电机”模块
“停止电机”模块如图2.2.6所示,是停止所有电机。
图2.2.6 “停止电机”模块
这几个模块使用起来都比较简单,有兴趣的同学可以尝试试用一下。
2.延时消抖
还记得LED中按钮抖动现象吗?细心的同学会发现,我们这里的按钮也会有抖动现象。对于本课中的风扇利用延时消抖,其实很简单,就在程序最后加上一个小的延时,如下面红框中标出的即是。
图2.2.7 延时消抖

【挑战自我】
    请同学们思考一下,根据前面学过的按钮控制的LED,若使用两个按钮做换挡风扇,一个是加档,一个是减档,你可以实现吗?尝试一下。再想一想还有其他的控制方式吗?

第3课 自动变速风扇
通过前面的学习,同学们了解了风扇的转速是可以变化的,比如用按钮制作的换挡风扇,那么风扇可以根据我们的需要自动变速吗?听起来很酷吧。在这节课里,我们就来尝试一下制作自动变速风扇。
【任务导航】
1.了解超声波传感器及其测距原理;
2.制作自动变速风扇。
【材料阅读】
1.超声波传感器
我们使用的超声波传感器是HC-SR04超声波传感器,它基于声纳原理,通过监测发射一连串调制后的超声波及其回波的时间差来得知传感器与目标物体间的距离值。其性能比较稳定,测度距离精确,盲区为2cm,如图2.3.1是HC-SR04超声波传感器。
图2.3.1 HC-SR04超声波传感器
HC-SR04超声波传感器的主要参数如下:
  • 使用电压:DC5V
  • 静态电流:小于2mA
  • 电平输出:高5V,低0V
  • 感应角度:不大于15°;
  • 探测距离:2cm450cm
  • 精度:0.2cm
在使用HC-SR04超声波传感器时,应先将其插好在电路板上再通电,避免产生高电平的误动作,如果产生了,重新通电方可解决。针脚定义,如表2.3.1所示。
表2.3.1 HC-SR04超声波传感器针脚定义
针脚
说明
VCC
电源+5V输入
GND
电源地线
Echo
超声波接收端
Trig
超声波发射端

2.超声波传感器测距
在这里,我们只学习超声波测距的最简单的一种,也是本课需要用到的,即将超声波传感器固定住,此时可以测量其与障碍物之间的距离。HC-SR04的工作原理:(1)采用IO触发测距,给至少10us的高电平信号;(2)模块自动发送8个40khz的方波,自动检测是否有信号返回;(3)有信号返回,通过IO输出一高电平,高电平持续的时间就是超声波从发射到返回的时间,测试距离=(高电平时间×声速)/2。
在ArduBlock里面可以直接读出超声波传感器测到的距离值,如下图2.3.2所示,Trig连接数字口8,Echo连接数字口9。
图2.3.2 超声波测距并显示
【动手操作】
活动主题:制作我的自动变速风扇
同学们在了解了相关的知识后,可以自己制作本课的自动变速风扇了,我们用到的器材主要是Romeo板子、HC-SR04超声波传感器、风扇(带直流电机)。
1.硬件搭建
在连接物理电路时,需要注意:Trig和Echo分别接到数字口(程序中,Trig和Echo分别连接数字口8和9,电机接的是M1接线柱)。
2.参考程序
由于风扇、电机或者载重的不同,使风扇转动的最小电平也会不同的,请同学们自己检测一下使风扇转动的PWM值最小是多少,并记录下来。
图2.3.3 自动变速风扇
【探究思考】
请同学们思考并讨论一下,在我们日常生活中,哪里有用到超声波测距?哪里可以运用超声波测距呢?超声波测距都有哪些优缺点?
【视野拓展】
1.超声波测距
由于超声波指向性强,能量消耗缓慢,在介质中传播的距离较远,因而超声波经常用于距离的测量,如测距仪和物位测量仪等都可以通过超声波来实现。利用超声波检测往往比较迅速、方便、计算简单、易于做到实时控制,并且在测量精度方面能达到工业实用的要求,因此在移动机器人研制上也得到了广泛的应用。
超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。超声波在空气中的传播速度为340m/s,根据计时器记录的时间t,就可以计算出发射点距障碍物的距离(s),即:s=340×t/2 。这就是所谓的时间差测距法。
超声波测距的原理是利用超声波在空气中的传播速度为已知,测量声波在发射后遇到障碍物反射回来的时间,根据发射和接收的时间差计算出发射点到障碍物的实际距离。由此可见,超声波测距原理与雷达原理是一样的。
测距的公式表示为:L=C×T
式中L为测量的距离长度;C为超声波在空气中的传播速度;T为测量距离传播的时间差(T为发射到接收时间数值的一半)。
超声波测距主要应用于倒车提醒、建筑工地、工业现场等的距离测量,虽然目前的测距量程上能达到百米,但测量的精度往往只能达到厘米数量级。
2.红外线测距
还有一种测距是利用红外线测距的。红外测距原理和雷达测距原理相似,是发射红外线然后测量回波时间,光速乘以时间再除以2就得到距离。
由于光速很快,而红外测距仪一般测量距离比较短,用常规的脉冲法(发射一个脉冲然后计算收到反射脉冲的时间)常常因为时间过短而无法测量,所以一般是将红外线发射功率调制上一个较低的频率,然后测量回波与发射波的相位差,根据相位差可以计算出回波时间。利用红外线发射装置发出红外线,经过障碍物反射以后,被一红外线接收探头收到,将接收到的红外线信号转化为电信号进行计算,公式就是从发射到接受到的时间的一半乘以光速!
红外测距还是有很多应用的,比如:汽车超速抓拍、货车限高检测、飞机高度检测、列车到站检测、接触网检测、船舶对接检测、矿井电梯位置检测、仓储料位监测、桥梁高度检测、吊机高度位置检测、矿井轮廓扫描等等。
【挑战自我】
请同学们思考一下,假如超声波传感器可以前后移动,那么测距的时候需要做哪些考虑呢?写下你的想法,与其他同学讨论一下。

第4课 遥控风扇
红外遥控器是我们常用的一种遥控设备,可以用它控制电视、空调等家用电器。前面我们用过的风扇也是生活中常见的家用电器,可以用遥控控制吗?这节课通过对红外遥控的学习,我们就可以控制风扇了,开始智能家居的一点尝试吧。
【任务导航】
1.了解红外遥控套件;
2.制作遥控风扇。
【材料阅读】
1.红外遥控套件简介
红外遥控是目前使用最广泛的一种通信和遥控手段。由于红外遥控装置具有体积小、功耗低、功能强、成本低等特点,继彩电、录像机之后,在录音机、音响设备、空凋以及玩具等其它小型电器装置上也纷纷采用红外遥控。工业设备中,在高压、辐射、有毒气体、粉尘等环境下,采用红外线遥控不仅完全可靠而且能有效地隔离电气干扰。
红外遥控主要包括红外遥控器和红外接收头,如图2.4.1所示。红外遥控器有21个按键,红外接收头针脚的定义是:D连接数字口,VCC接5V,GND接GND。
图2.4.1 红外遥控套件
红外遥控器都有对应的键值,在使用时,首先需对遥控器进行解码,本书中用到的红外遥控器的键值(十六进制的数值)如表2.4.1所示。
表2.4.1 红外遥控器键值附表
遥控器字符
键值
遥控器字符
键值
红色按钮
FD00FF
ST/REPT
FD708F
VOL+
FD807F
1
FD08F7
FUNC/STOP
FD40BF
2
FD8877
左2个三角
FD20DF
3
FD48B7
暂停键
FDA05F
4
FD28D7
右2个三角
FD609F
5
FDA857
向下三角
FD10EF
6
FD6897
VOL-
FD906F
7
FD18E7
向上三角
FD50AF
8
FD9867
0
FD30CF
9
FD58A7
EQ
FDB04F




【动手操作】
活动主题:制作我的遥控风扇
同学们在了解了相关的知识后,可以自己制作本课的遥控风扇了,我们用到的器材主要是Romeo板子、红外遥控套件、风扇(带直流电机)。功能:通过遥控控制风扇开启,关闭。
1.硬件搭建
在连接物理电路时,需要注意:红外接收头连接到数字口,取出红外遥控器电池外面的塑料绝缘片(程序中,红外接收头连接数字口11,电机接的是M1接线柱)。
  • 参考程序
(1)红外遥控器的解码程序
图2.4.2 红外遥控器的解码
(2)遥控风扇的参考程序
图2.4.3 遥控风扇
【探究思考】
请同学们思考一下,在我们小时候的玩具中,有没有用到遥控的呢?比如遥控飞机、遥控汽车等,它们是红外遥控吗?如果不是,与红外遥控有什么区别?
【视野拓展】
1.红外遥控工作原理
红外遥控器发出的信号是一连串的二进制脉冲码,为了使其在无线传输过程中免受其他红外信号的干扰,通常都是先将其调制在特定的载波频率上,然后再经红外发射二极管发射出去,而红外线接收装置则要滤除其他杂波,只接收该特定频率的信号并将其还原成二进制脉冲码,也就是解调。
内置接收管将红外发射管发射出来的光信号转换为微弱的电信号,此信号经由IC内部放大器进行放大,然后通过自动增益控制、带通滤波、解调变、 波形整形后还原为遥控器发射出的原始编码,经由接收头的信号输出脚输入到电器上的编码识别电路。
要想对某一遥控器进行解码必须要了解该遥控器的编码方式,这就叫知己知彼,百战不殆 。本节课使用的遥控器的编码方式为:NEC协议。下面就介绍一下NEC协议:
(1)8位地址位,8位命令位;
(2)为了可靠性,地址位和命令为被传输两次;
(3)脉冲位置调制;
(4)载波频率38khz;
(5)每一位的时间为1.125ms或2.25ms。
2.智能家居
智能家居是以住宅为平台,利用综合布线技术、网络通信技术、 智能家居-系统设计方案安全防范技术、自动控制技术、音视频技术将家居生活有关的设施集成,构建高效的住宅设施与家庭日程事务的管理系统,提升家居安全性、便利性、舒适性、艺术性,并实现环保节能的居住环境。
智能家居是在互联网影响之下的物联化体现。智能家居通过物联网技术将家中的各种设备(如音视频设备、照明系统、窗帘控制、空调控制、安防系统、数字影院系统、网络家电以及三表抄送等)连接到一起,提供家电控制、照明控制、窗帘控制、电话远程控制、室内外遥控、防盗报警、环境监测、暖通控制、红外转发以及可编程定时控制等多种功能和手段。与普通家居相比,智能家居不仅具有传统的居住功能,兼备建筑、网络通信、信息家电、设备自动化,集系统、结构、服务、管理为一体的高效、舒适、安全、便利、环保的居住环境,提供全方位的信息交互功能。帮助家庭与外部保持信息交流畅通,优化人们的生活方式,帮助人们有效安排时间,增强家居生活的安全性,甚至为各种能源费用节约资金。
同学们有没有想过通过红外遥控控制家中的其他家电呢?赶快体验一下智能家居吧!
【挑战自我】
前面我们做过一个换挡风扇,这次我们使用红外遥控控制风扇,做一个可换挡的风扇。

第5课 摇头风扇
前面我们制作的风扇都是朝一个方向吹的,而家里的有些风扇是可以摇头的,能不能让我们的风扇也摇头呢?当然可以,这就需要舵机的加入了,这节课我们将了解舵机的有关知识,并制作出摇头风扇。
【任务导航】
1.了解舵机相关知识;
2.制作摇头风扇。
【材料阅读】
舵机简介
舵机,又称伺服电机,航海模爱好者们经常用这种电机来控制模型的方向舵,所以它就俗称为“舵机”。其工作过程是把所接收到的电信号转换成电动机轴上的角位移或角速度输出。目前广泛应用于机器人控制领域中。本书用到的舵机是TowerPro出品的SG90舵机,如图2.5.1所示。该舵机采用高强度ABS透明外壳配以内部高精度尼龙齿轮组,加上精准的控制电路、高档轻量化空心杯电机使该微型舵机的重量只有9克,而输出力矩达到了惊人的1.8kg*cm。标准的舵机有三条控制线,分别是电源、地和信号线。舵机的针脚定义为:棕色线——GND,红色线——5V,橙色线——信号线。
图2.5.1 SG90舵机
舵机的控制一般需要不断地发给它一个高电平时间在1-2ms之间、低电平时间在5-20ms之间的脉冲信号。注意:Arduino板上支持舵机的只有数字口9和10,因此舵机橙色线只能连接数字口9或10,另外我们使用的SG90舵机转动角度在0-180°之间。
【动手操作】
活动主题:制作我的摇头风扇
同学们在了解了相关的知识后,可以自己制作本课的摇头风扇了,我们用到的器材主要是Romeo板子、舵机、风扇(带直流电机)。
1.硬件搭建(摇头风扇的连接)
在连接物理电路时,需要注意:舵机接到数字针脚(程序中,舵机连接的是数字针脚9,电机接的是M1接线柱)。
2.控制舵机从0°转到180°的参考程序
图2.5.3 控制舵机
3.摇头风扇的参考程序
摇头风扇是舵机从0°转到180°,然后再转回来,并且一直保持风扇的电机开启即可,如下所示。
图2.5.4 摇头风扇
【探究思考】
请同学们观察一下,风扇都是自动摇头,我们可以控制它吗?讨论一下,如何实现?

【视野拓展】
1.舵机的工作原理
舵机是遥控模型控制动作的动力来源,不同类型的遥控模型所需的舵机种类也随之不同。如何审慎地选择经济且合乎需求的舵机,也是一门不可轻忽的学问。
工作原理:控制信号由接收机的通道进入信号调制芯片,获得直流偏置电压。它内部有一个基准电路,产生周期为20ms,宽度为1.5ms的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。最后,电压差的正负输出到电机驱动芯片决定电机的正反转。当电机转速一定时,通过级联减速齿轮带动电位器旋转,使得电压差为0,电机停止转动。当然我们可以不用去了解它的具体工作原理,知道它的控制原理就够了。就像我们使用晶体管一样,知道可以拿它来做开关管或放大管就行了,至于管内的电子具体怎么流动是可以完全不用去考虑的。
2.舵机的控制方式
舵机的伺服系统由可变宽度的脉冲来进行控制,控制线是用来传送脉冲的。脉冲的参数有最小值,最大值,和频率。一般而言,舵机的基准信号都是周期为20ms,宽度为1.5ms。这个基准信号定义的位置为中间位置。舵机有最大转动角度,中间位置的定义就是从这个位置到最大角度与最小角度的量完全一样。最重要的一点是,不同舵机的最大转动角度可能不相同,但是其中间位置的脉冲宽度是一定的,那就是1.5ms。如图2.5.5所示。
图2.5.5 脉冲宽度
角度是由来自控制线的持续的脉冲所产生。这种控制方法叫做脉冲调制。脉冲的长短决定舵机转动多大角度。例如:1.5毫秒脉冲会到转动到中间位置(对于180°舵机来说,就是90°位置)。当控制系统发出指令,让舵机移动到某一位置,并让他保持这个角度,这时外力的影响不会让它的角度产生变化,但是这个是由上限的,上限就是他的最大扭力。除非控制系统不停的发出脉冲稳定舵机的角度,舵机的角度不会一直不变。当舵机接收到一个小于1.5ms的脉冲,输出轴会以中间位置为标准,逆时针旋转一定角度。接收到的脉冲大于1.5ms情况相反。不同品牌,甚至同一品牌的不同舵机,都会有不同的最大值和最小值。一般而言,最小脉冲为1ms,最大脉冲为2ms。如图2.5.6所示。
图2.5.6 脉冲宽度与转动角度
【挑战自我】
摇头风扇很不错吧?但是我们并不希望它一直在摇头,有什么办法可以控制它吗,以便于我们让它摇头才摇头,不让它摇头就停止摇头,试一试吧。

第6课 自动跟踪风扇
通过上一节课,我们可以让风扇摇头了,那么它可以自动摇头吗?如何实现呢?这节课我们将学习数字防跌落传感器,并通过两个数字防跌落传感器的配合使用制作自动跟踪风扇。
【任务导航】
1.了解数字防跌落传感器;
2.制作自动跟踪风扇。
【材料阅读】
1.数字防跌落传感器
数字防跌落传感器在第一章做过介绍,但因为是选修,所以这里再重点讲解一下。采用夏普公司的距离传感器,有效测距10cm,开关量输出,可当作近距离避障传感器使用。如图2.6.1所示。
图2.6.1 数字防跌落传感器
数字防跌落传感器输出的信号为数字信号,针脚定义为:红线——5V,绿线——信号,黑线——GND。接线图如图2.6.2所示。
图2.6.2 数字防跌落传感器接线图
2.自动跟踪风扇原理
自动跟踪风扇,也可称为自动摇头风扇,是可以自动感应的风扇,比如它可以随手的晃动跟着摇头。它是通过左右两个数字防跌落传感器检测障碍物的运动方向的,若左侧传感器检测到障碍物而右侧传感器没有检测到,则舵机向左转动;若右侧传感器检测到障碍物而左侧传感器没有检测到,则舵机向右转动;若两侧传感器同时检测到障碍物,则保持原来方向。
另外,数字防跌落传感器的探头前方无障碍时输出高电平,有障碍时则相反。障碍在有效距离(10cm)内则输出低电平,否则是高电平。因此,可以通过比较左右传感器的电平高低值判断舵机的转动方向,即哪侧电平低向哪侧转动。
【动手操作】
活动主题:制作我的自动跟踪风扇
同学们在了解了相关的知识后,可以自己制作本课的自动跟踪风扇了,我们用到的器材主要是Romeo板子、数字防跌落传感器、舵机、风扇(带直流电机)。功能:实现自动跟踪转动。
1.自动跟踪风扇的连接
在连接物理电路时,需要注意这样几点:数字防跌落传感器和舵机均连接数字口(程序中,数字防跌落传感器分别连接数字口11和12,舵机连接数字口9,电机接的是M1接线柱)。
2.参考程序
图2.6.3 自动跟踪风扇
【探究思考】
请同学们思考一下,前面我们学过的超声波测距可以用来做避障吗?如果可以,你来试一试吧。
【视野拓展】
1.红外传感器
红外传感系统是用红外线为介质的测量系统,红外传感技术已经在现代科技、国防和工农业等领域获得了广泛的应用。红外技术已经众所周知,这项技术在现代科技、国防科技和工农业科技等领域得到了广泛的应用。红外传感系统是用红外线为介质的测量系统,按照功能能够分成五类:(1)辐射计,用于辐射和光谱测量;(2)搜索和跟踪系统,用于搜索和跟踪红外目标,确定其空间位置并对它的运动进行跟踪;(3)热成像系统,可产生整个目标红外辐射的分布图像;(4)红外测距和通信系统;(5)混合系统,是指以上各类系统中的两个或者多个的组合。
利用红外线的物理性质来进行测量的传感器。红外线又称红外光,它具有反射、折射、散射、干涉、吸收等性质。任何物质,只要它本身具有一定的温度(高于绝对零度),都能辐射红外线。红外线传感器测量时不与被测物体直接接触,因而不存在摩擦,并且有灵敏度高,响应速度快等优点。
红外线传感器包括光学系统、检测元件和转换电路。光学系统按结构不同可分为透射式和反射式两类。检测元件按工作原理可分为热敏检测元件和光电检测元件。热敏元件应用最多的是热敏电阻。热敏电阻受到红外线辐射时温度升高,电阻发生变化,通过转换电路变成电信号输出。光电检测元件常用的是光敏元件,通常由硫化铅、硒化铅、砷化铟、砷化锑、碲镉汞三元合金、锗及硅掺杂等材料制成。
红外线传感器常用于无接触温度测量,气体成分分析和无损探伤,在医学、军事、空间技术和环境工程等领域得到广泛应用。例如采用红外线传感器远距离测量人体表面温度的热像图,可以发现温度异常的部位,及时对疾病进行诊断治疗(见热像仪);利用人造卫星上的红外线传感器对地球云层进行监视,可实现大范围的天气预报;采用红外线传感器可检测飞机上正在运行的发动机的过热情况等。
【挑战自我】
我们已经学过风扇的多种控制,想一想还可以做出什么创意来?查找并统计一下还有哪些传感器。

第7课 风扇综合创意
通过前面6节课的学习,我们已经了解了许多关于风扇的做法,在学习和制作过程中,同学们有没有产生一些创意的想法吗?如果有的话,那么这节课就让我们来实现吧。
【任务导航】
1.制作定时风扇、温控风扇或倾倒自动停止风扇中的一种;
2.自己设计并尝试实现一种有创意的风扇;
3.评价自己和他人的创意风扇。
【材料阅读】
1.温度传感器
本书用到的温度传感器是DFRobot的LM35线性模拟温度传感器,如图2.7.1所示。基于LM35半导体的温度传感器,可以用来对环境温度进行定性的检测。温度测量常用的传感器包括热电偶,铂电阻,热敏电阻和半导体测温芯片,其中热电偶常用于高温测量,铂电阻用于中温测量(到摄氏800度左右),而热敏电阻和半导体温度传感器适合于100-200度以下的温度测量,其中半导体温度传感器的应用简单,有较好的线性度和较高的灵敏度。LM35半导体温度传感器是美国国家半导体公司生产的线性温度传感器。其测温范围是-40℃到150℃,灵敏度为10mV/℃,输出电压与温度成正比。LM35线性温度传感器与Arduino专用传感器扩展板结合使用,可以非常容易地实现与环境温度感知相关的互动效果。
图2.7.1 LM35线性模拟温度传感器
LM35线性模拟温度传感器的针脚定义为:1——模拟输出信号,2——GND,3——VCC。接线图如图2.7.2所示。
图2.7.2 模拟温度传感器接线图
LM35线性模拟温度传感器的测试代码如下:
图2.7.3 温度传感器
2.倾角传感器
本书用到的倾角传感器是DFRobot的数字钢球倾角传感器,如图2.7.4所示。基于钢球开关的数字模块,利用钢球的特性,通过重力作用使钢球向低处滚动,从而使开关闭合或断开,因此也可以作为简单的倾角传感器使用。钢球开关数字输入模块,与Arduino专用传感器扩展板结合使用,能够实现非常有趣的互动作品,比使用水银开关更加安全。
图2.7.4 数字钢球倾角传感器
数字钢球倾角传感器的针脚定义为:1——数字信号输出;2——VCC;3——GND。接线图如图2.7.5所示。
图2.7.5 数字钢球倾角传感器接线图
【动手操作】
1.定时风扇
定时风扇基本思路提示:通过按钮对风扇进行定时,比如一个按钮控制,按一次定时2分钟后,风扇自动停止;两个按钮控制,按第一个按钮2分钟后,风扇自动停止,按第二个按钮5分钟后,风扇自动停止。
2.温控风扇
温控风扇基本思路提示:通过温度传感器感应环境温度,当温度达到某个值时,风扇自动开启,此后,温度逐渐增高时,风扇自动加快转速。
3.倾倒自动停止风扇
倾倒自动停止风扇基本思路提示:利用倾角传感器,判断风扇是否倾倒,如果是的话,风扇自动停止转动,否则继续转动。
4.其它创意风扇
自己设计并尝试实现一种有创意的风扇。
【探究思考】
请同学们相互介绍一下自己的创意风扇,大家相互评价一下。
【视野拓展】
1.创意风扇——无扇叶风扇
简介:外形像一只巨大的指环。它能产生强有力的凉爽空气,而且安静无声,也比传统电扇安全。另外,它清洗起来也比传统电风扇方便得多,从此不用为清理扇叶上积满的灰尘发愁了。和传统电风扇一样,能90度角摆动。不同的是,它还能通过人为控制发生灯光变化。
特色:没有扇叶,少了运转噪音,而且出风量更稳定;用风扇风乾头髮时,不怕头发给捲了进去,或是小朋友意外受伤;清理电风扇时只要一条抹布就能轻松搞定;风扇气流集中强劲,吹起来更舒服;具备传统电风扇灵活调整特质,如可旋转、上下角度调整等。
原理:底座中带有的高功率马达将空气吸入风扇基座内部,经由气旋加速器加速后,空气流通速度将大大增大,经由无叶风扇扇头环形内唇环绕,其环绕力带动扇头附近的空气随之进入扇头,并以高速向外吹出,最终形成一股不间断的冷空气流。如此一来,徐徐凉风飘然而至。这种新造型风扇不仅外形靓丽,清理起来也十分方便,安全性也得到了提高。风扇这种东西也从此变得更加安全。
2.创意风扇——驱蚊电风扇
构造:电动机、叶片、外壳体,电风扇外壳体上安装的电热驱蚊器。
原理:原电风扇壳体上适当位置安装有一电热驱蚊器,上面放有驱蚊药片,接通电源后电热驱蚊器发热,使驱蚊药片被加热散出药物从而达到驱蚊之效。电风扇的马达与驱蚊器分别受控于两个独立的电源开关,使吹风与驱蚊两种功能可以同时、也可以分别地工作,使用起来十分有效、方便。电风扇在使用过程中,驱蚊喷雾器喷出的驱蚊液可以通过扇叶的转动而充分且大面积散发,增强驱蚊效果,从而达到降温、驱蚊的双重功效。
【挑战自我】
想一想风扇还有哪些创意呢?或者你设计的创意风扇还有哪些改进呢?

第三章 智能小车

第1课 走直线小车
通过前面两章的学习,我们可以用Arduino控制LED灯,制作风扇,但是我们可以使用各种传感器制作出智能小车吗?它可以走直线,走8字,会巡线避障......当然答案是肯定的,只要大胆想象,扎实前进,我们就可以做出有意思的小车。这节课主要是通过简单的接线,编写并调试程序,从而认识小车,了解小车的基础知识,完成走直线小车的任务。
【任务导航】
  • 小车电机接线;
  • 通过编程让小车走直线。
【材料阅读】
  • 小车电机接线
还记得我们在第二章学习的《声控风扇》吗?在材料阅读里面,我们了解了Romeo控制直流电机的相关知识,知道了数字针脚4、5、6、7与M1、M2对应的关系。有了上述知识以后,仔细观察发现,我们的小车左右分别各有一个电机(如下图),每个电机引出红黑两条线。在接线的时候,可以将两个电机引出的红线与黑线分别接入M1、M2的正负极,注意细心找到M1、M2旁边的“+”“—”符号。在这里,红黑线与M1、M2正负极的对应关系,会影响到小车运动的方向。

图3.1.1 小车直流电机

  • 小车直走分析
小车直走分为两种情况:前进、后退。同样,我们也可以通过两种方式来实现小车前进、后退。
  • 编程。在接线正常的情况下(红线接正,黑线接负),可以改变47针脚的高低电平来控制小车前进、后退。这个道理与第二章控制风扇正转、反转一样,就不再赘述。
  • 接线。在程序不变的基础下,我们改变小车电机的连接线,可以使小车的运动方向发生变化。具体情况如下:将电机引出的红线分别与M1M2负极相连,黑线与正极相连,此时,原本前进的小车会后退,反之亦然;如果将一个电机的红线接M1正极,黑线接M1负极,另一根红线接M2负极,黑线接M2正极,此时直走的小车会原地打转。感兴趣的同学在动手操作环节可以进行尝试。
【动手操作】
活动主题:走直线的机器人小车
1.硬件搭建
本次课中的小车已经提前搭好,感兴趣的同学可以参照搭建好的小车,自己组装一个。将小车的电机接线接好(本课默认将红线接正极,黑线接负极),在ArduBlock中进行程序调试,让小车前进、后退。
2.参考程序
参考程序提供两种编程方法,通过接线改变小车前进方向的实验可以自己尝试。参考程序1如下:
图3.1.3 针脚控制小车前进、后退

部分代码解释:
观察小车,可以发现,小车不断地以100的转速向前前进1秒,再后退一秒。在这里,我们是通过编程来控制小车运动方向,给数字针脚4、7以高电平,此时小车前进,反之,小车后退。
除了改变程序,还可以改动小车接线来解决这个问题。当我们将两个电机引出的红线接在接线柱的负极,黑线接到接线柱的正极,此时,如果给数字针脚4、7设置高电平,小车将后退,反之,小车前进。
参考程序2如下:

图3.1.3 电机控制小车前进、后退
部分代码解释:
参考程序中,M1、M2设置为255,此时小车前进;M1、M2设置为-255,此时小车后退。
在测试时,直接将USB与Arduino主板连接可以驱动小车,但是转速较慢,而且受数据线长短的限制,小车运动空间比较狭小。这种情况下,我们可以给小车接上外接电源,比如:锂电池,使得小车脱离数据线,以便我们观察。将锂电池接在Romeo主控器的外接电源接口上。
   
图3.1.4 小车连接外接电源
【探究思考】
              小车前进、后退的实验中,小车走的是一条直线吗?想想为什么。
【视野拓展】
1.小车“走不直”原因分析
在目前的智能小车中,差分驱动仍然是主流驱动方式。差分驱动是指左、右两个轮子分别用左、右两个电机驱动,通过分别改变两个电机的转速来控制小车前进或者后退。
   在这里,左右两个电机的特性肯定不会完全相同,这就将直接导致即使设置的转速一样,两个轮子的实际转速也是不相同的,所以本来应该走直线的小车行驶轨迹会发生偏移,也就产生了所谓的“走不直”的现象。
影响小车“走不直”的原因还有很多,比如:道路上的障碍物、轮子瞬间打滑、小车左右重量不一致等等。而且这些因素是无法消除的,我们只有使用其他方法来解决这个问题。简单的做法:根据小车走直线时,实际路线的偏差,对小车左右电机数值进行微调。
2.开环与闭环
在了解开环与闭环之前,在地面上画出一条直线,分别尝试闭着眼睛和睁开眼睛沿着直线走一遍。我们会发现,睁开眼睛走直线比闭着眼睛走直线要简单得多。事实上,没有安装任何传感器的小车就相当于眼睛闭着的我们,显而易见,这样走直线是很困难的。在这里,我们将小车只通过电机控制转速,而不添加任何传感器行走的方式称之为“开环控制”。相对的,闭环控制是指小车通过各种传感器感应外界信息,根据这些信息调整自己的运动。我们在下面的课程学习中,会增加多种传感器。
【挑战自我】
1. 通过改变接线控制小车前进方向,使小车原地打转。
2.尝试使用其他办法改进小车,使其“走直”。
3.使用电机模块控制小车时,会在Arduino文本式编程环境中生成setRomeoMoto( )函数,阅读该函数,尝试理解电机数值设置为正数,小车前进,反之小车后退的原因。


第2课 跳8字舞的小车
上一节课中,我们已经学会了同时驱动两个电机,使我们的小车自如地前进、后退。这节课我们将利用双轮差速驱动,让小车转弯并且跳8字舞。
【任务导航】
  • 双轮差速驱动;
  • 小车转弯;
  • 小车跳8字舞。
【材料阅读】
1. 双轮差速驱动
我们的小车是有2个电机和2个轮子的(这里不考虑主要起支撑作用的万向轮)。对于采用这种驱动方式的机器人来说,它运动时会有以下几种情况出现:
  • 小车前进、后退(上节课已经学习过)
  • 小车转弯
左右轮子转动速度不同时,小车就会转弯。左右两个轮子转动的速度之差决定小车转弯半径大小。如果左右两个轮子转动的速率相同,方向正好相反,小车会原地转动。具体分析见下图:

                    

                     

图3.2.1 双轮差速小车的运动

2. 8字舞的蜜蜂
在生物界中,我们可以观察到一个关于蜜蜂的奇特的现象。它们常常会在空中向左先飞半个小圈,又倒转过来向右再飞半个小圈,就像是在跳一种“8字舞”。而这种现象是蕴含着一个有趣的科学道理的:蜜蜂这样做,实际上是在用一种特殊的方式告知自己同伴蜜源的方位。它们的飞行轨迹与地面垂线的夹角,就正好表示了蜂房、太阳和蜜源三者之间的相对角度信息。比如:蜜蜂跳“8”字舞时,头朝上直飞,太阳角是零度,意思是说:“朝太阳方向飞去,就是采蜜的方向”; 如果蜜蜂跳“8”字舞时,头朝地直飞,太阳角是180°,意思是说:“背太阳方向飞去,就是采蜜的地方”; 如果蜜蜂跳“8”字舞时,飞行直线同地面垂直线的左面夹角是15°角,意思是说:“向左太阳角60°方向飞去,就是采蜜的地方”。当其它蜜蜂看到这样的信息时,就可以根据太阳的方向找到蜜源了。当然,如果是阴天下雨,或者看不到太阳的时候,蜜蜂就会失去这种辨别方向的奇妙能力了。
3. 小车走“8”字必备条件
怎样才能让我们的小车像蜜蜂一样跳出完美的“8”字舞来呢?比如说,从以下示意图的“a”点先顺时针飞行上半圈,再次到达“a”时,再逆时针飞行下半圈。要实现这个效果,我们发现必须满足以下条件:
  • 小车顺时针转动一定的时间以后,进行逆时针转动;
  • 小车顺时针转动的时间要满足正好转一圈,逆时针也是如此。
那么,我们只要根据左右电机的数值差,确定小车转圈的半径,从而测出小车转一圈的时间,就可以走出一个8字出来。
图3.1.2   8字图

【动手操作】
活动主题一:会转弯的机器人小车
根据双轮差速驱动小车的原理,改变左右电机的转动数值,使其向左转、向右转、原地转圈。观察一下现象并完成表格3.1.1。
表3.1.1 电机速度与小车状态
左电机值






右电机值






小车状态







参考代码
图3.1.3 小车左转弯、右转弯、原地转圈
部分代码解释:
(1)小车左电机M1设为100,右电机M2设为150,这个时候小车会向左转。
(2)小车左电机M1设为150,右电机M2设为100,这个时候小车会向右转。
(3)小车左电机M1设为150,右电机M2设为-150,这个时候小车会原地转圈。
活动主题二:跳8字舞的机器人小车
同学们在了解了双轮差速原理以及理解走“8”字的必备条件以后,就可以动手制作我们自己的跳8字舞小车了。
结合我们前文说的小车跳8字舞的两个条件,把我们对左转右转的控制以及延时语句结合起来,我们就可以编写出简单明了的跳8字舞程序了。参考程序代码如下,但是示例程序是不能执行的,我们可以自己通过不断的测试,改变其中的参数值,找出左右电机特定数值差时,小车转一圈的时间。
参考程序

图3.2.4 小车走8字

请同学们将最终程序的参数填入下面表3.2-1的表格中,并粗略估计圆圈的半径。
半径:    (cm)
表3.2.2程序的参数
参数
a
b
c
数值







【探究思考】
              通过上面的测试,我们已经找到了一种小车走8字的参数值。请同学们继续试验,调整左右电机数值差、测出小车转一圈的时间,实现几个圆圈半径大小与之前不一样的8字舞,并将相关参数填在下面的表格中。
半径:     (cm)
表3.2.3 参数列表1
参数
a
b
c
数值







半径:     (cm)
表3.2.4 参数列表2
参数
a
b
c
数值







半径:     (cm)
表3.2.5 参数列表3
参数
a
b
c
数值







【视野拓展】
三轮全驱动全向导机构
三轮全驱动全导向机构属于同步驱动的装置方式。如下图所示,在该机构中,三个轮子成120°放置,用齿轮或者链条将轮子同电机相连。每个轮子都可独立地进行转向控制和速度控制,因此在结构和原理上类似于前轮驱动前轮导向机构的前轮。当三个轮子保持初始位置以相同的速度转动时,及其本体做原地零半径旋转运动;当三个轮子导向角度相同并以相同速度驱动时,本体按照该导向角方向做直线运动。施加适当的控制,利用该机构实现的机器人本体能够按照任意指定的轨迹运动,具有很高的运动灵活性。但是该机构的整体结构比较复杂,完成每个动作都需要对6个伺服电机进行合理控制,且对于方向和驱动控制精度有较高要求,因此控制难度较大。
图3.2.5 三轮全驱动全导向机构

【挑战自我】
根据第二章遥控风扇的内容,尝试用遥控器控制小车前进、后退、左转、右转、原地转圈、跳8字舞。在下面填写你遇到的问题以及拟解决办法。

第3课 避障小车
在自然界,有很多爬虫是带触角的。当前进的道路上出现障碍物时,它们会机智地伸出自己的触角去确定障碍物的方向,然后及时地改变前进路线绕道前行。在这里,昆虫的触角是昆虫感知外界信息的有力武器。同样的,当我们的小车在前进过程中,遇到障碍物了也可以通过类似的触角去探索、发现,最后避障前进。这节课,我们尝试给小车装上触角,使我们的小车在前进的道路中智能避障。
【任务导航】
1. 了解触碰传感器;
2.  使用触碰传感器避障;
3.  使用防跌落传感器避障。
【材料阅读】
触碰传感器
触碰传感器(如下图)是一个利用接触片实现检测触碰功能的电子部件,主要用于检测外界触碰情况。例如:行进时,用于检测障碍物;走迷宫时,用于检测墙壁等等。触碰传感器是一种数字传感器,在碰到障碍物时,值为0,否则值为1。当触角碰到障碍物时,触碰传感器上的LED会亮。我们可以根据触碰传感器值的变化,调整小车前进方向。
图3.3.1 触碰传感器(左、右)

【动手操作】
活动主题一:使用触碰传感器制作避障小车
通过这个实验,我们给小车装上了触角,这样我们的小车就能跟昆虫一样自由避障了。实验步骤:
1. 硬件搭建
将触碰传感器一左一前(具体安装位置可以根据实际情况而定,也可以使用多个触碰传感器)安装在小车上,注意将触碰传感器的两个触角接在外面。假设左边的触碰传感器接在数字口2,小车前面的触碰传感器接在数字口3。我们也可以将铁丝绑在触碰传感器的触角上,以便扩大触碰传感器的感知范围。

【提示】传感器接线时,避免接在数字针脚4、5、6、7和0、1上。

2. 参考程序
我们可以根据触碰传感器值的变化,调整小车前进方向。比如:当左前触碰传感器有一个检测到障碍物时,小车后退或者后退以后再向左或向右转弯。我们根据上面的思路进行编程,同学们可以根据实际情况调整程序里面小车电机数值、后退时间、左转、右转等。参考程序中,小车左传感器或者前传感器无论哪个检测到障碍物,或者同时检测到障碍物,小车都会后退一段距离,再右转。如下图。
图3.3.2 小车简单避障
部分代码说明如下:
在这个程序中,只要有一个触碰传感器检测到的值为“0”,也就是检测到障碍物,说明我们让小车后退1秒钟,再右转。如果小车两个触碰传感器一直检测不到物体,也就是数值为“1”时,让小车前行。
程序下载完后,我们可以连接锂电池,进行调试了。你的小车可以避障了吗?

活动主题二:使用数字防跌落传感器制作避障小车
我们可以根据数字防跌落传感器值的变化,检测前方是否有障碍物。注意,数字防跌落传感器检测到障碍物,值为0,这时,我们的小车应该采取措施(停止、转弯等等),因为防跌落传感器可以检测到前方10cm的距离,所以我们的小车检测到障碍物以后,可以直接拐弯,不用后退。
  • 硬件搭建
在安装的时候,要让数字防跌落传感器的感应头朝外。可以左右各安装一个。
  • 参考程序
当数字防跌落传感器检测到障碍物,直接右转。
图3.4.3 防跌落小车
部分代码说明如下:
在这个程序中,只要有一个防跌落传感器检测到的值为“0”,也就是检测到物体,说明前方10cm以内有障碍物出现,我们让小车右转1秒钟。如果小车两个防跌落传感器一直检测不到物体,也就是数值为“1”时,让小车前行。
【探究思考】
上面的避障程序可以使小车成功躲避障碍物,实现绕道前行。但是,如果我们利用教室里的桌椅自制一个简单的迷宫,小车如何可以走出这个迷宫呢?
【视野拓展】

1.触角作用

 昆虫除原尾目无触角、高等双翅目和膜翅目幼虫的触角退化外,其它种类都有1对触角。触角长在昆虫两只复眼的中上方,昆虫活动的时候,这两根触角总是不停地摆动着,东察西探,象是寻找猎物的雷达。
 触角是主要的感觉器官,有嗅觉、触觉和听觉的功能。触角能够帮助昆虫寻找食物和配偶,并探明身体前方有无障碍物。在有些昆虫中,触角还有其它用处,例如雄性芫菁在交配时用来握住雌虫,魔蚊幼虫用来捕捉食物,仰泳蝽的触角在水中能平衡身体,水龟虫则用来帮助呼吸。
  • 走迷宫原理

常见的迷宫图如下:


图3.3.4 常见迷宫

观察上面几幅图,不难发现,让机器人沿迷宫围墙的某一侧行走可以使机器人走遍没有出口迷宫的每个地方,这是走迷宫的一般方法,我们称沿左侧行走的方法为左手规则,称沿右侧行走的方法为右手规则。

在本项目中我们将采用左手规则实施走迷宫的任务。假定你自己在一个漆黑的迷宫场地中按左手规则行走,你一定会用左手去寻找你左侧的墙壁,以确定前进的方向,用右手伸向前方以防备在前进的过程中撞到前方拐弯处的墙上。因为场地漆黑你会根据两手获得的墙壁触摸信息做出以下四种判断:

  • 当左手和伸向前方的右手都摸不到墙壁时,向左转弯;
  • 当左手摸不到墙壁,伸向前方的右手摸到墙壁时,向右转弯;
  • 当左手和伸向前方的右手都摸到墙壁时向右转弯。
  • 当左手摸到墙壁,伸向前方的右手摸不到墙壁时,直走;

在让机器人走迷宫时,我们可以用机器人的触碰传感器来代替我们的左右手,以获取行进方向的信息,并对获取的触碰信息做出判断,以此来决定行走的动作。走迷宫的机器人至少需要两个触碰传感器,分别置于机器人左、中或者右、中。机器人可以使用灰度传感器判断是否回到终点。

图3.3.5 左手规则示意
【挑战自我】
你会用避障小车走迷宫吗?将你的代码或者是设计思路写在下面的横线上。

第4课 防跌落小车
我们的机器人小车到处走动的时候,如果遇到有台阶的地方,它会自动停下来吗?为了防止小车遇到台阶仍然往前走,我们就要给它安装相应的传感器,使得它具有防跌落功能。
【任务导航】
1.使用数字防跌落传感器进行防跌落;
    2.使用超声波传感器进行防跌落。
【材料阅读】
数字防跌落传感器的安装

图3.4.1 数字防跌落传感器安装位置
我们已经在《创意LED》以及《自动跟踪风扇》里面使用过了数字防跌落传感器,使用方法不再赘述。在这里主要介绍一下制作防跌落小车时,该传感器的安装方式。数字防跌落传感器一般安装在轮子前方,机器人的外沿,安装高度应该小于地面10cm,具体可以根据实际情况调整,以此实现探测地面的不平度或者台阶而调整机器人前进方向实现防跌落功能。将防跌落传感器按照上述要求一左一右安装在小车前方,如果条件允许,也可以根据上图安装四个。
【动手操作】
活动主题一:使用数字防跌落传感器制作的防跌落小车
参考程序
我们可以根据数字防跌落传感器值的变化,调整小车前进方向。注意,数字防跌落传感器检测不到障碍物,值为1,这时,我们的小车应该后退。
参考程序中,当数字防跌落传感器检测不到障碍物(台阶出现),会后退一段距离,再右转。
图3.4.2 防跌落小车
部分代码说明如下:
在这个程序中,只要有一个防跌落传感器检测到的值为“1”,也就是检测不到物体,说明此时小车在台阶的边缘,我们让小车后退1秒钟,再右转。如果小车两个防跌落传感器一直可以检测到物体,也就是数值为“0”时,让小车前行。

连接板子与电脑,加入上述代码,调试小车,让其在阳台上直走,观察你的小车是否有防跌落功能。

活动主题二:使用超声波传感器制作的防跌落小车
参考程序
我们也可以使用超声波传感器来实现小车的防跌落,超声波传感器的安装跟数字防跌落传感器一样,朝向地面。

图3.4.3 防跌落小车
部分代码说明如下:
该程序利用超声波传感器来检测超声波与地面的距离,如果超声波传感器测出来的距离大于10(具体数字自己可以设定,表示检测不到障碍物也,也就是到达台阶边缘),小车后退两秒钟,然后左转或者右转;如果距离小于10,小车保持原来的状态继续前进。(超声波检测台阶的距离可以根据实际情况调整):

【探究思考】
思考数字防跌落传感器的有效检测距离为什么是10cm,如果有效距离过长,在遇到台阶的时候,还能避免摔下台阶的“悲惨命运”吗?你觉得较之数字防跌落传感器,使用超声波传感器进行防跌落,有什么优势?

【视野拓展】

爬楼梯机器人

 通过上面的学习,我们对小车检测到楼梯,绕道行进已经有了很深的了解。但是小车是怎么爬楼梯的呢?通过这个部分的视野拓展,我们将了解小车爬楼梯的基本原理,感兴趣的同学可以作进一步研究。

(l)履带式
履带式爬楼梯装置的原理类似于履带装甲运兵车或坦克,其原理简单,技术也比较成熟。当遇到楼梯等特殊地形时,用户通过适当操作将两侧的橡胶履带缓缓放下至地面,然后把这四个车轮收起,依靠履带无需旁人辅助便能自动完成爬楼等功能。

履带式结构传动效率比较高,行走时重心波动很小,运动非常平稳,且使用地形范围较广,在一些不规则的楼梯上也能使用。但是这类装置仍存在很多不足之处:重量大、运动不够灵活、爬楼时在楼梯边缘造成巨大的压力,对楼梯有一定的损坏;且平地使用所受阻力较大,而且转弯不方便,这些问题限制了其在日常生活中的推广使用。

(2)轮组式
轮组式爬楼梯装置按轮组中使用小轮的个数可分为两轮组式、三轮组式以及四轮组式。单轮组式结构稳定性较差,在爬楼过程中需要有人协助才能保证重心的稳定;而双轮组式虽能实现自主爬楼,但由于其体积庞大且偏重,影响了它的使用范围。

轮组式爬楼梯装置的活动范围广,运动灵活,但是上下楼梯时平稳性不高,重心起伏较大,会使乘坐者感到不适。此外,轮组式爬楼梯装置体积较大,很难在普通住宅楼梯上使用。

(3)步行式
早期的爬楼梯装置一般都采用步行式,其爬楼梯执行机构由铰链杆件机构组成。上楼时先将负重抬高,再水平向前移动,如此重复这两个过程直至爬完一段楼梯。步行式爬楼梯装置模仿人类爬楼的动作,外观可视为足式机器人,采用多条机械腿交替升降、支撑座椅爬楼的原理。

步行式爬楼梯装置爬楼时运动平稳,适合不同尺寸的楼梯;但它对控制的要求很高,操作比较复杂,在平地行走时运动幅度不大,动作缓慢。
【挑战自我】
你会综合选择使用触碰传感器、数字防跌落传感器、超声波传感器,制作既能避障又能防跌落的智能小车吗?动手搭建起来吧。记得把你编程的思路写在下面的横线上。

第5课 巡线小车
              前面的学习中,我们通过触碰传感器成功地给小车装上了触角,这一节课中,我们将尝试着给小车装上眼睛,使我们的小车可以分辨出地面是深色还是浅色,从而可以沿着黑线的方向前进。
【任务导航】
  • 了解巡线传感器;
  • 小车简单巡线前进。
【材料阅读】
1. MINI巡线传感器
MINI(如下图)巡线传感器以稳定的TTL输出信号帮助机器人进行白线或者黑线的跟踪(可以检测白背景中的黑线,也可以检测黑背景的白线),黑色低电平,白色高电平。试想一下,能否让小车通过这种传感器沿着一条黑色的线前进呢?

图3.5.1 MINI巡线传感器

2. 小车走直线以及走“S”型分析

(1)地板是白色,线是黑色的。小车要看到这条直线,需要装上能分辨黑白的“眼睛”——巡线传感器。


图3.5.2  小车走直线图

将工具盒中的两个MINI巡线传感器一左一右安装在小车底盘上,两个传感器之间的距离大于黑线宽度。将小车放置在黑线上(左右两个MINI巡线传感器跨在黑线上)。
小车会出现如下图三种情况(途中红色圆点代表巡线传感器):
a:一般情况下,小车左右巡线传感器都检测不到黑线(也就是左右巡线传感器跨在线上),小车会直走
b:因为地面摩擦,重力等各种因素,小车会走偏。当小车向右偏时,也就是左边传感器检测到黑线,右边传感器检测不到黑线,我们要让小车左转回来。
c:小车向左偏时,右巡线传感器检测到黑线,左巡线传感器检测不到,我们要让小车右转回来;
具体情况见下图:



图3.5.3  小车走直线分析图

  • 观察“S”型图,我们发现无论从哪头开始走,小车都要左右拐弯。比之走圆圈,多了一种拐弯方式。如图:


              图3.5.4  小车走”S”型图
此时有三种情况:
当小车左右传感器都检测不到黑线时,小车直走;
当小车左传感器检测不到黑线,右传感器检测到黑线时,小车右拐;
当小车左传感器检测到黑线,右传感器检测不到黑线时,小车左拐。
【动手操作】
活动主题一:小车沿黑线直走
使用巡线传感器使小车沿着黑线直走。
  • 硬件搭建
首先让我们像以往一样,将小车和MINI巡线传感器模块连接好。这里,我们假设将左右两个MINI巡线传感器分别接到数字针脚2,3。

  • 参考程序
想让小车一直沿着黑线直走,那么如果有一侧的巡线传感器检测到黑线,我们就得往相应侧转弯。参考程序如下:
图3.5.5 小车沿黑线走直线
部分代码说明如下:
在转弯的时候,左右电机的数值差并不大,这是因为小车走直线时,左右偏差不会很大,所以不需要大转弯。
活动主题二:小车沿黑线走S
使用巡线传感器使小车沿着“S”型前进。
1.  硬件搭建
接线参考小车沿黑线直走。
2.  参考程序
图3.5.6 小车走S型
部分代码说明如下:
小车走“S”时应该如果要转弯,应该转大弯,也就是说左右电机数值差要大,我们可以自己改变参数,调试程序,使小车成功走“S”型。
【探究思考】
  • 比一比:拿出你的小车与其他同学的小车赛跑吧,看谁既能成功沿黑线前进,又能先到达终点。想一想,怎么调整左右电机数值,使小车既能沿黑线行进,又能走的快。评价表格如下。

表3.5.1  评价表格

A组

左电机数值

右电机数值

走直线时间

走S型时间

是否一直沿着黑线运动







B组












C组












D组...













2.观察下图,如果还是使用上面的程序,小车可以巡线走吗?想一想为什么?
     
        图3.5.7 “8”字路线
【视野拓展】

灰度传感器

地面灰度检测传感器就是像图3.5.8中所示的小模块,机器人爱好者们往往在机器人的底盘上装上它,让机器人能够巡着一根铺设在白色地板上的黑线前进,所以它也常常被俗称为“巡线”传感器。它由一个LED小灯和一个光敏电阻组成。
图3.5.8 模拟灰度传感器
它的工作原理是这样的:LED小灯会为传感器提供一个持续稳定的光源,它发出的光线被地面反射后并被光敏电阻检测到。地面的颜色越浅,就会有更多的光线被反射到光敏电阻,越深则越多的光线被地面吸收。光线强度的变化就会使光敏电阻的阻值迅速发生变化,我们的传感器就是依赖这种信息来检测地面的灰度的。模拟灰度传感器识别颜色的程序见下面。这里我们将地面灰度检测传感器接在模拟口0。
图3.5.9 模拟灰度传感器识别颜色
【挑战自我】
  • 如果你身边有灰度传感器的话(也可以询问老师),你会使用它让小车寻黑线前进吗?
  • 探究思考里面的“8”字要怎么解决呢,你想到好的办法了吗?
把你的想法写下来吧。

第6课 巡线小车二
在前面的学习中,我们认识了MINI巡线传感器,也成功使用巡线传感器进行了简单地巡线走。但事实上,机器人除了要走直线,曲线,还有各种复杂的路口。这节课,我们将来尝试让小车走丁字路口并学会分析十字路口。
【任务导航】
    1.分析丁字路口;
  • 小车走丁字路口;
  • 小车走十字路口分析。
【材料阅读】
丁字路口分析
巡线走丁字路口,它的难度在于有一条迷惑的道路,此时,左右巡线传感器同时检测到黑线,应该提前规定好该丁字路口应向左还是向右转弯。
丁字路口示意图如下:
图3.6.1丁字路口
【动手操作】
活动主题:小车巡线走丁字路口
丁字路口如上图,我们要使小车从a出发,经过b,最终到达c。小车在线路连接上,不用做任何改变;程序上,可以在之前简单巡线小车的基础上,添加两个巡线传感器同时检测到黑线时,小车的活动代码。
参考程序

图3.6.2 小车巡线走丁字路口
部分代码说明如下:
人为定义,如果小车遇到上述丁字路口,就右拐。具体分析如下:代码中前面两个选择结构跟小车沿黑线直走时一样的,这是为了确保小车可以在ab上直走。当小车到达丁字路口,让小车向右原地转圈90度,转圈的角度是由延迟时间决定,而延迟时间是由小车左右电机数值、丁字路口大小等多种因素决定的,我们需要通过不断的测试得到这个时间值。
【探究思考】
  • .观察下图,按照上述编程,小车还能从ab,最后到达c吗?为什么?

图3.6.3 十字路口

2.观察上图。要使小车从a出发,经过b,最终到达d点,还可以使用上面的程序吗?哪里需要改动?
【视野拓展】
“之”字巡线法
如果只有一个巡线传感器,你会用它来巡线吗?
因为只有一个巡线传感器,所以我们处理的方法比较特殊。将小车传感器位置放在靠近黑线左侧或者是在黑线上。当小车检测到黑线的时候,立即左转;同样,当小车左转以后,会发现白线,此时小车立刻右转。反反复复如此前进,最后我们会发现小车按照“之字形”的折线巡线前进了。因此我们称这种方法叫做“之”字巡线法。
如果我们将小车放在了黑线的右边,因为在编程中,设定了小车遇到黑线,左转,遇到白线右转,所以此时小车会原地打转。所以具体程序以及小车放置的初始位置很重要。
【挑战自我】
  • 你会让小车在下面的路线中,走过一个十字路口再右转吗?(比如从a经过bc,最后到达d)将你的思路写下来【提示:设置变量】
  • 你会让你的小车从d经过c,最后到达b,再从b按照原路返回到达d吗?

3.上节课留下来的“8”字,你会使用巡线传感器完成了吗?




图3.6.4 十字路口

第7课 小车综合创意
通过这三章的学习,我们认识了许多有意思的传感器,并且做出了许多有趣的作品。在小车这一章的学习中,大家也肯定有很多自己的想法,这节课,让我们尝试将这些想法变成现实吧。
【任务导航】
1. 制作遥控控制或者串口控制的超声波测障巡逻车;
2. 自己设计并尝试实现一种有创意的小车;
3. 自评以及他评创意小车。
【材料阅读】
串口控制
在ArduBlock【实用命令】中有一个【读取串口】模块,通过该模块我们可以读取到在串口监视器中输入的值。【读取串口】模块如图所示:
图3.7.1 读取串口
串口监视器如下图:
图3.7.2 串口监视器

我们在鼠标光标位置输入数字,再点击后面的【发送】按钮,【读取串口】模块可以读出我们输入的数字。我们可以结合【串口打印加回车】模块,在串口监视器中打印出发送的数值。下面举出一个简单的串口控制LED亮灭的实例。如下图:
图3.7.3 串口控制LED亮灭
在这个程序中,如果我们在串口监视器中发送“1”,接在数字针脚8号口的LED将会点亮,同样,如果我们在串口监视器中发送“2”,LED将会熄灭。
【动手操作】
  • 遥控控制
遥控控制的主要思路跟遥控风扇一样,先对特定的按键解码,再给各个按键赋予对应的指令,比如:按“2”小车前进,按“8”小车后退,按“4”小车左转,按“6”小车右转等。
  • 串口控制
串口控制从实质上说,比遥控控制更加简单。我们在串口里输入数值,将这些数值与小车的动作相对应,比如:输入“2”小车前进,输入“8”小车后退,输入“4”小车左转,输入“6”,小车右转等。
3.超声波测障
将超声波传感器运用在小车上,用它来检测障碍物,这里有两种多种处理方法。例如:超声波传感器检测到障碍物,可以通过LED或者蜂鸣器发出警报;再比如:超声波感应到前面有障碍物时,小车减速。距离障碍物越近,速度越慢,直到停下来。
4.巡逻小车
巡逻小车的关键除了小车要四处行走,还可以加上舵机进行控制。具体操作可以考虑将超声波传感器安装在舵机上,利用舵机的角度转动,调整超声波传感器的方向,与小车自己的行进轨迹相配合,进行全方位、多角度的巡逻检测。
舵机、超声波以及小车的整体安装可以参考下图:
   
图3.7.4  超声波、舵机安装示意图

5.其它创意小车
同学们也可以加上自己的想法,制作具有个人特色的智能小车。
【探究思考】
串口控制的小车可以脱离电脑吗?如果不可以,使用串口控制小车,是不是限制了小车的行动范围?可以怎么解决呢?
【视野拓展】
创意小车--语音控制的小车
该小车为温州中学学生设计制作。该语音控制小车由电源模块、主机控制模块、红外测障模块、声音模块、平衡模块、电机驱动模块6个模块构成。它们之间的关系如图:


图3.7.5  六大模块关系图

语言控制小车的主机控制模块和电机驱动模块由电源模块供电。用户向机器人发出指令,由声音模块接受,把信号传输给主机控制模块,主机控制模块将值处理后重新返回给声音模块。平衡模块根据机器人所处形态返回值给主机控制模块。红外模块由红外传感器根据前方障碍的远近返回值给主机控制模块。总而言之,机器人可以根据用户发出的指令实现前进、后退、左转、右转、问候、测障、平衡检测等功能。
因为其他模块之前都已经有所涉猎,在这里,我们主要认识一下声音模块。如下图:
图3.7.6  声音模块
该声音模块由一块电路板ASR M08-A(内置麦克风)和一个扬声器组成。可以接收人发出的非特定声音,将声音信号转化为电信号,并输出给单片机,单片机处理后把值返回给声音模块,根据返回的值播放SD卡中特定的音频文件,并执行特定的动作。机器人根据指令播放音频文件时,需要用AD4格式的音频文件,所以需要将普通的mp3格式的音频文件转换成AD4格式再存入SD卡才能正常运行。
【挑战自我】
阅读无线通信,通过无线,解决串口控制小车的遗留问题。如果有其他办法,也可以进行尝试。


附录:Arduino机器人教学套件
本书用到的Arduino教学套件如下表所示,由Arduino中国代理DFrobot提供,DFrobot产品在淘宝、天猫上都可以购买。官方商城地址:http://www.dfrobot.com.cn

列表(产品编号为KIT0075)
数量
Romeo 三合一Arduino兼容控制器
1
数字食人鱼白色LED发光模块(Arduino兼容)
1
数字食人鱼绿色LED发光模块(Arduino兼容)
1
数字食人鱼蓝色LED发光模块(Arduino兼容)
1
TowerPro SG90舵机
1
数字大按钮模块(Arduino兼容)
1
Mini寻线传感器V3.0
2
模拟声音传感器(Arduino兼容)
1
数字钢球倾角传感器(Arduino兼容)
1
IR kit红外遥控套件
1
近距离红外数字避障传感器(防跌落传感器)
2
碰撞传感器(右)
1
碰撞传感器(左)
1
模拟环境光线传感器(Arduino兼容)
1
USB电缆
1
MiniQ小车上层安装板
1
MiniQ 桌面机器人底盘套件
1
SR-04超声波传感器
1
130玩具车小电机小马达
1
三叶风扇
1
ABS塑料条
1
小号两用螺丝刀
1
模拟LM35线性温度传感器(Arduino兼容)
1
7.4V 2200MA 锂电池 (带充放电保护板)
1
锂电池充电器
1
DC2.1 电源转接头 母头
1
尼龙扎带
2
单线母母头杜邦线
4
M3*30 六角单通尼龙柱
10
M3*20 六角单通尼龙柱
10
M3*10 六角单通尼龙柱
10
M3 nuts
20
M3*6 screws
20
M2*6 screws
3
M2不锈钢螺母
3
M3*7*1黑色尼龙垫片
10

Arduino厂商的一点说明

              “Arduino创意机器人”课程为开源课程,任何厂商可以使用课程资源进行商用,也可以修改教材以适合自己产品。如果有类似的产品,需要开发相应的课程,请联系我们团队,具体的合作要求如下:

  • 免费提供2套以上完整的套件,供我们团队开发课程,并根据我们的课程设计,提供相关的器材;
  • 开发的课程资源版权归我们所有,我们团队有权免费提供在网络上,供所有师生使用;
  • 课程的设计由我们团队决定,厂商按照我们的需求提供器材即可,不可干扰我们的研发工作。
主    编:谢作如
参与编写:张禄 张丽芳 刘正云
完整的Word格式文档51黑下载地址:
Arduino创意机器人教材10.12.doc (13.67 MB, 下载次数: 83)

评分

参与人数 2黑币 +65 收起 理由
lyxxzrb + 15
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:272625 发表于 2019-2-14 15:27 来自手机 | 只看该作者
有创意,好…
回复

使用道具 举报

板凳
ID:452731 发表于 2019-4-21 01:13 | 只看该作者
很好的课程
回复

使用道具 举报

地板
ID:318672 发表于 2019-6-27 22:51 来自手机 | 只看该作者
感谢分享
回复

使用道具 举报

5#
ID:683400 发表于 2020-1-8 10:16 | 只看该作者

感谢分享
回复

使用道具 举报

6#
ID:234938 发表于 2020-1-14 22:49 | 只看该作者
资源很丰富,感谢楼主分享。
回复

使用道具 举报

7#
ID:686523 发表于 2020-1-15 21:15 来自手机 | 只看该作者
感谢分享,谢谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表