Arduino可穿戴设备开发(txt+pdf+epub+mobi电子书下载)


发布时间:2020-07-23 22:34:41

点击下载

作者:(瑞典)托尼·奥尔森(Tony Olsson)

出版社:机械工业出版社

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

Arduino可穿戴设备开发

Arduino可穿戴设备开发试读:

前言

从我拿起第一块Arduino板算起,时间差不多已经过去了10年,那时我还是马尔默大学交互设计专业的一名学生,有一天教室来了一个大胡子西班牙人,他说,(更确切地说是宣布)他能在一周之内传授给我们电子学的全部知识,并教会我们如何针对微处理器编写程序。当然,由于我一点也不了解电子学,也从未想过学习它,所以我对他的话不以为然。

那个西班牙人有一套新颖的教学方法,也是我之前从未见识过的教学方法。他希望不是通过书本而是通过实践来教我们。有一个同学当时指出我们中的大多数人对电子学一窍不通,那么怎么能指望我们用它来做事?西班牙人的回答是:这并没有关系,即使你们对正在做的事情一无所知,也同样能够做事,你们可以通过做来进行学习。

一刻钟后,我们都将一个小灯泡连接到了Arduino板上,并且成功地为这个灯泡编好了程序,使得它能够自行打开和关闭。让我困惑的不仅是在如此之短的时间内所取得的成果,还包括接下来真正具有意义的那部分内容,我们正在通过实践进行学习。

大胡子西班牙人就是David Cuartielles,2005年冬,他刚刚和Massimo Banzi一起发明了Arduino板,在他们发明了Arduino板后不久,Tome Igoe和David Mellis加入了他们的团队。正如他们所说,其余的事情都是过眼烟云。我仍然记得那一天当看到闪闪发亮的灯光时自己内心受到的触动,就如同发生在昨天一般。我希望能学习更多知识,做更多的事情。然后David第二次给我们讲了重要的课,即学习更多知识的最佳途径就是和别人分享知识。然而,因为我没有什么知识可以谈论,所以我再次产生了疑问,但是在接下来的一课中我明白了:即使你只知道一点,也足以帮助那些完全不懂的人。

不久之后,我发现一个被称为可穿戴计算的领域,它的理念是用不同的方式发明一项技术并将其应用到人体上去,这听上去就如同你没有任何先验知识就能学习电子学并进行程序设计一样疯狂。由于受到Arduino和它的团队成员的启示,我一头扎进了这个领域。在这个新领域,我从Steve Mann和Leah Buechley的工作中找到了新的灵感。Mann现在是多伦多大学的教授,他在20世纪80年代研制出了自己的可穿戴计算机,当时大部分工作都是他独立完成的。Buechley是MIT的教授,他曾经利用Arduino开发出了一个专门针对可穿戴环境的原型平台。他们都迎难而上地完成了自己的工作。我再次受到启发,也开始开发自己的可穿戴设备,同时还教别人如何开发可穿戴设备。当我收获了足够多的技能,便开始将它们记录下来。当开始分享自己的作品时,我发现Arduino社区真正令人惊奇的是全世界热衷于利用电子学干点事情的人们。

可以肯定地说,如果没有这些人,我永远也不可能写出一本书,所以我要向所有人表达我的谢意。我还要感谢你拿起了这本书,你也许是个新手,也许是个行家,但这没有关系,本书基于的理念就是任何人都能通过实际去“做”这一简单原则学习任何知识。如果你已经是一个行家了,那么在“做”事情的过程中总能学到一些东西。

所以我希望你能够从本书创建的项目中获得知识和灵感,并祝愿你在创建项目的过程中一帆风顺。本书内容

第1章介绍安装开发环境的基本步骤以及如何开始编写代码,还有如何制作一块电路板来控制LED。

第2章讲授传感器连接以及从传感器中获取数据的相关内容,还会介绍从简单到复杂的数字和模拟传感器。

第3章介绍本书的第一个项目,其目标是制作一副自行车手套,首先,我们将介绍LED的使用以及如何控制LED,然后介绍如何应用传感器进行一些简单的手势识别。

第4章将教你制作一副可编程的LED眼镜,这副眼镜的前方覆盖有可编程的LED以显示不同的图案和形状,此外还会介绍制作一副太阳镜的过程。

第5章重点讨论如何制作一个腕戴式GPS跟踪设备,信息被显示在一个小型的LCD屏幕上。该章还包括如何制作一个将元器件容纳其中的盒子,以便能将GPS跟踪设备佩戴在手腕上。

第6章讨论近场通信(Near Field Communication,NFC)技术和伺服电动机,以及如何将它们组合装入智能门锁。该章还包括如何设计NFC标签以及制作可充当门锁钥匙的可佩戴的首饰。

第7章讨论低功耗蓝牙技术以及如何在可穿戴项目中实现该技术,该章介绍了Blend Micro电路板以及如何使用该电路板创建项目,连接你的手机。

第8章介绍Wi-Fi Particle Core电路板以及它的Web集成开发环境(IDE),该章还将讨论如何连接在线服务。

第9章讨论智能手表的制作,智能手表会接入互联网并应用在线服务创建可在小型OLED显示屏上显示的定制消息。

在线章节(第10章)是在第7章的基础上进行扩展的,讨论了小型屏幕以及如何通过蓝牙与屏幕进行交互,从而使其变身为交互式姓名牌,本章可在https://www.packtpub.com/sites/default/files/downloads/ArduinoWearableProjects_OnlineChapter.pdf上获取。你需要为本书所做的准备

从Adafruit网站https://learn.adafruit.com/getting-started-with-flora/download-software上下载和安装预先配置好的Arduino集成开发环境。

在https://build.particle.io/login上注册一个免费账号获得Particle Build Web IDE。

在IFTTT网站https://ifttt.com/上注册一个免费账号。电路板

下面是本书需要的电路板清单:

·Adafruit Trinket(迷你微控制器),5V逻辑电平

·Adafruit Pro Trinket,5V、16MHz

·FLORA——可穿戴电子平台:兼容Arduino

·有片上天线Rev 1.0的Spark核心板

·Redbear Blend Micro BLE电路板元器件和工具

下面是本书所需的所有元器件和工具的清单:

·电烙铁

·GA1A12S202对数尺度模拟光线传感器

·长弯曲传感器

·光敏电阻

·Adafruit公司的TSL2561数字亮度/照明度/光线传感器

·面包板接线套装

·Flora可穿戴终极GPS模块2

·分辨率为128×32的IC OLED单色图形显示器

·Adafruit片状LED

·3.56MHz RFID/NFC标签

·面向Arduino的Adafruit PN532 NFC/RFID控制器面板及附件

·锂高分子电池,3.7V、1200mA·h[1]

·SHARP内存显示器,1.3英寸、分辨率96×96、银色机身、单色显示

·小型鳄鱼夹测试导线

·锂高分子电池,3.7V、500mA·h

·分辨率为128×64的13英寸单色OLED图形显示器

·Adafruit Micro Lipo w/MicroUSB接头——USB锂充电器(V1)

·全尺寸面包板

·OLED分线板,0.96英寸,16位色/带microSD卡托

·半尺寸面包板

·USB连接,6英寸A/MiniB

·FLORA 9自由度加速计/陀螺仪/磁力计——LSM9DS0(V1.0)

·锂高分子电池,3.7V、150mA·h[2][3]

·绕线组挂钩(22 AWG单芯线),6×25英尺

·对角剪线钳

·W形三臂辅助放大镜/放大镜工具本书的读者对象

本书的读者要熟悉Arduino原型制造平台,并且具有一般硬件工具的使用经验。本书约定

新术语和重要字词用黑体表示。例如,在屏幕上的菜单或对话框中显示的文本就像这样:“单击Next按钮转到下一个屏幕”。

注意 警告或重要的注意事项显示在这样的文本框中。

提示 技巧和窍门显示在这样的文本框中。读者反馈

时刻欢迎来自读者的反馈,以让我们知道你对本书的想法——喜欢哪些内容或者不喜欢哪些内容,读者反馈对于我们改进书籍以便让你从中得到更多的收获非常重要。

只要向feedback@packtpub.com发送电子邮件并在邮件主题中注明书名,就可以向我们提供一般性反馈。

如果你在某个主题上具有专长,并且有兴趣写一本书或者为某本书贡献部分内容,请在www.packtpub.com/authors查阅我们的作者指南。读者支持

既然你已经成为Packt出版社的尊敬读者,我们就应该告诉你一些事情,以便你能通过购买本书获得最大的价值。下载示例代码

可以用你在http://www.packtpub.com上的账号下载所有你购买的Packt出版社的图书的示例代码文件。下载本书的彩色插图

我们还提供带有本书英文原书所用截屏/图表的彩色插图的PDF文件,彩色插图可以帮助你更好地理解输出的变化,你可以从https://www.packtpub.com/sites/default/files/downloads/ArduinoWearableProjects_ColorImages.pdf下载该文件。问题

如果你对本书的任何内容有疑问,请向questions@packtpub.com发送邮件,我们将竭尽所能解答你的疑问。

[1] 1英寸=25.4mm。——编辑注

[2] AWG(American Wire Gauge),即美国线规,是一种定义导线直径的标准,AWG 前的数值表示导线形成最后直径前所需通过的孔的数量,数值越大,通过的孔就越多,直径也就越小。——译者注

[3] 1英尺=0.3048m。——编辑注第1章 初次相识与闪烁的灯光

本书的基础是Arduino平台,它表示3种不同的事物:软件、硬件和Arduino哲学。硬件即Arduino板,并且针对不同需求有多种版本的Arduino板,在本书中,我们将关注考虑了可穿戴需求的版本。用于为Arduino板编写程序的软件也被称为Arduino IDE,IDE(Integrated Development Environment)表示集成开发环境,是用程序代码编写程序的程序,为Arduino板编写的程序被称为草图,这一理念有助于编写程序,其工作方式类似于画板。如果你手头上有IDE,那么你可以很快就试着用它编写出代码,这也是Arduino哲学的一部分。Arduino基于开源哲学,这反映了我们该如何学习Arduino。Arduino有一个庞大的社区,可以从其中大量的项目中进行学习。

首先我们要有Arduino硬件,我们将用它和其他各种电子元器件创建本书中的实例。当Arduino于2005年启动之时,只有一种硬件可供谈论,即串行Arduino板。从那时开始,Arduino板经过了几次演进,鼓励人们对Arduino硬件进行新的设计以适应不同需求,如果你对Arduino有一定的了解,也许可以从标准的Arduino板开始。今天已经出现了许多可满足不同需求的Arduino板,针对特定需求还出现了不计其数的“山寨”货,在本书中,我们将使用不同的专用Arduino板,例如FLORA板和Spark Core板。

Arduino软件(即Arduino IDE)是为项目编写程序的工具,IDE是为硬件编写程序的软件。一旦程序在IDE中编译好之后,就可以将其上传到Arduino板中,板载处理器将完成程序规定的工作。Arduino程序也被称为草图,草图这个名称借用了另一个被称为Processing的开源项目和软件。Processing是一个为数字艺术家们开发的工具,其理念就是将Processing当作一个数字画板使用。

草图以及Arduino背后其他方面的理念被我们称为Arduino哲学,它是构成Arduino的第三项事物。Arduino是基于开源的,开源是一种授权模型的类型,在这种授权模型中你可以基于原始的Arduino板免费开发自己的设计,这也是为何你会发现大量不同型号的Arduino板及其“山寨”货的原因之一。开源还是一种免费共享想法和知识的哲学,Arduino社区已经茁壮成长,在其中可以找到大量的优秀资源,还可以结识志同道合的朋友。

唯一的问题也许是从何处入手?类似于本书的书籍有益于入门或进一步提升自己的能力。本书的每一章都是基于从零开始直到一个“原型”完成的项目,我将所有的项目称为原型是因为它们都是半成品,本书还有一个目标,就是让你在学完一章后,对这些项目能进行进一步开发。随着知识的增长,你可以开发能在原型上运行的新草图、开发新的功能,或者改变其物理外观以满足你的需求和偏好。

在本章中你将会看到:

·安装IDE。

·用IDE进行工作,编写草图。

·FLORA板的布局。

·将FLORA板连接到计算机上。

·将LED连接到FLORA板上并进行控制。1.1 可穿戴设备

本书是关于可穿戴设备的,所谓可穿戴设备的定义是可穿戴在身体上的计算设备,计算设备可以进行任何种类的计算,一些人认为机械式时钟就是第一种计算机,因为它对时间进行了计算。根据这个定义,可穿戴设备已经出现了几个世纪了。怀表是在16世纪发明的,表就是一种计算时间的小型设备。你的脑海中可能还会闪现出另外一个可穿戴技术的例子:眼镜,眼镜也已经出现很久了。即使眼镜不符合可穿戴设备更明确的定义,还是可以将其当作人类如何对材料进行加工使其适应自己的身体,从而获得新能力的一个不错的例子。如果我们感觉寒冷,就会穿上衣服保暖;如果我们摔断了腿,就会利用拐杖行走;甚至即使某个器官坏掉了,我们同样可以植入一个仿照其功能的设备。人类具有开发新技术以扩充人体功能的悠久传统。

伴随着军事、医疗以及专业运动等领域的技术发展,可穿戴设备具有悠久的传统。但在最近几年,面向消费者市场,越来越多的设备被开发出来了,今天我们拥有了智能手表、智能眼镜以及各种不同类型的智能服装。

在本书中,我们将继续坚持老传统,为了让你学习电子学和编程知识,开发若干可穿戴设备项目,其中的一些项目只是为了自娱自乐,而另一些项目则有特定的应用。本书所有章节的知识都是由前面的章节发展而来的,一开始的讲解进度会较慢,而后面的章节无论从硬件还是软件方面都会逐渐变得复杂。假如你已经熟悉了Arduino,那么你可以从任意一个项目入手,如果你发现所选的项目太难了,那么你可以看看之前的章节。如果你彻头彻尾是一个Arduino新手,那么请继续阅读本章,因为我们将详细介绍Arduino IDE的安装以及如何开始编写程序。1.2 安装和使用软件

本书的项目都是以Adafruit公司制造的不同的电路板为基础,在本章的后面将会详细介绍其中的一种——FLORA板,同时还会介绍一下其他不同的电路板。这些电路板自身都带有Arduino IDE的某个修改版本,这也是我们将在本章中使用的IDE。Adafruit IDE看上去和Arduino IDE几乎一模一样,例如,FLORA板所基于的微处理器和Arduino Leonardo板相同,也可以使用标准的Arduino IDE,但在编程时要应用Leonardo板的选项。由于使用的是Adafruit IDE,所以使用FLORA板也就名正言顺了。

为了下载IDE并获取安装指南,请转到Adafruit网站https://learn.adafruit.com/getting-started-with-flora/downloadsoftware,按照网站的步骤执行。

请根据你的操作系统下载相应的软件,安装软件的过程取决于你的操作系统。安装指南可能会随着时间有所变化,并且针对不同的操作系统有所不同。如果你使用OS X操作系统工作,那么安装将是一个相当简单直接的过程。在Windows操作系统上,你需要安装一些附加的USB驱动程序。在Linux上的安装过程取决于你使用的Linux发行版本。要想获取最新的安装指南,请查看Arduino网站上针对不同操作系统的相关内容。1.2.1 Arduino IDE

如果需要的话,可以在下面的网站https://www.arduino.cc/en/Main/Software上找到原始的Arduino IDE。在本书中,你最好坚持使用Adafruit版本的IDE,因为它支持最通用的Arduino板。1.2.2 首次接触IDE

IDE是我们将要进行所有编程工作的地方,首次打开IDE时,它看上去应该如图1-1所示。图1-1 Arduino IDE

当你打开新的草图时,占据IDE大部分的白色区域是空白的,这就是你之后将要编写代码的区域。首先我们需要熟悉IDE的功能。

在IDE的左上角你将会看到5个按钮,第一个按钮看上去像一个勾选符号,它就是编译按钮,当你按下该按钮时,IDE就会尝试编译你在草图中编写的代码,如果编译成功,你就会在IDE底部的黑色窗口中收到一条信息,如图1-2所示。图1-2 编译消息窗口

当在IDE中编写代码时,我们将使用所谓的第三级编程语言,Arduino板载微处理器的问题在于很难使用原生的语言与其进行通信,这也是为何采用人类可读的命令开发第三级编程语言的原因,后文你将看到的代码会被翻译为Arduino板可理解的代码,即代码编译后的结果。编译按钮还会对代码进行逻辑检查以确保其中不包含任何错误。如果有错误,则IDE黑色框中的文本会显示为红色,并通过黄色高亮显示指出错误所在的代码行。不要担心错误,它们通常都是一些拼写错误,即使对于经验最丰富的程序员而言这种错误也会频繁出现。图1-3显示了一条错误消息。图1-3 编译窗口中的错误消息

紧挨着编译按钮你会发现上传按钮,一旦按下这个按钮,它完成的工作与编译按钮相同,如果草图没有错误,它将会把代码从计算机发送到电路板中。

紧接着的3个按钮是用于打开新草图、打开已有草图或保存草图的快捷按钮(见图1-4),请确保在草图上进行工作时每隔一段时间就保存它一次。如果发生了某种情况而使IDE意外关闭,草图不会进行自动保存,所以每隔一段时间就手动保存是一个不错的主意。图1-4 快捷按钮

在IDE较远的右侧你会发现一个看上去像放大镜的按钮,它用于打开串口监视器,用该按钮将会打开一个新窗口,可以让你观察由计算机(电路板)发出或向计算机(电路板)发送的通信状态,这对于很多事而言非常有用,我们将在第2章对比进行详细介绍。

在屏幕上方你会看到一个经典的应用程序菜单,根据操作系统不同,该菜单看上去有少许不同,但遵循的结构都是一样的。在File菜单下你将会看到IDE自带的用于打开之前的草图以及各种示例草图的菜单,如图1-5所示。在Edit菜单下你将会看到用于编辑代码的各种不同选项以及快捷命令。在Sketch菜单中你将找到与IDE窗口中的按钮相同功能的命令。图1-5 File菜单

在Tools菜单(见图1-6)下你将会看到两个在将草图上传至电路板时非常重要的菜单。转到Tools|Board菜单,你将会看到众多不同类型的Arduino板,在该菜单中你需要选择正在使用的电路板的型号。在Tools|Serial Port菜单下需要选择连接电路板的USB接口。根据操作系统的不同,接口名称有所不同,在Windows中接口名称为COM*,而在OS X上,接口名称为/dev/tty.****。图1-6 Tools菜单

由于计算机内可能还有其他设备连接到了这个接口上,所以这些设备也会显示在列表当中,判定连接到电路板上的是哪个接口的最简单的方法是:

1)用USB连线将电路板插入计算机。

2)然后检查串口列表并记住哪个接口被占用了。

3)拔下电路板并再次检查列表。

4)列表中消失的电路板就是电路板所连接的接口,将电路板插回并在列表中选择它。所有连接到计算机上的Arduino板都被分配一个新的序号。

提示 在大多数情况下,当你的草图未被上传到电路板时,原因可能是你在Tools菜单中选择了错误的电路板型号或者错误的串口。1.2.3 了解你的Arduino板

正如之前提到过的那样,本书不打算使用标准的Uno Arduino板,它是多数人听到Arduino板时会想到的电路板。大多数Arduino板的变种或“山寨”产品使用的微处理器与标准Arduino板相同,而微处理器是电路板的心脏,只要它们使用的是相同的微处理器,那么就可以通过在Tools菜单中选择相应的标准Arduino板以正常对其编程。我们将使用Arduino IDE的修正版本,该版本的特色是支持本书将要使用的开发板型号。将其他电路板与标准的Uno Arduino板区分开来的通常是电路板的外形因素和引脚布局,在本书中,我们将使用一种被称为FLORA的电路板,该电路板是考虑到了可穿戴需求而制造的,FLORA所基于的芯片与Arduino Leonardo电路板相同,但是用到的组成元器件要小得多,并且被制造成圆形以便于在可穿戴环境下使用。你可以使用大多数Arduino板及其“山寨”产品完成所有项目,但是请记住项目的代码和结构可能需要进行一些修改。

FLORA板

在图1-7中你将会看到FLORA板。图1-7 FLORA板

除了外形因素之外,它与标准Arduino板最大的区别在于可用引脚的数量,引脚即FLORA板边缘的包铜区域,FLORA板上引脚的外形也和其他Arduino板有少许不同。在上面的示例中,FLORA板上的引脚孔和焊盘制作得要大一些,以便使其能够轻松地缝合到衣服上,在创建可穿戴设备项目时这种情况很常见,较大的引脚还可以使其能轻松地用鳄鱼夹搭建原型,我们将在本章的后面用到鳄鱼夹,如图1-10所示。从位于图1-7所示的电路板上方的USB接口右边开始,FLORA上的可用引脚如下所示:

·3.3V:稳压3.3V输出,最大电流为100mA。

·D10:具有脉宽调制(DWM)功能的10号数字引脚和10号模拟引脚。

·D9:具有脉宽调制功能的9号数字引脚和9号模拟引脚。

·GND:接地引脚。

·D6:具有脉宽调制功能的6号数字引脚和7号模拟引脚。

·D12:12号数字引脚和11号模拟引脚。

·VBATT:原电池电压,可用作电池电源输出。

·GND:接地引脚。

·TX:发送通信引脚或1号数字引脚。

·RX:接收通信引脚或0号数字引脚。

·3.3V:最大电流100mA的稳压3.3V输出。

·SDA:通信引脚或2号数字引脚。

·SCL:时钟引脚或具有脉宽调制功能的3号数字引脚。

正如你看到的那样,大多数引脚都有不止一个功能,最有趣的引脚是那些标记为D*的引脚,这些是我们用于连接其他元器件的引脚,这些引脚要么是数字引脚,要么是模拟引脚,数字引脚只能工作在1或0下,这意味着它们只能是打开或关闭,你可以在这类引脚上接收信息,但是我要重申一下,接收到的信息仅能用打开或关闭表示。

标记为PWM的那些引脚具有被称为脉宽调制的特殊功能,我们可以在这些引脚上控制输出电压电平。而模拟引脚可以处理范围为0~1023的信息。我们将在第2章中更为详细地了解这些引脚之间的区别。

3.3V引脚用于为连接到电路板上的任意元器件供电,在这里需要完成一个电子电路,所以有两个GND引脚。为了搭建电子电路,供电电力总是需要返回到它的来源之处,例如,如果你想要给一个电动机供电,那么就需要供电电力从一个用电线连接的电源发出,而用另一条电线将供电电力导回电源,否则电动机就不会转起来。

TX、RX、SDA和SCL是用于通信的引脚,我们将在本书后面的章节中看到如何用它们处理更为复杂的传感器。VBATT引脚用于输出与电源相同的电压,电源连接在图1-7所示的FLORA板下方的接头上。1.2.4 其他电路板

图1-8所示为将在本书中用到的其他型号的电路板。

在图1-8中,从左边开始的第一个是Gemma电路板;中间的是Trinket电路板;右边是Trinket pro电路板。Gemma电路板和Trinket电路板都是基于ATtiny85微处理器的,它是一个要小得多也便宜得多的处理器,但是自身具有一些限制。这些电路板只有3个可编程引脚,在功能上有所不足,不过这也是针对尺寸进行的补偿。Gemma电路板和Trinket电路板之间的区别在于外形,但是Trinket电路板还缺少电池连接器。Trinket Pro电路板运行在Atmega328芯片之上,该芯片与标准Arduino板上用于处理USB通信的芯片相同。图1-8 Gemma、Trinket和Trinket pro电路板

该芯片具有20个可编程引脚,但还少了电池连接器。本书使用不同型号的电路板的原因是:不同的项目需要不同的功能,并且在某些情况下,用于添加元器件的空间会受到限制。尽管如此,但也不要担心,因为针对它们的编程方式都是相同的。1.2.5 连接和测试你的电路板

为了确保你已经正确安装了IDE并确认电路板正在工作,我们需要用一根USB数据线将其连接到你的计算机上,如图1-9所示。图1-9 USB数据线

数据线的小接头连接到你的电路板上,而较大的接头连接到你的计算机上。只要电路板接到了计算机上,USB接口就会为电路板供电。第3章将会详细介绍如何用电池为电路板供电。

将电路板连接到计算机之后,请打开IDE并输入如下所示的代码,请遵循以下草图编写的基本结构。

1)首先,在草图最上方声明变量。

2)你所进行的设置是电路板启动后运行的第一个代码段。

3)然后添加循环函数,这是要运行的第二个代码段。最后保持循环运行一直到电路板被关闭为止。

第一行代码将7号引脚声明为一个整数并将其命名为LED。整数是一种数据类型,用int声明变量可以让你在内存中存储整数,在FLORA板上有一个与7号数字引脚连接的板载小LED。接下来的部分是void setup(),它是使得你的草图能进行编译所必须具有的函数之一,所有函数都用花括号表示函数的开始和结束位置,括号“{”表示开始,括号“}”则表示函数结束。我们在void setup()中声明了所使用的引脚模式,所有数字引脚既可用作输入,也可用作输出,输入用于读取连接到该引脚的设备的状态,输出则用于控制连接到该引脚的设备。本例中我们使用的7号引脚与板载LED连接,为了控制该引脚,我们将其声明为输出。

提示 如果你使用的是不同的电路板,那么请记住在代码中修改引脚编号。在大多数其他Arduino板上,板载LED连接的是13号引脚。

void loop()函数是“魔法”发生之处,在这里放入控制板上引脚的实际命令,在前面的代码中,我们干的第一件事是用digitalWrite()命令将led引脚置为HIGH,digitalWrite()函数是带有两个参数的内置函数,第一个参数是引脚编号,在本例中,我们将值为7的变量led带入该参数,可以分别用HIGH或LOW将引脚打开或关闭。

然后用delay()命令在程序中设置了一个暂停,这个延时命令带有一个参数,即你希望程序暂停的毫秒数。在这之后,我们使用和之前相同的命令控制引脚的状态,但是这次我们将其设置为LOW,这和关闭引脚的意思是相同的。然后我们再等待1000ms。在草图运行到循环函数结束时,会从循环函数的开始处再次运行并保持循环过程直到上传一个新草图为止,即直到按下FLORA板上的重启按钮或者直到切断供电为止。

既然已经准备好了草图,那么可以按一下上传按钮,如果所有事情按计划进行,那么板载LED应该开始具有1s延时的闪烁。即使电路板被关闭,所上传的草图也将驻留在电路板上,直到上传一个新草图重写原有的草图。如果在上传代码时遇到问题,请记住执行以下步骤:

·检查代码是否有错误或错误拼写。

·检查连接和USB数据线。

·确认你选择的电路板型号是否正确。

·确认你选择的USB接口是否正确。1.2.6 编程时的一些注意事项

既然知道了IDE和电路板都能工作,那么我们将要多了解一些代码。用Arduino板编写程序是个相当简单直接的过程,但与其他任何技能一样,它需要一些练习。如果你没有马上理解或者无法让设备按应有的样子工作,那么你就绝不会感到乏味无趣,这是我们将其称之为搭建原型的一部分,当你在为某种设备搭建原型时,也许对要做什么有清楚的概念,但是缺乏完成它的清晰计划。搭建原型的主要部分是试错的过程,如果你进行了某种尝试而没有成功,那么就应该进行其他尝试。一个常见的误解是电子设备很容易损坏,如果连接的方式不对,元器件的确可能损坏,但损坏元器件在你理解元器件是如何工作的过程中也是有所帮助的。不过由于代码错误是很难造成元器件损坏的,再次说明一下,上传错误的代码可能会损坏大多数Arduino板上的微处理器,但IDE几乎不会让这种事情发生,因为IDE在将代码上传到电路板之前总是会检查代码中的错误,从最严格的意义上讲,微处理器是符合逻辑的。

在学习编程时,最重要的部分是学习如何调试,调试是找出问题所在的过程,编译错误是最明显的,因为IDE会让你知道草图的某处存在错误。但是IDE只能检查出语义错误,它并不知道你要达到什么目的,你的草图也许会编译通过,但是仍然无法完成你想要它做的事情。你对各种命令理解得越深入,调试过程就会变得越快。在本书中,我会对各章使用的各种命令进行解释,不过即使本书用到了大量的命令,也不可能囊括所有命令,如果你想对所有命令进行更多的学习,在Arduino网站上有一个参考列表(http://arduino.cc/en/Reference/HomePage),你可以在其中找到它们。本书面向的是具有一些Arduino编程经验的读者,因此并不对编程过程进行介绍。如前所述,假如你不知道如何编写程序,也不要觉得被排斥在外,因为即使对编程没有较深入的了解,而能领会所有的项目也是可能的。按照本书中的指导和代码,你应该可以创建出与你自己的项目有关的所有工作版本。接下来的草图都是供你继续学习的示例,其中包含一些基本的函数和命令。提示 请注意所有前面使用了//或者/*……*/的代码都是注释,//(注释符)对编译器隐藏了一行代码,注释不是草图的一部分。/*……*/(注释符)隐藏了分布到多行的注释,所有写在/*和*/之间的内容都将从编译器中隐藏掉。对代码添加注释说明是个不错的编程习惯。

1.外接LED与闪烁的灯光

既然我们已经用电路板尝试做了一个相当简单的实例,那么此时可以添加一些外接元器件:

·FLORA板

·USB数据线

·两个鳄鱼夹

·安装在PCB上的LED

提示 下载示例代码

用你在http://www.packtpub.com上的账号下载所购买的所有Packt出版社的书籍的示例代码文件。如果你是在其他地方购买的本书,那么可以访问http://www.packtpub.com/support并注册,这样我们就可以通过电子邮件直接将示例代码文件发送给你。

在这个草图示例中,我们将使用外接LED,但是如果你愿意,也可以继续使用FLORA板上的板载LED。图1-10所使用的LED是一种特制的放置在PCB上的贴片LED,如果你使用的是其他LED,那么请确保其与正确的电阻配对。在图1-10所示的定制LED中,电阻安装在PCB(Printed Circuit Board,印制电路板)上。这种LED一开始就是针对可穿戴制造的,你可以在大多数专业的网上商城中找到它们。

为了将LED连接到电路板上,我们用到了鳄鱼夹。鳄鱼夹是末端带有金属夹的标准连线,对于制作原型非常有用,和类似于FLORA板的可穿戴Arduino板配合使用,效果尤其不错。LED具有一个正极和一个负极,在图1-10所示的LED中,PCB上用符号+表示正极,用符号–表示负极。正极连接FLORA板的D12引脚,为了闭合电路,负极连接GND引脚。图1-10 用鳄鱼夹连接到电路板上的LED

2.不同速率的闪光

如下所示的草图展示了如何使用for循环让LED以不同的速率闪光:

在这个草图中,我们使用了3个不同的for循环,在for循环中声明了计数值、结束条件和计数值增长,本草图中的所有计数值都是从0开始,并且只要计数值小于5,for循环都将持续进行下去。每当for循环完成一次循环,计数值都加1。在for循环内部首先打开LED,然后进行一段时间的延时,延时的时间是3个for循环的差别所在。

然后LED被关闭,并产生一个新的延时,当第一个循环满足结束条件时,紧接着就开始第二个循环,以此类推下去。如果你知道自己想要将特定的事情执行几次,那么for循环非常有用。

正如你在前面的草图中看到的那样,打开和关闭LED的步骤对于所有的for循环来说都是一样的,这是在你的代码中引入一个函数的良机,函数有利于节省内存空间。就我们正在处理的这个草图而言,由于草图规模太小,所以内存空间不成问题。但是随着你向更高阶段迈进,草图的规模会变得越来越大,内存空间就会成为一个问题。根据你使用的电路板,对于究竟能创建多大规模的草图存在一个限制。优化代码有利于节省空间,此外这也是一种良好的编程习惯,因为这样可以让你更好地全面观察你的代码:

blinkLed函数被声明为带一个参数delayTime,该变量用于在函数中设置闪烁的速率。1.3 本章小结

在本章中,我们已经见识了FLORA板的各种部件以及如何安装IDE,我们还制作了几个小型草图让板载LED工作,另外还搭建了第一个使用外接LED的电子电路。

下一章将介绍一些适用于可穿戴设备的模拟传感器,我们将继续用LED作为输出,以展示如何与从传感器采集而来的数据进行交互以及如何控制LED的亮度。第2章 用传感器进行工作

传感器是一种能够探测变化或事件并提供相应输出的设备,它的输出通常是一种电子信号,例如,光敏电阻(Light Dependent Resistor,LDR)会输出电压,电压值取决于投射到传感器上的光照程度。当与电子元器件一起工作时,传感器通常分为模拟传感器和数字传感器,数字传感器只能探测两种状态:要么是开,要么是关。数字传感器只能区分是否有电压流入其中,在代码中,转换为1意味着有电压流入,而转换为0意味着没有电压,这就是它们被称为数字传感器的原因,因为它们只能在0和1下进行工作,这意味着这些传感器只具有两种状态:开或关。例如按钮就是一种数字传感器,它只有两种状态,即是否被按下。

但是模拟传感器可以探测一定范围内的值,例如,LDR就是一种根据投射到传感器表面上的光照程度改变输出电压的模拟传感器。微处理器的问题在于其与生俱来就是数字式的,默认情况下不知道如何处理模拟信息,这也是几乎所有Arduino板上都有模拟引脚的原因,这些Arduino板内置了模数转换功能。这些引脚能够读取0~1023的数值,在本章,我们将要看一看一些对于可穿戴项目非常有用的不同的传感器,并向还不怎么熟悉编程的读者介绍这些传感器。

在本章,我们将会看到一组模拟传感器,它们用于跟踪运动和光线。在头两个例子中我们将关注独立的传感器,在用面包板搭建电路时将用到它。剩下来的例子将用到包含搭建在PCB上的预制电路的传感器。在本章,我们还会看到与原型电路板通信的不同方法以及如何将数据送回计算机。

提示 如果用完了数字引脚,那么总是可以使用模拟引脚来读取数字传感器,如果将其当作模拟引脚进行读取,只要记住,读取的输出是0~1023的某个值,而并非HIGH或LOW。模拟引脚也可以当作数字引脚使用,例如模拟引脚A1与数字引脚14相同,等等。2.1 传感器

本章将介绍弯曲传感器、压力传感器、光线传感器、加速计、陀螺仪和罗盘传感器,传感器是一种可以探测各种不同种类的事件或变化并能提供相应输出的设备,这种设备会根据外部条件改变一些特性,并可连接到电路上对信号进行转换,以便可让微处理器进行解读。

在使用某些传感器时,你需要自行搭建电路并通过代码解读传感器提供的数据,一些复杂的传感器具有内置通信协议,可以让它们提供与其功能相对应的数据。传感器的灵敏度指的是输出数据能产生多少变化。2.1.1 弯曲传感器

我们将要尝试的第一个传感器是弯曲传感器,有时它也被称为柔性传感器,它的名称就能很好地暗示这种传感器的种类。顾名思义,这种传感器可以感知弯曲,这种传感器和大多数模拟传感器的工作方式类似,都是建立在同一原理之上的,即它们都可以获得一个电压输入,传感器表现得如同一个电阻一般,可以改变自己的电阻值。在图2-1中,你将会看到本实例所需的所有元器件。其中,标号为1的元器件是一个普通电阻,电阻值为10kΩ。电阻是你所能找到的最常见的电子元件之一,在几乎所有的电子设备中都会用到,电阻用于限制电子信号中电流的流动,这意味着如果你在电阻的一端加上电压,它就会在另一端输出一个较低的电压。以本实例为例,我们需要用电阻制作所谓的分压器,以便能从传感器中获取令人满意的值。标号为2的元器件是弯曲传感器,这种传感器可以探测一个方向的弯曲。当不接触它时,弯曲传感器的电阻值约为10kΩ,当使其完全弯曲时,电阻值约为20kΩ。标号3的元器件是前一章使用的FLORA板。

标号4是面包板,从技术上而言,它并不是一个元器件,面包板用于借助电子元器件搭建原型。当电子装置制作好的时候,元器件都是被焊接在一起的,但是在你展示元器件如何连接在一起以及制作的结果时,最好在进行焊接之前尝试着进行连接,此时就是面包板派上用场的时候。图2-1中的面包板是标准面包板的小型化版本,面包板上的接头在中部进行了垂直方向的连接,在边缘进行了水平方向的连接,+号和–号线标志水平方向的连接,而在面包板中间部分的接头按照各数字编号从a到j进行连接。图2-2展示了面包板内部的接头是如何连接的。图2-1 1为10kΩ电阻;2为弯曲/柔性传感器;3为FLORA板;4为面包板图2-2 面包板的内部连接

面包板使电路变得笨重,但是它们并非用于最终的设计,而主要是在将元器件焊接在一起之前用于线路连接尝试。

此外还添加了导线,所以之后可以将传感器连接到FLORA板上,图2-3所示为制作完成的必要的线路连接。图2-3 面包板线路的特写

在电阻的左边,有一条导线连接FLORA板的3.3V输出,电阻没有极性,这意味着连接的方向无所谓,就是说无论用哪个连接方向,工作起来都是一样的。

在电阻的右边,我们将其中一个接头连接到弯曲传感器上,另一个接头连接到FLORA板的模拟引脚上,弯曲传感器的第二个接头接地。在这个电路中,电流将通过电阻并得到限制。在电阻的另一端,一部分电流流经传感器,一部分电流则流回模拟引脚。当我们让传感器弯曲时,根据弯曲的方式,会让电流更难或更容易流经传感器,而不能流经传感器的电流溢出部分将流回模拟引脚,我们将通过FLORA板读取这部分电流。

图2-4展示了如何用鳄鱼夹将所有的元器件连接到FLORA板上。

·1号导线连接3.3V引脚。

·2号导线连接D10引脚。

·3号导线连接GND引脚。图2-4 连接弯曲传感器

为了检查各元器件的工作状况,我们需要将FLORA板连接到计算机上并编写一些代码。对于本章所有的传感器示例而言,我们都将使用串行通信库将数据送回Arduino IDE的串口监视器。串行通信并不是在每个草图中都会用到,所以为了节省内存空间,将执行通信的代码放入一个库中,当我们需要时再进行调用,这也是所有串行通信命令都以Serial.开头的原因,这意味着我们在后面调用的是来自串行通信库的命令。串行通信只是众多可用的通信协议之一,通信协议本质上就是关于两台设备为了进行通信该如何动作的一套规则。

setup是初始化串行通信之处,当完成初始化之后,总是需要声明通信速率,通信速率以波特(baud)计算,即相当于每秒的比特数。通信速率是固定的,所以假如你想要看看哪些速率可用的话,请打开串口监视器,那么应该能看到如图2-5所示的内容:

提示 当使用串行通信时,总是会在草图中用到延时,以便给接收端一定的时间读取数据。如果不需要以人类阅读的速度读取数据的话,30ms的延时就足够了。

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

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载