Arduino不仅仅是全球的开源硬件,也是一个优秀的硬件开发平台,更是硬件开发的趋势。《创客入门---Arduino智能电路设计》从初学者的角度出发,通过通俗易懂、丰富多彩的项目实例,由简入深,详细介绍了Arduino设计开发项目需要掌握的技术和知识。全书分为四章,第一章是学习准备,提供了近10个创意想法,激发读者的创意思维;第二章是灯光控制,包含制作随机闪烁的灯光、调光台灯、会“呼吸”的灯、安全帽警示灯等10个项目;第三章则为传感器,包含了光线感应、激光报警、数码管显示温度、测量大气灰层密度、制作便携式空气质量监测器等10个项目;第四章是制作一个倒车雷达,讲述如何焊接、如何绘制、打印线路板。本书的最后还整理了目前较为热门的国内外创客网站,给读者提供了一个自主学习、拓展视野的平台。
适读人群 :电子发烧友、中小学对电子信息、程序设计等感兴趣的学生或教师、创客爱好者
近年,“创客”一词在国内流行起来,“全民创造”的魅力吸引着越来越多的人,一些先行者凭借着原有的经验和知识,能够设计制作出许多新奇的产品,而非科班出身的人会觉得这些东西是多么的神秘,要想入门,需要翻越数学、物理、电学、力学等无数高耸的大山,令人望而却步。但Arduino的出现能够很好地解决这个问题。Arduino简单的开发方式使得开发者更关注于创意与实现,更快地完成自己的项目开发,大大节约学习的成本,缩短开发的周期。
近年来,“创客”这一名词在国人身边流行起来,伴随而来的是众多眼花缭乱的科技创新产品。媒体关于科技创新产品开发的报道也越来越多,如智能家居、机器人、3D打印、模型制作等。“全民创造”的魅力吸引着越来越多的人。一些先行者凭借原有的学习经验能够设计创造出许多新奇产品;对于没有涉及这一领域的人,这些都是神秘、深奥的高端领域,要想入门,似乎必须要翻过电学、程序开发、数学等好几座大山,令人望而却步,遥不可及。
对于学生来说,由于学业压力以及学习内容的限制,无法将相关的理论知识应用到真实世界中,学生年级越高,积累的问题越多。比如:如何测量声音的速度?如何直观地测量桥梁的承重能力?如何将计算机算法应用在实际生活中?如何利用电磁感应原理制作一个不用电池的遥控器?这些值得探究的问题,随着快节奏的单元学习,渐渐地尘封在他们的记忆中。如果理论化的学习不能向实践领域迁移,这将在他们的学习生涯中留下永久的遗憾。
创客的兴起,给学校教育提出了极大的挑战,为此各级教育部门成立了许多联盟和工作小组,设立了许多项目,但在实际操作层面,仍然是心有余力不足。创客课程,学什么?谁来教?都是值得深入思考和探究的问题。
由上海市教育学会领衔的《数字化教室》项目,让我充分了解了学校的信息化需求,亲历了信息技术给予课堂带来的巨大变化,教学模式发生了巨大的变革。在项目的引领之下,2013年初,张江实验中学刘党生校长带我参观了位于浦东张江高科技园区的创客社区,3D打印、无人机、机器人、开源硬件……这些实物第一次进入我的眼帘。我指着一盒盒的元器件问工程师,学习这些智能电路是否很困难?得到的回复是小学生也可以学习,这令我信心大增。
为什么从学习Arduino开始
制作一个完整的智能电路产品,需要经过创意设想、产品设计、实验验证、成品制作等环节,撰写本书的主要目的,是希望能将这些环节一一展现,帮助学生了解产品制作的流程,而其中最为核心的内容就是需要掌握开源平台的开发应用。
互联网2.0时代的到来以及开源系统的蓬勃发展,让学习者有更多途径和材料去验证原先的疑问,寻求最佳的应用结合点。Arduino(中文名为阿德韦诺)是目前广受欢迎的开源应用,也是许多实践科技创新产品的核心。使用Arduino,不需要理会复杂的硬件知识,只需理解端口、传感器及驱动器的作用,通过图形化或代码编程加以组织,就能制作出多样化的DIY产品。它的出现极大降低了入门门槛,能够让一个学习者快速且持久地对科技创新产品产生兴趣,并引导他们走进科技创新领域。
Arduino是严格按照工业化产品要求进行设计开发的,拥有全球化开源资源,这就意味着从Arduino相关网站、博客及论坛里能够得到大量的共享资讯与解决方案,用户可以通过资源整合,加快创作作品的效率及质量。一张书桌前,一台电脑,一把电烙铁,一个万用表便能创造出如此众多的智能化产品,这在10年前是无法想象的。基于以上特点,Arduino的学习者可以是小学生至大学生,乃至是医生、艺术家、商人等来自各行各业的非智能化从业人员。
使用Arduino设计智能电路,需要包含许多跨学科的知识,如物理、信息科技和数学等。高中生已经对电路有了基本的了解,并且在高中信息科技课程中将会学习算法等相关知识,许多复杂应用甚至还需要建立数学模型。因此Arduino可以很好地与高中所学知识对接,让学生学以致用。
自从有了创客社区的体验,我决定开始系统学习。2013年,浙江大学计算机学院翁恺老师在网易云课堂开设了Arduino课程,图文并茂,浅显易懂,因此成为了我知识来源的主要途径。待我潜心将十节课全部学完后,已经对Arduino有了一个整体的感受和认识,可以自己将学到的知识重构并产生个性化的需求与解决方案,比如孩子应该自己睡了,半夜醒来感到害怕怎么办?那就做一个声控灯吧,叫一声“爸爸”灯就会亮起来;一家人玩“大富翁”时常会把骰子丢到很远,那就做一个电子骰子吧,按个按钮就能显示随机数。一旦获得了成就感,会对此产生更浓厚的兴趣,进而去验证更多的假设,体验失败与成功的滋味。
如何践行创客课程
作为一名教师,除了提升自己的专业知识外,更应把所学的技能和知识传播给更大的群体,同时,教学还将强化我对Arduino概念的理解,了解学生的学习起点,验证Arduino进入课堂的可行性。因此,我先后在建平中学、张江实验中学、华师大一附中、上海师资培训中心实验基地附属中学,以及一些小学开设拓展型课程。
在多年的教学实践中,一些教学场景令我印象深刻。曾有一次,在一所高中,我问一位学生,你认为这门课学习的内容难吗?她回答道:“有什么难的?不就是把元器件按照特定的端口连接起来然后写程序让其运行吗?“为了向学生讲述课程中的原理,我在课前做了许多实验,查找了很多资料,经历了许多失败,然而得到了这样轻描淡写的回答,令我大感意外。此时才意识到可能是我的教学方法导致了她有这样的回答。由于高中学业压力很大,我希望在每周的两节课中尽可能讲授更多的知识,但却忽视了自主探究与自我建立知识体系的重要性。为此,在后面的教学中,我减少了一些实验项目,而是在每个单元学习中将相关的参考资料发放给学生,让他们自己总结原理,感受失败。
经过不断地教学与总结,我也形成了自己的教学风格,比如,不轻易地告诉学生问题的解决方案;因为一个任务可能会有几种途径来解决,需要学生们自己来探究。
初学Arduino一般从如何按照人们设定的程序控制一些灯光的亮灭开始。首先我会将程序模块的功能一一介绍,完成点亮一盏LED发光二极管的任务之后,后续的发散性任务需由学生自己去探索。比如,让两盏灯闪烁,或让三盏灯以交通信号灯的方式闪烁。任务过程中,他们需要自己写流程图、确定延迟的时间等。通常做不出预期的效果时,学生就会求助于老师,也有部分学生无奈地在屏幕前发呆。这时,我会引导他们从软件设置、硬件连接、程序编写等多方面排查错误,直至任务达成。一旦自己解决了问题,学生会表现出无比的喜悦和成就感,总会大声告诉老师并与同学分享。此外,我还会要求已完成任务的学生去帮助其他组的同学。
Arduino教学最直观的感受是上课时不用刻意地去维持课堂纪律。学生两两配对,明确实验任务后,他们就会非常专注。正如我的导师张民生老师在丛书总序所写的那样,学生的自信心、兴奋度都是一般的学习过程难以达到的,此时老师要做的是去观察他们的行为而不是去打扰他们。
动手能力强的学生会在完成既定任务后探索新的需求,拓展学习深度与宽度。由于Arduino学习对手眼协调、端口对应及程序逻辑的要求非常高,与学生的传统学习区别较大,其中的概念要求需要细心领会,反复操练。因此,课堂中教师需要注意的是,相同的任务(尤其是入门阶段的灯光控制任务),需要搭建两遍以上,即连接好元器件,程序编写下载,实验成功后,将所有元器件拆除,重新开始做一遍,驱动程序安装,开发程序安装也如此。只有这样,才能在训练中激发大脑生长出新的突触、联结和其他神经结构,增进大脑处理信息、储存记忆和认知能力,进而提升学生的动手实践能力。
给读者的建议
学校的创客教育目前刚起步,学习者(不论是教师还是学生)在课堂中从教师或教材中获得直接学习经验的机会不多,或许,我的一些学习经历可以供大家参考。
1.要以探究的眼光观察周围的世界
我们所处的世界都是有人类创造的,大到喷气客机,小到自动感应门,都包涵着无穷的科学奥秘。观察这个世界,不仅要感受世界的色彩斑澜,更要透过其表象挖掘隐藏在背后的原理。尝试多问些为什么,产生一些可以进一步研究的问题,并尝试寻找途径去解决这些问题,让探究成为自己生活的一个部分。
2.发挥主观能动性,以网络为学习平台
今天的互联网如此发达,网络中已有大量学习资源,许多论坛都为初学者开设的入门板块,一些常见的问题,或许在网上已经有了解决方案。如果寻找不到合适的答案,也可以在各大专业论坛发帖提问,寻求热心人的帮助,许多网友都会热心提供解答。此外,查阅本书附录中所列出的各类创客网站,可以拓展读者的视野,丰富自身的创意思路。
3.遭遇失败时,可以暂缓研究,但不要放弃
我在本书中整理的一些任务,如“大气微粒传感器测量灰尘浓度”、“加速度传感器测量加速度”、“四位八段数码管显示”等,从最初的设想到成为系统化的解决方案,经历了很长的时间,从几个月到一年不等。每一阶段都要克服很多困难,示波器、万用表成为了我验证假设、排除错误的主要工具。当一个问题不能解决时,短时间内再投入大量精力往往是于事无补的,此刻必须慢下来,做些其他方面的事,以期出现新的灵感。
从学习Arduino的经验中,我认为遭遇到失败,本质是自身知识概念的缺乏。而解决一个实际问题,往往可以弥补整个Arduino知识体系的一个部分,这就像拼图一样,看似无关的拼版最后可以整合成为一个整体画面。比如在我研究“大气微粒传感器”原理的这段时间,最后测得的数据总是有误差,期间得到了导师的多次指导,并与同行多次进行交流。直到强化学习了Arduino模拟输入,并研究元器件手册之后,我才发现传感器无尘状态下所提供的电压值是非常重要的,这一问题的解决,使我对Arduino模拟输入以及相关传感器的原理有了更清楚的认识。
兴趣是学习的最大动力,学习Arduino需要不断让自身保持兴趣,给予自己充足时间,经历成功和失败,不知不觉中就发现自己已经入门了。
最后衷心祝愿读者朋友能够设计出更多新奇的创意作品,并与大家分享!
张民生,丛书主编,国家教育咨询委员会委员,上海教育综合改革咨询委员会委员,原上海市教育委员会副主任,中国教育学会副会长,上海市教育学会会长。石慧,本册图书作者,上海浦东新区教师进修学院教师,指导张江中学学生获得“霍尼韦尔及汽车工程学会”全球学生车模设计挑战赛冠军;在上海市建平中学等学校担任创客拓展型课程的主讲教师。
丛书总序
前言
第一章 学习准备/1
准备1:从创意开始/1
准备2:硬件与软件/11
第二章 灯光控制/28
Arduino的数字量输出/29
任务1:把灯打开/30
任务2:让灯光交替闪烁/35
任务3:让灯光随机闪烁/39
综合任务1:一个安全帽警示灯/44
Arduino的模拟输出/51
任务4:会“呼吸”的灯/55
Arduino的模拟输入/61
任务5:调光台灯/62
任务6:电流放大/69
Arduino的数字输入/76
任务7:按钮灯/77
任务8:带变量的按钮灯/79
任务9:使用按键控制灯光程序/82
第三章 传感器/89
任务10:光线感应/90
任务11:激光报警/93
任务12:向日葵太阳能收集装置/98
任务13:温度传感器测量温度/107
任务14:数码管显示环境温度/112
综合任务2:一个会变色的杯子/128
任务15:距离感知/138
任务16:大气灰层密度测量/146
任务17:计算空气质量指数AQI/154
任务18:制作便携式空气质量监测器/159
任务19:加速度检测/168
第四章 制作成品/178
综合任务3:制作一个倒车雷达/185
附录 参考网站/201
天色渐暗,路上依旧车水马龙,我那辆单薄的自行车还在车流中穿行,好不惊险。此时,如果有一种方式能够让来车及时发现我的存在,那将是对我的一种保护。好在网上有许多商品可以提供选择,反光背心、蜂鸣器,当然还有最受欢迎的警示灯了。
现有的警示灯有多种闪烁的方式,如几盏灯或几排灯交替快速闪烁、同时闪烁或常亮。这些炫酷的效果是如何设计出来的呢?下面,就让我们尝试动手制作交替闪烁的警示灯吧。经观察分析得知,两盏灯交替闪烁的规律是第一盏灯闪亮一次,接着第二盏灯闪亮一次,如此反复。从程序逻辑上看,灯的闪烁过程为:第一盏灯打开→持续一段时间后关闭→等待一段时间→第二盏灯打开→持续一段时间关闭→等待一段后时间→(重复程序)。
……