超炫的35个Arduino制作项目(txt+pdf+epub+mobi电子书下载)


发布时间:2020-07-27 20:34:39

点击下载

作者:《无线电》编辑部编

出版社:人民邮电出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

超炫的35个Arduino制作项目

超炫的35个Arduino制作项目试读:

前言

电子制作项目向来都是电子爱好者、大中专学校电子专业师生的最爱。《无线电》杂志自1955年创刊以来,历经近60年、出版600余期,刊登了大量知识性、趣味性、可操作性俱佳的无线电制作文章,伴随着一代又一代无线电爱好者成长,拥有了一批又一批无线电和电子技术的粉丝。当代很多从事电子技术工作的专家、教授都出自当年的青少年无线电爱好者。有的无线电爱好者虽然没有从事电子技术专业工作,但他们能把自己的专长运用到工作中,使电子技术在其他领域得到了广泛的应用和发展。《无线电》杂志为自己在“ 科普、创新、实作、分享”当中不懈努力、得到众多粉丝认可而感到欣慰。

电子科学技术的发展是一个国家科学技术进步的重要标志之一。普及无线电和电子科学技术既是国家科学技术发展的需要,也是培养新世纪科技人才的需要,更是《无线电》杂志义不容辞的使命。为此,我们适时地把《无线电》杂志上介绍过的、优秀的制作类文章,认真精选汇编成书,以方便广大读者,延伸《无线电》杂志的科普服务功能。

2001年,我们汇编出版了第一本《无线电制作精汇》,精选汇集了《无线电》杂志发表的7大类382个制作项目。2005年汇编出版了《无线电制作精汇(2)》,精选汇集了第一本《无线电制作精汇》以后《无线电》杂志发表的8大类200个制作项目。这些书出版以来一直受到读者的欢迎并不断重印。

应广大读者要求,我们汇编了这套“ 《无线电》精汇”系列图书,内容取自《无线电制作精汇(2)》以后、特别是近年来《无线电》杂志发表的优秀制作类文章。既有传统的经典无线电与电子制作,又有体现时代特征的单片机应用开发制作,以及新世纪创意迸发的开源制作项目。这些项目既可以用于业余和课外电子制作活动,又能用于改进家用电器的功能,还可以用于开发电子产品。“ 《无线电》精汇”系列图书内容丰富、信息量大、涵盖技术领域宽广、资料齐全、实用性强,是广大电子技术人员、科研人员、无线电爱好者的重要参考手册,也是大中专学校学生开展电子科技实践活动的得力指导书籍。《无线电》编辑部  第一章认识Arduino1 Arduino为什么这么红?文:胡泊

相信对嵌入式开发感兴趣的朋友,最近一定不会对一个新名词感到陌生——Arduino。尤其对初学者来说,恐怕都听到过“ 嵌入式开发从哪里上手最好?Arduino!”这样的说法。那么Arduino到底是什么呢?是一种新的控制芯片,还是一种新的开发软件呢?

首先我们先看看Arduino的实物图,图1.1所示是最常见的一种Arduino实物。图中已经根据功能用线将各个模块区分出来,相信对单片机开发稍有了解的朋友一定已经发现,这不就是一个以AVR单片机最小系统为核心的控制板吗?图1.1 最常见的一种Arduino实物

不错,Arduino就是以Atmel公司的AVR单片机为核心的单片机控制板,板上除了ATmega168最小系统电路外,还包含了稳压电路、USB转串口电路、一些指示用的LED,以及一些扩展用的电路插座。

仅仅一个单片机最小系统,为何能风靡全球呢?

下面我们以图表的形式来比较一下单片机裸机、市面上一般的单片机开发板和Arduino。

表1.1中列出了3种选择方案的最直观比较(表中没有比较购买渠道的便利性,随着网络购物的普及,这一点已经不再成为爱好者们需要特别关注的问题),看起来似乎Arduino并没有特别的优势,那么为什么Arduino会得到如此热度的追捧呢?

要回答这个问题,我们必须首先回顾一下Arduino的发展历程。2005年,意大利北部小镇伊夫雷亚(Ivrea)一家高科技设计学校的老师Massimo Banzi,为了能给学生们提供一种便宜好用的微控制器平台,与当时在这所学校做访问学者的西班牙籍芯片工程师David Cuartielles合作设计了最初的Arduino电路板。随后Arduino便开始迅速地在欧洲流行起来,并且逐渐将春风吹到了世界各地。表1.1 ATmega168裸机、ATmega168开发板、Arduino的对比

1.1 Arduino独有的优势

Arduino独有的几种优势表现在下列方面。

开放性:Arduino的硬件电路和软件开发环境都是完全开源的,在不从事商业用途的情况下,任何人都可以使用、修改和分发它。这样不但可以使用户更好地理解Arduino的电路原理,更可以根据自己的需要进行修改,比如由于空间的限制,需要设计异形的电路板,或是将自己的扩展电路与主控制电路设计到一起。

易用性:对于稍微有心的人,不论基础如何,只要他有兴趣,拿到Arduino之后的1个小时之内,应该就可以成功运行第一个简单的程序了。Arduino与PC的连接采用了当下最主流的USB连接,你可以像使用一个MP3一样,把Arduino与电脑直接连起来,而不需要再额外安装任何驱动程序。而且Arduino的开发环境软件也非常简单,一目了然的菜单仅提供了必要的工具栏,除去了一切可能会使初学者眼花缭乱的元素,你甚至可以不阅读手册便实现代码的编译与下载(我可没说编写)。

交流性:对于初学者来说,交流与展示是非常能激发学习热情的途径。但有些时候,你用AVR做了个循迹小车,我用PIC做了个小车循迹,对单片机理解还不是特别深刻的初学者,交流上恐怕就会有些困难。而Arduino已经划定了一个比较统一的框架,一些底层的初始化采用了统一的方法,对数字信号和模拟信号使用的端口也做了自己的标定,初学者在交流电路或程序的时候非常方便。

丰富的第三方资源:Arduino无论硬件还是软件,都是全部开源的,你可以深入了解到底层的全部机理,它也预留了非常友好的第三方库开发接口。秉承了开源社区一贯的开放性和分享性,很多爱好者在成功实现了自己的设计后,会把自己的硬件和软件拿出来与大家分享。对于后来者,你可以在Arduino社区轻松找到自己想要使用的一些基本功能模块,比如舵机控制、PID调速、A/D转换等。一些模块供应商也开始越来越重视Arduino社区,会为自己的产品提供Arduino下的使用库。这些都极大地方便了Arduino开发者,使你可以不必拘泥于一些基本功能的编写,而把更多的精力放在自己想要做的功能设计中去。

是的,单纯从嵌入式开发的技术角度来说,Arduino并不是第一选择,为了尽可能地照顾初学者甚至是电子开发的门外汉,Arduino定制了很多底层的设计,这也是许多经验丰富的嵌入式设计人员对Arduino嗤之以鼻的原因之一。那么Arduino的定位究竟在何处呢?

1.2 Arduino的定位

Arduino最初确实是为嵌入式开发的学习而生,但发展到今天,它已经远远超出了嵌入式开发的领域。有些人将Arduino称为“ 科技艺术”,很多电子科技领域以外的爱好者,凭借丰富的想象力和创造力,也设计开发出了很多有趣的作品(见图1.2〜图1.4)。图1.2 用Arduino控制的三轮小车图1.3 用来擦除白板的自动机器图1.4 发条微博自动给你煮咖啡

在国内,Arduino更多的还是作为一种嵌入式学习和开发工具出现,但是它的魅力绝不仅仅如此,它完全可以作为一种新“ 玩具”,甚至新的艺术载体,来吸引更多领域的人们加入到Arduino的神奇世界里来。

1.3 Arduino的硬件

是不是已经迫不及待,想要开始你的Arduino之旅了?赶快到购物网站上搜一搜Arduino,然后……是不是被各种不同的Arduino控制板搞花了眼?

Arduino并不是一成不变的,每隔一段时间,Arduino官方组织就会发布最新的设计,在原有基础上进行升级,让爱好者们更方便地使用。同时,为了满足不同层次的开发要求,Arduino也推出了不同版本的控制板设计,让我们来认识一下使用最多的几种设计。

Arduino Uno(见图1.5):Uno 版本应该说是Arduino 的基础版,也是初学者的第一选择。它提供了基本的数据接口,对初学者来说存储空间足够,无论是读取传感器,还是驱动电机,或者与电脑通信,都可以轻松地胜任。图1.5 Arduino Uno

Arduino Mega 2560(见图1.6):这一版可以算是Uno 的升级版,各种接口的数量比Uno要多,而且其搭载的单片机型号也要比Uno的单片机更高级一些,运算速度也更快。如果你觉得Uno的硬件资源无法满足你的需求,那么你可以尝试一下Mega,当然它的价格也会比Uno更高一些。图1.6 Arduino Mega 2560

Arduino Nano(见图1.7):这个可以说是Uno的简版,优先考虑了体积上的优化,尽量将体积做到最小,可以满足一些手持设备或体型微小的设备使用。当然性能上相比Uno也略有缩水。图1.7 Arduino Nano

也许有些心急的朋友已经要问了:哪一款可以控制步进电机?哪一款可以实现无线通信?哪一款可以演奏音乐?……

如果我告诉你都不可以,你会不会很失望?

Arduino作为一种控制芯片,所起的作用类似于我们的大脑,大脑是无法自行运动或是发声的。大脑所起的作用类似于指挥官,Arduino也是如此,想要完成一些实际任务,离不开外围电路的支持。

很多人又要头痛了,电子电路完全不懂怎么办?其实现在这一点也已经不是什么大问题了。对于电子专业的学生,或是想要学习电子电路的爱好者,当然要一切靠自己,查资料、买元件、做PCB、焊电路……这其中当然会有很多辛苦,可其中学到的知识无疑也是装入自己脑袋的。

如果不想在电子电路方面花费太多的精力,也没有问题。现在很多厂商都开发了各种各样的Arduino外围功能电路,无论是电机驱动、无线通信、音乐播放,还是读取各种各样物理信号的传感器(压力、速度、倾角、方向等),应有尽有,而且使用方便,可以直接连到Arduino控制板上工作(见图1.8〜图1.12)。图1.8 电机驱动板图1.9 蓝牙模块图1.10 霍尔传感器图1.11 光敏传感器图1.12 烟雾传感器

1.4 Arduino的软件开发方法

说完了硬件,那么我们接下来谈谈很多人都头痛不已的软件开发吧。

一般的嵌入式代码都是main函数中有一个死循环,程序不断地反复执行,单片机在每个循环内读取各个外部端口的数据,然后根据这些数据来做出相应的策略判断,再把指令通过外部端口传送出去,达到控制外部设备的目的。

Arduino的程序运行方式与此差不多,但代码结构略有不同。它的代码中没有main函数,而是使用了两个不同的必备函数:setup、loop。

相信很多朋友已经猜出来了,Arduino代码是把初始化的代码放在了setup函数中,而把需要不断循环执行的代码放在了loop函数中。这与传统的嵌入式程序虽然结构不同,但设计思想还是一致的。图1.13 开发环境软件截图(此开发环境可以在Arduino网站上免费下载)图1.14 一个通过上位机程序控制外部电路灯的颜色的实例

Arduino的代码语法与C++类似,也包含了对类和对象的支持。即便是没有任何代码编写的基础,也可以很快上手。关于Arduino的代码编写,无论是Arduino的官方网站,还是网络上都有相当丰富的资料,这里不再赘述。开发环境界面如图1.13所示。

很多Arduino制作还要涉及另外一种程序的编写,就是上位机程序,一般是PC端的程序。你可以采用任何你所熟悉的高级语言进行开发,接收Arduino控制板所传递过来的数据(串口传输),在屏幕上显示输出或写入文件。VB、VC++、Delphi、Flash Script、Processing等都能满足你的要求。图1.14、图1.15所示为用Arduino制作的两个实例。图1.15 用Arduino制作的游戏手柄2 图形化编程软件——ArduBlock文:宜昌城老张

2.1 ArduBlock的今世前缘《Make》杂志(中文版为《爱上制作》系列图书)主办的Maker Faire 是一场场平民科技、趣味作品交流的盛会,每个老百姓都能参与其中。2011年,纽约Maker Faire 展会在科学会馆举办,在几条街区外就可以看到高耸的火箭模型。本来就充满科普装置的空间里塞满了创客后,就像一个爱丽丝仙境,走在其中会不经意地被古灵精怪的作品打动,驻足赞叹创客们的精彩表演。

在这次展会上,Arduino尤其抢眼,Arduino 团队高调出场,发布了一系列Arduino产品,从低端的Leonardo,到未来式96MHz 怪物DUE,以及新的Arduino 1.0 编程软件、机器人平台等。Arduino的核心开发团队成员Massimo还特别感谢了上海新车间创客开发的图形化编程环境ArduBlock,肯定了来自中国创客的贡献,让现场中国观众有点Hold不住了。

位于上海市徐汇区长乐路1035号2楼(乌鲁木齐路口)的新车间是国内第一家创客空间,它为创客们提供了一个很好的交流场所。新车间的ArduBlock软件受到了国际同道的好评,下面我就来详细介绍一下ArduBlock的安装与使用。图2.1 2011年纽约Maker Faire宣传页

ArduBlock是Arduino官方编程环境的第三方软件,目前必须依附于Arduino软件下运行,因此首先应该下载和安装Arduino 1.0 版本,方法可见官方网址:http://arduino.cc/en/Guide/Windows。ArduBlock区别于Arduino提供的文本式编程环境,是以图形化积木搭建的方式编程的,这样的方式会使编程的可视化和交互性加强,使编程门槛降低,可以吸引更多的人投入到创新制作中来,让人人都是创客!即使是没有编程经验的人,也可以尝试给Arduino控制器编写程序。

2.2 ArduBlock软件的下载与安装

从官网下载ardublock-all.jar文件后,如何安装软件,简单地说就是把ardublock-all.jar拷贝到“ Sketchbook location”所在目录底下的“ tools\ArduBlockTool\tool\”的子目录文件夹里面。问题是“ Sketchbook location”所在目录在哪儿可以找到,别急,我来找找。在Arduino的编程环境IDE下,打开菜单“ File”→“ Preferences”,如图2.2所示,即可找到。图2.2 ArduBlock软件的安装路径

■ ArduBlock官方网站:http://blog.ardublock.com图2.3 ArduBlock在Arduino编程环境下的启动菜单项

我的电脑显示,图2.2 中用矩形框标注的“ C:\My Documents\Arduino”就是“ Sketchbook location”所在的位置,我目前用的是Windows XP操作系统,如果是其他操作系统,或者以非管理员身份的其他账户进操作系统,“ Sketchbook location”的默认目录是不一样的。

好了,现在赶快去看看这个目录下有什么。其实你打开这个目录文件夹,什么东西也没有,现在要做的事是一级一级地在这个目录下建子目录,像这样:“ C:\My Documents\Arduino\tools\ArduBlockTool\tool\”,然后把ardublock-all.jar文件拷贝到tool文件夹里,ArduBlock就安装成功了。

安装完ArduBlock,可以在Arduino IDE 的“ Tools”菜单下找到ArduBlock,如图2.3 所示。点击启动它,ArduBlock图形化界面就会出现在眼前。

2.3 按钮与灯的互动实例

下面开始编写我的第一个ArduBlock程序,任务很简单:按下按钮,Arduino控制器检测到与按钮连接的9号数字接口为低电平,于是它向13号数字接口发出命令,点亮LED灯,松开按钮,则熄灭LED。

观察如图2.4所示的ArduBlock程序,真如搭积木那么简单,还可以对程序进行中文批注,批注窗口可以拖动和缩放,不要让它挡住了程序。程序中的各个模块都是从左侧的模块库里拖进编程界面的,然后用这些模块积木进行拼接,拼接对了,会发出一声“ 咔”的清脆响声。如果你要删去模块,也很有创意,把不需要的模块往左边模块库方向拖出编程界面即可。还有一个好用的功能,如果程序比较长,除了可以通过拖动滚动条来找到需要查看的程序段,还可以通过编程界面右上角的鹰眼窗口来快速定位。

程序中“ 主程序 do”循环结构模块和“ 如果/否则”条件判断模块都是从“ 控制”模块库中提取的,“ 非”取反模块来自于“ 常用计算”模块库,而“ 数字针脚”模块和“ 设定数字针脚值”模块都是从“ 引脚”模块库拖进来的。

实际上,这个按钮与LED灯的实验任务还可以有更加直观通俗的编程样式,注意到图2.4没有?8个模块库中最后3个外设模块库,是国内3家Arduino制造商的产品模块库,区别于“ 引脚”通用外设模块库,Arduino制造商产品模块库里的模块不仅以文字来标识模块,而且还以更直观的产品图样来标识。

我现在用DFRobot模块库来编写程序,看看这个库都有些啥模块(见图2.5)。图2.4 按钮与灯的ArduBlock通用程序图2.5 DFRobot产品库文件图2.6 按钮与灯的ArduBlock产品图样程序图2.7 按钮与灯的实验全景图

用DFRobot模块库中提取的“ 按钮”与“ LED灯”模块编写的ArduBlock程序如图2.6所示。

我手头正好有DFRobot公司的Arduino控制器、XBee传感器接口板、按钮和LED硬件模块,也如搭积木般地快速组建出硬件实验系统,如图2.7所示。大家可以对比一下实验用到的软件和硬件,ArduBlock还是很直观、形象的,让人感觉蛮新鲜的!

2.4 ArduBlock与Arduino联机运行

ArduBlock是依附于Arduino官方软件的第三方图形化编程软件,两者需同时运行,用USB线把Arduino UNO控制器连接在电脑上,然后在Arduino 1.0编程软件Tools菜单里的Board和Serial Port选项正确设置控制器型号和通信串口号,再点击ArduBlock软件界面上方的“ 下载到Arduino”按钮,你会发现Arduino编程环境的“ 上传”图标也开始工作了,而且在Arduino编程环境里还居然生成了C代码(见图2.8),哈哈,现在可以通过图形程序与文本程序的对照,来深入学习ArduBlock编程了。图2.8 Arduino对ArduBlock软件的支撑界面图2.9 电位计与舵机实验全景图

2.5 电位计与舵机互动实例

刚才介绍的是如何用ArduBlock编程来实现数字量输入与输出之间的交互,下面谈谈如何实现模拟量输入来控制舵机角度,任务是用手指旋转电位计手柄,180°舵机上的乐高人偶也随之旋转,如图2.9所示。采用“ DFRobot”产品模块库编程,程序如图2.10所示。

主程序do语句反复由上而下地执行包含在其内的3个程序模块,第一个模块“ 给模拟量赋值”的作用是把模拟量接口0的电位计数值采样到Arduino的MCU中,采样值范围为0~1023,并赋值给变量“ pot value”;第二个模块“ 给模拟量赋值”的作用是把变量“ pot value”的数值范围从0~1023正比缩放为0~179,并把缩放后的数值赋值给变量“ servo position”;第三个模块“ DFRobot舵机”的作用是把变量“ servo position”的值输出给连接在数字接口9上的舵机。这样电位计的采样值就正比转换成了舵机角度值,舵机随电位计转动而转动。

若采用通用外设“ 引脚”模块库编程完成上述任务,其程序如图2.11所示。

2.6 ArduBlock使用心得

我向在青少年宫任职的朋友推荐了Arduino这种电子积木,他说早有耳闻,只不过Arduino编程用的是C语言,而且命令和注释都是英文,所以不方便教小孩子。我说:“ 你OUT了,国内新车间出品了一种拼图式全中文软件ArduBlock,能适合孩子们的。”听我一说,这位仁兄顿时高兴起来,立即下载软件,学习起来。

前不久,他打来电话说,已经把ArduBlock软件用在机器人兴趣班上了,上午还用软件中的超声波、舵机模块和程序控制模块为避障智能车编写了程序,下载到控制器,然后看到智能车能够在各种障碍物之间来回巡游,孩子们轻松地理解了智能车的“ 大脑”到底是怎样思考的。其实ArduBlock软件不仅可以用于青少年培训,也可以成为成年初学者进入Arduino世界的敲门砖。图2.10 电位计与舵机的ArduBlock产品图样程序图2.11 电位计与舵机的ArduBlock的通用程序3 零硬件成本玩Arduino文:宜昌城老张

如果初学者想先不花钱买硬件设备,是否也能体验一下Arduino系统呢?通过仿真的方法是可以的。这篇文章就介绍如何用Proteus软件来仿真Arduino的应用。

Arduino 的Proteus 仿真基本过程是:软件在Arduino IDE 编程软件里编写,硬件在Proteus ISIS软件模块里通过绘制电路原理图建立。

程序编写完后,选择Arduino IDE编程界面菜单栏的Tools菜单项,再选择Board →Arduino Duemilanove w/ATmega328,然后单击编译按钮,生成hex文件(二进制机器码文件),如图3.1所示。图3.1 Arduino程序的编译

视频:http://www.tudou.com/v/KUTrW264BZ4

有了hex文件,接着转到Proteus电路原理图,双击原理图中的型号为ATmega328P的单片机,出现对话框,通过浏览文件的方法确定hex文件的存储位置,并进行一些单片机工作参数的设置,最后点击Proteus ISIS软件界面左下方的播放按钮,就可以看到Arduino在Proteus仿真环境中的运行效果了。

图3.2所示的电路图是一个最简单的Arduino项目实例,任务是让连在Arduino数字端口13上的LED不断闪烁。要想成功仿真这个项目,有两点要特别注意,一是Arduino程序的hex文件生成和位置确定,二是Proteus原理图中ATmega328P芯片中的hex文件加载和工作参数设置。

Arduino程序编译之后,hex文件会自动删除,而在Proteus仿真时需要使用hex文件,因此需要对Arduino IDE 的默认设置进行修改。方法如下:首先要建立一个文件夹(可以随便取名),用来放置hex 文件,我建立的是“ d:\Arduino_Hex”。然后单击Arduino IDE 菜单栏的File → preferences,打开对话框(见图3.3),把“ Show verbose output during”的两个参数项打勾,并双击preferences.txt文件,找到文件所在位置,再双击,用记事本打开文件。这时要单击Preferences对话框下方的“ OK”按钮,接着关掉Arduino IDE。最后,在刚才打开的preferences.txt文件的末尾加入一行“ build. path=d:\Arduino_Hex”并保存。这样,以后你再编译Arduino程序,就可以在“ d:\Arduino_Hex”中,看到编译的hex文件了。图3.2 Arduino项目——“ LED闪烁”的硬件原理图

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载