# 物联网(IoT)简介 ![这个课程概述的涂鸦笔记(sketchnote)](../../../sketchnotes/lesson-1.png) > Sketchnote by [Nitya Narasimhan](https://github.com/nitya). 如果你想看比较大的图片,请点击它。 ## 知识检查(初) [知识检查(初)](https://brave-island-0b7c7f50f.azurestaticapps.net/quiz/1) ## 简介 本课程涵盖一些介绍物联网(IoT)的主题,以及教你怎么开始设置你的硬件。 本课程将涵盖: * [什么是 ‘物联网(IoT)’?](#what-is-the-internet-of-things) * [IoT 设备](#iot-devices) * [设置你的设备](#set-up-your-device) * [IoT 的应用场景](#applications-of-iot) * [在你的周围的IoT 设备例子](#examples-of-iot-devices-you-may-have-around-you) ## 什么是 ‘物联网(IoT)’? 为了形容运用感应器来链接网络与物质世界,1999年 [凯文·阿什顿(Kevin Ashton)](https://wikipedia.org/wiki/Kevin_Ashton) 生造了‘物联网(IoT)’这个词。自从那时起,这个生造词被用来形容任何能够跟周围的世界交互的设备。这些设备可以使用感应器收集数据或者使用执行器(会做事—例如打开开关、发光二极管等—的设备)在物质世界完成任务。通常执行器会连接到其它设备或者网络。 > **感应器** 从世界中收集数据,例如:速度、温度或地点。 > > **执行器** 将电信号转换成行动,例如:打开灯,发出声音或将控制信号传送到其它硬件。 IoT 不仅是设备,还包含云服务;这些服务能处理数据,或者将请求传送给跟 IoT 设备有链接的执行器。它也包括没有链接的设备;它们通常被称为“边缘设备”,而且它们有能力用基于云的AI模型自己处理与回应感应器的数据。 IoT 是一个快速发展的技术领域。专家预计2020底,世界上有三百亿 IoT 设备跟网络有链接。专家也预计2025年,IoT 设备将来收集大概80 ZB(80万亿GB)。那是个非常大的数量! ![这个图表展示随着时间的推移的有源 IoT 设备;它展示出一个上升趋势,从2015年不超过50亿到2025年超过300亿](../../../images/connected-iot-devices.svg) ✅ 做一点儿研究: IoT 设备收集的数据,多少是有用的、多少是被浪费的?为什么那么多数据被忽略了? 对于 IoT 的成功,这些数据是不可或缺的。想成为一名有成就的 IoT 开发者,就必须了解你需要收集的数据、怎么收集它,怎么利用它来作出决定以及如果有必要的话,怎么用那些决定来跟物质世界交互。 ## IoT 设备 IoT 的 **T** 代表 **Things**(物)—— 可以跟物质世界交互的设备;它们使用感应器收集数据或者使用执行器在物质世界完成任务。 为生产或商业的设备(例:健身追踪器、机器控制器等)通常是自定义生成的。它们利用的自定义生成电路板——有时连自定义生成处理器都有——设计使它们能够满足某某任务的需求。例:要戴在手上的需要够小,或者要承受高温度、高压力、高振动的工厂环境的需要够耐用。 无论你正在学 IoT 或者在创立原型设备,作为一名 IoT 开发者,你必须由一个开发者套件开始。这些是为 IoT 开发者设计的通用设备,而它们通常不会有生产设备的特点,例如用来链接感应器和执行器的外部引脚、帮助排除错误的硬件或者将生产运行中加不必要的成本的额外资源。 这些开发者套件通常有两种:微控制器和单板机。我们会在这儿介绍它们,而将在下一课更详细地解释它们。 > 💁 你的手机也算是一个通用 IoT 设备;它拥有感应器与执行器,以及有不同应用程序用不同的方式来跟不同云服务利用它们。你甚至可以找到几个用手机的应用程序当作 IoT 设备的 IoT 教程。 ### 微控制器 一个微控制器(MCU)是一个小电脑。它包含: 🧠 至少一个中央处理器(CPU);它就是微控制器的“脑”——运行你的程序 💾 内存(随机存取存储器(RAM)和程序存储器——储存你的程序、数据变量的地方 🔌 可编程输入输出(I/O)连接——为了跟外围设备(如感应器或执行器)沟通 微控制器通常是较便宜的计算设备;自定义生成硬件的平均成本下降到 US$0.50,而也有些设备到 US$0.03 那么便宜。开发者套件的价钱可以从 US$4 起,但你加上越多特点,价钱就越高。[Wio Terminal](https://www.seeedstudio.com/Wio-Terminal-p-4509.html) 是个来自 [Seeed studios](https://www.seeedstudio.com) 的微控制器;它包含感应器、执行器、Wi-Fi和一个屏幕,总共算起来大约 US$30。 ![一个Wio Terminal](../../../images/wio-terminal.png) > 💁 当你在网上寻找微控制器时,要小心用 **MCU** 这个词,因为这回带来许多关于漫威电影宇宙(Marvel Cinematic Universe)的搜索结果,而不是关于微控制器的。 微控制器的设计允许它们被编程完成几个非常特定的任务,不像比较通用的电脑。除了一些很具体的情况,你无法连接显示器、键盘和鼠标并利用它完成通用任务。 微控制器开发者套件平时包括额外的感应器和执行器。大多数的会有至少一个能被编程的发光二极管(LEDs),还有其它设备如普通插头用来链接更多应用其或执行器或内置感应器(平时最常见的如温度)。有些微控制器有内置的无线连接如蓝牙或 Wi-Fi,或者有额外微控制器用来加这个连接性能。 > 💁 我们通常用 C 或 C++ 来为微控制器写程序。 ### 单板机 单板机指的是一个小计算器;它把一个电脑的所有要素装在单单一个小板上。这些设备的规格跟台式电脑或笔记本电脑比较相似,它们也运行完整的操作系统,但它们较小,用比较少电力以及便宜多了。 ![一个 Raspberry Pi 4](../../../images/raspberry-pi-4.jpg) Raspberry Pi 是其中最流行的单板机。 就像一个微控制器,单板机有个中央处理器、内存和输入输出引脚,但它们也有额外的特点如一个让你链接显示器的图形芯片、音频输出与 USB 端口让你链接键盘、鼠标和其它普通 USB 设备如网络摄像头和外置储存。程序将在 SD 卡或硬盘以及一个操作系统被储存,而不是通过一个内置的存储芯片。 > 🎓 你可以把单板机当成一个较小、较便宜的电脑版本,就像你现在正在用来读这些的电脑。可是,单板机还加了通用输入/输出端口,让你和感应器、执行器交互。 单板机有电脑的所有要素,所以你可以用任何编程语言来为它写程序。我们通常用 Python 为 IoT 设备写程序。 ### 为其余的课的硬件选择 其余的课程都包括作业,而且你必须用一个 IoT 设备跟物质世界交互以及跟云沟通。每个课程会支持3种设备选择:Arduino(通过一个 Seeed Studios Wio Terminal),或者一个单板机——一个物质设备(一个 Raspberry Pi 4) 或一个在你的电脑上运行的虚拟单板机。 你能在[硬件手册](../../../hardware.md)查到需要用来完成作业的硬件。 > 💁 你不需要为了完成作业而买任何 IoT 硬件;所有东西可以使用一个虚拟单板机来做。 要使用哪个硬件是你的选择,取决于你家里或学校里有什么,以及你知道或想学的编程语言。两种硬件都利用同样的感应器系统,所以万一你想途中改变你的选择,你也不需要替换大部分的套件。用虚拟单板机学跟用一个 Raspberry Pi 学差不多一模一样,而且你可以把大多数的程序转换去你的 Pi 如果你后来得到一个设备和感应器。 ### Arduino 开发者套件 如果你对微控制器的开发感兴趣,那你可以用一个 Arduino 设备完成作业。你需要对 C 或 C++ 的编程语言有基本的理解,因为将来的课程只会教关于 Arduino 框架的程序、需要用到的感应器和执行器以及跟云交互的库。 作业将用 [Visual Studio Code](https://code.visualstudio.com/?WT.mc_id=academic-17441-jabenn) 跟 [为微控制器开发的 PlatformIO 扩展](https://platformio.org). 如果你对 Arduino IDE 熟悉的话,你也能用它,但我们不会提供指示。 ### 单板机开发者套件 如果你对使用单板机学 IoT 开发有兴趣,你可以用一个 Raspberry Pi 完成作业,或者在你的电脑运行的虚拟设备。 你需要对 Python 有基本的理解,因为将来的课程只会教关于需要用到的感应器和执行器的程序以及跟云交互的库。 > 💁 如果你想学怎么用 Python 写程序,看一看一下的两个视频系列: > > * [Python for beginners(为初学者的 Python)](https://channel9.msdn.com/Series/Intro-to-Python-Development?WT.mc_id=academic-17441-jabenn) > * [More Python for beginners(更多为初学者的 Python)](https://channel9.msdn.com/Series/More-Python-for-Beginners?WT.mc_id=academic-7372-jabenn) 作业将用 [Visual Studio Code](https://code.visualstudio.com/?WT.mc_id=academic-17441-jabenn)。 如果你在用一个 Raspberry Pi,为了运行你的 Pi,你可以通过完整的桌面 Raspberry Pi 操作系统以及用 [VS Code 的 Raspberry Pi 操作系统版本](https://code.visualstudio.com/docs/setup/raspberry-pi?WT.mc_id=academic-17441-jabenn)直接在你的 Pi 写程序,或者把它当成一个无头设备,从你的电脑用 VS Code 的 [Remote SSH 扩展](https://code.visualstudio.com/docs/remote/ssh?WT.mc_id=academic-17441-jabenn)写程序;这个扩展让你链接你的 Pi,便编辑你的程序、从程序排除错误和运行程序,就像如果你直接在 Pi上写程序一样。 如果你选择用虚拟设备,你会直接在你的电脑上写程序。你不会读取感应器和执行器,反而你会用模拟工具来定义传感器值以及在屏幕上查看执行器的结果。 ##设置你的设备 在你为你的 IoT 设备写程序前,你需要做点设置。请根据你将用到的设备,按照以下的指示。 > 💁 如果你还缺少了一个设备,请用[硬件手册](../../../hardware.md) 帮你决定你要用的是哪个设备,以及你需要买的额外硬件。你不必买硬件,因为你可以用虚拟硬件运行所有的项目。 这些指示包括第三方网站的链接;这些网站由你将用到的硬件或工具的创造者。这是为了确保你会一直在按照各种工具和硬件的最新指示。 按照相当的指南来设置你的设备,并完成一个“Hello World”项目。我们将在这个介绍部分用4个课程创造一个 IoT 夜灯,而这是第一步。 * [Arduino:Wio Terminal](wio-terminal.md) * [单板机:Raspberry Pi](pi.md) * [单板机:虚拟设备](virtual-device.md) ## IoT 的应用场景 IoT 有好多用例,跨过几组: * 消费者 IoT * 商业 IoT * 工业 IoT * 基础设施 IoT ✅ 做一点儿研究:关于以下的每个范围,找一下一个不在内容里的详细例子。 ###消费者 IoT 消费者 IoT 指的是消费者将买以及在家里用的 IoT 设备。这些设备中有的非常有用,例如:智能音箱、智能供暖和机器人吸尘器。其它的有些用例比较可疑,好像声控水龙头;你无法把它们关掉因为有了流水的声音,声控就无法听到你的语音。 消费者 IoT 设备使人能够在他们的周围做成更多东西,尤其是世界上的10亿个残障人士。机器人吸尘器能为移动有困难、无法自己清扫的人提供干净的地板、声控烤箱让视力或移动力较差的人用自己的语音来给烤箱加热、健康监测器使患者能够自己监测自己的慢性病情况并定期得到更加详细的信息。这些设备将变得普及到连小孩子也在天天用着它们,如学生们在冠状病毒疫情时进行居家学习、利用智能家居设备的计时器来记录他们的功课或者设置闹钟来提醒他们参与他们未来的课程。 ✅ 你人身上或家里有什么消费者 IoT 设备呢? ### 商业 IoT 商业 IoT 包含公司里的 IoT 用例。在办公室里,有可能会有空间占用传感器和移动探测器被用来管理灯光和供暖以及在不需要的时候把它们关掉,以避免浪费钱和减少碳排放。在个工厂,IoT 设备可以监测安全隐患,例如:没有戴安全帽的人员或过于大的巨响。在店里,IoT 设备可以量冷库的温度,并通知店主如果某个冰箱的温度超过理想范围,或者它们可以监测架子上的产品,并通知工作人员如果他们为买完的产品补货。交通运输业也越来越依靠 IoT 设备来监测交通工具的地点、为道路使用者收费记录行驶里程、记录司机的工作时间和徐熙时间或者通知工作人员如果有货车即将来到仓库,并为上货或下货做准备。 ✅ 你的学校或公司里有什么消费者 IoT 设备呢? ### 工业 IoT (IIoT) 工业 IoT(也称为 “IIoT”)指的是使用 IoT 设备在大范围上来控制与管理机械。这包含很多用例,从工厂到数字农业。 IoT 设备在工厂中有很多用例。它们能使用各种感应器(如:温度、振动、旋转速度等)来监测机械。我们将可以观察这些数据,而如果机器超出某些公差(如它的温度太高),我们可以把它停下来。我们也能收集并分析这些数据,让人工智能(AI)模型看故障前的数据,再利用它预报其它未来的故障;这就叫做“预测性维护”。 为了养活不断增长的人口,数字农业非要不可,尤其是对于依靠[自给农业](https://wikipedia.org/wiki/Subsistence_agriculture) 的5亿家户中的20亿人。数字农业的范围包含才几块钱的感应器,也包含大大的初创企业。首先,一位农民可以监测温度以及用[生长度日(GDD)](https://wikipedia.org/wiki/Growing_degree-day),预测农作物能什么时候收割。再次,为了确保植物有充足的水量和避免浪费太多水,他们可以连接土壤水分监测。最后,农民可以进一步、用无人驾驶飞机、卫星数据、人工智能来监测大面积农田的作物生长、疾病和土壤质量。 ✅ 还有什么 IoT 设备可以用来帮助农民呢? ### 基础设施 IoT 基础设施 IoT 指的是监测与控制民众天天用的本地与全球基础设施。 [智慧城市](https://wikipedia.org/wiki/Smart_city)是用 IoT 设备来收集关于城市的数据再利用它们来改善城市运行方式的城市地区。这些城市通常靠本地政府、学术界和本地企业之间的合作,监测和管理各种东西——从交通到污染。一个例子是在哥本哈根(丹麦王国首都),空气污染对人民来说非常重要,所以城市量它,再用它给人民提供关于最环保的骑自行车路线与步道的信息。 [智能电网](https://wikipedia.org/wiki/Smart_grid)以收集各各家户使用电力的数据的方式来允许更好的电力需求分析。这些数据能影响国家的某些决定,包括在哪里建新发电厂。它们也能影响我们的个人决定;它们让我们明确地了解我们使用多少电力、我们在什么时候使用电力,还可以为我们提供减少浪费的意见,例如晚上为电动汽车充电。 ✅ 假如你可以在你住的地方加 IoT 设备来量任何东西,那会是什么? ##在你的周围的 IoT 设备例子 你会惊讶于你身边有多少 IoT 设备。我正在家里写这个课程的内容,而却在我的周围通过智能特点(应用程式控制、语音控制、通过手机把数据寄给我的能力)跟互联网有连接有以下的设备: * 好几个智能音箱 * 冰箱、洗碗机、烤箱和微波炉 * 为太阳能电池板的电量监测器 * 智能插座 * 摄像门铃和监视器 * 有好几个在房间里的智能传感器的智能恒温器 * 车库开门器 * 家庭娱乐系统和声控电视 * 灯光 * 健身和健康追踪器 这些设备都有感应器和/或执行器与跟互联网沟通。从我的手机,我能看得出如果我的车库门还开着,再叫我的智能音箱替我把它关上。我甚至能用计时器,那万一它晚上还开着,它可以自动关上。每当我的门铃响着,无论我在世界的哪儿个地方,我都能从手机看到门前是谁,并通过门铃的音箱和麦克风跟他们沟通。我能监测我的血糖、心率和睡眠周期,再用数据中的趋势来改善自己的健康状况。我能通过云控制我的灯,而当我的网络连接出状况,我能在黑暗中坐着。 --- ## 🚀 挑战 将在你的家、学校或工作场所中的 IoT 设备列成单子——有可能比你的想象中还要多! ##知识检查(后) [知识检查(后)](https://brave-island-0b7c7f50f.azurestaticapps.net/quiz/2) ## 复习和自学 读一下关于消费者 IoT 项目的成功和失败。在新闻网站上找一找关于失败的文章,例如:隐私问题、硬件问题或者因缺少连接性能而发生的问题。 几个例子: * 这个推特户口 **[Internet of Sh*t](https://twitter.com/internetofshit)** *(亵渎警告)* 有几个关于消费者 IoT 失败的好例子。 * [c|net - My Apple Watch saved my life: 5 people share their stories](https://www.cnet.com/news/apple-watch-lifesaving-health-features-read-5-peoples-stories/) * [c|net - ADT technician pleads guilty to spying on customer camera feeds for years](https://www.cnet.com/news/adt-home-security-technician-pleads-guilty-to-spying-on-customer-camera-feeds-for-years/) *(触发警告:未经同意的偷窥)* ## 作业 [调查一个物联网(IoT)项目](assignment.md)