3.1   设备——通向显示世界的接口

3.1.1 为什么要学习设备的相关知识

        经过前两章的学习,想必各位读者已经掌握物联网这个词描绘出的世界和用于实现物联网的系统架构了。基于这点,这一章将会为大家介绍在物联网世界中起着核心作用的因素,即设备的相关知识。
        可能有人会觉得自己没有必要学习设备的机制,但是,请这样认为并想赶快读完本章的读者稍稍放慢速度,因为本章正是为了那些以往没有从事过设备开发的读者们编写的。
        而且,所有的工程师都有必要加深对设备的理解,因为这关系到“连通性”给设备开发带来的变化。这里我们就先来看看这些变化。

3.1.2 连通性带来的变化

        很显然,智能手机和随身听等伴随大家日常生活的设备都是由硬件和软件组成的。硬件经过了精致的设计,软件则用来控制硬件。设备开发的本质就是在最大限度上实现硬件和软件的完美配合。对于平日里从事Web 应用程序开发的各位软件工程师来说,提到设备开发,或许大家就会有一种敬而远之的感觉。在考虑独立开发某种设备的时候,肯定会有人担心以下这些问题。

        ● 是否需要对硬件有深入的了解
        ● 开发设备控制软件是否需要专业知识
        ● 开发硬件是否需要特殊的开发环境

        就结论而言,这些问题的答案很统一:需要。就像大多数人都知道的那样,用于控制设备的软件有一个明确的种类,那就是“嵌入式软件”。开发嵌入式软件需要极强的专业性,即使是在物联网的世界,这一本质也基本没有什么变化。
        那么,物联网会带来哪些改变呢?解开这个问题的关键词就是“连通性”。连通性一词表示的是机器和系统间的相互连接性和结合性。物联网设备试图经由网络来“连接”外部系统,并通过以下技术革新让以往人们无法想象的一些设备都具备了连通性(图3.1)。

        ●硬件的进化使设备的小型化和高级化得以发展
        ●能够在广域条件下轻易地利用高速度 / 高品质网络的环境得以实现

        有些设备不具备连通性,这很正常,因为它们本身就是用来独立实现功能的。而且,这种设备一旦出了库就没法再变更商品规格了,所以需要花大把的时间和成本来开发。
        一方面,物联网设备本身的结构非常简单,提供的是一种与云服务或智能手机等外部机器组合在一起的一体化服务。这种情况下,用于设备的应用程序能够很轻松地得到更新,在产品发布后还能一边从用户处获取反馈,一边不断改良软件(包括设备自身的固件)。此外,还能够在云端对大量的设备信息进行整合和加工,以一个应用程序为接口向用户提供有益的信息。
        另一方面,硬件开发本身的成本竞争正在不断激化,设备开发必然会促进设备自身的高级化。而围绕设备开发,将服务整体作为一个生态系统来进行最适宜的设计规划,其重要性则不言而喻。想必在这股潮流中,存在差异性的部分也将会多元化。例如,构建算法,来为用户提供统一处理从设备处采集到的信息并进行高级分析的服务;或者构建应用程序,来实时反映设备不断变化的情况等。这些物联网设备的与众不同之处也必定会显现出来。
        为了尽最大努力回应这种需求并无缝开发应用了物联网设备的服务,从事开发(设备本身的开发,连接设备的云端系统以及利用它们提供服务的应用程序等的开发)的工程师在开发的同时要达成共识,这点是非常重要的。在这个过程中,在软件开发高速化的牵引下,用以往难以想象的硬件开发速度不断开发和提供服务才是需求所在。要想实现这个目标,服务开发者和设备开发者都必须正确理解彼此在各自领域都是如何工作的(图3.2)。

        本章将会依据采用了物联网设备的服务开发所固有的特性,紧扣各位读者在新开发物联网设备及使用了物联网设备的服务时会遇到的各种各样的关键点,并针对设备的结构提取重点内容来进行解说。此外,本章还会介绍如何用“原型设计”在轻松搭建设备的同时评价以及审查产品与服务。

3.2   物联网设备的结构

3.2.1 基本结构

        物联网设备的种类五花八门,但其结构一般都如图3.3 所示。物联网设备跟普通的机械产品一样,都包含用于检测用户操作和设备周边环境变化的输入设备,提示某些信息或者直接作用于环境的输出设备,以及作为设备的大脑来负责控制机器的微控制器等。另外,物联网服务还有一个不可或缺的条件,那就是连接网络。接下来将为大家简单介绍这些要素。

微控制器

        微控制器是微型控制器(Micro Controller)的略称,是一块控制机器的IC(Integrated Circuit,集成电路)芯片。它能够编写程序,并根据描述的处理读取端子状态,或者向连接上的电路输出特定信号。微控制器由内存(用于存储程序和保存临时数据)、CPU(用于执行运算处理和控制)以及外围电路(包含与外部的接口,以及计时器等必要的功能)构成。(图3.4)

        在实际使用微控制器时,需要串行端口和USB 等各种接口以及电路等。如果想自己制作设备,那么通过使用微控制器,以及安装了以上要素、名为“微控制器主板”的电路板,就能很轻松地开发硬件了。虽说每种产品的规格各有不同,但基本上是以图3.5 所示的流程进行开发的。

        现在大部分电子产品都搭载有微控制器。打个比方,请想象一个冰箱(图3.6)。冰箱内部能够达到某个目标温度,是因为微控制器里写有一个程序,这个程序的作用就是监视连接在微控制器输入端子上的温度传感器的状态,并控制制冷机以达到目标温度。利用传感器测量和判别信息就叫作感测。

        物联网的流行跟微控制器主板的变化也有关系。过去,为了把微控制器主板连接到网络,需要每个开发者独立实现接口,而近年来微控制器主板的种类逐渐增多,包括以外部连接模块来提供连接网络功能的微控制器主板,以及标配型微控制器主板。这样一来,开发出的设备就能轻松连接到网络。这种开发环境的完善正在不断进行。如果利用这种微控制器主板,即使没有开发过硬件的人,也能够向设备开发发起挑战。
        下一节将详细介绍微控制器主板的类型和用法。

输入设备

        为了让设备获取周边情况和用户操作等信息,必须在机器上实现传感器和按钮等元件(电子器件)。
        举个例子,假设有台智能手机,那么这台手机都搭载了什么样的传感器呢?各位读者应该注意到了,实际上它搭载了触摸屏、按钮、相机、加速度传感器、照度传感器等相当多的感测设备(图3.7)。这些传感设备能帮助我们更详细且精细地掌握周边的情况。反言之,又因为传感器的类型和精度极限在一定程度上决定着机器的性能,所以在设备开发过程中,传感器的选择是非常重要的一步。

输出设备

        物联网想要实现的不只是感测状态,将状态“可视化”。对人类和环境进行干涉,控制世界令其向目标状态发展才是其真实目的。
        在需要向用户反馈某些信息时,显示器、喇叭、LED 这些用于输出信息的设备就会发挥作用(图3.8)。就像前文说的那样,物联网设备重在小型和简便。如何配置这些输出设备能让其高效地把信息传达给用户,无疑是设计阶段非常重要的课题。还有一个方法是在设备上安装驱动器,让驱动器物理性地作用于环境。驱动器是通过输入信号来实现控制的驱动装置的统称。例如具有代表性的伺服电机,它能够根据输入的电子信号把电机转动到任意的角度。这个方法和机器人技术有着密切的联系,与网络联动“运行”的设备属于当今最受瞩目的领域之一(第8 章会讲到机器人)。

        3.5 节将会为大家讲解如何控制与微控制器相连接的输出设备。

与网络相连接

        关于连通性在物联网设备中的重要性,已经为大家说明过了。物联网设备通过网络与服务器进行通信,积累和分析感测到的信息,通过远程操作控制设备。因此,设备就需要有用于连接网络的接口。
        网关机器和设备之间存在无线连接和有线连接两种连接形式,这两种连接形式又存在多种连接方法。
        如果制造的设备是需要固定的机器,比如用来监视室内环境的传感器或是相机等,就可以采用有线连接。虽然需要考虑线路的排布问题,不过这种方法通信较为稳定。
        如果制造的设备是便携式设备,比如可穿戴设备等,就需要考虑采用无线连接了。比起有线连接,采用无线连接时,设备的应用范围更广,不过使用前还需要考虑到障碍物所导致的通信故障,以及电源的装配等因素。
        使用者应该根据不同设备的特性来选择连接形式。关于连接形式的详细内容,我们将会在3.3 节详细介绍。

3.2.2 微控制器主板的类型和选择方法

选择微控制器主板的出发点

        在设备开发中,微控制器主板的选择是一个非常重要的因素。根据开发环境、想制造的设备以及经验的不同,设备“适合”的微控制器主板是不一样的。
        就像前文说的那样,微控制器在写入程序之后才可使用,所以硬件本身还能再次利用。如果您是出于原型设计的目的“想做个试试看”而购买了微控制器,那么,为了之后还能将其沿用于其他项目,推荐您先购买具备通用结构的微控制器。
        表3.1 列举的几个关键点可以作为具体的选择标准来参考。

        与设备的变化相呼应,微控制器主板的样式也在不断地推陈出新(图3.9)。
        过去,微控制器主板的目标在于搭载单片机,实现结构的简约性和高通用性。与此相对,能用在移动电话和智能手机上的高性能CPU、完善的I/O 端口,以及配备了网络接口的超微型计算机,即单板计算机等设备陆续登场。使用者不但能通过Linux 操作系统来运行这些单板计算机,还能像控制以往的微控制器那样控制I/O 引脚(pin)。微控制器主板和计算机的分界线正在逐渐模糊。

        单板计算机给未曾开发过硬件的软件开发者们提供了一个友好的开发环境。这些产品确实在一定程度上降低了开发初期技术上、心理上以及金钱上的难度。
        当然,在实现商品化的过程中,为了能够适应大批量生产,需要削减无用的规格,实现价格的低廉化。在这一阶段以及未来,都需要用单片机来实现结构的最小化。也就是说,嵌入式开发自身的难度和需要的知识是没有变化的。不过单板计算机实现了原型设计过程的高速化和不断重复。尤其对于追求创新概念的物联网设备开发来说,重要的是不断地去重复试错。
        比较具有代表性的微控制器有:Arduino,Raspberry Pi(树莓派),Beagle Bone Black(BBB),英特尔Edison等等,这里不做详细介绍了,感兴趣可以去相关官网了解。

3.3   连接“云”与现实世界

3.3.1 与全球网络相连接

        有两种让设备连接到网络的方式,一种是由设备本身直接连接全球网络,另一种是在本地区域内使用网关来连接全球网络(图3.21)。近来,“生活记录”型的设备越来越多,其结构更接近前面说的第二种方式,例如通过蓝牙把可穿戴设备和智能手机配对,通过智能手机向服务器发送数据。

        与物联网设备相比,网关设备的硬件结构大多比较丰富,有的还支持再次发送数据和保存部分数据等功能。另外,网关设备还支持高级加密及数据压缩,在需要保证数据传输的安全性时,采用网关无疑是一个明智之选。
        另一方面,直接连接网络时,则需要在物联网设备端实现再次发送等错误处理程序。虽然这点还需斟酌,不过如果采用直接连接方式,构建系统时就不用在意是否存在网关了。这样一来就能单纯地建立设备和服务器之间的连接了。

3.3.2 与网关设备的通信方式

        物联网设备和网关设备进行通信的方式有很多种,既有有线的也有无线的。因为每种方式都各有利弊,所以需要大家根据设备的用途和特性来进行选择。
        选择的标准包括通信时能够使用的协议、通信模块的大小、耗电量,等等。
        在这里我们看一下各连接方式的特征。

3.3.3 有线连接

以太网

        以太网连接方式采用网关设备和以太网电缆进行有线连接。这种方式不仅不怕无线电频率干扰,能够稳定通信,而且还有一大亮点,那就是能实现普通的IP 通信协议,跟PC 进行简单通信。
        说到缺点,则包括终端要在一定程度上具备丰富的执行环境(如单板计算机),以及尺寸容易偏大,设置场所受限等。

串行通信

        串行通信连接方式是指采用RS-232C 等串行通信来连接其他设备。这个方式的优点包括多数工业产品配备了用于串行通信的端口,容易与现有产品建立连接等。使用RS-232C 串口时,设备大多使用D-SUB 9针端口(图3.22)。如果网关设备也有串行端口,那么就能用RS-232C串口线直接连接设备来进行通信。这里的线包括直通线和交叉线两种,请大家按照设备的结构进行选择。
        相反,如果网关设备上没有串行端口,就得用“USB 转串口线”来连接了。请各位注意,在这种情况下网关设备里必须安装有与转换芯片(转换芯片在转换线里)对应的驱动程序。如果安装了与FTDI 芯片(转换芯片的事实标准)对应的驱动软件,就比较容易找到对应的线了(关于驱动程序,会在下一节讲解)。
        想实现串行通信,就需要在收发信息的两方设定表示通信速度的参数“比特率”,以及要发送数据的大小。
        C 语言、Java、Python 这些常用的编程语言都准备了这种串行通信程序库,是一个很好用的接口。

USB

        USB 是一个为大家熟知的接口。USB 的插头形形色色,但是在连接网关的时候,多数情况下跟计算机一样,采用一种叫Type-A 的插头。此外,USB 有多种规格,每种规格传输数据的速度都不相同(表3.2)。

        要使用通过USB 连接的设备,就得安装一种叫作设备驱动的软件。因此,用USB 控制设备和接收数据时,有没有提供与设备对应的驱动就很重要了。打个比方,假设我们想把USB 相机连接到网关来发送图像。如果想发送给PC,单纯安装USB 相机和相机的驱动就行了,而换成网关就不一样了。如果网关是在Linux 上运行,那么就需要准备Linux 专用的驱动,制作获取图像的软件。
        USB 在PC 等通用机器上非常普及,其特征在于,比起D-SUB 9 针等端口,这种端口的小尺寸占据了压倒性优势。

3.3.4 无线连接

Wi-Fi

        如果采用Wi-Fi 连接方式,通过Wi-Fi 接入点就能够连接网络。通过它,可以在不便进行有线连接的环境中,实现移动型设备和PC 及智能手机的联动,也就能更加容易地搭建出一个与本地区域内其他设备联动的系统了。
        为了防止无线电频率干扰,需要注意接入点的设置。以下这些是所有无线连接方式都会面对的情况,那就是需要在安装设备的应用程序时考虑到通信断开的情况,例如先把数据保存在内部,等能连接上的时候再一口气发送过去等,这点工夫还是要费的。
        此外,因为和蓝牙4.0(后文再叙述)相比,Wi-Fi 耗电量高,所以不适合那些需要长时间进行通信的设备。

4G/5G/LTE

        4G/5G/LTE 连接方式是通过移动运营商的通信线路来连接网络的。只要从运营商购买SIM 卡,再把SIM 卡插入设备里就能够通信了。
        采用这种连接方式时,只要在信号范围内就能连接上网络,不需要像Wi-Fi 那样去在意接入点的设置。相反地,在工厂和地下这类信号不好的地方就无法通信了。
        想使用4G/5G/LTE,设备上需要配备用来插入SIM 卡的插槽,这个条件大大地限制了硬件设计的发挥。除此之外,还会持续产生接入费用,所以也会对设备本身的价格与使用形式产生影响,例如采用月付费模式。另外,在某些情况下,开发终端是需要经过运营商审查的,这点请大家注意。

蓝牙

        蓝牙是一种近距离无线通信标准,多数智能手机和笔记本电脑都有配备蓝牙。
        2009 年,蓝牙4.0 首次公开,它以内置电池的小型设备为主要应用对象,整合了超低功耗的BLE(蓝牙低能耗,Bluetooth Low Energy)技术。根据设备的结构不同,它甚至可以实现靠一枚纽扣电池连续运行数年。此外,原本的蓝牙和Wi-Fi 一样采用2.4 GHz 频段,容易产生干扰,但是从4.0 起,这个问题已经得到了大幅度的改善。
        除了一对一通信,BLE 还能实现一对多通信,通信机器只要在物联网设备附近且能使用BLE,就能通过广播发送任意消息了。从iOS7 起,iOS 就利用这种通信形式标准配备了iBeacon 功能,iBeacon 能够测算环境中设置的BLE 信号发送器,即Beacon 的大概位置和ID 信息(图3.23)。这项功能可以给店铺附近的顾客发送最适合他们的广告和优惠券。这种方法也作为一种新的O2O(Online to Offline :一种服务和方法,通过这种服务和方法可以实现Web 网站和应用程序等线上信息与线下店铺销售的联动)服务而备受瞩目。

        除此之外,蓝牙4.2 还宣布支持IPv6/6LoWPAN,设备可以通过网关直接连接互联网。从这些特征来看,蓝牙正逐渐占据物联网通信协议中的主要地位。
        蓝牙是一种在不断更新换代的通信标准。特别是从v3.X 更新到v4.X 时,曾出现非常大规模的兼容性问题。例如,BLE 连接不上支持v3.0 的机器。蓝牙技术联盟A(Bluetooth SGI)负责制定蓝牙的规格并意识到了这些兼容性上的差异问题,于是把那些能跟v3.X 前面的机器通信的设备称作“蓝牙”,把只支持v4.X 的机器称为Bluetooth SMART,把能兼容所有版本的机器称为Bluetooth SMART READY,以此表示区分(表3.3)。

        这里需要注意的是,想把基于BLE 的物联网设备连接到网关时,网关必须支持Bluetooth SMART 或是Bluetooth SMART READY。顺带告诉各位,如果换成智能手机,那么只有iPhone4S 及以后的机型,或者Android 4.3(API Level 18)之后的版本才支持BLE。请在直接连接手机之前确认操作系统的版本。

IEEE 802.15.4/ZigBee

        IEEE 802.15.4/ZigBee 是一种使用2.4 GHz 频段的近距离无线通信标准。其特征是虽然传输速度低,但是与Wi-Fi 相比,其耗电量较少。如图3.24 所示,ZigBee 可以采取多种网络形式。其中,网状网(mesh network)更是ZigBee 的一大特征,它能在局部信号断开的情况下继续进行通信。只要采用这个方法,就能通过组合大量传感器来简单地搭建传感器网络。

        另外,要把ZigBee 跟PC、智能手机联动,就需要给这些设备连接专用的接收器。跟蓝牙相比,这是ZigBee 一个非常大的缺点,因为蓝牙上普遍标准安装了接收器。

易能森

        易能森(EnOcean)是德国GmbH 公司开发的一种无源无线传输技术。易能森是一个总称,它指的不仅是一种通信标准,还包括感测设备本身(图3.25)。
        易能森旗下设备齐全,包括运动传感器、开关、温度传感器、开关门传感器等形形色色的设备,这些设备都是利用能量采集技术自主发电的。例如,开关就是用按下开关的力量发电通信的,温度传感器则是利用太阳光进行发电并通信的。也就是说,一旦安装后就不用考虑布线和充电的问题了。
        至于通信协议,则必须遵循开发方GmbH 和易能森联盟(EnOceanAlliance)规定的方式。易能森联盟主要负责规划易能森的规格,以及如何普及推广易能森。安装了接收模块的机器需要再安装一个用于接收的应用程序,应用程序还需与机器规格相匹配。
        此外,从自主发电这个性质来看,易能森的多数设备都在节电方面做了不少努力。例如,先把信号强度设置得弱一些,这样就不能把设备和接收器的距离设定得太长了。而且,从传感器向接收器发送数据的时间间隔也设置得较长。例如易能森就不适用于下面这种情况,即从发生变化到检测出变化,其中的延迟不能超过1 秒。在使用设备时,需要仔细检查设备的设置环境,例如是不是满足以上这些条件,有没有充足的自然光以用于充电等。
        话虽如此,易能森还是有一个非常有魅力的特征的,那就是“无需维修”,在某些状况下,它会成为使用者的强大伙伴。

3.3.5 获得电波认证

        事实上,在不同国家开发和使用无线通信设备时,是需要获得认证的。例如在中国内,开发者就需要获得《中华人民共和国无线电管理条例》的认证(符合技术标准的证明等)。针对不同情况,有时需要履行一些手续,有时不用,因此建议各位在考虑出售产品时,先向熟悉那个国家电波法的专家咨询一下(详情会在第5 章介绍)。

3.4   采集现实世界的信息

3.4.1 传感器是什么

        传感器是一种装置,它的用途在于检测周边环境的物理变化,将感受到的信息转换成电子信号的形式输出。人类用五种感官来感知环境的变化,设备则用传感器来感知。
        如表3.4 所示,传感器有很多种类。
        每种传感器都包含各种各样的应用方式,“用哪个传感器”对所有从事设备开发的人来说都是一件令他们头疼的事。虽然没有绝对正确的方法,但是如果不了解传感器的机制和特性,就不可能做出设备。
        感测技术在日益进化。不少新设备的创意都是从“能用这个方法测量这种东西了”这样的一步步的技术革新中诞生出来的。这里非常重要的一点是,传感器的知识不仅对技术人员而言很重要,从产品设计和经营战略的角度上来看,学习传感器知识也是非常重要的。
        接下来就让我们一边了解传感器最普遍且最基本的测算手法,一边来加深对传感器的理解。

3.4.2 传感器的机制

        下面将为大家介绍两种感测方法。

        ①利用物理特性的传感器
        ②利用几何变异的传感器

利用物理特性的传感器

        每种传感器根据其用途而内置有不同的检测元件(图3.26)。检测元件这种物质的电子特性会根据周围环境的变化而变化。
        检测的方法大体上分为两种。
        第一种方法是用输出电压的变化来表示环境的变化。例如,力觉传感器就是依靠一个叫作应变仪的金属力觉元件来发挥作用的(图3.27)。对传感器施加力,应变仪就会产生微小的变形。因为金属的阻值(输出电压)会根据形变而变化——这是金属的性质——所以只要让一定量的电流流过应变仪,那么根据欧姆定律(电压=电阻× 电流),输出电压的值就会变化。例如,把应变仪安装在桥梁和高层建筑物的支柱上,就能感测到细微的变形。只要通过网络把采集到的这些数据汇集到服务器,就能持续监测基础设施了。

        从广义上来说,这些传感器与变阻器(通过调节刻度盘来增减阻值的一种电阻)没有什么差别。同样利用这种特性的还有CdS(光学传感器)和温度传感器等。

        第二种方法是用输出电流的变化来表示环境的变化。例如会对光产生反应的光电二极管,只要一照射到光,这种半导体元件就会像太阳能电池那样在两个端子间产生电动势和电流(图3.28)。变异是作为电流变化输出的,但实际上是用一种叫运算放大器的IC 把电流变化转换成电压变化的。就结果而言,跟刚才第一种方法情况相同,也是用电压的变化体现环境的变化。
        比起前面介绍的CdS,光电二极管能更快感应到光的变化,也就是说它有“响应迅速”这个特征。因为它需要电流电压转换电路,所以结构偏大。不过在需要进行精确测量的情况下,人们大多会采用光电二极管。

        虽然在平时使用传感器的时候很少会注意到,但从微观上来看,传感器巧妙地利用了物质的性质这点是显而易见的。正确理解传感器的特性并选择匹配的传感器,对开发者来说是非常重要的。

利用几何变异的传感器

        测距传感器利用与障碍物间的几何学关系来测算距离。下面以红外线测距传感器为例为大家说明。
        红外线测距传感器包括照射激光的部分和光接收元件。光接收元件负责接收从障碍物反射过来的光,不仅能测算ON/OFF 信息,即有没有照到光,还能测算光照到了光接收元件的哪里。然后利用图3.30 所示的几何学关系,通过测算得到的值来测量距离。

        实际上,测距传感器上有INPUT、GND、OUT 这3 个端子。把INPUT 和GND 分别接上电源,距离的测量结果就会以电压变化的形式反映在OUT 的端子上。每个传感器上都事先准备有电压值和距离的对应关系图,对照关系图就会得出实际的测量结果(图3.30)。

3.4.3 传感器的利用过程

        前文已经为大家介绍了传感器的机制,接下来看看如何才能把这些传感器装入设备以及如何使用。
        前面已经介绍过,微控制器负责接收传感器输出的信息及控制设备。那么具体要如何用微控制器处理电子信号呢?
        要想知道答案,就需要理解传感器输出的电子信号的特性。所有的传感器都普遍具有以下特性。

        ● 毫伏级的微弱信号
        ● 输出的是含有一定噪声的模拟信号

        针对上述这种情况,从传感器信号中获取所需信息时,就需要进行一种叫作“信号处理”的预处理,流程如图3.31 所示。

        下面就来详细讲解一下各流程都进行的是怎样的处理。

3.4.4 放大传感器的信号

        为了利用传感器的微弱信号,需要将其放大到微控制器等设备可以读取的强度,这就需要用到放大电路了。
        放大电路的核心是一个叫作运算放大器(operational amplifier)的IC 芯片。其实它就是由晶体管(控制电流的元件)等组成的一个复杂电路,除了放大信号外,也用于模拟运算。
        举个简单的例子,大家看图3.32,这个电路叫作非反相放大电路,它在保持输入信号的极性的同时将其放大输出。可以看出,图中三角形处就是运算放大器,它的各个端子连接着电阻等元件。

        连接在运算放大器上的电阻之比表示的是要将信号放大多大程度。调节放大的倍率也就相当于调节“灵敏度”,倍率越大越能检测出细微的变化。而另一方面,如果把倍率调节得太大,就会检测出一些我们不想去检测的微弱信号(如噪声等),因此需要设定一个合适的倍率。若使用变阻器(通过调节刻度盘来增减阻值的一种电阻),就能在组装好电路后调节灵敏度了。想检测出微弱的变化时,用这种方法进行微调就好。
        以下这些方法也同样用到了运算放大器,使信号放大为各种各样的形式。

        ● 反相放大电路:反转极性(把正负极反过来)并输出放大的值
        ● 差分放大电路:把两个输入电压的差值放大并输出

        建议大家根据传感器和所要获取的信息的类型来安装和使用合适的放大电路。

3.4.5 把模拟信号转换成数字信号

        把传感器获取的测量值用连续的电子信号表示出来,就是模拟信号。想用PC 处理模拟信号,就需要进行模拟/ 数字(A/D)转换,把模拟信号转换成离散值,即数字信号。A/D 转换操作分成以下3 个步骤。

        ● 采样(sampling)          用某个频率来区分模拟输入信号,获取值
        ● 量化                               把采样后的值近似表现为离散值
        ● 编码(coding)             把量化后的数值编码成二进制代码

        下面用图示来简单说明一下(图3.33)。

        选择微控制器的时候,一个重要的出发点就是A/D 转换器的性能。虽然指标各不相同,但首先应该检查采样频率和分辨率。
        采样频率是一个指标,它决定了每次采样应该隔多长时间。如果对输入信号的频率应用了过低的采样频率,就会出现如图3.34 所示的情况,即出现一个与本来的波形完全不同的波形,这个波形是冒充测算波形的假波形,这样的假波形叫作混叠。具体来说,采样频率必须在输入信号最高频率的两倍及两倍以上,这样才能预防出现混叠。

        而分辨率也是一个指标,它表示的是能把模拟信号分割到多细,表现形式为“最多能分到多细”。例如8 bit 的A/D 转换器就能分成28 =256,这就是分辨率(图3.35)。打个比方,微波炉用这台8 bit 的A/D转换器处理10 V 区间的信号时,就无法测出低于39 mV 的电压差。
        建议大家充分考虑传感器的特性,选择频率和分辨率合适的A/D 转换器。

3.4.6 传感器的校准

        校准是一项分析和调整的工作,目的在于通过比较要测量的状态量与传感器的输出数值之间的关系,来得出正确的测量结果。
        就像大家在前文看到的那样,传感器把测量好的结果用电子信号(电压)的形式输出。因为我们无法直接从电子信号中获取想测量的参数,所以就需要一个公式,来把测算的数值转换成参数。例如,在使用红外线测距传感器的情况下,就需要输出电压和距离的关系图。
        在市面上出售的传感器中,也有一些传感器提供了详细的数据表。表上也有上述这种关系图,请大家在使用传感器前检查一下传感器是否附带了这种数据表。
        话虽如此,实际上传感器还是存在着个体差异的。此外,很多传感器的测量值会受电路板温度等因素的影响。校准就是针对这种误差因素而进行的,目的是保证感测的稳定性。一旦涉及校准,传感器的再现性 禁不禁得住考验这点就显得重要起来了。这里我们就以电位器为例,来一起思考一下(图3.36)。

        电位器属于一种变阻器。旋转机体上的旋钮,各个端子之间的电阻值就会产生变化。如果能求出输出电压和旋钮角度的关系式,那么就能用这个传感器求出杠杆的倾斜度,或是机器人身上关节的角度。这种情况下则按照以下顺序进行校准(图3.37)。

        ① 尽可能多地定义标准值(这里为角度),把此时的输出电压和旋转角度的关系用点的形式标注到关系图上。
        ② 画一条曲线,令曲线通过这些点的中心,求出这条曲线的近似等式。

        这样一来,就能在尽量排除个体差异和再现性误差的情况下得到关系式了。另外,刚才我们也提过电路板温度带来的影响,例如电路板在多少摄氏度的时候会产生多大程度的偏移。当这个影响程度为一定值时,能够跟温度传感器一起来修正其影响。如果能刻意去改变电路板的温度,记录下输出电压是如何迁移的,那么就能把电路板温度带来的影响作为修正项加到前面求出的关系式里。

        为了用传感器进行精确的测量,需要事先细致地做一些准备。测量精度会因是否进行过校准而天差地别。
        大多数情况下,进行校准是需要相应的工具和环境的。像刚才使用电位器那种情况,如果真的想精确测量,就需要另外准备一台高精确度的传感器来测算测量的标准,也就是旋钮的旋转角度。要怎么才能尽量省事地得到精确的标准值呢?这很大程度上取决于开发者下的工夫。请大家去试着摸索一些适合传感器的校准方法。

3.4.7 如何选择传感器

明确目的和条件

        在设计设备时应该考虑到方方面面,如果是深入人们日常生活中的那些物联网设备,例如可穿戴设备和需要根据环境配置的设备等,就需要将其结构小型化和简单化。为此,在设计设备的阶段就要预想到以下这几点。

        ●通过利用设备要实现一个什么样的状态
        ●为了实现这个状态需要测算哪些物理量
        ●这台设备是用在什么样的环境中,要怎么使用

        就硬件开发而言,一旦做出了产品,再想修正就很耗费时间和精力。因此,开发者需要事先充分模拟设备的使用条件,明确需求规格和使用条件。对目标用户和顾客进行情景应用也是一种有效的手段(图3.38)。

明确手段

        明确了目的和使用条件后,就该把准备好的传感器拿出来了。为此,大家除了要理解3.4.2 节提到的传感器的基本原理,还要掌握有关传感器性能指标的正确知识,重要的是能够对比和研究。通常使用的性能指标如表3.5 和图3.39 所示。

        每个传感器都有一个数据表,表中包含了它们各自的特性。大多数情况下,这些数据表会公开在开发方的Web 网站上,我们可以在网站上确认这些指标。根据提前分析过的使用目的和条件,来选择一个符合这些目的和条件的传感器。

3.5   反馈给现实世界

3.5.1 使用输出设备时的重要事项

        前面大家已经学习了如何在设备开发中利用传感器。物联网设备的使命就是把通过传感器采集到的信息跟云端的系统挂钩并处理这些信息,基于处理结果把用户和环境引向最佳的状态。在这一连串的反馈中,负责“把用户和环境引向最佳的状态”的正是“输出设备”。
        在设备开发中,一个非常重要的设计观点就是要高效利用输出设备。以智能手机为例,大家会发现光一台智能手机就配备了扬声器、显示屏、振动装置、LED 等各种各样的输出设备。
        灵活应用输出设备时,需要遵循几个重要的步骤(图3.40)。尤其重要的是刚刚说的传感器的设计,以及输出设备的设计,这二者有着密切的联系,因此它们的设计需要一并进行。

        而且,在设计输出设备时,有一点很令开发者们头疼,那就是要如何评估开发出来的设备(图3.41)。为了确认设备的可用性,需要明确实际测量的数值距离想要控制的状态量的目标数值有多远。除此之外,开发者还需要从多角度出发进行评估,例如设计性和环境适应性等。当然其中也包含很难直接数值化的指标。可以说,设备开发的真正难处就在于要怎么样提取这些模糊而又必要的条件。

        要想恰当地评估设备,并把结果反馈到设计和开发上,就必须尽量迅速地反复进行原型设计(实际做做看),把用户的意见反映在产品上。
        本节的重点在于让开发者体验“制作”这一工序上,我们将以LED和电机这些容易找到的设备为例,来说明如何应用输出设备。当然光用这两种设备并不能充分地涵盖解释所有的输出设备,但是在应用它们的过程中,通过利用其他的因素,应该也能获得不少有益的启示。
        那么,接下来我们就看一下处理输出设备的技巧。

3.5.2 驱动的作用

        首先来看一下用微控制器控制输出设备时的必备结构。
        微控制器的输入输出端口就跟其字面意思一样,既能够接收从传感器发来的信号,又能输出信号。这时有人可能要说了,“那赶紧把电机接到微控制器端口上试试”。难就难在,事情并不如各位想象得那样简单。
        因此,一般来说,微控制器的输出电压都是3.3 V 或5 V,电压很低,而且电流值也很低。只是让一个小LED 灯闪来闪去倒是没什么问题,不过要是数量多了,或是必须驱动电机,这么一点输出肯定就不够了。
        驱动正是解决这一问题的关键所在。驱动就好比是水管的水龙头,微控制器自身只负责控制水龙头的开或关,实际流入设备的电流跟微控制器输出的电流是两股电流,各位需要给流入设备的电流另外准备一个电源来供给电流。
        最简单的驱动电路包括开关电路,它利用了一种叫作晶体管的电子器件,这种器件能控制电流。
        晶体管有两种类型,分别是NPN 型晶体管和PNP 型晶体管。它们都具备发射极(Emitter,简称E)、集电极(Collector,简称C)和基极(Base,简称B)这3 种端子。因为它们类型不同,所以电流通过的路径也不同,这里以NPN 型为例进行说明(图3.42)。

        当微控制器连接到基极,且微控制器的输出电压低(0 V)的时候,集电极与发射极之间是没有电流流过的。反过来,把基极的输出电压调高,再让电流流过,电流就会从集电极流到发射极了。这个机制非常像开关,把电流加在基极上,就能控制集电极-发射极之间的开或关。这里有一点很重要:即使加在基极上的电流只有小幅度的变化,也会导致晶体管切换开关状态。把大型电源连接到集电极,就能在很大程度上放大并输出基极的电流。如图3.42 所示,可以通过控制微控制器的输出来令LED 点亮或熄灭。
        另外,有很多驱动也跟各自所连接的设备相搭配而成为了一种专用的IC 芯片。例如,应用直流电机时使用的就是一种叫作电机驱动的IC芯片(图3.43)。按照控制输入端子给出的信号,电机驱动能够让连接在输出端口上的电机停止运行,或者让它正着转或反着转。其中还包括能够根据模拟信号控制旋转速度的芯片(下一章将会提到如何处理模拟信号)。

        在这里,我们把用于控制微控制器的电源叫作控制电源,用于驱动电机的电源叫作驱动电源。使用电机驱动能够管理大型驱动电源,并轻松控制电机。

3.5.3 制作正确的电源

        刚才我们提到了设备的电源特性,希望各位即使是在设计电路时,也要特别注意对电源的处理。
        所有的IC、传感器、电机和LED 都有各自的额定电压和最大电流等参数,这些参数在产品的数据表上都有明确记载。一旦连接了大于等于额定电压的电源,就会导致设备异常发热或着火等。因此正确理解设备的规格,构建一个安全且稳定性高的电路是非常重要的。
        针对这种情况,我们经常会用到一种叫三端稳压管的电子器件,它的作用是调整电源(图3.44)。就像它的字面意思一样,它有Vin/Vout/GND 这3 个端子。三端稳压管在内部对输入的电压进行转换,输出一定强度的电压。不同的三端稳压管输出的电压分别有3.3 V、5 V、12 V等,最大电流也有规定,根据电路的结构来进行选择,就能轻松制作出一个稳定的电源。

        使用三端稳压管时,有一点需要引起大家的注意,那就是发热。三端稳压管很容易形成高温状态,会影响其他元件。有些产品还有附带的散热板(用于散热的板状器件,装在三端稳压管上使用)。因为需要制作出一个散热性良好的结构,所以各位把三端稳压管组装到电路里时要多花些心思,比如使其远离其他的器件,或是在设备上开个散热孔等。

3.5.4 把数字信号转换成模拟信号

        前面提到过“根据模拟信号控制旋转速度”。大家也在3.4.5 节学过A/D 转换了。这里我们要反着来,也就是说下面要讲的是如何把数字信号转换成模拟信号,即“数字/ 模拟(D/A)转换”中具有代表性的方法:脉冲宽度调制。
        脉冲宽度调制(Pulse Width Modulation,简称PWM)方式通过高速切换输出高/ 低电压来实现近似输出模拟信号,很多微控制器都采用了这个方式。
        请想象有一台电机,这台电机只有在使用者按着开关不放的时候才会旋转,那么要如何控制这台电机的旋转速度呢?
        最简单的方法是连续按动开关,调整按下去的时间。PWM 方式正是利用了这个原理。请各位再想象一下自己每隔T 秒钟就按着开关W秒时的输出电压的波形(图3.45)。只有在按着开关的时候输出电压才会变高,其他时间输出电压都是低电压。这个起伏的波形就是“脉冲宽度调制”。在这里,T 是周期,W 是脉冲宽度。另外,表示高电压在周期中所占的时间的比率的(也就是W/T)叫作占空比。
        虽说要输出精确的模拟信号,就需要有D/A 转换器这种特殊的转换器件,不过PWM 信号本身也可以当作伪模拟信号来用。有很多微控制器都能输出任意占空比的PWM 信号。通过改变占空比,就能够控制电机的旋转速度和LED 的亮度,等等。

        控制LED 亮度的电路结构如图3.46 所示。占空比越高,高电压时间也就越长,LED 就会越明亮。

3.6   硬件原型设计

3.6.1 原型设计的重要性

        原型设计是一道开发工序,开发者通过原型设计,在设计和开发产品的过程中结合书面研究和实际行动,反复制作测试版(即原型),在获取反馈的同时逐步将商品规格具体化。
        原型设计在软件开发和硬件开发两个方面是通用的,然而在项目的初期阶段,基本上产品的规格都不明确。虽然所有开发相关人员会通过市场调研、反馈、讨论等进行问题或需求分析,以及具体化产品概念,但在这个过程中还会产生各种各样的问题(图3.47)。

        例如,开发者往往对市场的特性和业务等方面理解得不够到位,因此很难正确把握用户的需求,也有开发者基于“以目前的技术能达到的效果”进行开发,结果做出了不适应市场需求,也不满足用户需求的产品。除此以外,想提交给用户目标规格,但无法明确设计阶段应该使用哪些技术手段的情况也时有发生。在这些情况下,开发者在后期工程中就会承担很大的风险。一方面, 开发方想要明确告知顾客“做得到”“做不到”“做得到但需要一定成本”等判断标准,尽可能详细地描述产品的本来面貌,而另一方面,具体要用什么样的形式去体现产品的本来面貌,又是一个让开发者无尽烦恼的问题。
        原型设计就是解决这些问题的一个方法,首先尝试实现一部分产品的功能和要素,然后开发者和用户分别对其结果进行反馈。当然,因为两者立场不同,所以得到的信息也大相径庭(图3.48)。 

        首先,开发方要在制作产品的同时确认产品的运行状况,针对自身的设计对产品进行调试,看产品是否能如预想中一样运行。列出试作过程中发现的新问题和研究中的遗漏之处,同时研究针对这些问题的解决方法。在实际开发产品前,通过进行上述研究,不仅能减少前面说的开发过程中的风险,还能借助一部分测试成果来缩减开发需要的时间。
        除此之外,通过让用户与书面的说明相对比,并实际感受原型产品,还能够获得新的灵感和发现。产品越新,得到的效果也就越大,用户的反馈往往还会清楚地呈现出开发方没有意识到的观点和问题。从这个层面而言,原型设计可以说是连接开发者、用户,以及市场的一种沟通工具。

3.6.2 硬件原型设计的注意事项

        下面介绍一下进行原型设计时需要注意的两个事项。
        第一个需要注意的是明确原型设计的目的(图3.49)。很多原型设计都是以产生创意为名进行的,如果目的不明确,那么常常是想法没能成形就烟消云散了。虽然边做边想很重要,但大家也应该意识到,要尽可能压缩一次原型设计中要验证的项目,使其既能够实现目的又具有最小的结构。想要验证设计,还是验证技术,或是验证功能?目的不同,原型的形态也应有所不同。建议不要一次性地验证上述所有内容,而是先做出针对各个目的的不同的原型,再明确它们各自的制约条件。

        第二个注意事项是要非常重视速度和成本。相较于软件开发,硬件开发更费钱耗时(图3.50)。实现一项功能需要准备很多零件,而我们还需要计算准备零件花费的时间和精力。而且,因为零件也经常会出现故障,所以修复零件也要花上不少工夫。除此之外,在评估过程中,如果规格需要变更,就不得不再次研究产品尺寸和用例设计等,这种情况并不少见,而重新设计和开发需要很高的成本。希望各位开发者好好进行时间管理,把时间安排得富余一些,同时努力用有限的资源创造出一个能实现目标的最简结构。

        各位也知道,在开发物联网设备的时候,常常会同时开发应用程序。软件方面的开发者需要充分理解硬件开发的这种特性,灵活应对。此外,硬件方面的负责人需要把应用程序开发过程中发生的种种重要情况恰当地反映在原型上,同时还要尽早把想法付诸实际。这个齿轮是否能顺利转动,关系到设备的开发能否成功(图3.51)。

3.6.3 硬件原型设计的工具

        下面就为各位介绍一下硬件原型设计需要的几样工具。首先,为了方便在原型设计过程中能一边重写程序,一边进行验证,大家需要一块微控制器主板。通常来说,各位在本书介绍的主板中随便选一个就可以,不过如今的判断基准是能够简单且迅速地进行制作。基于此点,这里建议各位初学者选择以下两种主板。
        首先是Arduino。虽然标准结构的Ardunio UNO 没有以太网的端口,不过可以通过把它跟Shield 组合起来,快速附加网络接口。想安装无线通信的时候,请使用Wi-Fi Shield 和Xbee Shield 等。
        此外,如果英特尔Edison 有Arduino 兼容板,那么基本上也可以同样使用。因为英特尔Edison 标准安装了Wi-Fi,从这点上来说它更适合用于物联网设备的原型设计。虽然主板本身价格要比Arduino 稍微高一些,不过,这样一来就无需购买Shield 了,从整体上来看成本也相差无几。集齐所有需要的设备对原型设计而言是非常重要的。
        此外,连接这些微控制器主板还需要用到电路,在生成这些电路中起到重要的作用的就是电路试验板。有些人可能比较抵触制作电路,理由大多是“感觉焊电路板好难”。请各位放心,只要使用电路试验板,完全不需要焊接就能制作出电路。
        电路试验板表面排列有无数个小孔,把元件插进去就能制作出电路。如图3.52 所示,这些小孔内部都是相连的,就像线一样。把元件跟跳线(导线)组合使用,马上就能组装好一个电路。两侧的小孔是用来连接电源的,中央的凹槽设置正好能用来插入IC 芯片。
        无论是否擅长焊接,原型设计初期基本上都会用到电路试验板。先在电路试验板上装一次电路,充分验证电路能正常运行后,再往电路板上安装。这时除了检查传感器和驱动器以外,还要检查产品的性能。通过事先检查需要的结构,就能“嘭”地一下把电路由大变小,电路运行起来也会更稳定。

3.6.4 原型制作结束之后

        进行了原型设计,也明确了产品的概念后,就该进入下一个步骤了。也就是进行针对商品化的研究。接下来,该把从原型设计中得到的种种知识融合成一个产品了(图3.53)。
        功能规格是肯定要验证的,除此之外,还需要从零件成本、加工成本、维护等多个角度来验证设计。还要针对量产化以及负责制造的工厂进行研究和探讨。
        另外,物联网设备多使用无线通信,所以多数情况下需要获得符合技术标准的证明标志。获得标志也会耗费时间,因此就需要在设计阶段去确认获得标志的条件和日程安排。
        如果能高效灵活地应用原型设计,那么在这种进行具体设计的阶段,条件和标准就应该全部明文记载下来了。不知各位是否实际地感受到了原型设计作为引导硬件开发走向成功的一把钥匙所起到的重要作用。

更多推荐