前 言
单片机中各种复杂的寄存器曾让众多的学习者望而生畏——要完成某项功能需要耗费大量的时间去熟悉单片机的底层。Arduino的诞生,改变了这一局面。Arduino将各种寄存器封装起来,并提供了易用的接口,极其简洁的界面,C语言编程方式,强大的第三方函数库支持,这些功能赋予其强大的生命力。目前市面上开始出现不少Arduino的学习教程,包括Android+Arduino的教程,但是和机器人应用开发相结合的书籍尚不多见。
机器人是一个典型的光机电算一体化系统,它融合了光学、机械、电子、传感器、计算机软硬件和人工智能等众多先进技术,是目前世界各国高校进行创新思维训练、创新技能训练、工程实践训练最理想的平台,吸引了无数爱好者参与其中。但由于机器人涉及的技术面比较广,门槛较高,往往让人觉得徒有热情,而不知从何下手。Arduino与机器人的结合改变了这一状况,使人们从海量的机器人相关基础知识中解放出来,能快速地实现设计者想要的功能,加速了机器人的研发。目前Arduino已经广泛应用于机器人、3D打印机、无人机等热门的科技项目。从笔者多年的机器人开发经验得出这样一条结论:学好Arduino对掌握机器人技术有较大的帮助。
很多基于Arduino的传感器、机电控制模块、通信模块等已经在市场上大量涌现,但是目前还没有一本教材能系统地把机器人的各个部分与Arduino结合起来,并详细介绍Arduino在机器人设计上的应用,而且机器人更强调的是一种系统工程的设计理念,单个专业的技术层面较为狭窄,不利于机器人的研究和开发。笔者通过不断学习,查阅Arduino的相关资料,并将从事机器人设计与制作六年的工程经验带入到本书中。本书将机器人涉及的光机电算一体化知识进行了融合,让读者能更全面地了解机器人的相关知识,引发读者从多学科交叉的角度去思考与钻研,最终完成机器人的设计和制作。
本书主要内容及面向的读者
机器人的制作非常强调动手能力,本书以实际机器人的制作应用为基础,将制作机器人所需要的必备知识进行一一叙述。首先介绍Arduino的基础知识,接着介绍机器人的运动控制部分,然后介绍机器人的感知部件——传感器,再介绍无线控制的方法,并辅以实例来介绍机器人的制作,最后提供了两套机器人竞赛的平台,其中包含了机器人设计制作和比赛的完整规则。
由于机器人属于跨学科的领域,必须掌握多个学科的知识。本书虽涉及多个学科,但尽量以浅显易懂的语言描述相关知识,没有涉及太深的内容,阅读本书建议有一定的电子知识基础和C语言基础。
根据读者情况的不同,本书的阅读方式也不同。
如果读者完全没有接触过单片机和软件开发,笔者建议从头阅读本书,并借助相关的Arduino书籍来辅助理解,因为本书并不完全是Arduino的基础入门教程。如果读者已经有一定Arduino开发经验,可以直接跳过第一篇,而从第二篇开始学习,掌握各种电机的控制方法。由于传感器种类繁多,本书只挑选了一些机器人常用的传感器来介绍(第三篇),建议读者购买各种传感器套装来配合本书的学习,将传感器接在Arduino板上,亲身体验一下各种传感器的特点和使用方法。第四篇介绍了五种常用的无线通信模块,每种模块各有优劣,读者可以根据项目开发的需要选择所需模块。第五篇介绍了几种机器人的制作,读者可以通过边学边做,逐步掌握机器人的相关知识。第六篇是机器人竞赛篇,里面有两套机器人比赛的完整赛制及所用机器人的制作方法。主要机器人零件均使用3D打印机打印制作。读者可通过访问http://www.hzbook.com查找本书的相关链接,下载书中所有机器人实例的3D打印零件库源文件、程序源代码、地图及部分数据文档。读者可将机器人打印出来进行对抗赛,机械设计相关专业的学生可在本篇学习到机器人机械设计方法,并对零件进行改进。本篇提供的机器人竞赛规则,适合大专或本科院校组织和开展机器人比赛。
致谢
首先要感谢本书的策划编辑张国强先生,感谢他对本书的关心和帮助,提出了很多宝贵的写作建议,并对书稿进行了仔细审阅。
其次要感谢“广州市教育局青少年科技教育计划”对本书的撰写、器材的购买提供的资助。
还要感谢笔者的学生黄冠彬、叶景祥、唐华杰、王朋、李昇圳、王召、黄煜楠、纪孟廷、覃镇波和崔杰城,感谢他们将节假日贡献出来,完成了第15章和第16章的资料整理和程序调试工作。
最后要感谢读者朋友们。感谢您肯花费时间和精力阅读本书。由于时间有限,书中难免存在疏漏与错误,敬请批评指正。希望有更多志同道合的人能加入到机器人的制作中来!
目 录
第一篇 Arduino入门篇
第1章 Arduino简介
1.1 认识Arduino
1.2 Arduino资源
1.3 安装Arduino Uno驱动
1.4 Arduino开发环境
第2章 Arduino的基本函数
2.1 数字I/O口的操作函数
2.2 模拟I/O口的操作函数
2.3 高级I/O
2.4 时间函数
2.5 中断函数
2.6 串口通信函数
2.7 数学库
第二篇 机电控制篇
第3章 直流电机控制
3.1 直流电机简介
3.2 直流电机工作原理
3.3 直流电机驱动电路原理
3.4 PWM速度控制原理
3.5 常用电机驱动芯片介绍
3.6 编程原理与示例程序
第4章 步进电机控制
4.1 步进电机简介
4.2 步进电机工作原理
4.3 步进电机驱动电路原理
4.4 常用步进电机驱动芯片简介
4.5 编程原理与示例程序
第5章 舵机控制
5.1 舵机简介
5.2 舵机工作原理
5.2.1 舵机的结构
5.2.2 PPM角度控制
5.3 舵机控制函数库
5.3.1 attach(pin)
5.3.2 write(value)
5.3.3 writeMicroseconds()
5.3.4 detach(pin)
5.3.5 read()
5.3.6 readMicroseconds()
5.4 编程原理与示例程序
第三篇 传感器应用篇
第6章 传感器介绍和编程
6.1 激光传感器
6.1.1 激光传感器工作原理
6.1.2 编程原理与示例程序
6.2 光敏传感器
6.2.1 光敏传感器工作原理
6.2.2 编程原理与示例程序
6.3 倾斜传感器
6.3.1 倾斜传感器工作原理
6.3.2 编程原理与示例程序
6.4 水银开关式碰撞传感器
6.4.1 水银开关式碰撞传感器工作原理
6.4.2 编程原理与示例程序
6.5 振动传感器
6.5.1 振动传感器工作原理
6.5.2 编程原理与示例程序
6.6 敲击传感器
6.6.1 敲击传感器工作原理
6.6.2 编程原理与示例程序
6.7 金属触摸传感器
6.7.1 金属触摸传感器工作原理
6.7.2 编程原理与示例程序
6.8 红外线传感器
6.8.1 红外线传感器工作原理
6.8.2 编程原理与示例程序
6.9 火焰传感器
6.9.1 火焰传感器工作原理
6.9.2 编程原理与示例程序
6.10 红外避障传感器
6.10.1 红外避障传感器工作原理
6.10.2 编程原理与示例程序
6.11 寻线传感器
6.11.1 寻线传感器工作原理
6.11.2 编程原理与示例程序
6.12 光遮断传感器
6.12.1 光遮断传感器工作原理
6.12.2 编程原理与示例程序
6.13 霍尔传感器
6.13.1 霍尔传感器工作原理
6.13.2 编程原理与示例程序
6.14 磁环传感器
6.14.1 磁环传感器工作原理
6.14.2 编程原理与示例程序
6.15 旋转编码器
6.15.1 旋转编码器工作原理
6.15.2 编程原理与示例程序
6.16 声音传感器
6.16.1 声音传感器工作原理
6.16.2 编程原理与示例程序
6.17 模拟温度传感器
6.17.1 模拟温度传感器工作原理
6.17.2 编程原理与示例程序
6.18 DHT11数字温湿度传感器
6.18.1 DHT11数字温湿度传感器工作原理
6.18.2 编程原理与示例程序
6.19 DS18B20数字温度传感器
6.19.1 DS18B20数字温度传感器工作原理
6.19.2 编程原理与示例程序
6.20 MQ-2烟雾传感器
6.20.1 MQ-2烟雾传感器工作原理
6.20.2 编程原理和示例程序
6.21 水位传感器
6.21.1 水位传感器工作原理
6.21.2 编程原理与示例程序
6.22 超声波测距传感器
6.22.1 超声波测距传感器工作原理
6.22.2 编程原理与示例程序
6.23 Joystick PS2摇杆
6.23.1 Joystick PS2摇杆工作原理
6.23.2 编程原理与示例程序
6.24 TCS3200D颜色传感器
6.24.1 TC S3200D颜色传感器工作原理
6.24.2 编程原理与示例程序
6.25 气压传感器
6.25.1 气压传感器工作原理
6.25.2 编程原理与示例程序
6.26 MPU6050运动检测传感器
6.26.1 MPU6050运动检测传感器工作原理
6.26.2 编程原理与示例程序
6.27 HMC5883L磁阻传感器
6.27.1 HMC5883L磁阻传感器工作原理
6.27.2 编程原理与示例程序
第四篇 无线控制篇
第7章 ZigBee无线传输模块
7.1 ZigBee技术简介
7.2 DRF1605H模块的使用
7.2.1 模块介绍
7.2.2 组网原理
7.2.3 数据传输方式
7.2.4 配置说明
7.3 编程原理与示例程序
第8章 蓝牙传输模块
8.1 蓝牙技术简介
8.2 蓝牙模块的连接过程
8.3 BLK-MD-BC04-B蓝牙模块的使用
8.3.1 BLK-MD-BC04-B蓝牙模块简介
8.3.2 常用AT指令设置
8.3.3 软件主从配置
8.3.4 硬件主从配置
8.4 编程原理与示例程序
第9章 WiFi传输模块
9.1 WiFi技术简介
9.2 WiFi转串口模块的使用
9.2.1 模块介绍
9.2.2 配置说明
9.3 编程原理与示例程序
第10章 2.4G无线数传模块
10.1 2.4G无线数传模块简介
10.2 nRF24L01模块使用
10.3 编程原理与程序设计
第11章 DigiMesh远距离传输模块
11.1 DigiMesh技术简介
11.2 XBee PRO 900HP模块使用
11.3 编程原理与示例程序
第五篇 机器人设计制作篇
第12章 走迷宫的超声波避障车
12.1 硬件平台的搭建
12.1.1 物料清单
12.1.2 组建超声波避障车
12.1.3 总装接线表
12.2 编程原理
12.3 程序设计
第13章 蓝牙控制的机器人
13.1 硬件平台的搭建
13.1.1 物料清单
13.1.2 总装接线表
13.2 配置说明
13.2.1 蓝牙模块配置
13.2.2 手机连接测试
13.3 编程原理与程序设计
13.3.1 Android程序设计
13.3.2 智能车程序设计
第14章 无人机操纵装置
14.1 硬件的选型
14.2 硬件安装与电路连接
14.2.1 飞行摇杆
14.2.2 飞行器
14.3 控制协议
14.4 编程原理与程序设计
14.4.1 飞行摇杆控制程序
14.4.2 飞行器Flyduino程序
第六篇 机器人竞赛篇
第15章 打保龄球的机器人
15.1 设计思想
15.2 任务设计
15.2.1 任务一:取保龄球瓶
15.2.2 任务二:通过机械门
15.2.3 任务三:放保龄球瓶
15.2.4 任务四:击打保龄球
15.2.5 终极任务:夺取奖杯
15.3 比赛场地设计
15.3.1 场地设置要求
15.3.2 地图设计说明
15.3.3 道具设计
15.4 竞赛规则与评分标准
15.4.1 竞赛规则
15.4.2 评分标准
15.5 物料清单
15.6 机械零件设计图
15.7 组装说明书
15.7.1 零件清单
15.7.2 组装流程
15.8 电路设计与接线
15.8.1 硬件系统框图
15.8.2 电路模块设计
15.8.3 总装接线表
15.9 程序设计
15.9.1 程序设计思想
15.9.2 算法设计
15.9.3 示例代码
第16章 神勇消防员(消防机器人)
16.1 设计思想
16.2 任务设计
16.2.1 任务一:搜索火源
16.2.2 任务二:灭火
16.2.3 任务三:搜救
16.2.4 任务四:返回安全区
16.3 比赛场地设计
16.3.1 场地设置要求
16.3.2 地图设计说明
16.3.3 道具设计
16.4 竞赛规则与评分标准
16.4.1 竞赛规则
16.4.2 时间限制
16.4.3 评分标准
16.5 物料清单
16.6 机械零件设计
16.7 组装说明
16.7.1 零件清单
16.7.2 机器人组装流程和详解
16.8 电路设计
16.8.1 硬件系统框图
16.8.2 电路模块设计
16.8.3 总装接线表
16.9 程序设计
16.9.1 程序设计思想
16.9.2 算法设计
16.9.3 示例代码