首页>参考读物>计算机科学与技术>综合

树莓派+传感器:创建智能交互项目的实用方法、工具及最佳实践
作者 : [印度] 鲁什·贾加(Rushi Gajjar) 著
译者 : 胡训强 张欣景 译
丛书名 : 数字匠人
出版日期 : 2016-03-08
ISBN : 978-7-111-52962-0
定价 : 49.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 184
开本 : 16
原书名 : Raspberry Pi Sensors
原出版社: Packt Publishing Ltd.
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

图书特色

资深嵌入式系统硬件开发工程师撰写,系统阐述如何将传感器应用于树莓派电脑板,创建令人难忘的交互式项目
用Linux和Python深入挖掘树莓派的功能,并详细介绍一系列包括OpenCV在内的激动人心的库来增强项目功能

小小的树莓派设备蕴含着彻底改变我们理解计算的方式的能力,树莓派带有基于Linux的操作系统,是一种能引起用户探索和实验兴趣的工具,此外,还能够改变它的用途,将其与其他软硬件集成到一起,创建出真正激动人心的项目。
通过本书,你将学习到如何从树莓派中获取更多功能,通过研究它的基于Linux的操作系统来深入探索它的工作机理,并且学习在其上用Python、C开发和执行程序。然后你会看到一系列项目,诸如用超声波传感器来监控空气、将树莓派接入互联网以在线上传数据并使其成为创建基于物联网的项目的起点、学习如何用一个简单的USB摄像头和富有创新性的OpenCV库制作图像传感器来进行运动探测。
通过阅读本书,你将学到:
设置树莓派电脑板,并把它和功能强劲的传感器进行集成。
通过探究树莓派基于Linux的操作系统,了解如何对其进行操作。
深入理解树莓派的GPIO引脚以及如何通过Python、C和shell脚本访问这些引脚。
制作超声波测距仪,并使其成为视力不佳的人或盲人的辅助设备。
将温度/湿度传感器以及光敏电阻与树莓派连接到一起以记录数据。
了解如何在线上传你所采集的数据以及接收有规律的异常情况通知。
结合OpenCV和树莓派,学习如何通过计算机视觉的功能掌握最新的图像处理技术。


树莓派从2012年发行第一个版本以来,由于其通用的架构、标准的接口和丰富的外围设备,吸引了无数硬件和软件工程师的眼球,将其视为投身物联网产业的必备法宝之一。本书详细讲解了如何将传感器集成到树莓派电脑板,创建令人难忘的交互式项目,并用Linux和Python深入挖掘树莓派的功能,为那些希望了解各种硬件和软件如何协同工作以及希望得到在树莓派上开发传感器和物联网项目的创造者们提供实用指南。
全书分为7章:第1章介绍市面上可找到的所有型号的树莓派,包括最新发布的B型树莓派,并讨论安装操作系统的方法以及将树莓派接入互联网的几种有趣的方式;第2章简要介绍树莓派的电子学基本知识;第3~7章则通过5个不同的项目分别详细讲解如何利用树莓派和传感器测量距离、监控温度和湿度、连接树莓派和传感器、在线上传数据以及图像与视频处理。书中最后的附录给出一份购物清单,可以作为读者进行项目开发时选购相应工具和元器件的参考。


Rushi Gajjar 是一位资深嵌入式系统硬件开发工程师,也是一名电子学爱好者,他的工作领域是针对物联网研究、开发高速单板嵌入式计算机以及传感器节点。除此以外,他还曾经在印度韦洛尔理工大学参与研究,并藉此获得嵌入式系统的工程硕士学位。
在此之前,他在电子硬件设计领域作为自由撰稿人从事了大量工作,这些工作让他开始涉足快速原型开发板(例如树莓派)。他在闲暇时间里喜欢在树莓派上开发项目,这些项目包括可视化、数据记录、Web服务器以及机器学习自动化系统。他热衷于向在校学生讲授树莓派项目。
他志在将世界上所有东西都接入互联网,以增强人们的生活体验,他的业余爱好是打手鼓、摄影和旅行。

图书前言

树莓派是一种信用卡大小的单板计算机,能提供大量开展研究和发明创造的机会。看到一个孩子从零开始学习编写Python代码,制作一个鸟笼并在互联网上传输实时视频来检查鸟是否得到了食物,这种事情真是让人惊叹。记得我还是个孩子时,曾经将乐高玩具连接到直流电动机和电池上,效果很迷人。在那时我无法想象代码中的逻辑,也没有机会为自己的项目编写代码,然后用手机来控制乐高玩具运动,但现在我很幸运能有机会介绍这类项目,为那些真正渴望创造一些东西来改变周边世界的年轻创客提供一个起步平台。
世界正迈向新时代,技术正在改变人们日常的需求和习惯(通过一个简单的界面就可以实现),这给予了我写一本有关树莓派传感器书籍的动机。世界充满创造性,我认为在你开始理解和懂得一些基础知识并应用相应逻辑时,创造灵感就会涌现出来。在不同的网站上有大量的树莓派知识和项目,任何一个人都能尽其所能地获取这些知识和项目。我认为网站上的知识通常都是不完整的,它能让我们快速开始创建项目,但不能使我们明白项目背后的原理。
众所周知,即使没有深入研究过电子设备和通信协议,你也可以在树莓派上编写代码并创建令人惊叹的项目。我周围的同事经常需要在树莓派平台上编写代码,并将传感器连接到树莓派上,他们可以在很短的时间内就编写出有关人工神经网络的Python代码,但到了连接硬件时就徘徊不前。我认为对电子学有基本的了解能帮助那些想在树莓派之类的平台上进行程序开发的精英走出上述困境。与此相反,硬件开发人员能够连接传感器,保证设备引脚上具有正确的电压电平,但到了编写代码之时,他们就需要帮助了。
我发现树莓派最有趣的地方在于我能使用硬件元器件和电烙铁,并且能为硬件编写代码让其工作。本书为那些希望了解各种硬件和软件如何协同工作以及希望在树莓派上开发传感器、物联网项目的创客提供了入门指南,在我们期待将周边所有的东西连接成一体之时,科技将会有大的发展。
物联网以更好的用户体验为出发点,为收集和分析数据开启了一个新世界,传感器阵列输出的大量数据都是由传感器节点生成的,在这种背景下,树莓派向我们提供了从简单的项目(例如本书介绍的将数据从开发好的传感器站上传到互联网)入手的机会,这是我们创建物联网项目的第一步。另一件有趣的事是随着B型树莓派2的出现,开发人员能够拥有足够强的处理能力,可在树莓派上完成计算密集型算法,因此本书用一章来讲解图像处理。对初学者而言,想向他们解释清楚图像处理相当困难,但是至少我试着为读者提供一个自发进行图像处理的简单起点。
本书介绍了5个不同项目,它们是用不同方法创建电子学项目的学习起点,我在准备这些项目时遵循的方法相当有趣,这也是我从事复杂硬件设计时所遵循的方法。虽然我并不依赖于面包板(因为我从事的工作大多都是高速电路设计),但本书介绍的一些小型项目原型可以很容易地在面包板上实现。第一步,购买最好的硬件元器件(最好针对面包板测试进行了通孔),在代码不能执行或者无法给出正确结果时你能依靠这些硬件元器件解决问题。提前准备好一个框图并考虑在硬件和固件设计期间会用到的每个元器件。第二步,请仔细阅读要用到的电子元器件的数据手册,确保每个元器件都能满足设计要求。第三步,将电子元器件连接到面包板上,并进行彻底检测。最后,在硬件设置稳定后,编写代码(或固件),并且为了获得更好的性能,可能还要不断改写代码,删除不必要的变量及不可达的代码或循环、处理中断、定义处理器的休眠时间和看门狗、管理合适的内存片段,以避免程序崩溃。但是本书涉及的都是最简单的代码,并不会深入研究嵌入式程序开发。在树莓派上安装代码库可以减少程序员常犯的错误,只要调用一个函数,就能在后台执行所有的内置调用,这得感谢树莓派代码库的开发者,有了这些代码库,我们就能编写出更健壮的代码(有意地或无意地)。当准备编写实例代码时,建议你将其先拆分成几个部分。
读者在创建从温度-湿度-光线传感器中获取数据的项目时,可能会遇到一些困难。首先要获取温度和湿度值,然后再针对光线传感器编写代码,如果这两段代码都能给出正确的值,那么请记下它们,最后通过函数调用将这两段代码合并到一起。
本书的写作思路是:首先介绍项目的设置,然后描述项目的目的,最后描述硬件实现的所有细节。在某些章节中,软件会被拆分成若干部分,然后再将它们合并起来,这样做是为了避免让读者感到单调。书中某些章节的理论知识篇幅较长,对此,我深表歉意,但我敢肯定读者会喜欢阅读这些理论知识,并且能从中学到很多东西。
欢迎大家在GitHub上有关本书的主题下提问、提出改进意见和建议,网址是:https://github.com/rushigajjar/raspberrypisensors,所有人都可参与。
本书内容
第1章介绍了市面上可找到的所有型号的树莓派,包括最新发布的B型树莓派2;讨论了安装操作系统的方法以及几种有趣的将树莓派接入互联网的方式,然后我们在树莓派上执行了用Linux终端、Linux shell脚本、Python和C语言编写的若干代码。
第2章介绍了电子学的基础知识以及电子设备的通信协议,更加有趣的是,用shell、Python和C语言对GPIO进行了若干实验。
第3章介绍了如何在树莓派上设置超声波传感器,以及如何小心地处理各设备上不同的电压水平,还编写了一段让超声波传感器运行起来的代码,并针对视力不佳的人开发了一个避障系统中的辅助工具。
第4章教你如何在市面上选择可用的传感器,然后实现了温度-湿度-光线传感器所需的硬件和软件设计,以使家用电器自动化。
第5章介绍了如何连接模数转换器和一组传感器,我们用串行通信协议为树莓派创建了一个传感器站,从而可以使用所构建的通用软件来获取任意与树莓派连接的传感器中的数据。最后将获取的数据存储在一个日志文件中,供分析使用。
第6章对物联网和传感器节点进行了研究,在第5章的传感器站的帮助下,我们将数据上传到在线电子表格中,从而实现了一个实时图表,同时还可以在电子邮件平台上收到紧急电子邮件。读者在完成自己的项目之后,可以将传感器数据发送至rushi.raspberrypisensors@gmail.com。
第7章介绍了图像处理的基础知识,以及成功安装OpenCV库的方法。我们用摄像头开发了一个IP探头,将这个IP探头安装在后院中,可观看人类的日常活动的实时视频。进一步,我们在OpenCV中编写了一段运动检测代码来检测特定区域内的人类运动,并捕获即时警报下的图像。
附录是需要购置的硬件元器件清单,便于读者执行本书所介绍的制作任务,从第2章开始就需要用这些元器件来测试我们所编写的代码,你可以带着这张清单去你家附近的电子销售商处购买。
阅读本书的要求
除了必备的硬件元器件之外,用树莓派完成书中的任务时没有特别的要求!你可以将树莓派连接到安装有Linux、Windows或Max OS X操作系统的个人计算机上。任何能在市面上找到的任意型号的树莓派(A+型、B型或B+型树莓派1以及B型树莓派2)都可以用来测试代码。在阅读第3章以及后续章节之前,可先参阅附录,准备好硬件。
本书的读者对象
对于想用树莓派创建不同项目的硬件发烧友而言,本书十分理想。本书的读者对象是具有编程经验,尤其是具有Linux、C语言和Python编程经验的人,但又不局限于这类人群,不具备编程知识的读者也可以从本书获得必要的知识并立即开始项目开发。无论读者是否具有编程经验,本书都准备了一些电子学相关的最新概念,这些概念对于用树莓派进行硬件编程十分必要。
本书的约定
你在本书中会看到若干不同的文本样式,这些样式用于区分不同类型的信息。下面是这些样式的一些示例,并对样式的含义进行了解释。
代码块如下所示:

命令行输入或输出如下所示:

新术语和重要词则用黑体表示。你在屏幕上的菜单或对话框中看到的文字会像这样:“用键盘在配置设置项中选择Enable Camera选项。”
警告或重要的注意事项显示在这样的文本框中。
技巧和窍门显示在这样的文本框中。
读者反馈
时刻欢迎读者的反馈,我们也十分想知道你对本书的想法—喜欢哪些内容、不喜欢哪些内容,读者反馈对于我们改进书籍并让你从中得到更多的收获非常重要。
客户支持
既然你已经成为Packt出版社的尊敬读者,我们就应该告诉你一些事情,以便你在购买本书的同时获得最大的价值。
勘误
虽然我们已经非常谨慎,尽力保证书中内容的正确性,但仍然会有错误出现。如果你在我们的任何一本书籍中发现了错误—可能是文字错误,也可能是代码中的错误,请告知我们,我们将不胜感激,这样做可以减少读者的挫败感并减少本书的错误。如果你发现了错误,可以通过以下方式提交它们,访问http://www.packtpub.com/submit-errata并选择对应的书名,然后单击errata submission form链接,输入错误的详情。一旦你提交的错误修正意见得到确认,那么你所做的勘误就会被接受并上传到我们的网站或添加到相应书籍Errata部分已有的勘误表中,你可以通过访问http://www.packtpub.com/support选择相应书名来查看已有的勘误表。
问题
如果对本书的内容有任何疑问,请向questions@packtpub.com发送邮件,我们将竭尽所能解答你的疑问。

上架指导

计算机\硬件

封底文字

小小的树莓派设备蕴含着彻底改变我们理解计算的方式的能力,树莓派带有基于Linux的操作系统,是一种能引起探索和实验的工具,此外还能够改变其用途,并将其与其他软硬件集成到一起创建出真正激动人心的项目。
通过本书,你将学习到如何从树莓派中获取更多功能,通过研究它的基于Linux的操作系统来深入探索它的工作机理,并且学习在其上用Python、C开发和执行程序。然后你会看到一系列项目,诸如制作超声波传感器来监控空气、将树莓派接入互联网在线上传数据并使其成为创建基于物联网的项目的起点、学习如何用一个简单的USB摄像头和富有创新性的OpenCV库制作图像传感器来进行运动探测。
  通过阅读本书,你将学到:
   设置树莓派电脑板,并把它和功能强劲的传感器进行集成。
 通过探究树莓派基于Linux的操作系统,了解如何对其进行操作。
 深入理解树莓派的GPIO引脚以及如何通过Python、C和shell脚本访问这些引脚。
 制作超声波测距仪,并使其成为视力不佳的人或盲人的辅助设备。
 将温度/湿度传感器以及光敏电阻与树莓派连接到一起记录数据。
 了解如何在线上传你所采集的数据以及接收有规律的异常情况通知。
 结合OpenCV和树莓派,学习如何通过计算机视觉的功能掌握最新的图像处理技术。

作者简介

[印度] 鲁什·贾加(Rushi Gajjar) 著:暂无简介

译者简介

胡训强 张欣景 译:暂无简介

译者序

由于过去几十年,尤其是最近十几年互联网的蓬勃发展,人们的生活方式发生了深刻改变,毫不夸张地说,现在是“人在家中坐,尽知天下事”。而新技术的兴起和应用也不断刺激着人类的欲望,人们从过去依靠互联网单纯获取数字化信息,发展到希望在所有可以接入互联网的地方依靠计算机和传感器远程控制任意设备,从而直接改善自己的生活,“物联网”技术就这样应运而生,而树莓派及其外围设备以及传感器在这中间扮演着重要的角色,树莓派好比人的大脑,传感器就像人的眼睛,而外围设备好比人的四肢,利用它们搭建好各种软硬件平台,才能使“物联网”真正落到实处。
树莓派是将各类组件集成在一张信用卡大小的主板上的小型计算机,它基于ARM架构,运行Linux专用版本操作系统。在2006年研发之初,Eben Upton 与 David Braben(树莓派的主要研发者)想使树莓派成为一款价格低廉的计算机,以便让更多的人有机会学习硬件知识和编程技术。但是事情的发展远远出乎他们的预料,树莓派从2012年发行第一个版本以来,凭借其通用的架构、标准的接口和丰富的外围设备,吸引了无数硬件、软件工程师的眼球,大家将其视为投身物联网产业的必备法宝之一。在国内,越来越多的从业人士或业余发烧友希望了解和学习如何基于树莓派进行开发,尤其希望学习如何结合树莓派和传感器实现远程感知、控制。在这个背景下,机械工业出版社独具慧眼,引入了这本极具实用价值的书,为众多希望学习树莓派的读者奉上了一份大餐。
本书正文共分7章,其中第1章、第2章简要介绍了树莓派的基本概念和电子学的基本知识,第3~第7章则分别介绍了如何利用树莓派、传感器测量距离、监控大气温度和湿度、连接树莓派和传感器、在线上传数据以及图像与视频处理。附录列出了购物清单,以帮助读者在进行项目开发时选购相应工具和元器件。可以说本书绝不是炒作概念的泛泛之作,而是能让读者将概念落到实处的实用指南,作者邻家大哥般的语言风格更是让读者倍感亲切。
我们很荣幸能够成为本书的译者,在这里,首先要感谢机械工业出版社的杨福川老师给予我们的信任,其次要感谢缪杰编辑,与你们的交流让我们获益匪浅,也让本书的质量更上一层楼。
此外,请读者朋友注意,如果没有任何Python或C语言编程经验,建议你先补上,这会让你在本书的学习过程中轻松很多;如果你已经有了Python或C语言编程经验,并且对Linux系统稍有了解,那么就可以直接拿起本书开始你的树莓派之旅;如果你之前就已经做过树莓派开发工作,那么将本书作为参考工具书放在案头,以备不时之需,这也是个不错的选择。
全书由胡训强和张欣景共同翻译,其中,胡训强翻译了第1章、第3章、第4章、第6章和第7章,张欣景翻译了第2章和第5章。最后要说明一点,由于树莓派问世不久,所以很多相关技术会不断更新,再加上囿于译者的技术和语言水平,书中难免会出现不准确甚至错误之处,如果读者发现了这样的地方,恳请通过邮箱10185014@qq.com告知我们,在此向大家表示感谢。
最后,感谢所有为本书顺利付梓而付出艰辛劳动的人!

胡训强 张欣景
2015年11月于广州

图书目录

译者序
前言
致谢
第1章 认识你的小伙伴——树莓派1
1.1 树莓派板卡一览2
1.2 首次配置8
1.3 将树莓派接入互联网12
1.3.1 通过无线网卡接入互联网12
1.3.2 通过PC从以太网接入互联网14
1.4 Linux速成教程19
1.4.1 终端和shell20
1.4.2 常见的实用Linux命令20
1.5 安装实用库23
1.5.1 git-core24
1.5.2 wiringPi24
1.6 python-gpio25
1.7 准备学习Python和C26
1.7.1 编写和执行Python程序27
1.7.2 编写和执行C程序27
1.8 实战练习28
1.9 本章小结29
第2章 认识电子学世界31
2.1 电子学基本术语32
2.1.1 电压33
2.1.2 电流33
2.1.3 电阻33
2.1.4 电容34
2.1.5 断路和短路34
2.1.6 串联和并联35
2.1.7 上拉和下拉电阻36
2.2 通信协议37
2.2.1 UART38
2.2.2 SPI40
2.2.3 I2C41
2.3 实用技巧和注意事项43
2.4 理解GPIO端口44
2.5 点亮LED47
2.5.1 Shell脚本和GPIO49
2.5.2 LED闪烁和Python49
2.5.3 用C代码让LED闪烁51
2.6 本章小结51
第3章 用超声波传感器测量距离53
3.1 神秘的超声波传感器54
3.2 创建项目57
3.2.1 硬件设置59
3.2.2 软件设置62
3.2.3 计算距离64
3.3 解决常见问题66
3.3.1 不能正确显示距离66
3.3.2 树莓派是否做出了响应67
3.3.3 测量的距离是否小于2cm67
3.4 面向视力不佳人群的可穿戴设备67
3.4.1 制作硬件68
3.4.2 软件设置69
3.5 本章小结73
第4章 用传感器监控大气74
4.1 传感器选择过程75
4.1.1 应用的临界性76
4.1.2 选择传感器封装76
4.1.3 传感器属性76
4.1.4 购买传感器77
4.1.5 可用的传感器77
4.2 DHT内置的温度和湿度传感器78
4.3 引入光敏电阻(光敏元件)80
4.4 创建项目81
4.4.1 硬件设置81
4.4.2 准备代码84
4.4.3 综述90
4.5 解决常见问题94
4.5.1 接收到的DHT数据无效94
4.5.2 LDR传感器输出的值为094
4.5.3 电压是否正确95
4.6 本章小结95
第5章 用模数转换器连接模拟传感器和树莓派97
5.1 模数转换器98
5.1.1 数据接收和信号调理99
5.1.2 信号放大99
5.1.3 采样和量化100
5.1.4 模数转换器的类型100
5.1.5 模数转换器的分辨率100
5.1.6 模数转换器背后的数学知识101
5.1.7 数据输出102
5.2 MCP3008模数转换器103
5.2.1 通道103
5.2.2 接地端104
5.2.3 SPI104
5.2.4 参考电压104
5.2.5 供电电压105
5.3 制作你自己的传感器站105
5.4 准备通用软件109
5.5 使用你的传感器站—创建温度记录器114
5.5.1 了解LM36温度传感器114
5.5.2 编写应用程序115
5.6 本章小结117
第6章 在线上传数据——电子表格、移动设备和电子邮件119
6.1 物联网120
6.1.1 传感器节点121
6.1.2 通信123
6.1.3 云技术124
6.1.5 数据分析124
6.1.6 安全事务125
6.2 硬件设置125
6.3 用互联网进行时钟同步126
6.4 向Google电子表格上传数据127
6.5 通过电子邮件接收通知133
6.6 集成所有东西138
6.7 面临的常见问题138
6.8 本章小结140
第7章 用摄像头和OpenCV制作图像传感器141
7.1 图像处理142
7.2 OpenCV144
7.3 可与树莓派连接的摄像头145
7.3.1 树莓派摄像头模块145
7.3.2 USB网络摄像头146
7.4 用网络摄像头传输实时视频流147
7.5 安装OpenCV149
7.6 创建运动探测器157
7.7 一些令人惊叹不已的项目164
7.8 本章小结165
附录 购物清单167

教学资源推荐
作者: (美)W. Bruce Croft,Donald Metzler, Trevor Strohman 著
作者: 何炎祥 伍春香 王汉飞 编著
作者: 徐洁磐 李臣明 史九林 编著
作者: 雷震甲 编著
参考读物推荐
作者: (美)Vincent Bumgarner 著
作者: [美] 戴维·克勒德马赫(David Kleidermacher) 迈克·克勒德马赫(Mike Kleidermacher) 著
作者: 目丁兔 编著
作者: 尚艺摄影 编著