发表于2024-11-21
资深嵌入式系统硬件开发工程师撰写,系统阐述如何将传感器应用于树莓派电脑板,创建令人难忘的交互式项目
用Linux和Python深入挖掘树莓派的功能,并详细介绍一系列包括OpenCV在内的激动人心的库来增强项目功能
树莓派从2012年发行一个版本以来,由于其通用的架构、标准的接口和丰富的外围设备,吸引了无数硬件和软件工程师的眼球,将其视为投身物联网产业的必备法宝之一。本书详细讲解了如何将传感器集成到树莓派电脑板,创建令人难忘的交互式项目,并用Linux和Python深入挖掘树莓派的功能,为那些希望了解各种硬件和软件如何协同工作以及希望得到在树莓派上开发传感器和物联网项目的创造者们提供实用指南。
全书分为7章:第1章介绍市面上可找到的所有型号的树莓派,包括*新发布的B型树莓派,并讨论安装操作系统的方法以及将树莓派接入互联网的几种有趣的方式;第2章简要介绍树莓派的电子学基本知识;第3~7章则通过5个不同的项目分别详细讲解如何利用树莓派和传感器测量距离、监控温度和湿度、连接树莓派和传感器、在线上传数据以及图像与视频处理。书中最后的附录给出一份购物清单,可以作为读者进行项目开发时选购相应工具和元器件的参考。
Rushi Gajjar 是一位资深嵌入式系统硬件开发工程师,也是一名电子学爱好者,他的工作领域是针对物联网研究、开发高速单板嵌入式计算机以及传感器节点。除此以外,他还曾经在印度韦洛尔理工大学参与研究,并藉此获得嵌入式系统的工程硕士学位。
在此之前,他在电子硬件设计领域作为自由撰稿人从事了大量工作,这些工作让他开始涉足快速原型开发板(例如树莓派)。他在闲暇时间里喜欢在树莓派上开发项目,这些项目包括可视化、数据记录、Web服务器以及机器学习自动化系统。他热衷于向在校学生讲授树莓派项目。
他志在将世界上所有东西都接入互联网,以增强人们的生活体验,他的业余爱好是打手鼓、摄影和旅行。
译者序
前言
致谢
第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
树莓派是一种信用卡大小的单板计算机,能提供大量开展研究和发明创造的机会。看到一个孩子从零开始学习编写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发送邮件,我们将竭尽所能解答你的疑问。
致 谢 Acknowledgements首先我必须向组稿编辑Richard Harvey表示感谢,我从来不知道自己能就“树莓派传感器”这样吸引人的话题写出一本书来,在我进行写作之前,他给了我机会和大量的支持、鼓励。感谢他能从芸芸众生中选择我作为本书的作者,并鼓励我投入到写作当中。
还要感谢文字编辑Natasha Dsouza和Owen Roberts,你们总是能在我陷入困境时助我一臂之力。在我撰写本书中间章节时由于巨大的工作压力拖延了进度,感谢他们当时的理解和协助。特别要感谢Natasha,她把大把时间都花在了编辑本书的内容上,梳理文字,并且一直支持我写作。
然后要感谢技术文案David Alcoba、Siddharth Bhave和Cédric Verstraeten,由衷地感谢你们花费宝贵的时间来对本书进行技术审查,并针对本书内容提出有益补充和宝贵意见,使得本书更能吸引读者的眼球。由于采纳了你们的宝贵建议,本书变得更加专业了。
我怎么能忘了Shiny Poojary以及对本书进行技术编辑并剔除书中错误内容的团队呢?他们完全改变了本书的面貌。感谢Shiny Poojary持续不断的支持,也感谢她为能按时校订完本书而进行的孜孜不倦的工作,多亏她,本书才得以付梓。我还要感谢Packt出版社直接或间接参与本书出版项目的员工,感谢他们的所有工作。
感谢我的朋友、教授和同事。我要感谢所有已成为我生命一部分的朋友给我带来的快乐、对于我写作本书给予的支持以及在开始写作之前给我的美好祝愿。感谢韦洛尔理工大学的教授们,尤其要感谢Arun Manoharan博士就如何成为一名作者传授给我的为数不多却大有裨益的真知灼见。另外,我在Leaf科技有限公司的同事总是从我这里拿走有关本书的最新资料并鼓励我加入令人信服的内容。
最重要的是,要对我的父母表示由衷的感谢,尽管在写作本书的所有时间内我都无法和他们待在一起,但他们每天都会咨询本书的进度并十分期待本书成形。
树莓派+传感器:创建智能交互项目的实用方法、工具及最佳实践 下载 mobi pdf epub txt 电子书 格式 2024
树莓派+传感器:创建智能交互项目的实用方法、工具及最佳实践 下载 mobi epub pdf 电子书还没开始看,马上看了哦
评分书没看,但是特价买的,很划算,还有塑封
评分不错不错不错不错不错不错不错
评分赞一下:京东网购速度确实快,不到一天就到货。
评分很实用,物流也快。
评分不错的书,技术性很强,满意
评分书很薄,但内容还不错,一定要配合实践。
评分挺好~~~~~~
评分适合有一定基础了人
树莓派+传感器:创建智能交互项目的实用方法、工具及最佳实践 mobi epub pdf txt 电子书 格式下载 2024