《十天学会智能车:基于Arduino》以开源硬件Arduino为技术背景,以创新教育为时代背景,以竞速型智能车为载体,由浅人深地讲述了基于Arduino的编程方法及智能车应用。考虑到中小学的智能车教育及普及,特别讲述了基于ArduBlock的图形化编程步骤及具体应用。
本教材分为10讲,1~6讲为基础知识,由浅入深地熟悉Arduino的硬件和软件平台;7~9讲为智能车的驱动、检测和调试方法,并用简单的整车实例讲述了智能车的控制思路;第10讲为积木化编程,并分别以四轮车和三轮车为例讲解了图形化编程的思路和编程方法,适合于中小学的智能车教学。
《十天学会智能车:基于Arduino》既可作为低年级大学生学习智能车的培训教材,也可作为中小学生创客创新教育的参考用书。
未来社会科技发展的大趋势,就是人工智能、机器人、计算机、物联网等。机器人所具有的“能听、能看、能动’’的特性吸引了很多人的目光,机器人的分类很多,从它们的用途来说,有工业机器人、服务机器人、水下机器人、军用机器人、农业机器人等。除了外形像人的机器人外,还有一些外形不像人、但在其领域发挥巨大作用的机器人。运动方式也是多种多样,有双足步行的,也有轮式的,本书介绍的智能车属于轮式机器人范畴。
智能车竞速比赛是一项观赏性强、参与面广的科技竞赛活动,已经在全国大学生智能车竞赛中得到了广泛的开展,成为自动化及其相关专业大学生最受欢迎的竞赛活动之一。在带领大学生参与智能车竞赛的十几年时间里,我陆续提出了一些智能车竞赛培训理念,例如,“人此门来选择奋斗,出此门去已成大牛”的“奋斗大牛”模式,以及“大一看热闹,大二探门道,大三做主力,大四做指导”的大学四年培养模式等,将智能车竞赛转变为一种具有奋斗、传承、包容、感恩、担当等精神特征的智能车文化,培养了一批又一批优秀的智能车队员。随着智能车影响力的扩大和时间的推移,大一不再满足于仅仅“看热闹”,而是想实实在在地参与智能车竞赛活动。但自动化专业的大一学生并不具备专业知识,和其他工科、理课、文科的同学基础是一样的,如何让他们快速入门,感受智能车的乐趣,是摆在每个智能车教育者面前的一道难题。
从2017年开始,全国大学生智能车竞赛开始引人中小学组,其简洁直观的积木化编程方式让人耳目一新。2018年我也尝试带领一支高中组的智能车队参加竞赛,竟然意外地获得了山东赛区第一名,并最终以全国第二名的成绩获得高中组全国智能车竞赛一等奖。两名高中生表现出的对智能车的超级喜欢和强大的程序理解能力让我感到惊讶:他们竟然理解了我讲解的PID调节和分段控制,而且编写出了原理相同且改进的程序,并在一个月的连续测试中跑坏了两个舵机,最终用自己换好的第三个舵机及改进后的程序获得佳绩!
从这次指导高中组的竞赛过程受到启发,我开始关注中小学生的编程能力需求及培养。苹果公司CEO库克曾透露,在他们公司的APP开发者里,年龄最小的只有9岁。00后和10后的孩子们从小就接触互联网,接触电子设备,拥有天然的优势,与其让孩子沉迷手机,不如让他们早一点拥抱新科技,而编程能力可能在未来会成为一种刚需。2014年,英国强制5~12岁孩子接受编程教育;2015年,美国投了40亿美元,总统奥巴马出面大力推广创客教育;日本计划2020年以后,把编程纳人中小学的必修课。就我国而言,在教育部公布的《2019年教育信息化和网络安全工作要点》中透露,将从2019年开始启动中小学生信息素养测评,并推动在中小学阶段设置人工智能相关课程,逐步推广编程教育。
由此可见,编程需求低龄化已经成为大势所趋,得到了社会认同。在这种形势下,如何开展编程教育就会成为一个焦点。中小学的编程教育不应该是依样画葫芦地学写几行代码,而应该是一种“编程思维”的训练。在日本文部科学省公布的小学新版教学大纲中,将“编程思维”定义为:为了实现自己的意图,通过理性思考确定各个步骤的最优组合并逐步完善,从而逐渐接近最理想的结果。面对智能车这种相对比较复杂的控制问题,可以分解为一个个的小问题,从熟悉开发工具人手,逐渐过渡到电机控制、舵机控制、赛道检测、车速检测等关键问题,找到整车控制与各关键问题之间的关联,从问题的逐一解决中找到答案。
兴趣是最好的老师,而喜欢小车是孩子们的天性,哪个孩子从小没有几辆小车呢?而具有智能特性的小车可以自主识别赛道,并沿着特定的轨道飞速前进,对学生的吸引力很大。为了降低学习难度,通过比较甄别,本书选择了Arduino开源式平台。由于Arduino设计之初的目标人群就是非电子专业尤其是艺术家学习使用的,让他们更容易实现自己的创意,这正符合不同专业大一新生的实际情况;其次,在Arduino软件环境下,可利用积木化编程方式实现对智能车的控制,非常适合中小学生学习使用。
为了降低使用难度,我们开发了基于ArduinoNano的智能车系统,并以套件的方式让学生们组装使用。考虑到学生的基础,根据学生对知识的认识规律,对教学内容进行了精心筛选和安排,先从Arduino本身学起,逐步过渡到智能车的控制。本教材分为10讲,l~6讲为基础知识,由浅人深地熟悉ArdLtino的硬件和软件平台;7~9讲为智能车的驱动、检测和调试方法,并用简单的整车实例讲述了智能车的控制思路;第10讲为积木化编程,并分别以四轮车和三轮车为例讲解了图形化编程的思路和编程方法,适合于中小学的智能车教学。
第1讲 智能车与创客教育
1.1 智能车与智能车竞赛
1.1.1 汽车与智能车
1.1.2 智能车竞赛
1.1.3 中小学智能车竞赛
1.2 创客与创客教育
1.2.1 创客与创客文化
1.2.2 创客教育
1.3 开源硬件与Arduino
1.3.1 开源硬件
1.3.2 什么是Arduino
1.3.3 Arduino的优势
1.3.4 Arduino程序开发过程
1.4 Arduino硬件的分类
1.4.1 Arduino开发板
1.4.2 Arduino扩展硬件
1.5 Arduino软件环境
1.5.1 什么是交叉编译
1.5.2 Arduino IDE的安装
1.5.3 Arduino IDE的设置
1.5.4 第一个示例程序
1.6 本讲小结
第2讲 Arduino编程基础
2.1 Arduino基本要素
2.2 变量和数组
2.2.1 变量
2.2.2 数组
2.3 1 I/O口操作
2.3.1 数字I/O口的操作函数
2.3.2 模拟I/O口的操作函数
2.3.3 高级I/O口的操作函数
2.4 各种函数
2.4.1 时间函数
2.4.2 中断函数
2.4.3 串口通信函数
2.4.4 库函数
2.5 本讲小结
第3讲 点亮一个LED
3.1 实验器件
3.1.1 面包板
3.1.2 杜邦线
3.1.3 电阻器
3.1.4 发光二极管
3.2 点亮一个LED
3.2.1 LED实验原理图
3.2.2 LED实验电路连接
3.2.3 LED点亮实验程序
3.2.4 程序编译下载
3.2.5 实验中的问题与解答
3.3 按键控制LED
3.3.1 按键电路
3.3.2 程序与理解
3.3.3 实验思考
3.4 本讲小结
第4讲 点亮多个LED
4.1 流水灯实验
4.2 数码管显示同一数字
4.2.1 认识数码管
4.2.2 程序与理解
4.2.3 思考与实践
4.3 数码管显示不同数字
4.3.1 静态显示和动态显示
4.3.2 电路连接与程序
……
第5讲 深入理解Arduino Nano
第6讲 Arduino编程进阶
第7讲 智能车驱动控制技术
第8讲 智能车检测技术
第9讲 智能车调试方法
第10讲 Arduino的图形化编程
附录A U-ADO-F10X系列智能车套件介绍
附录B U-ADO-F101智能车组装说明
附录C U-ADO-F101智能车用户手册与常见问题
附录D U-ADO-F102智能车组装说明
附录E U-ADO-F10X主控板电路图
参考文献