ChatGPT-IOT-开发加速指南-全-
ChatGPT IOT 开发加速指南(全)
原文:
zh.annas-archive.org/md5/0c999d6b36c697a0ca89037322654717译者:飞龙
前言
您是否充满了创新想法,但发现难以应对软件编码的复杂性?利用人工智能(AI)来加速您的物联网(IoT)开发之旅!
人工智能是一种变革力量,正在重塑我们的生活、社会和产业。本书指导初学者如何使用人工智能的编码能力来构建他们的第一个端到端物联网原型。它涵盖了从绘制应用程序流程图、制作硬件原型、生成嵌入式 C++示例代码、建立 Wi-Fi 连接、访问亚马逊网络服务(AWS),到在 ThingsBoard 云上创建实时仪表板的所有内容。
本书确保学习曲线平缓,从物联网基础知识、架构、关键元素、建议和最佳实践示例开始,到详尽的逐步动手项目演示。本书的一个显著特点是探索了最近的 AI 进步及其对物联网世界的变革性影响。它强调了专门针对物联网项目的 ChatGPT 提示技能,并呈现了构建有效 ChatGPT 提示的详细框架。这使您能够利用这个强大的工具在物联网项目中取得进展,克服与软件编码技能或经验不足相关的障碍。
您将介绍 Visual Studio Code 上的 PlatformIO IDE,这是最受欢迎的嵌入式软件开发环境之一。此外,您还将了解前沿的 RISC-V 架构 MCU – ESP32、Arduino 兼容的传感器以及 AWS 云和 ThingsBoard 仪表板的集成方法。
作为学习方法的一部分,我在本书的 GitHub 仓库中提供了 ChatGPT 生成的功能代码和提示指令示例。
在本书结束时,您将能够构建您的第一个成功的物联网原型,有效地弥合您的创新想法和功能创造之间的差距。
这本书面向谁
这本书是为那些渴望探索物联网技术世界但受限于嵌入式软件编码经验不足(尤其是在 C++方面)的初学者设计的。主要受众包括中学生、高中生、对智能家居应用感兴趣的爱好者、硬件爱好者、DIY 创作者、初创企业企业家、教育工作者以及来自非技术背景的专业人士。通常,他们的创新潜力因软件编码的复杂性而受到阻碍。幸运的是,人工智能可以作为智能助手,提供示例代码以加速物联网原型的开发。
本书假设读者对电子物理有基本了解,了解互联网和 IP 连接,对软件编码结构有初步掌握,并熟悉基本云概念。
本书涵盖的内容
-
第一章**,物联网基础,您应该知道的一切,介绍了定义物联网技术的核心概念和组件。
-
第二章**,物联网网络,事物的神经网络,详细介绍了物联网系统的基础设施和架构。
-
第三章**,物联网终端设备,物联网系统的神经元细胞,帮助您了解物联网网络边缘设备的作用和功能。
-
第四章**,无线连接,物联网数据传输的神经通路,探讨了在物联网系统中传输数据的无线技术。
-
第五章**,云,物联网的“超级大脑”,讨论了云计算在增强和扩展物联网应用方面的能力和优势。
-
第六章**,在物联网创新之旅中应用 ChatGPT,探讨了人工智能如何协助构思、规划和执行物联网解决方案,强调了人工智能对创新过程变革性影响。
-
第七章**,开始您的第一个物联网项目的建议,为您提供启动第一个物联网项目的实用建议。
-
第八章**,10 个适合初学者的 ChatGPT 提示物联网项目,详细介绍了使用 ChatGPT 在不同程度上进行的 10 个项目,展示了人工智能如何简化从传感器集成到数据处理的发展过程。
-
第九章**,使用 AI 工具绘制应用程序流程图,教您如何使用 AI 驱动的工具创建物联网应用程序流程图。
-
第十章**,为您的第一个项目设置开发环境,提供了使用 Visual Studio Code 和 PlatformIO IDE 建立开发环境的详细指南。
-
第十一章**,在 ESP32 上编写您的第一个代码,通过 ChatGPT 辅助的 C++编程在 ESP32 微控制器上读取本地传感器数据。
-
第十二章**,建立 Wi-Fi 连接,解释了配置 ESP32 连接到 Wi-Fi 网络的步骤。
-
第十三章**,将 ESP32 连接到 AWS IoT Core,说明了 AWS IoT Core 设置的配置、证书管理以及如何从 ESP32 建立安全的 MQTT/TLS 连接。
-
第十四章**,将传感器数据发布到 AWS IoT Core,指导您设置传感器、收集数据并将其发布到云端。
-
第十五章**,在 AWS 云上处理、存储和查询传感器数据,让你通过 AWS Lambda 上的 Python 函数执行任务,并使用 AWS IoT Analytics 存储和查询数据。
-
第十六章**,在 ThingsBoard 上创建数据可视化仪表板,解释了如何将 AWS 云与 ThingsBoard 集成、设置实时数据流以及构建自己的仪表板。
为了充分利用本书
您需要了解软件开发 IDE 工具、开源硬件和云的基本知识。
| 本书涵盖的软件/硬件 | 操作系统要求 |
|---|---|
| PlatformIO IDE 扩展在 VS Code 上 | macOS 和 Windows |
| ESP32 微控制器 | |
| Arduino 兼容的传感器 | |
| AWS 服务 | MacOS, Windows, Linux(Any) |
| ThingsBoard Cloud | MacOS, Windows, Linux(Any) |
下载示例代码文件
您可以从 GitHub 下载本书的示例代码和 ChatGPT 提示文件 github.com/PacktPublishing/Accelerating-IoT-Development-with-ChatGPT。如果代码有更新,它将在 GitHub 仓库中更新。
使用的约定
本书使用了多种文本约定。
文本中的代码:表示文本中的代码词汇、数据库表名、文件夹名、文件名、文件扩展名、路径名、虚拟 URL、用户输入和 Twitter 账号。以下是一个示例:“在此上下文中使用 build_flags 提供了几个好处。”
代码块设置如下:
1. [env:esp32-c3-devkitc-02]
2. platform = espressif32
3. board = esp32-c3-devkitc-02
4. framework = arduino
5. monitor_filters = esp32_exception_decoder, colorize
6. monitor_speed = 115200
7. build_src_filter = +<../../src/> +<./>
8. board_build.flash_mode = dio
9. build_flags =
10. -DARDUINO_USB_MODE=1
11. -DARDUINO_USB_CDC_ON_BOOT=1
12. -w
13. lib_deps =
14. adafruit/DHT sensor library@¹.4.6
15. adafruit/Adafruit Unified Sensor@¹.1.14
任何命令行输入或输出都应如下所示:
pio platform install espressif32
粗体:表示新术语、重要词汇或屏幕上看到的词汇。例如,菜单或对话框中的词汇以粗体显示。以下是一个示例:“ESP32 将重新启动,你可以找到串行 监视按钮。”
小贴士或重要注意事项
看起来像这样。
联系我们
欢迎读者反馈。
一般反馈:如果您对本书的任何方面有疑问,请通过电子邮件发送给我们 customercare@packtpub.com,并在邮件主题中提及书名。
勘误:尽管我们已经尽最大努力确保内容的准确性,但错误仍然可能发生。如果您在本书中发现错误,我们将非常感激您向我们报告。请访问 www.packtpub.com/support/errata 并填写表格。
盗版:如果您在互联网上以任何形式发现我们作品的非法副本,我们将非常感激您提供位置地址或网站名称。请通过电子邮件发送链接到 copyright@packt.com 与我们联系。
如果您有兴趣成为作者:如果您在某个领域有专业知识,并且您有兴趣撰写或为书籍做出贡献,请访问authors.packtpub.com。
分享您的想法
一旦您阅读了《使用 ChatGPT 加速物联网开发》,我们非常乐意听到您的想法!请点击此处直接进入此书的亚马逊评论页面并分享您的反馈。
您的评论对我们和科技社区非常重要,并将帮助我们确保我们提供高质量的内容。
下载此书的免费 PDF 副本
感谢您购买此书!
您喜欢在路上阅读,但无法携带您的印刷书籍到处走?
您选择的设备是否与您的电子书购买不兼容?
不要担心,现在,随着每本 Packt 书籍,您都可以免费获得该书的 DRM 免费 PDF 版本。
在任何地方、任何设备上阅读。直接从您最喜欢的技术书籍中搜索、复制和粘贴代码到您的应用程序中。
优惠不会就此停止,您还可以获得独家折扣、时事通讯和每日免费内容的每日电子邮件。
按照以下简单步骤获取好处:
- 扫描下面的二维码或访问以下链接!img/B22002_QR_Free_PDF.jpg
packt.link/free-ebook/978-1-83546-162-4
-
提交您的购买证明
-
就这样!我们将直接将您的免费 PDF 和其他福利发送到您的电子邮件中
第一部分:理解物联网基础
在本节中,您将深入探讨物联网系统的基本组件,通过一个启发性的类比,将人类神经系统与这些技术的功能和相互关联性联系起来。您将获得对支撑物联网生态系统的基本概念的理解,了解物联网网络和终端设备的关键作用,以及各种无线连接选项,它们就像身体中的神经,无缝地在距离上传递数据。此外,您将研究云如何作为物联网系统的“大脑”,提供强大的计算能力和巨大的存储能力,以有效地处理和管理数据。本节为深入理解物联网如何在各种应用中运行及其相互作用奠定了基础。
本部分包含以下章节:
-
第一章,物联网基础,您应该知道的一切
-
第二章,物联网网络,事物的神经网络
-
第三章,物联网终端设备,物联网系统的神经元细胞
-
第四章,无线连接,传递物联网数据的神经通路
-
第五章,云,物联网的“超级大脑”
第一章:物联网基础知识,你应了解的一切
在本章中,你将了解物联网(IoT)的概念和定义,这是由行业定义的,以及自其诞生以来的显著演变里程碑。通过了解物联网的历史背景和未来展望,你将对其重要性和在市场中的潜在应用获得宝贵的见解。
此外,你将深入了解物联网所涉及的广泛市场以及其影响最为突出的各个行业和领域。从医疗保健到交通,从智能家居到工业自动化,物联网已经彻底改变了我们生活、工作和与环境互动的方式。你将探索这些现实世界的应用以及物联网在塑造我们社会中的变革力量。
到本章结束时,你将获得坚实的知识基础和全面的理解,这些是开始探索物联网复杂世界的必要概念和知识。你将完全准备好在本书后续章节中深入探讨物联网的细节和复杂性。
在第十一章的工程项目中,借助 ChatGPT 的帮助,你将学习如何在 ESP32 微控制器单元(MCU)上编写 C++代码,通过你的家庭 Wi-Fi 网络发送各种传感器的数据,并在亚马逊网络服务(AWS)云上存储、分析和可视化实时和动态的传感器数据。在本章中,我们将熟悉这些术语,以便打下正确的基础。
本章涵盖了以下主题:
-
物联网的演变定义
-
可寻址市场
-
物联网对我们产生的影响
物联网(IoT)的演变定义
自 20 世纪 90 年代首次亮相以来,物联网从未停止过其定义的演变。
根据 Gartner (www.gartner.com/en/information-technology/glossary/internet-of-things)的定义,物联网的概念如下:
“物联网(IoT)是包含嵌入式技术的物理对象网络,用于通信、感知或与其内部状态或外部环境交互。”
然而,截至今天,这个定义可能显得有些陈词滥调,过时了。最初,物联网的概念是专门为支持制造工厂内的传统机器对机器(M2M)通信而设计的,它受到有线铜线、以太网电缆和电源线的限制。它通常部署在固定场景中,没有移动性、可扩展性、弹性、功耗和成本效益。
自从 1999 年,物联网(IoT)被 MIT Auto-ID 实验室执行董事凯文·阿什顿正式命名以来,它在各个领域都取得了显著的进步。这得益于工业创新方面的突破,如硅芯片组、无线技术和云服务。物联网不再仅仅在本地网络中运行,而是在广阔的地域上跨越了巨大的地理区域。物联网现在正在将其范围扩展到家庭、住宅和商业区域、校园和城市之外,甚至触及沙漠、荒地、海洋和航空航天领域。
回顾过去,物联网自诞生以来经历了几个显著的飞跃。这些飞跃包括部署覆盖范围、功耗、成本结构和架构的改进,如下所述。
从固定部署到移动部署
2000 年是物联网爆炸性增长的转折点。它标志着物联网应用进步的一个重大里程碑。这是由于低成本 802.11 Wi-Fi 网络的工业创新,这些网络迅速且广泛地被家庭和企业采用。802.11 Wi-Fi 网络的引入为物联网设备带来了革命。它们不再仅仅依赖于电缆(尽管可能仍然需要电源线),现在可以享受移动性的便利。这一开创性的发展使得物联网设备能够通过无线连接无缝地连接到住宅、商业和商业场所,无论它们是静止的还是移动的。这是物联网领域的一个重大转变,为未来的更大可能性和创新铺平了道路。
802.11 Wi-Fi 并不是唯一主导家庭和企业空间的选项;还有其他新的参与者提供本地移动性,包括蓝牙 802.15.1 系列、蓝牙低功耗(BLE)和由 ZigBee、Thread 和 Matter 以及 Sub-GHz Z-Wave 组成的 802.15.4 系列。
从本地区域到广域区域的移动性
2005 年,随着服务提供商(SP)的 3G 蜂窝网络的引入,包括码分多址(CDMA)和通用移动通信系统(UMTS),对物联网的推动起到了重要的催化作用。这些网络提供了更快、更广泛的区域移动连接性,使得更多种类的设备能够随意连接到互联网。这一突破为物联网在各个领域的应用开辟了众多机会,包括住宅和校园之外,跨越城市和农村地区。这些应用的例子包括车队管理、智能农业和资产管理。
进入 2010 年,4G/长期演进(LTE)技术的引入通过提供更高的数据速率加速了物联网的增长。到了 2020 年,5G 时代带来了更加迅速的进步。因此,物联网几乎渗透到世界的每一个人口角落,改变了我们的生活方式和工作方式。
从城市到荒野的覆盖范围
物联网足迹的广泛扩展并不仅仅与 SPs 提供的传统 4G/LTE 和 5G 蜂窝网络的覆盖范围相关。在人口较少的地区,如荒野、森林、山区、海上甚至海洋,由于投资不明智,SPs 犹豫不决提供覆盖,这些行业正在采用新的无线技术来提供物联网覆盖。这些技术的例子包括低功耗广域网(LPWAN),如长期演进类别 M(LTE-M)、窄带物联网(NB-IoT)、来自 LoRa 联盟的长距离广域网(LoRaWAN)、Sigfox和低地球轨道(LEO)网络,如 SpaceX Starlink 和 Amazon Kuiper,它们不依赖于传统的 SPs。
LTE-M 和 NB-IoT 都源自 SPs 的蜂窝网络。与旨在为移动电话提供高数据速率的传统 4G/LTE 和 5G 技术不同,LTE-M 和 NB-IoT 优先考虑更广泛的覆盖范围和优异的较低功耗,为电池供电的物联网设备提供降低的接收灵敏度、带宽和数据速率,这些与传统 4G/LTE 和 5G 网络不同。
LoRaWAN 是由 LoRa 联盟支持的工业标准。它旨在为各种物联网应用提供长距离覆盖和低功耗。通过在未授权频谱(例如分配给工业、科学和医疗(ISM)的频段)上运行,LoRaWAN 为对利用它进行物联网项目感兴趣的各种用户提供了可访问性。该标准确保设备可以在长距离上通信,同时消耗最少的能量,使其成为许多物联网场景的理想选择。
SpaceX Starlink 和 Amazon Kuiper LEO 卫星星座将在促进这些地区的物联网应用部署中发挥关键作用。凭借其广泛的覆盖范围和高速连接,这些卫星网络将赋予各种物联网设备能力,实现无缝数据传输,增强偏远和未充分服务地区用户的通信和连接性。此外,SpaceX Starlink 和 Amazon Kuiper LEO 与物联网技术的集成将为农业、交通和环境监测等行业解锁新的可能性,彻底改变我们收集、分析和利用数据以改善决策和效率的方式。
从 Mb/s 到 Gb/s 的吞吐量
当物联网最初是为制造工厂中的机器对机器(M2M)通信而设计时,通常使用 RS232 或 RS485 有线接口来实现。绞合线限制了数据率,从每秒几百千比特到 10 Mb/s。然而,随着 Wi-Fi 5、Wi-Fi 6、4G/LTE 和 5G 等先进技术的出现,最大数据率显著提高,达到 100 Mb/s 到 1 Gb/s 的范围。这种数据传输能力的巨大提升为物联网应用开辟了无数新的可能性。
这些进步的主要好处之一是能够支持高清视频监控。随着数据率的提高,物联网设备现在可以传输高质量的视频流,从而实现更好的监控和安全。这在公共空间等需要确保安全的关键领域尤其有用。
这些进步带来的另一个令人兴奋的可能性是它们可以提供的沉浸式体验。随着数据率的提高,物联网设备现在可以支持诸如增强现实(AR)和虚拟现实(VR)等技术。这意味着用户可以拥有更多互动和吸引人的体验,无论是通过将数字信息叠加到现实世界上的 AR 应用,还是通过将他们带到虚拟环境中的 VR 模拟。
电池寿命从几天到几年
对于物联网应用来说,追求高数据率并不总是必要的。虽然一些物联网应用确实需要高数据率,但重要的是要考虑到也存在许多外部电源输入不可用的情况。在这些情况下,物联网应用必须由需要持续数年的电池供电。作为权衡,这些应用可以接受非常低的数据率,从每秒几字节到每秒几百千比特,并且具有高达几秒的更高延迟。
认识到这一需求,除了继续探索高数据率技术外,行业还将其重点转向开发提供低数据率和低功耗的技术。这导致了各种无线技术的出现,以满足这些需求。之前提到的 LoRaWAN 就是这样一个例子。其他值得注意的技术包括由服务提供商(SPs)通过其蜂窝网络提供的 NB-IOT 和 LTE-M。此外,还有低功耗蓝牙长距离(BLE-LR)和 802.11 ah Wi-Fi Halow。
从点对点、点对多点网络到网状和星型拓扑结构
传统的 M2M 通信,如 RS232(点对点)和 RS485(点对多点)在节点规模和通信距离方面存在局限性。为了克服这些局限性,并将物联网连接扩展到制造工厂之外的住宅、社区、城市和农村地区,行业开发了网状拓扑结构。这些网状拓扑结构将物联网设备作为子节点连接起来,并通过相互桥接将数据传输到父节点,从而实现更广泛的覆盖范围。网状拓扑结构的例子包括智能家居的 BLE 和 ZigBee 网状结构,以及用于智能电表的 Wi-SUN 网状结构。
通过实施网状拓扑结构,物联网网络的规模和覆盖范围得到了显著扩展。然而,这种扩展也带来了新的挑战,如网络复杂性增加、无线电资源使用效率降低和设备功耗更高。尽管存在这些挑战,但网状拓扑结构在连接和覆盖方面的优势使其成为某些特定用例的可行解决方案,如前所述。
为了应对这些挑战并满足行业日益增长的需求,已经探索了各种网络方法。一个广泛使用的选择是星型拓扑,它提供了网络简单性,如 LoRaWAN、NB-IoT、LTE-M 和 LEO 卫星网络。
在星型拓扑中,物联网设备可以通过仅一个无线电跳转轻松连接到接入设备。这种接入设备可以是 LoRaWAN 网关、蜂窝网络中的基站(即 eNodeB)甚至 LEO 卫星。这种类型的网络以其即插即用(PnP)功能而闻名,使其易于设置和使用。此外,它允许物联网设备在不执行任务时进入深度睡眠模式,从而节省能量,与需要始终开启以桥接网络的网状拓扑结构相比,整体功耗更低。
边缘节点智能
在 M2M 通信时代,物联网设备,也称为从节点,收集和传输未开发协议数据到其上游节点,如 RS232 或 RS485 主节点。这些物联网设备的主要功能是转发原始数据,而不在本地拥有智能。然而,行业已经认识到为物联网设备开发本地计算能力的好处。这包括在设备操作系统之上使用容器、Google TensorFlow 和 AWS IoT Greengrass。
边缘智能通过使用预定义的算法在本地处理未开发的数据,而不是无差别地将所有原始数据上传,为物联网提供了显著的优势。这种方法导致回程带宽消耗节省,应用决策延迟减少,以及从云端卸载工作。
虽然边缘智能的好处是显著的,但重要的是要注意,它可能并不适合每个物联网(IoT)应用。这是由于对物联网设备硬件设计的要求增加,例如需要强大的处理器、更大的内存和高功耗。
人工智能(AI)和机器学习(ML)
智能化的演变不仅仅局限于物联网设备。各行业正在不断将人工智能(AI)和机器学习(ML)能力推向物联网云。通过利用 AI 和 ML 算法,云平台如 AWS 和 Microsoft Azure 使企业能够分析和理解大量物联网数据。这些平台提供了高级工具和服务,使组织能够开发智能应用、自动化流程并做出数据驱动的决策。
将 AI 和 ML 集成到云中的关键优势是它提供的可扩展性和灵活性。通过按需扩展资源的能力,企业可以轻松处理物联网数据的增加量、速度和多样性。这确保了组织能够实时处理和分析数据,使他们能够快速响应变化的情况并做出明智的决策。
此外,AI 和 ML 算法可以在物联网数据中揭示可能被忽视的模式、趋势和相关性。这使企业能够从客户行为、运营效率、预测性维护等方面获得宝贵的见解。通过利用这些见解,组织可以优化流程、改善客户体验并推动创新。
除了处理和分析物联网数据外,云平台还提供了训练和部署 AI 模型所需的基础设施和工具。这使得企业能够构建能够学习和适应时间智能应用,提高其性能和准确性。通过像 Amazon SageMaker 和Azure 机器学习(AML)这样的服务,组织可以轻松开发、训练和部署 AI 模型,而无需大量的计算资源或专业知识。
此外,云驱动的 AI 和 ML 带来了可访问性和经济性的好处。通过利用云服务,各种规模的企业都可以访问前沿的 AI 和 ML 能力,而无需在基础设施或专业人才上进行大量前期投资。这种 AI 的民主化使得组织能够在日益数据驱动的世界中实现竞争的公平性。
随着其从最初目的的指数级增长和快速扩张,物联网在相对较短的时间内大胆地接纳并整合了各种创新技术。其主要目标是满足广泛的市场需求,不仅限于家庭和校园,还包括工业、城市甚至农村地区。通过这样做,物联网旨在在全球范围内革命性地改变我们的生活方式、工作方式以及与技术的互动方式,主动扩展其可触及的市场,从住宅、邻里、校园、城市和农村地区扩展出去。让我们在下一节中了解更多相关信息。
可触及市场
在探索物联网可触及市场时,有几种方法可以实现细分,例如根据技术规格、应用设计、商业模式或适用的垂直行业进行区分。然而,本章将重点介绍一种基于应用场所的易于理解的市场细分方法。这种方法对于初学者来说特别有益,可以帮助他们精确地确定其创新的目标市场。通过了解应用部署的位置,初学者可以深入了解不同地点的具体需求和挑战。
住宅
智能家居是初学者练习他们第一次物联网创新的便利和可访问的环境。它为新开发者提供了一个低门槛的实验创新场景。
智能家居的一个主要优势是它能够轻松访问现有的家庭 Wi-Fi 网络,消除了额外网络基础设施的需求。此外,电源供应也不是问题,因为物联网设备可以从墙壁插座获取直流电源。即使是需要电池的物联网设备,在需要更换时也很容易操作。
已经有几家主要供应商提供中央枢纽解决方案,用于托管智能家居应用,包括 Google Home、Amazon Alexa 和 Apple HomeKit。初学者可以遵循这些供应商的规范,以确保其物联网创新与移动应用程序和云平台兼容并实现无缝集成。这对于最近出现的智能家居互操作协议如果这个,那么那个(IFTTT)和Matter尤为重要。
以下是一份最受欢迎的 10 大智能家居应用列表:
-
室内温度和湿度监测
-
烟/火焰探测器
-
安全摄像头
-
智能照明/灯泡
-
智能恒温器
-
智能锁
-
智能门铃
-
智能墙壁插座
-
智能车库门开启器
-
智能垃圾桶
毫无疑问,物联网部署的主要焦点在家用领域,这得益于其巨大的市场规模和易于市场推广(GTM)的方法。相比之下,为商业和商务市场设计的物联网应用对产品质量、管理、可靠性和安全性有更高的要求,同时也有可能获得更高的利润率。
与家庭环境中使用物联网应用相关的安全担忧主要围绕潜在的隐私侵犯。这些担忧源于这些物联网设备,它们在我们的日常生活中越来越普遍,通常连接到互联网,因此存在敏感个人信息被未授权的个人或实体暴露的风险。
商业和商务
商业和商务场所的物联网应用可以轻松地从智能家居应用扩展。例如,烟雾探测器可以在家庭和商业建筑中使用。然而,由于企业级访问所实施的安全机制,访问企业 Wi-Fi 网络面临挑战。虽然访问家庭 Wi-Fi 网络只需简单地使用 Wi-Fi 服务集标识符(SSID)和密码,但访问企业 Wi-Fi 网络则需要支持 Wi-Fi 保护接入 2(WPA2)、802.1X 可扩展认证协议(EAP)和远程认证拨号用户服务(RADIUS)认证。
当涉及到在商业场所安装和管理物联网设备时,通常有两个挑战。首先,在地板上方找到外部电源并不总是容易。你不能随意在建筑内铺设电源线。其次,如果你要部署数百个设备,你需要创建一个管理解决方案来有效地监控和管理它们。
以下是在商业和商务场所中排名前十的流行物联网应用列表:
-
室内温度和湿度监测
-
烟雾/火焰探测器
-
安全摄像头
-
智能照明/灯泡
-
智能供暖、通风和空调(HVAC)管理
-
智能停车
-
资产跟踪和库存管理
-
水泄漏检测
-
建筑入侵检测
-
占用检测
为商业和商务市场设计的物联网应用主要关注室内部署,而在其相邻的社区和校园市场,要克服在开放空间、户外部署物联网应用的挑战,这提高了产品的鲁棒性和可靠性标准。
在商业和商务环境中确保物联网应用的安全涉及定期设备更新、强认证、安全的引导过程以及硬件安全模块(HSMs)来保护设备。网络安全通过加密、网络分段、防火墙和入侵检测系统(IDSs)得到增强。数据安全措施包括加密静态数据和传输中的数据、严格的访问控制和数据最小化。云安全涉及安全的 API、符合法规和定期的安全审计。物理安全措施包括访问控制和篡改检测。
社区和校园
在社区和校园环境中的大多数物联网应用主要关注户外用例。在社区和校园环境中构建物联网应用的过程与商业和办公场所相比,面临着更大的挑战。这些挑战包括需要户外加固设计、可靠的无线连接和电源供应可用性。
当物联网设备进入户外硬件设计时,它们遵循防护等级标准(IP 等级)。该标准确保硬件能够承受各种环境因素和条件,如灰尘、水和极端温度。通过遵循 IP 等级,制造商可以确保其户外硬件耐用、可靠,并适合户外部署。无论是用于智能城市基础设施、农村地区应用还是社区和校园环境,户外硬件的设计必须充分考虑保护和弹性。具体细节将在第三章的设备类型部分进行解释。社区和校园中的无线连接面临挑战。理想情况下,公共 802.11 Wi-Fi 网络应该能够满足需求。然而,物联网设备必须支持 WPA2、802.1X EAP 和 RADIUS 身份验证,就像在企业网络中使用的安全访问机制一样。如果公共 802.11 Wi-Fi 网络不可用,应探索其他网络。
一种选择是接入当地服务提供商(SP)提供的 4G/LTE 或 5G 网络。为此,您的物联网设备模块需要具备兼容的蜂窝模块。您还需要从 SP 那里购买 SIM 卡和数据计划。另一种选择是接入由当地公共 LoRaWAN 运营商托管的 LoRaWAN 网络。最坏的情况是,您需要构建自己的私有 LoRaWAN 网络,尽管这个选项可能复杂且成本高昂。
在社区和校园环境中,另一个主要挑战是物联网设备的外部电源供应。找到可访问的电源或铺设电源线到安装位置可能很困难。为了解决这个问题,建议设计低功耗的物联网设备,并集成太阳能板或可充电电池。
以下是在社区和校园位置内最受欢迎的 10 个物联网应用列表:
-
智能路径照明
-
烟雾/火焰探测器
-
安全摄像头
-
智能停车
-
智能灌溉
-
智能医疗保健
-
资产/宠物追踪
-
智能垃圾管理
-
无线紧急按钮
-
设施安全
社区和校园市场需要通过固定安装或限定区域内的本地移动性来支持物联网应用。在大多数情况下,企业 Wi-Fi 和私有 LoRaWAN 网络是首选的经济高效选项。4G/LTE 和 5G 也可以考虑,但成本始终是首要考虑因素。对于城市市场,除了成本外,广域移动性、无缝覆盖和业务可扩展性也很重要。
在安全考虑方面,社区和校园空间对潜在攻击的脆弱性显著增加。这种增加的脆弱性是由于这些空间的开放性,允许用户携带自己的物联网设备。例如,用户可能会携带一个宠物追踪标签。这些设备虽然有用且方便,但可能会无意中引入网络安全风险,从而增加未经授权的访问和攻击的可能性。因此,实施强大的安全措施来减轻这些风险并保护网络至关重要。
城市
当物联网应用在城市中部署时,它们可以被视为社区和校园环境的扩展版本,但规模更大,挑战更多。主要挑战是确保广域移动性、无缝覆盖和业务可扩展性。为了应对这些挑战,一个选择是利用本地服务提供商提供的 4G/LTE 或 5G 网络,或者从本地 LoRaWAN 运营商那里接入公共 LoRaWAN 网络。
以下是在城市中排名前 10 的流行物联网应用列表:
-
智能街灯
-
噪音检测
-
安全摄像头
-
智能停车
-
智能灌溉
-
联网汽车
-
资产/宠物追踪
-
智能垃圾管理
-
空气质量监测
-
设施安全
城市市场是最复杂和最具挑战性的部分,这主要归因于其地理空间。农村市场也是一个挑战,因为它尽管在大面积部署了物联网应用,但往往缺乏蜂窝网络覆盖。
在城市中部署物联网的安全考虑也是一个多方面的挑战。随着城市越来越互联互通,越来越依赖物联网技术来维持其运作,确保这些系统的安全性变得至关重要。首要的安全问题是由于大量互联设备产生的复杂性。部署物联网技术的城市可能正在处理数百万个设备,每个设备都代表一个潜在的安全漏洞点。这些设备,从交通传感器到智能电表,都需要得到保护,以防止恶意行为者利用它们,这是一个由于数量庞大和多样性而令人畏惧的任务。数据安全是另一个主要问题。物联网设备产生的海量数据需要安全地传输、存储和处理。这些数据通常包括敏感的个人隐私信息,因此其安全性是一个关键优先事项。任何数据安全漏洞都可能产生严重的影响,从隐私侵犯到重大的运营中断。
农村地区
在农村地区部署的物联网应用最相关的是农业、自然环境野生动物旅游。在大多数情况下,存在蜂窝网络覆盖不足的问题。可选择的方案包括从当地 LoRaWAN 运营商那里接入公共 LoRaWAN 网络,建立自己的私有 LoRaWAN 网络,或接入 LEO 卫星网络。然而,无论是硬件成本(CapEx)还是数据计划(OpEx),总是存在担忧。
以下是在城市中部署的前 10 个最受欢迎的物联网应用列表:
-
土壤湿度监测
-
野火检测
-
空气质量监测
-
河流水污染监测
-
洪水监测
-
山体滑坡警报
-
动物追踪
-
车队管理
-
安全摄像头
-
设施安全
农村地区的市场正在见证与农业生产、环境保护和自然灾害防护相关的物联网应用的蓬勃发展。然而,无线连接仍然是一个需要解决的主要问题。与工业市场一样,有众多选项可用于解决这个问题。
农村地区的安全考虑通常比城市简单。主要原因是农村地区可能拥有更少的物联网应用类型。例如,在城市中,物联网技术可能被用于从交通管理系统到智能家居应用和环境保护的各个方面。相比之下,在农村环境中,应用可能更加有限,可能主要关注农业或天气监测。这种有限的范围可能导致更少的安全问题,仅仅是因为潜在的安全漏洞点更少。然而,无论物联网部署的复杂度或范围如何,实施稳健的安全措施仍然至关重要。
工业
物联网(IoT)也是工业 4.0 不可或缺的组成部分。它赋能了众多工业流程,如智能制造、预测性维护和供应链优化(SCO)。通过收集和分析实时数据,物联网增强了自动化,改善了能源管理,确保了质量控制,并实现了定制化生产。
然而,物联网在工业环境中的集成并非没有挑战。这包括确保强大的安全措施以抵御网络攻击,实现各种设备的互操作性,管理大量数据,以及高效地扩展系统。平衡实施成本、解决隐私问题、获得必要的专业技术以及在苛刻的工业环境中保持可靠性也是需要克服的重大障碍。
尽管存在这些挑战,但克服它们对于行业充分利用物联网的潜力至关重要。物联网提供的提高效率、创新和竞争力可以彻底改变工业流程,并显著提高生产率和盈利能力。
在工业市场中,物联网应用通常具有独特性,导致不同垂直行业之间存在广泛的无线连接选项。根据行业的具体需求和需求,可以采用各种无线连接选项。这些可能包括 Wi-Fi 6、6E 和 7,私有 4G/LTE,如公民宽带无线电服务(CBRS),5G 超可靠低延迟通信(URLLC),WiSUN网状网络,ISA100和WirelessHART用于更专业的应用。
以下是在工业领域内最受欢迎的 10 大物联网应用列表:
-
智能计量
-
监控与数据采集(SCADA)
-
汽车移动机器人
-
安全摄像头
-
管道泄漏监测
-
预防性维护
-
车队管理
-
资产追踪
-
危险区域(Hazloc)监测
-
设施安全和人员安全
与其他物联网市场相比,工业物联网(IIOT)市场具有独特性,因为每个垂直行业,如公用事业、采矿、石油和天然气、制造和运输,都有自己的特定要求。这要求物联网应用开发者在这些行业拥有特殊的专业知识。这种情况提高了市场渗透的门槛。
我们看到物联网应用在许多市场得到广泛应用,如家庭、城市和工业。这种扩展不仅改变了我们的直接环境,还影响了我们生活的各个方面。在下一节中,我们将讨论这次技术革命的真正影响。我们将探讨物联网如何改变我们家庭的便利性和效率,推动城市中的可持续和智能解决方案,以及改变工业中的流程和安全措施。这些领域都展示了物联网的多样化影响,突显了它在数字化转型时代的重要作用。
物联网对我们的影响
随着物联网向新空间的扩展步伐,它始终从各个角落、各个维度和每一次接触中影响我们。其中一些是你意识到的,它们带来的实际好处显著地吸引了你的注意;而另一些你可能正在忽视,因为它们已经是你日常生活的一部分多年了。
总结来说,物联网向各个空间的扩展带来了四个关键性的改进。这些改进对我们生活产生了重大影响,使我们的生活更加舒适、安全、高效和环保。
生活舒适度和安全性提升
在我们的日常生活中,物联网(IoT)带来了众多好处,极大地提升了我们在居住空间各个领域的舒适度和安全性。
个人护理
个人护理是个人中最受欢迎的物联网应用之一,通常使用智能手表来测量心率、血氧水平、步数和位置。随着蓝牙(BLE)的广泛应用和 Matter 协议的简化,越来越多的便携式物联网设备正在连接到移动设备,并将实时数据转发到云端平台。
在过去,你的爷爷可能每天测量血压,然后将数值记录在他的笔记本上。他会在每月的访问中将记录的每日数据带给家庭医生。而物联网技术使得这一过程更加方便,并能够轻松地将数据传输给家庭医生。市场上出现了新的创新血压计,它们具有与手机应用和云平台连接的蓝牙(BLE)功能。收集到的每日数据在手机应用中记录和汇总,并转发到云端。家庭医生可以实时了解人们的血压管理情况,甚至可以及时收到异常事件的警报。
今天,得益于低功耗 MCU、传感器和无线技术,电池供电的物联网应用在个人护理领域日益增多,尤其是为老年人、儿童和残疾人。虽然智能可穿戴设备仍然是市场上最受欢迎的选择,但我们也在见证其他创新;例如,为老年人佩戴的带有 BLE 和 LoRaWAN 的无线紧急按钮可以在紧急情况下向相关护理人员发出警报;儿童背包上的位置追踪标签通过无处不在的 4G/LTE 网络将 GPS 信息传输到父母的移动应用;为盲人配备超声波传感器的拐杖,可以检测盲人前方障碍物的距离,并在他们太靠近时发出警报。
甜蜜的家
家是一个舒适的地方,可以放松和放松心情,它也已经成为物联网积极舞动的闪亮舞台。多亏了家庭 Wi-Fi 的连接,人们现在只需在智能手机上轻点几下,就能远程控制各种智能家居设备。这项技术进步真正改变了我们与家互动的方式。
想象一下拥有一个智能恒温器,它不仅能实时测量室内温度,还能自动调节家庭 HVAC 系统到您想要的舒适水平。手动调节恒温器的日子已经过去了;现在,您只需使用智能手机就可以确保您的家始终保持完美的温度。离开家时忘记关闭 HVAC?不用担心!您可以通过移动应用远程关闭它,或者当智能恒温器系统检测到房间里没有人时,它会自动关闭。但这还不是全部。有了智能电源插座,您可以安排您的家用电器在特定时间开启或关闭,这样您可以节省电力并减少碳足迹。不小心让电器保持开启的日子已经过去了;现在,您可以安心地知道您的家是节能和环保的。而且,我们不要忘记智能照明灯泡。这些创新的光照解决方案可以根据环境亮度自动开关。告别在黑暗中摸索或白天留下灯光浪费能源的日子。
此外,物联网在住宅空间的安全性方面也取得了极大的提升。通过利用各种物联网技术,家庭安全系统变得更加智能,提供了更广泛的功能,以确保业主的安全和安心。这些系统现在包括无线监控摄像头、运动传感器和智能门窗锁,它们协同工作,提供全面的安全解决方案。通过互联网连接和手机应用程序,用户可以轻松访问监控摄像头的实时视频流,接收运动传感器检测到的任何可疑活动的即时通知,甚至可以远程锁定或解锁他们的门。更多智能安全相关应用正来自智能家居行业。例如,传统上,家庭烟雾报警器只会在家内本地发出警报。然而,通过物联网集成,烟雾报警器现在可以通过互联网将警报发送到您的手机应用程序,使业主即使在离家在外也能收到关于潜在火灾危险的提醒。这一额外的连接和便利性确保了业主可以立即采取行动,防止任何潜在灾难。
运营效率提升
商业、商业区、商品店、校园和城市等场所是物联网对抗运营低效率的战场。
节能
这些地点的能源消耗是导致运营成本最大的因素。这包括与电力、水和燃气相关的成本。随着物联网技术的出现,有创新的解决方案可用于优化照明和暖通空调系统的电力消耗。通过实施物联网技术,企业主可以提高能源效率并降低成本。借助物联网,天花板照明和暖通空调系统可以智能控制,根据建筑的实际需求工作。这意味着灯光和空调只有在需要时才会打开,而不是持续开启。
一个展示智能能源技术应用的真实例子是在会议室。在这些空间中,物联网传感器被用来检测人类活动。当这些传感器检测到会议室没有活动时,系统会自动触发,降低灯光和空调的强度或完全关闭。
预测性维护
商业建筑配备了各种机器和设备,这些对于其正常运作以及室内人员的安全和舒适至关重要。这些机器包括水泵、气阀、通风系统、空调压缩机等等。这些系统中的任何故障或故障都可能导致严重后果。然而,借助物联网传感器,现在可以实时监控和跟踪这些机器的性能。这些传感器可以检测任何异常或偏离正常操作条件的情况,并在它们发生之前预测潜在的故障或故障。这允许采取主动和预防性的维护措施,确保任何问题在升级并造成干扰之前得到解决。通过实施物联网传感器,商业建筑可以大大提高其运营效率,减少停机时间,并提高其居民的总体安全和舒适度。
一个现实生活中的例子是在空调压缩机上使用振动监测应用。在这种情况下,一个物联网传感器被连接到压缩机上以记录振动范围数据。然后,传感器将实时数据发送到云端。系统管理员可以在线访问以监控压缩机的运行状态,如果数据分析预测需要维护,系统将发出警报。
在商业建筑中,另一个案例是检测水泄漏。这是一个常见问题,如果未能及时解决,可能会导致严重损坏。为了解决这个问题,可以在房间角落的战略位置安装水泄漏检测传感器,这些位置的水管更容易发生泄漏。这些传感器会持续监控任何水泄漏的迹象,并在发生任何情况时立即向建筑物管理员发出警报。这种主动方法确保任何潜在的水泄漏都能被迅速识别和处理,从而最大限度地减少广泛损坏的风险,并为使用会议室的每个人提供一个安全和舒适的环境。
环境保护改善
开阔地带,如自然区域、森林、国家公园、山脉、河流、近海区域和海洋,是采用物联网应用的绝佳场合。
灾害预警
灾害监测是环境保护的一个极其重要的方面。有效地监测和应对灾害的能力对于拯救生命和最大限度地减少损害至关重要。在通常没有蜂窝覆盖的地区,利用替代无线回程的创新物联网应用,如 LoRaWAN 和 LEO 卫星,已成为灾害监测工作中的关键参与者。
一个真实的案例是通过 LoRaWAN 无线回程的振动传感器对火山活动进行监控的应用。这些振动传感器被战略性地安装在火山区域,以实时监控岩石的振动数据。这些宝贵的数据随后被传输到云平台,科学家和研究人员可以访问并分析它。通过利用这项先进技术,专家能够密切观察和研究火山活动,使他们能够做出更准确的预测,并采取必要的预防措施,以确保附近社区和基础设施的安全。
物联网技术被应用的另一个例子是在加利福尼亚州检测野火。火焰检测传感器已被安装在易发生野火的地区。如果发生火灾,这些传感器将被触发并向云平台发送警报,使政府能够立即采取行动。这是一个重要的发展,因为它有助于早期检测和预防野火,最终保护生命和财产安全。
污染监测
污染控制是物联网为环境保护带来的显著好处之一。除了灾害监测外,物联网技术还促进了各种智能传感器的发展和应用,用于污染检测。这些传感器可以检测包括但不限于二氧化碳(CO2)、氨(NH3)、氮氧化物(NOx)、酒精、苯、烟雾、颗粒物(PM2.5)、丙酮、稀释剂、甲醛和水质量在内的广泛污染物。通过利用这些智能传感器,环境机构和组织可以有效地监控和减轻污染水平,从而为所有人创造一个更健康、更安全的环境。
一个值得考虑的真实案例是在工厂烟囱上实施空气质量传感器。这些高度先进的传感器被设计用来准确测量废气排放的质量。通过这样做,它们提供了可以无缝传输到政府中央监控系统的宝贵数据。这允许对工厂的环境影响进行持续监控和分析,有助于执行法规并实施必要的措施,以确保改善空气质量。
另一个类似的案例是在河边安装河流水质监测传感器。通过在河流附近,尤其是工厂或住宅区附近安装这些传感器,政府可以有效地监控河流水质。这个监控系统在确保环境和附近居民的健康与安全方面发挥着至关重要的作用。此外,这些传感器提供了可用于进一步分析和决策的有价值的数据,包括但不限于水管理和污染控制措施。
工业生产率提升
制造业、公用事业、石油和天然气、采矿、交通和农业等行业始终显著受益于物联网技术。
成本节约
实施物联网的一个主要优势是显著的成本节约,尤其是在劳动力成本方面。这种成本降低可以归因于物联网技术实现的自动化和流程及任务的优化。通过利用物联网设备和系统,企业可以简化其运营,消除手动和时间消耗的任务,并提高效率。这不仅导致成本节约,还允许将资源重新分配到业务的其它领域,促进增长和创新。
一个真实的案例是公用事业行业中的高级计量基础设施(AMI)。在美国的一个州内,有数百万个电表,派遣技术人员到每个街道每月读取如此规模的电表成本极高。如今,物联网引入了各种无线技术,如 802.15.4 网状网络,用于收集这些电表的数据。在其他国家,公用事业公司现在使用 LoRaWAN、NB-IoT 和 LTE-M 来达到同样的目的。
另一个案例是农业领域的智能灌溉。为了在灌溉过程中节约用水,农民目前在地里安装土壤湿度传感器。这些传感器测量水的饱和度并将结果报告给客服中心。如果水的饱和度达到植物的需求,灌溉系统将会停止。此外,客服中心会根据当地的气候预报确定每日的灌溉水量。如果预测第二天有雨,他们将会相应地调整灌溉水量。
规模扩展
无线物联网技术通过消除电缆的限制,为工业客户提供更大的灵活性和便利性,正在改变工业规模。凭借其连接各种设备和收集实时数据的能力,无线物联网技术使企业能够优化其运营,提高效率,并做出明智的决策。此外,这项技术还为工业环境中的自动化、远程监控、预测性维护和增强安全措施开辟了新的可能性。无线物联网技术的广泛应用正在改变行业,推动各领域的创新,导致生产率提高、成本节约和整体性能改善。
一个真实的案例是在各种环境中实施自主移动机器人(AMR),如制造工厂、仓库和物流配送中心。物联网使得在任何客户希望建立新站点的位置为 AMR 单元提供 Wi-Fi、4G/LTE 和 5G 连接变得更加方便。
摘要
在本章中,我们开始了对物联网基本概念的探索之旅,对其广阔且不断扩大的市场有了深入了解,并探讨了物联网如何无缝地融入各种市场,从我们家里的个人空间到更广泛的城镇和工业领域。本章还揭示了物联网的深远影响,说明了它不仅正在重塑我们与技术互动的方式,而且正在彻底改变我们的日常效率、可持续性和整体生活质量。通过了解基础知识并认识到物联网的主要影响,我们为深入探讨其架构的各个组成部分做好了准备,并准备好实践第十一章中列出的 10 个工程项目,包括硬件说明、ChatGPT 提示模板和示例代码。
进一步阅读
有许多专业书籍从不同角度讨论物联网,以下这本书非常推荐,是由我以前的天才同事所写。
物联网基础:网络技术、协议、应用案例*,作者:David Hanes, Gonzalo Salgueiro, Patrick Grossetete, Robert Barton, Jerome Henry, Cisco Press。
在继续前进之前,了解与物联网相关的关键术语是个好主意。以下是一些:
| 术语 | 解释 |
|---|---|
| 物联网 | 物联网,一个由相互连接的设备组成的网络,这些设备可以使用嵌入式传感器、软件和其他技术收集和交换数据。 |
| 网关 | 位于终端设备和互联网之间的聚合设备,提供安全的有线或无线连接和数据传输协议支持。 |
| 终端设备 | 物联网网络末端的单个设备,用于生成数据或执行命令,通常包括微控制器、传感器、执行器和无线回程。 |
| MCU | 微控制器单元,嵌入式系统中的紧凑型过程。 |
| 传感器 | 一种检测并对物理环境中的某些类型输入做出响应的设备,例如温度、光线、压力等。 |
| 执行器 | 负责移动或控制机械或系统的设备,通常从上游控制系统接收操作指示。 |
| 节点 | 节点通常是网络中的物理设备或数据点,可以发送、接收或路由数据。 |
| Edge computing | 一种通过在网络边缘,即数据源附近进行数据处理来优化云计算系统的方法。 |
| Cloud computing | 一种通过互联网方便、便捷地访问共享的可配置计算资源池(如网络、服务器、存储、应用程序、分析和智能服务)的模型。 |
| Wireless backhaul | 使用无线通信系统将数据从远程网络边缘传输到中心网络或网络核心的方法。 |
| 4G/LTE | 4G/LTE 移动网络标准的第四代,比 3G 网络提供更快的传输速率。 |
| 5G | 5G 移动网络标准的第五代,与 4G/LTE 相比,提供更高的速度和更低的延迟。 |
| NB-IOT | 窄带物联网,4G/LTE 标准中的一种低功耗广域网(WAN)无线电技术标准,专注于广泛的覆盖、低成本、长电池寿命和高连接密度。 |
| LTE-M | 机器长期演进,4G/LTE 标准中的一种低功耗广域网(WAN)无线电技术,针对物联网进行了定制,允许更长的电池寿命和更好的室内覆盖。 |
| Wi-Fi | 一种无线技术,遵循 IEEE 802.11 标准系列,为各种设备如电脑、智能手机和智能家居设备提供无线网络连接,无需物理有线连接。 |
| Wi-Fi 6 | 802.11ax Wi-Fi。 |
| Wi-Fi 6E | Wi-Fi 6 的扩展,在 6 GHz 频段运行,提供更快的速度和更低的延迟。 |
| Wi-Fi 7 | 802.11be Wi-Fi。 |
| Wi-Fi HaLow | 802.11ah Wi-Fi,为物联网开发的 Wi-Fi 规范;其主要区别在于其使用免许可证的 sub-1 GHz 频段。 |
| LoRa | 一种源自 跳频扩频(CSS)技术的扩频调制技术,专为物联网设备之间的长距离、低功耗通信设计。 |
| LoRaWAN | 一种基于 LoRa 调制的低功耗广域网(WAN)媒体访问控制(MAC)层协议,旨在将电池供电的“事物”无线连接到区域、国家或全球网络,常用于物联网应用,如智能城市和工业物联网。 |
| BLE | 蓝牙低功耗,一种无线个人区域网络技术,设计和营销用于医疗保健、健身、信标、安全和家庭娱乐等新型应用。 |
| BLE-LR | 蓝牙低功耗长距离,蓝牙的扩展,针对长距离连接进行了优化。 |
| ZigBee | 一种基于 IEEE 802.15.4 标准的低功耗无线网状网络技术,常用于连接简单的智能设备,如智能家居系统和物联网传感器。 |
| Matter | 一种开源、免版税的连接标准,能够实现各种智能设备之间可靠、安全的通信。 |
| Thread | 一种专为物联网设备设计的低功耗无线网状网络协议,用于在本地网络中进行通信。 |
| MQTT | 消息队列遥测传输(Message Queuing Telemetry Transport),一种轻量级的发布/订阅(publish-subscribe,简称 pub/sub)网络协议,非常适合在多种物联网应用中所需的低带宽、高延迟通信,例如远程监控。 |
| Raspberry Pi | 一款小型一体机,可用于学习编程和进行实际项目,因其多功能性在物联网领域得到广泛应用。 |
| Arduino | 一个开源的电子平台,以其易用的软件和多功能硬件板而闻名,广泛应用于教育、原型设计和 DIY(Do It Yourself)项目中,使爱好者和专业人员都能开发出能够感知和操作物理环境的交互式小工具。 |
| RISC-V | 一种基于已确立的精简指令集计算机(reduced instruction set computer,简称 RISC)原则的指令集架构(instruction set architecture,简称 ISA),由于其灵活性和适应性,常用于物联网设备的微处理器中。 |
第二章:物联网网络,事物的神经网络
物联网网络通常由物联网终端设备、无线连接(在大多数情况下)和后端云平台组成。它像人体的神经系统一样运作,由神经元细胞、神经通路和大脑组成。神经元细胞作为生物传感器,检测来自皮肤或肌肉的刺激并产生生物电信号,类似于物联网终端设备检测物体状态变化。这些生物电信号通过神经通路传播,类似于在物联网网络中通过有线/无线连接传递传感器数据。
最终,这些生物电信号会到达大脑,这个中央指挥中心,就像物联网中的云平台一样。正如大脑解释、处理和响应感官信息一样,云服务收集、存储、分析和基于从物联网终端设备接收到的数据进行决策。
在本章中,您将从考虑适当物联网网络选项的多种选择开始,针对您的目标用例。这将帮助您在不同部署位置做出明智的技术决策,无论是在家中、校园内、建筑物中、城市中,甚至在农村地区。
请注意,工业场所的物联网网络是独特的,需要专业知识。本书不会涵盖这个特定主题。然而,重要的是要认识到在工业环境中实施和设计物联网系统有其自身的挑战和考虑因素。这些可能包括网络可扩展性、服务可靠性、数据安全和与现有基础设施的集成。
本章涵盖了以下主题:
-
家庭中的物联网网络
-
校园和建筑物中的物联网网络
-
城市中的物联网网络
-
农村地区的物联网网络
家庭中的物联网网络
在家中设置物联网网络的最佳实践通常涉及使用家庭 Wi-Fi、BLE和Thread。当设计用于家庭使用的物联网应用,例如监测温度和湿度、烟雾探测器、安全摄像头和路径照明时,优先考虑简单性、经济性和用户易用性对于客户来说非常重要。因此,架构专门设计以满足居民的需求,提供友好且愉悦的用户体验。
家庭 Wi-Fi
Wi-Fi,即无线保真,是一种低成本无线通信技术,使设备能够通过物理电缆连接到互联网并相互通信。它符合IEEE 802.11标准,并使用未经授权的无线电频率波段,通常是 2.4 GHz、5 GHz 和 6 GHz(Wi-Fi 6E)。家庭 Wi-Fi 网络采用星型拓扑结构,提供了极大的简单性和易于安装。在大多数情况下,家庭 Wi-Fi 路由器可以同时服务多达 30 个 Wi-Fi 客户端设备。
家庭 Wi-Fi 允许智能手机、平板电脑、笔记本电脑、智能电视和智能家居设备连接到互联网。Wi-Fi 提供从数百 Mbps 到 Gbps 的更高吞吐量,使用户能够访问在线服务、浏览网页、流媒体播放以及使用视频监控和家庭安全应用,而无需物理电缆。通过连接到互联网,Wi-Fi 使得用户能够从世界任何地方使用智能手机、平板电脑或笔记本电脑控制和管理家中的各种智能设备。
然而,与 BLE、ZigBee 和 LoRaWAN 相比,Wi-Fi 技术在功耗方面并不友好。Wi-Fi 具有强大的传输能力和墙体穿透能力。它具有最强大的性能,但 Wi-Fi 的功耗如此之高,以至于它不适合电池供电的设备,更适合电源插座的设备。有些人可能会争论,802.11ah,也称为 Wi-Fi HaLow 的存在是为了提供低功耗的连接。然而,它专门针对不在住宅区域内的用例。
我们将在第四章中讨论更多关于 Wi-Fi 技术的细节。
BLE
BLE 是一种提供低数据速率的无线技术,使其非常适合需要节能的设备。其主要目的是与电池供电的设备建立连接,包括但不限于可穿戴设备和医疗设备。
在智能家居技术的领域内,诸如亚马逊 Alexa Echo、谷歌 Home/Nest、苹果 HomePod 和苹果 TV 等设备充当了 BLE(蓝牙低功耗)中心。这些中心在家居物联网网络中扮演着至关重要的角色,使得在家庭环境中对各种智能设备实现无缝连接和控制成为可能。这些智能设备可能包括照明系统、恒温器、安全摄像头等等。
通过利用 BLE 技术,这些智能家居中心确保了设备之间可靠且高效的通信,提升了整体智能家居体验。用户可以通过语音命令或移动应用程序轻松管理和控制他们的智能设备,创造一个便捷且个性化的居住空间。
我们将在第四章中讨论更多关于 BLE 技术的细节。
线程
基于 IEEE 802.15.4 标准的 Thread,符合连接智能家居设备的网状网络技术,从运动传感器到门锁,为它们提供了一种更好、更高效的工作方式。在 Thread 网络中,多个设备可以作为边界路由器或网状扩展器,扩展网络的覆盖范围和可靠性。与传统星型拓扑网络不同,其中信号只返回给原始发送者,网状网络会在范围内重复并转发信号到其他设备,形成信号跳跃的特性。这允许更大的范围和可靠性,因为设备可以相互中继信号,扩展网络的覆盖范围。此外,随着更多设备的加入,网状网络会自动扩展,从而形成一个更强、更可靠的网络,能够支持越来越多的智能家居设备。
Thread 本地采用 IPv6 技术,为物联网应用提供了众多优势,例如智能家居、智能校园和智能建筑应用。它得益于成熟的网络安全,并能无缝集成到现有的网络基础设施中。与为每个应用运行在独立网络中的传统自动化系统不同,Thread 允许多个应用同时共享同一网络,即使这些应用基于不同的标准和协议。此外,每个设备都可以利用最合适的物理网络类型。Thread 的低功耗网状网络特别适合需要覆盖较大区域内的高能耗敏感设备。
值得注意的是,Thread 的应用层目前正经历着显著的发展。Matter 协议,之前被称为 Project CHIP(通过 IP 的连接家居),正在被采用以增强基于 Thread 的设备的功能和互操作性。Matter 旨在为智能家居设备创建一个统一的标准,确保消费者能够无缝集成和使用。
Matter 在 Thread 应用层的采用标志着智能家居技术发展中的一个重要里程碑。随着 Matter 协议的采用,制造商和开发者现在可以利用一个标准化的框架来构建与广泛智能家居生态系统兼容的 Thread 设备。这不仅简化了开发过程,还促进了行业内的创新和协作。
此外,Matter 的采用也为消费者带来了众多好处。为智能家居设备建立统一标准消除了不同品牌和平台之间的兼容性问题。消费者现在可以放心购买基于 Thread 的设备,知道它们将无缝集成到现有的智能家居设置中。这不仅增强了便利性,也鼓励了智能家居技术的广泛应用。
下图比较了堆叠差异与 Wi-Fi、Thread、蓝牙经典和低功耗。

图 2.1 – 家庭中的物联网网络堆叠
除了家庭中的物联网网络之外,另一个流行的案例是在校园和建筑物中。让我们更深入地了解它。
校园和建筑物中的物联网网络
在校园和建筑物中部署物联网网络的最佳实践通常包括企业 Wi-Fi、Thread 网状网络、私有 LoRaWAN 网络以及特定工业网络,如用于电表和街道照明的 Wi-SUN 网状网络。尽管 BLE 和 ZigBee 网状网络可能在这些位置有有限的部署,但它们并不广泛使用。本节将讨论企业 Wi-Fi、建筑物中的 Thread 和校园及建筑物中的私有 LoRaWAN 网络提供的流行物联网覆盖选项。
企业 Wi-Fi
校园和建筑物中的物联网应用通常使用企业级架构。这种架构考虑了室内/室外连接、安全性、可扩展性、管理和成本等因素。在这些环境中,用于物联网应用的最常见无线网络是企业 Wi-Fi。
与家庭 Wi-Fi 接入点相比,考虑和实施一个强大的安全机制至关重要,该机制允许终端设备访问企业 Wi-Fi 接入点。一旦终端设备接入企业 Wi-Fi 网络,数据将通过企业内部网络传输,这是一个私有网络。从那里,它将被转发到企业数据中心的应用平台或公共云中的平台。
校园和建筑物位置的企业 Wi-Fi 通常提供两种拓扑选项:星型和网状。
星型拓扑是一种网络配置,其中所有设备都连接到一个中心集线器,也称为 Wi-Fi 接入点。这个集线器作为数据流量路由的主要接入点。星型拓扑以其简单的设计和易于管理而闻名。当设备需要与互联网通信时,它会将数据发送到中心集线器,然后由集线器将其转发到目标位置。这种直接的设置使得故障排除和维护更加容易。星型拓扑非常适合那些优先考虑简单性和易于管理的中小企业和商业场所,例如小型办公室、餐厅和单交换机连接所有 Wi-Fi 客户端设备的商户特许经营店。
Wi-Fi 网状网络是一种由多个 Wi-Fi 接入点作为一个统一整体运作的网络。它非常适合大型校园和建筑地点。协调一致的 Wi-Fi 接入点被战略性地放置在整个校园、建筑或更大的区域内,以提供对同一无线网络的访问。根据制造商和选择的技术,这些接入点中的一个可能作为主设备,通常被称为控制器,或者它们都可以被视为同等重要。
大多数 Wi-Fi 网状网络具有以下特点:
-
单个 SSID:此功能允许使用单个网络名称和密码。Wi-Fi 客户端设备可以在网状网络中自动漫游,无需额外的 SSID 配置。
-
客户端引导:连接到网络的 Wi-Fi 客户端设备会自动与周围最佳无线电质量的接入点关联。
-
频段引导:网络还会确定在任意给定时间提供最佳性能的每个客户端的最佳频率带。
-
自愈:如果 Wi-Fi 接入点暂时或永久不可用,网络将自动重新路由流量以避免问题。
网状拓扑在网络连接性方面非常可靠且冗余。在链路或接入点故障的情况下,数据可以通过替代路径重新路由,确保连接不间断。然而,这种优势伴随着增加的复杂性和布线需求。
企业级 WPA2,也称为 WPA2-ENT,于 2004 年推出,至今仍被广泛认为是无线网络安全的标准。它提供空中加密和更高的安全级别。当与称为 802.1X 的有效身份验证协议结合使用时,用户可以获得授权和身份验证,以安全访问网络。部署 WPA2-ENT 需要一个 RADIUS 服务器,该服务器负责处理认证网络用户访问的任务。认证过程基于 802.1X 政策,并使用各种标记为 EAP 的系统。通过在连接之前认证每个设备,可以在设备和网络之间有效地建立一个个人、加密的隧道。
Thread 网状
在最后一节中将解释 Thread 家庭的概念。强调的是,为了将 Thread 网络扩展到智能建筑,以及使用 Thread 边界路由器和电池供电设备,通常有必要纳入 Thread 网状扩展器 (TME) 设备 的实施。这一增加确保了网络的可扩展部署,使整个建筑基础设施实现无缝连接和性能提升。
作为一种网状网络,Thread 使设备不仅能接收数据,还能积极参与将数据路由到其他设备,这些设备被称为 TME 设备。Thread 的这种独特功能创建了一个高度稳健和高效的网络基础设施。TMEs,正如其名所示,是始终开启的 Thread 设备,通过作为其他设备之间消息的路由器来扩展 Thread 网络的范围和链路质量,例如电池供电的传感器。通过允许设备充当中继,网络扩展了其覆盖范围,而无需额外的中继器或扩展器。因此,Thread 提供了一个稳定且可靠的网络,具有广泛的覆盖范围,确保网络内所有设备的无缝连接。
私有 LoRaWAN 网络
除了 Wi-Fi 之外,还有一种名为 LoRaWAN 的无线技术,可用于校园和建筑物中的物联网应用。LoRaWAN 是专门为低数据速率、长距离连接和低功耗设计的。它特别适合需要长距离覆盖和低功耗的应用。使用 LoRaWAN,物联网设备可以部署在大型区域,如校园和建筑物,而无需频繁更换电池或复杂的基础设施设置。
LoRaWAN 终端设备通过称为 工业、科学和医疗(ISM)频段的非授权无线电频谱与单个或多个 LoRaWAN 网关进行长距离通信。与在 2.4 GHz 和 5 GHz ISM 频段运行的 Wi-Fi 不同,LoRaWAN 通常在 Sub-GHz 频段运行。在欧洲,它使用 868 MHz 频率,而在美国,它使用 915 MHz。这个 Sub-GHz 频段比 Wi-Fi 具有更好的穿透性和传播能力,使其特别适合在建筑物内部提供覆盖。
LoRaWAN 的架构独特。在 LoRaWAN 网关之后,数据首先到达 LoRaWAN 网络服务器。网络服务器负责设备管理、有效载荷加密和应用程序 API。
以下是在校园和建筑物中使用的标准 LoRaWAN 网络图,包括开阔场户外和室内覆盖:

图 2.2 – LoRaWAN 私有网络
在这些地点实施的 LoRaWAN 网络采用松散耦合的星形拓扑。与企业 Wi-Fi 不同,LoRaWAN 端点不会与专用 LoRaWAN 网关建立预定义的关联。相反,从 LoRaWAN 端点(也称为上行链路消息)发送的数据可以由邻近区域中的多个 LoRaWAN 网关接收。然而,返回的数据(称为 下行链路消息)将从信号质量最佳的 LoRaWAN 网关发送到端点。LoRaWAN 网关通常安装在室内墙壁或天花板上,以及室外照明柱上。
私有 LoRaWAN 网络是一个整个基础设施由物联网应用提供商部署和托管的模式。在这个模式中,物联网应用提供商负责自行安装 LoRaWAN 网关,确保其物联网设备之间无缝且高效的网络连接。使用私有 LoRaWAN 网络,物联网应用提供商对网络操作拥有完全控制权,可以根据他们的具体需求和需求进行定制。这允许在管理和监控连接设备时具有更大的灵活性和定制性,确保最佳性能和安全。
没有一种适合所有情况的方案
当涉及到物联网应用时,重要的是要理解 Wi-Fi、Thread 和 LoRaWAN 并不是可以互换的选项。每种无线技术都有其自身的优势和考虑因素。
对于需要高吞吐量的物联网应用,如监控摄像头,Wi-Fi 是一个明智的选择。它提供快速且可靠的连接,但确实需要外部电源供应。
另一方面,Thread 和 LoRaWAN 是专门为优先考虑低功耗的使用案例设计的。虽然它们的吞吐量可能低于 Wi-Fi,但配备 Thread 和 LoRaWAN 无线电的设备通常可以在电池上运行数年。这使得它们非常适合烟雾探测器、水泄漏探测器、安全传感器,以及温度和湿度传感器等设备。
校园和建筑物中的物联网网络可以很容易地由企业客户自行构建和托管。将物联网网络扩展到覆盖整个城市需要无缝的移动性和更高的可用性,以服务于多个客户和多样化的应用,这将增加复杂性。
城市中的物联网网络
城市中物联网的应用可以被视为一个大规模的复杂系统。这个系统由不同的部分和技术组成,它们共同工作以创建一个高效且无缝的系统。在实施城市物联网时,主要挑战之一是确保有良好的无线网络覆盖。这对于物联网设备正常工作和交换数据至关重要。在城市建设物联网网络的最佳实践通常是使用移动网络(如 4G/LTE 和 5G)以及来自公共物联网服务提供商的公共 LoRaWAN 网络。这些技术提供广泛的覆盖范围,可以深入到建筑物内部,这使得它们非常适合城市中的物联网解决方案。
移动网络
4G/LTE 和 5G 网络使用服务提供商(SPs)的蜂窝覆盖来为从 LTE-M 和 NB-IoT 的物联网设备提供可靠的连接,这些设备具有低功耗和低数据速率(LPWAN),以及高级 LTE(LTE-A)和 5G增强型移动宽带(eMBB)等高数据速率技术。这些网络已经建立并广泛可用,使它们成为各种物联网部署的热门选择。该网络上的物联网设备需要一个蜂窝调制解调器和 SIM/eSIM 芯片。这些设备与 eNodeB 通信,eNodeB 是蜂窝网络的基础站。然后数据从 eNodeB 发送到服务提供商的分组核心网络,最终到达数据平台,该平台可以位于数据中心或云中。
蜂窝接入网络通常具有星型拓扑。服务提供商(SPs)在蜂窝塔和城市建筑屋顶上安装 eNodeB 站点。这些战略性地放置的 eNodeB 站点对于与具有蜂窝调制解调器和 SIM 卡或 eSIM 芯片组的终端设备进行通信至关重要。
以下是一个 4G/LTE 网络的标准架构:

图 2.3 – 4G/LTE 网络
公共 LoRaWAN 网络
LoRaWAN 使用未经授权的频谱,使其成为一种无线电资源共享网络。与为每个终端设备分配专用空中资源的蜂窝网络不同,LoRaWAN 旨在基于尽力而为的基础上支持使用案例。因此,它可能不适合所有物联网应用,尤其是那些至关重要的应用。城市中 LoRaWAN 网络的拓扑结构与在校园和建筑物中部署的拓扑结构相同,它是一个松散耦合的星型拓扑。在这个拓扑中,有一个称为 LoRaWAN 网关的中心枢纽,它作为终端设备和网络服务器之间的桥梁。LoRaWAN 网关可以安装在城市的各种位置。它可以安装在城市的建筑屋顶上,提供广泛的覆盖范围和清晰的通信视线。另一种选择是将它安装在电力电杆上,战略性地放置以实现最佳信号传输。最后,LoRaWAN 网关还可以安装在路灯杆上,利用现有基础设施来扩展网络覆盖范围。
当考虑一个网络如何处理大量用户、保持可用性和可靠性时,公共 LoRaWAN 网络通常使用基于云的 LoRaWAN 网络服务器。这个基于云的服务器可以轻松扩展并适应处理更多用户和更高的需求。
以下是基于云的 LoRaWAN 网络图:

图 2.4 – 基于云的公共 LoRaWAN 网络
AWS IoT Core for LoRaWAN([https://aws.amazon.com/iot-core/](https://aws.amazon.com/iot-core/))是一个完全托管的 LoRaWAN 网络服务器。它允许你使用 LoRaWAN 连接通过 AWS 云连接和管理 LoRaWAN 设备。通过 AWS IoT Core for LoRaWAN,客户可以通过将许多 LoRaWAN 设备和网关连接到 AWS 云来建立他们的 LoRaWAN 网络,而无需自己开发或运营 LoRaWAN 网络服务器。这消除了管理网络服务器的负担,并使大规模的 LoRaWAN 设备车队易于连接和安全。
通过利用 LoRaWAN 的长距离和室内广泛覆盖,AWS IoT Core for LoRaWAN 帮助客户加快物联网应用的开发。这是通过利用从连接的 LoRaWAN 设备通过 AWS 服务生成数据来实现的。
城市的物联网网络可以利用 4G/LTE 蜂窝网络或其他公共托管无线基础设施,如 LoRaWAN。在乡村地区,任何公共覆盖很少能到达那里;这是一个重大挑战,但仍有机会。
乡村地区的物联网网络
这些空间,如农业、油田、采矿场、森林、国家公园、山脉、海岸线和海上区域,通常没有蜂窝网络覆盖。针对这些区域的物联网应用必须克服无线连接的挑战。在乡村地区,除了蜂窝网络外,访问物联网网络的最佳实践是私有 LoRaWAN网络和 LEO 网络。
私有 LoRaWAN 网络
除了在校园和建筑物中部署 LoRaWAN 网络外,在乡村地区建立私有 LoRaWAN 网络也是一个可靠且经济实惠的选择。由于其长距离能力和低功耗,LoRaWAN 非常适合各种物联网应用。在这种情况下,物联网应用提供商可以在提供服务的地方创建自己的私有 LoRaWAN 覆盖。这种模式使他们能够完全控制网络,并确保其物联网设备的可靠连接。
通过建立私有 LoRaWAN 网络,物联网应用提供商可以克服依赖外部 SP 的限制,并确保其设备的无缝连接。他们可以根据自己的具体需求定制网络,确保最大覆盖率和性能。
LEO 网络
对于在乡村地区为物联网应用获取无线连接的另一个好选择是使用由 LEO 卫星提供的无线宽带网络,例如 Starlink。采用这种方法,你只需在指定位置设置一个 Starlink 终端。这个终端充当网关,为你提供一个可靠的 Wi-Fi 热点,以便连接你的物联网设备。
使用低地球轨道(LEO)卫星有助于克服传统蜂窝网络或本地基础设施在物联网部署中的局限性。Starlink 终端通过将您的物联网设备连接到卫星网络,使它们能够无缝地跨越长距离进行通信,发挥着重要作用。这种解决方案在蜂窝覆盖有限或不可用的人迹罕至地区尤其有用。
摘要
在本章中,我们探索了物联网网络的广泛世界。我们看到了它们在不同环境中的应用:使我们的家庭更加便利,提高校园和建筑物的效率,推动城市创新,以及改善农村地区。
随着我们进入下一章,我们将关注点从整个网络转移到单个元素:终端设备。在本章中,我们将仔细研究构成物联网网络基石的不同类型设备。我们将研究这些设备的硬件架构,特别关注微控制器(MCUs),它们就像是这些设备的“大脑”。我们还将讨论允许设备与其周围环境交互的外设和接口,以及使环境响应和交互的传感器和执行器。
第三章:物联网终端设备,物联网系统的神经元细胞
正如神经元是人类神经系统的基本构建块一样,物联网网络的基本组件是物联网终端设备。这些设备,就像神经细胞的传感功能一样,被设计用来监控周围环境,报告变化,并执行动作。
在本章中,你将了解物联网终端设备在物联网应用中的关键作用。这些设备检测、捕获、测量并向后端云平台报告目标对象的状况或数据变化。它们还可以根据从后端接收到的命令对这些对象执行操作。
为了让你全面了解物联网终端设备的函数和设计,我们将从多个角度进行讨论。这包括物联网终端设备类型的常见类别,以及它们的硬件架构、微控制器(MCUs)、外围设备、输入输出接口,以及在物联网应用中常用的传感器和执行器。
到本章结束时,你将全面了解物联网终端设备设计所需的基本知识。你还将具备创建符合特定用例要求的硬件原型的必要技能,使你能够有效地实施你的第一个物联网解决方案。
本章涵盖了以下主题:
-
设备类型
-
硬件架构
-
微控制器(MCUs)
-
外围设备和接口
-
传感器和执行器
设备类型
市场上可供选择的物联网设备种类繁多。由于它们的多样功能和用途,对这些设备进行分类可能具有挑战性。这些设备被设计来支持不同的应用需求和需求。本节旨在根据流行的区分标准对设备进行分类,帮助初学者更好地理解。在构建自己的物联网创新时,认识到这些区别至关重要,因为这些是普遍存在的,不应被忽视。
室内与室外安装
物联网终端设备可以安装在室内或室外。室内安装包括家庭、建筑、公共设施和工业工厂。室外安装包括在校园开阔地、城市开放空间、郊区、农村农田、森林、山区和荒地进行的安装。物联网终端设备的部署位置应根据其应用仔细选择。需要考虑的因素包括芯片组选择、机械外壳设计、操作温度和湿度范围以及设备安装选项。
当在住宅空间安装物联网设备,如家庭、公寓、酒店和教室时,这些被称为消费级设备,您不需要防水或严格的防尘设计。轻便耐用的塑料外壳通常就足够了。设备可以在 0°C 到 40°C(32°F 到 104°F)的温度范围内以及 5%到 95%的湿度水平下工作。还有其他室内环境,如办公室或仓库,那里的设备被称为商用级产品。在这些地方,设备需要在-20°C 到 70°C(-4°F 到 158°F)的温度范围内工作。您可以通过以下三种方式在室内安装物联网设备:墙上、天花板上或粘贴。
当物联网设备设计用于户外使用,如开阔场地、市区街道或乡村地区时,它们通常被称为户外级设备。这些设备的硬件设计要求比室内设备更严格。户外设备必须具有比室内设备更宽的运行温度范围,通常从-40°C 到+85°C(-40°F 到 185°F)。
为了承受恶劣的户外条件,户外设备必须考虑其外壳的防护等级(IP 等级)等额外因素。
| 通常,产品遵守的 IP 等级由两位数字表示,作为给定条件。我们将在下表中了解更多信息。第一位数字 | 机械防护 | 第二位 数字 | 防水 等级 |
|---|---|---|---|
| 0 | 无防护 | 0 | 无防护 |
| 1 | 防护于直径超过 50mm 的固体物体,如手 | 1 | 防护于垂直落下的水滴,如冷凝水 |
| 2 | 防护于直径超过 12mm 的固体物体,如手指 | 2 | 防护于垂直方向 15°以内的直接喷水 |
| 3 | 防护于直径超过 2.5mm 的固体物体,如工具和电线 | 3 | 防护于垂直方向 60°以内的直接喷水 |
| 4 | 防护于直径超过 1mm 的固体物体,如电线、钉子等 | 4 | 防护于来自所有方向的水溅,允许有限量的进入 |
| 5 | 防护于有限量的灰尘进入,无害沉积物 | 5 | 防护于来自所有方向的低压力水射流,允许有限量的进入 |
| 6 | 完全防护于灰尘 | 6 | 防护于强水射流,如船甲板上的水,允许有限量的进入 |
| N/a | N/a | 7 | 防护于 15cm 到 1m 之间的临时浸没效果;测试时间为 30 分钟 |
| N/a | N/a | 8 | 防护于在压力下的长时间浸没 |
表 3.1 – IP 等级定义
在某些开阔场地位置,如高海拔地区和沿海地区,除了 IP 等级外,还需要 UV 抗性和防盐雾外壳。
这些户外设备还提供了多种安装方式,例如安装在照明杆上、连接到电缆上、安装在屋顶上或安装在塔上。当在户外安装这些设备时,重要的是要记住,安装选项可能需要具备抗风能力。
通过外部电源供电与使用电池供电
物联网设备可以通过外部电源或电池运行,这使得它们既适合室内使用也适合户外使用。像监控摄像头、无线扬声器和街灯这样的设备通常需要高功耗,并且通常通过外部电源供电。这种电源可以通过交流/直流电源适配器或转换器提供。
虽然这些设备更复杂且成本更高,但它们提供了诸如连续服务、高可靠性和低延迟等优势。它们还支持边缘计算,由于其强大的计算能力和快速的内存访问,因此需要更多的电力。
对于外部电源供电的设备,由于功耗不是主要问题,它们可以利用高速有线连接(以太网、同轴电缆或光纤)或高吞吐量无线连接(Wi-Fi、LTE CAT-4 或更高版本,甚至 5G)。
电池供电的设备正在迅速发展,并为它们预期的用途提供了显著的好处。它们是便携的,可以自由移动,这使得它们非常适合可以容忍低数据速率、服务中断和延迟的物联网应用。
这些设备通常具有专为最小功耗设计的微控制器和无线模块。为了节省能源,它们通常在睡眠模式和活动模式之间切换,这种策略被称为按需服务模式。
这些设备使用的电池类型根据设备的需求而有所不同。例如,智能标签通常使用纽扣电池,智能家居设备可能使用碱性干电池,而户外设备通常使用可充电锂离子电池或 18650 电池。
有线连接与无线连接
物联网终端设备需要连接到云以发送或接收数据。这种连接可以是有线或无线的。在工业物联网设备中,例如在制造工厂或公用设施中使用的设备,传统的有线连接(如光纤、以太网、RS232/485 双绞线和对电线)仍然与无线连接一起广泛使用。另一方面,家庭、校园、建筑、城市和农村地区的物联网终端设备广泛使用无线连接。
有线或无线连接的选择取决于具体的应用需求,包括诸如移动性、漫游、可靠性、延迟、可扩展性、吞吐量和成本等因素。
对于需要高可靠性、低延迟、高吞吐量和固定安装的应用,以太网或光纤连接是最具成本效益的。这些提供稳定和安全连接,确保数据传输不间断。如果移动性和漫游是必需的,目前有几种选项可供选择,例如 LTE CAT-4 或更高版本、5G 或 Wi-Fi 6/6E/7。这些技术实现了无缝移动和不间断服务,使它们适用于需要连续通信的应用,如 AMRs、自动导引车(AGVs)和车队管理。
然而,如果你的应用不强制要求高可靠性、低延迟和高吞吐量,但优先考虑总成本、大规模可扩展性和易于部署,那么还有其他选项可以考虑。蓝牙低功耗(BLE)、LoRaWAN、窄带物联网(NB-IoT)、LTE CAT-M(LTE-M)和LTE CAT-1是明智的投资选择。这些技术提供低成本解决方案,具有广泛覆盖范围和低功耗,使它们适用于预算和可扩展性是主要关注点的应用。例如,蓝牙低功耗在智能家居设备中得到广泛应用。LoRaWAN 被广泛用于智能城市应用。NB-IoT 和 LTE CAT-M 用于智能计量,LTE CAT-1 用于远程资产跟踪。
边缘计算的需求
一些物联网应用需要其物联网终端设备支持本地边缘计算,而另一些则不需要。边缘计算是物联网设备数据和处理需求的本地区域处理和存储源,例如通过特定条件过滤预期数据、加密原始数据负载、执行协议转换、触发本地执行策略和发出警报。
在物联网终端设备上进行边缘计算带来了以下几个显著的好处:
-
降低延迟:通过利用边缘计算功能,物联网设备可以在本地处理和分析数据。这显著降低了设备间通信的延迟,并实现了更快的响应时间。实时数据洞察可以在边缘生成,从而提高运营效率并改善决策。
-
提高运营效率:边缘计算允许本地数据处理和分析。这意味着物联网设备可以在不依赖集中式网络的情况下执行过滤和汇总数据、执行协议和快速决策等任务。因此,运营效率得到提高,因为设备可以自主执行操作并实时响应事件。
-
节省网络带宽:通过利用边缘计算,物联网设备可以将一些数据处理任务从云端卸载。这减少了需要通过网络传输的数据量,从而提高了网络带宽利用率。它还有助于缓解网络拥堵,并确保关键数据可以高效传输。
-
离线时继续系统运行:边缘计算的一个关键优势是它能够离线运行。在网络连接丢失的情况下,物联网设备仍然可以正常工作并执行其指定的任务。这在需要不间断运行的场景中尤为重要,例如在工业环境或连接性有限的偏远地区。
边缘计算需要强大的微控制器,以及更大的内存和存储容量来高效地处理本地计算任务。这反过来又导致了硬件成本的增加和物联网终端设备软件复杂性的提高。
除了这四个流行的类别之外,市场中对物联网设备进行分类时还使用了许多其他标准。无论它们的类别如何,物联网设备的硬件架构通常相似,通常包括一个微控制器(MCU)、输入/输出接口、传感器和/或执行器、电源等。
硬件架构
物联网终端设备的硬件架构通常由一个多样化的组件集合组成,这些组件协同工作,无缝地实现其功能。这些组件,如微控制器、传感器、执行器、连接模块和电源管理模块,协作高效地从它们所监控的对象中收集数据。然后,它们处理这些捕获的数据并将其传输到云平台进行深入分析和明智的决策。这种协作努力确保了物联网终端设备在其整个生命周期中的平稳运行和有效性。
下图展示了物联网设备的典型硬件架构:

图 3.1 – 物联网设备硬件架构
这些组件包括以下内容:
-
微控制器(MCUs):微控制器作为物联网设备的“大脑”,协调操作、处理数据和与外围设备和外部网络的通信。核心处理器、内存、输入/输出接口和实时时钟的集成使得具有复杂的计算能力和实时操作能力。
-
传感器和执行器:传感器作为设备的感官,收集环境数据或监控各种参数。这些数据成为设备进行决策和采取行动的基础。执行器根据处理后的数据或接收到的命令对环境或设备本身进行操作,产生可感知的输出或系统中的变化。
-
连接模块:此模块为物联网设备与外部网络(包括云平台)之间的数据交换提供必要的接口。它支持广泛的通信协议和技术,从本地网络(例如,蓝牙低功耗、ZigBee 和 Wi-Fi)到广域网络(例如,4G/LTE、5G 和 LoRaWAN),确保部署的灵活性和可扩展性。
-
电源管理模块:此模块确保设备高效且可靠地供电,这对于持续运行至关重要,尤其是在偏远或难以到达的地方。它集成了优化能源消耗的功能。这对于电池供电设备至关重要,可以延长其使用寿命并减少维护需求。
-
外部闪存:这为程序代码、数据日志和配置设置提供了额外的存储容量,使得更复杂的应用和数据保留成为可能。它增强了设备处理大量数据处理和日志记录的能力,以及在电源周期中保留关键信息的能力。
这些组件的有效组合使得物联网设备能够高效且轻松地完成任务。协同工作,它们使设备具备收集、反应、处理和通信的能力。这在智能家居、工业自动化、医疗保健和农业等各个领域都非常有用,促进了更加互联和智能的环境。
通过理解每个组件的作用和重要性,开发人员和工程师可以设计出功能有效、节能并满足特定需求和限制的物联网设备。下一节将提供有关 MCU、其外围设备和 I/O 接口、传感器和执行器的更多详细信息。第四章将特别关注物联网终端设备使用的无线连接。
MCU
MCU 是嵌入式系统的基础。这些紧凑而强大的设备将核心处理器、内置内存和广泛的外围设备集成到一个芯片中。这种组合实现了高效节能、节省空间和成本效益,同时保持了强大的处理能力。
作用
在嵌入式系统中,MCU 作为中央处理单元。它负责执行和控制各种任务和功能。凭借其处理复杂算法和与各种外部组件接口的能力,MCU 构成了系统的骨架,促进了不同硬件和软件组件之间的无缝通信和协调。正是这种协调增强了系统的整体功能和可靠性,使 MCU 成为众多电子设备和应用中不可或缺的组件。
关键特性
微控制器以其目的驱动的设计而著称,提供了易于编程和定制的特性,以满足不同应用和项目的特定需求。这种多功能性允许开发者定制 MCU 的行为,优化其功能和性能。例如,专为物联网应用设计的 MCU 因其低功耗而受到赞誉,这对于依赖电池或对能源敏感的应用是必不可少的。此外,将多个组件集成到单个芯片中强调了 MCU 在嵌入式系统领域的流行。
关键组件
MCU 通常包括多个关键组件,如处理器、内存、外设、接口等。接下来的章节将涵盖这些信息。
核心处理器
-
架构:包括 ARM、AVR、MIPS 和 RISC-V,每个都提供独特的优势
-
处理时钟速度:以 MHz 或 GHz 衡量,这决定了指令执行的速率
内置内存
-
随机存取存储器 (RAM):用于操作过程中的临时数据存储
-
只读存储器 (ROM):存放引导加载程序和永久软件
外设和接口
-
通用输入/输出 (GPIO):可编程引脚,用于与传感器、执行器、LED 等设备接口
-
专用 I/O:提供输入和输出接口,如通用异步收发器 (UART)用于串行通信、串行外设接口 (SPI)和集成电路间接口 (I2C)用于与其他芯片接口
-
脉冲宽度调制 (PWM):用于控制电机、LED 等
连接模块
-
线缆:包括以太网、通用串行总线 (USB)、RS232/485 等
-
无线:涵盖 Wi-Fi、BLE、ZigBee、Thread、LoRaWAN、4G/LTE 和 5G 等
电源管理
-
电压范围:决定了所需的电源
-
低功耗模式:对于电池供电设备节能至关重要
嵌入式操作系统
-
实时操作系统 (RTOS):支持需要结构化任务管理的复杂需求;例如 FreeRTOS、Azure RTOS、VxWorks、Zephyr 等
-
裸机操作系统:允许对简单系统进行直接的硬件控制。
现成的 MCU
以下列表包含了广受欢迎的半导体供应商的商品级微控制器(MCU)产品,这些产品被广泛用于构建物联网终端设备。这些产品提供了广泛的功能和特性,是物联网行业开发人员和工程师的理想选择。让我们更详细地看看这些 MCU 系列:
-
微芯科技 PIC 系列:以其可靠性和多功能性而闻名,微芯科技的 PIC 系列是物联网设备制造商的热门选择。
-
意法半导体 STM32 系列:意法半导体的 STM32 系列因其性能和能效而备受推崇,是物联网应用的优选方案。
-
德州仪器 C2000/C3000 系列: 德州仪器的 C2000/C3000 系列微控制器因其实时控制能力而闻名,适用于广泛的物联网项目。
-
Nordic nRF51/nRF52 系列: Nordic Semiconductor 的 nRF51/nRF52 系列提供了卓越的无线连接选项,使其成为需要可靠通信的物联网设备的最佳选择。
-
Silicon Labs 的 EFM32 Gecko 系列: Silicon Labs 的 EFM32 Gecko 系列以其低功耗和能源效率而闻名,非常适合电池供电的物联网设备。
-
粒子光子系列: 粒子光子系列因其简洁易用而受到物联网开发者的青睐,为物联网应用提供无缝的云连接。
这些 MCU 系列为构建物联网终端设备提供了坚实的基础,使开发者能够为快速增长的物联网市场创造创新和高效的解决方案。
DIY 友好型 MCU
对于刚开始物联网项目的初学者,强烈建议探索由树莓派、Arduino 系列和 ESP8266/ESP32 提供的 DIY 友好型 MCU 选项。
这些平台提供了一系列用户友好的功能和强大的生态系统,非常适合初学者沉浸于令人兴奋的物联网世界。树莓派 Pico 以其紧凑的尺寸和强大的性能而自豪。Arduino 系列提供了丰富的选项,以及直观的界面和庞大的生态系统开发者社区。基于 RISC-V 架构的 ESP8266/ESP32 使得初学者能够探索物联网开发的各个方面。
树莓派
树莓派是一个流行的开源硬件系列,在各种各样的物联网工程项目中得到广泛应用。其多功能性、性价比、强大的处理能力和广泛的连接选项使其成为爱好者、学生和专业人员的首选。树莓派彻底改变了 DIY 电子世界,使得创建智能家居系统、机器人项目等成为可能。无论你的经验水平如何,树莓派都提供了一个易于访问的平台来探索电子和编程。
下图展示了该系列的产品。

图 3.2 – 树莓派家族
这些系列旨在满足多样化的需求和项目规模:
-
树莓派 5: 这是树莓派单板计算机系列的最新迭代(四核 ARM Cortex-A76 处理器),旨在用于教育和实际应用。
-
树莓派 4 Model B: 该设备配备了四核 ARM Cortex-A72 处理器,以其性能、连接性和性价比的平衡而著称。对于那些需要功能齐全的计算机进行编码、内容创作或通用用途的人来说,它是一个理想的选择。
-
树莓派 Zero: 该设备内置单核 ARM11 处理器(BCM2835),注重紧凑性和效率。它非常适合空间受限的项目和应用,在这些项目中,最小化功耗非常重要。
-
树莓派 Pico: 该设备基于双核 ARM Cortex-M0+处理器构建,为嵌入式系统、物联网设备和原型设计提供了一种经济实惠的解决方案。
-
树莓派 Pico W: 该设备在 Pico 上引入了 Wi-Fi 和 BLE 连接。
你可以在www.raspberrypi.com/找到更多详细信息。
Arduino
Arduino 是一个广泛采用的开源硬件平台,因其物联网终端设备开发而受到欢迎。Arduino 随着时间的推移而改变和成长,产生了多种类型,如经典、Nano、MKR 和 Mega。每种类型都有其独特的功能。正因为如此,Arduino 现在是一个灵活且强大的物联网开发平台,以及更多。无论你是新手还是经验丰富,都肯定有一款 Arduino 板能满足你的需求,帮助你将想法变为现实。
下图展示了该产品系列在其家族中的情况。

图 3.3 – Arduino 家族
这些系列旨在满足多样化的需求和各种项目规模:
-
Arduino 经典系列: 该系列包括流行的 Arduino UNO,它配备 ATmega328P 核心处理器(单核 8 位 AVR),以及其他经典型号,如 Leonardo 和 Micro。它是 Arduino 项目的基线选项。
-
Arduino Mega 系列: 这是一系列专为需要大量计算能力和许多 GPIO 引脚的项目设计的板子。Arduino Mega 2560 型号配备了 ATmega2560 核心处理器,一个 8 位 AVR,而 Arduino Due 则采用 Atmel SAM3X8E ARM Cortex-M3 CPU 构建,一个 32 位 ARM Cortex。
-
Arduino Nano 系列: 这是一个适合物联网项目的小型板子集合。该系列包括基本的 Nano(ATmega328P,8 位 AVR)、Nano Every(ATmega4809,8 位 AVR)、Nano 33 IoT(32 位 ARM Cortex)、Nano 33 BLE、Nano 33 BLE Sense(32 位 ARM Cortex)和 Nano RP2040(双核 ARM Cortex M0+)。这些板子配备了蓝牙和 Wi-Fi 模块,以及内置传感器,如温度、湿度、压力、手势和麦克风传感器。
-
Arduino MKR 系列: 这是一系列板子、屏蔽和载体,可以组合起来创建令人惊叹的项目,而无需额外的电路。除了 MKR Zero 外,每个板子都配备了一个无线电模块,这使 Wi-Fi、蓝牙、LoRa、SigFox 和 NB-IoT 通信成为可能。MKR 系列中的所有板子都基于 32 位 ARM Cortex-M0+,一个低功耗处理器,并配备了一个加密芯片,用于安全通信。
你可以在www.arduino.cc/en/hardware找到更多详细信息。
ESP8266 和 ESP32
ESP8266 和 ESP32 微控制器是基于 RISC-V 架构的流行微控制器。它们以其多功能性、可靠性和广泛的功能而闻名。这些微控制器在物联网、家庭自动化和机器人等行业的关注度和采用率显著增加。
精简指令集计算机-V (RISC-V) 是一种开源的 指令集架构 (ISA),在计算机架构中越来越受欢迎。它提供了一个简单且模块化的设计,与其它复杂的架构相比,更容易理解和实现。作为开源架构,RISC-V 提供了更大的灵活性和定制选项,允许开发者根据他们的特定需求调整架构。
ESP8266 和 ESP32 是 Espressif 的产品。您可以在 www.espressif.com/en/products/modules 找到更多详细信息。以下图显示了 ESP8266 和 ESP32 产品。

图 3.4 – ESP8266 和 ESP32 系列产品
ESP8266 和 ESP32 设计用于满足各种需求,并适应不同规模的项目:
-
ESP8266:这款于 2014 年推出的产品,在微控制器世界中带来了重大的变革。它使 Wi-Fi 连接变得经济实惠且易于访问,允许开发者轻松地将他们的设备连接到互联网。ESP8266 迅速获得了人气,并成为许多物联网项目的首选。
-
ESP32:这款产品于 2016 年发布。在 ESP8266 的成功基础上,它将前代产品的功能提升到了新的水平,不仅提供 Wi-Fi 连接,还增加了蓝牙、双核处理和更多的 GPIO 引脚。ESP32 革新了行业,使开发者能够创建更加先进和功能丰富的物联网应用。
开发者可以使用 ESP8266 和 ESP32 系列访问各种开发工具、库和资源。Espressif 开发生态系统提供了详细的文档、示例代码和教程,以帮助开发者入门并创建他们的项目。他们还可以使用带有 PlatformIO 扩展的 Arduino IDE 和 Microsoft Visual Studio Code IDE 进行开发。
下面是一个表格,概述了 ESP32 及其变种的要点规格:
| 规格 | ESP32 | ESP32-S2 | ESP32-S3 | ESP32-C3 | ESP32-C6 | ESP32-H2 |
|---|---|---|---|---|---|---|
| 发布日期 | 2016 | 2019 | 2020 | 2020 | 2023 | 2023 |
| 处理器 | 双核 32 位 Xtensa LX6 | 单核 32 位 Xtensa LX7 | 双核 32 位 Xtensa LX7 | 单核 RISC-V 32 位 | 单核 RISC-V 32 位 | 单核 RISC-V 32 位 |
| CPU 频率 | 240 MHz | 240 MHz | 240 MHz | 160 MHz | 160 MHz | 96 MHz |
| Wi-Fi, 2.4GHz | Wi-Fi 4 (802.11 b/g/n) | Wi-Fi 4 (802.11 b/g/n) | Wi-Fi 4 (802.11 b/g/n) | Wi-Fi 4 (802.11 b/g/n) | Wi-Fi 6 (802.11 ax) | 不支持 |
| 蓝牙 | 蓝牙 4.2(LE) | 不支持 | 蓝牙 5.2(LE),蓝牙网状网络 | 蓝牙 5.2(LE),蓝牙网状网络 | 蓝牙 5.3(LE),蓝牙网状网络 | 蓝牙 5.3(LE),蓝牙网状网络 |
| 802.15.4 | 无 | 无 | 无 | 无 | ZigBee 3.0,Thread 1.3 | ZigBee 3.0,Thread 1.3 |
| 片上 RAM | 520 KB | 320 KB | 512 KB | 400 KB | 512 KB | 320 KB |
| 片上 ROM | 448KB | 128KB | 384 KB | 384 KB | 320 KB | 128 KB |
| 可编程 GPIO 引脚 | 34 | 43 | 38 | 22 | 22 | 19 |
| SPI | 4 | 4 | 4 | 3 | 2 | 3 |
| UART 接口 | 3 | 2 | 3 | 2 | 2 | 2 |
| I2C 接口 | 2 | 2 | 2 | 1 | 1 | 2 |
| I2S 接口 | 2 | 1 | 2 | 1 | 1 | 2 |
| 模拟数字转换器(ADC)通道 | 18 | 20 | 20 | 5 | 7 | 5 |
| 内置温度 传感器 | 1 | 1 | 1 | 1 | 1 | 1 |
表 3.2 – ESP32 系列的关键规格
备注
请注意,从第第十一章开始,我们将使用 ESP32-C3 进行实践。
微控制器将核心处理器与各种外设和接口集成到一个单一模块中。下一节将讨论通常在微控制器内部找到的常见外设和接口。
外设和接口
微控制器具有各种外设和接口,包括 GPIO、SPI、I2C、UART、USB、安全数字输入输出(SDIO)、ADC、数字模拟转换器(DAC)、PWM 以及联合测试行动小组(JTAG)等。
GPIO
来自开关的ON和OFF信号,或来自传感器的数字读数,并将它们传输到微控制器。相反,当配置为输出端口时,它可以根据微控制器的指令执行外部操作。例如,它可以闪烁 LED 或生成驱动电机的信号。
GPIO 引脚通常用于连接传感器和执行器。
SPI
SPI 端口是一个广泛使用的同步串行通信总线,专门设计用于点对点、短距离和高数据速率通信,尤其是在嵌入式系统中。其主要功能是促进微控制器和外围设备(如安全数字(SD)卡、LCD 显示器、传感器和其他外围设备)之间的数据传输。
SPI 端口通常使用四根线进行数据通信。这些线如下:
-
串行时钟(SCLK):这是由主设备提供的时钟信号。它同步主设备和从设备之间的数据传输。
-
主从模式(MOSI):这是从主设备向从设备发送数据的线路。
-
主从模式(MISO):这是从从设备向主设备发送数据的线路。
-
从设备选择(SS):这是主设备用来选择和控制单个从设备的控制线路。当多个从设备连接到 SPI 总线时,每个设备都将有自己的 SS 线路。
I2C
I2C是电子领域广泛使用的通信总线。它是一个多主多从、分组交换、单端和串行通信总线。I2C 总线主要用于连接低速设备,如 EEPROM、传感器和其他 MCU。它为这些设备之间提供了一种简单高效的方式进行通信。
I2C 总线允许连接多个设备,每个设备都有一个唯一的地址。这使得系统中的不同组件之间易于集成和通信。总线以主从配置运行,其中主设备启动通信并控制设备之间的数据传输。
I2C 端口通常使用两根线进行数据通信。这两根线如下:
-
串行数据线(SDA):用于在 I2C 总线上的设备之间传输数据。
-
串行时钟线(SCL):这是用于在 I2C 总线上同步设备之间数据传输的时钟信号。
UART
UART是一种硬件组件,它促进了异步串行通信。异步通信在各方之间没有同步。这意味着发送者不需要等待接收者或经纪人来确定何时发送或不发送。
UART 通常用于 PC 和 MCU 之间的通信。它也用于 RF 无线通信、传感器(如 GPS 传感器)和旧式拨号调制解调器。
UART 端口通常需要至少两根线进行基本通信。这两根线是:
-
发送(TX):这根线用于从 MCU 向另一个设备传输数据。
-
接收(RX):这根线用于从另一个设备接收数据到 MCU。
对于基本的 UART 通信,这两根线是必不可少的。然而,在更复杂或特定的应用中,可能会使用额外的线进行硬件流量控制或信号目的:
-
清除发送(CTS):用于流量控制,表示微控制器(MCU)准备接收数据。
-
请求发送(RTS):也用于流量控制,表示 MCU 想要发送数据。
-
地(GND):在通信设备之间通常也需要一个公共地连接。
在简单的 UART 设置中,尤其是在基本的点对点通信场景中,只需 TX 和 RX 线以及一个公共地就足够了。
USB
USB端口是一种广泛使用的接口,它促进了计算机和电子设备之间的数据传输和电源供应。它具有多种用途,包括编程 MCU、启用串行通信以及连接键盘和鼠标等外围设备。USB 端口为在计算机和各种电子设备之间建立连接提供了一种方便且可靠的方法,增强了它们的功能,并实现了无缝的数据交换。
SDIO
SDIO是用于微控制器和其他设备与 SD 卡和其他类型 IO 设备通信的接口。它是标准 SD 卡协议的扩展,允许设备不仅传输存储数据,还可以使用外围功能,如蓝牙、GPS 等。
ADCs
ADCs 是一种电子设备,在将诸如温度传感器产生的模拟信号等转换为数字值方面发挥着至关重要的作用,这些数字值可以被微控制器(MCU)处理。
通过这样做,ADC 使微控制器能够准确解释和利用各种模拟传感器提供的信息,包括但不限于热敏电阻和电位器。这些传感器分别具有测量温度和提供可变电阻的能力,在从工业控制系统到消费电子产品的各种应用中得到了广泛的应用。ADC 执行的转换过程确保微控制器能够有效地分析和响应这些模拟输入,从而实现精确和可靠的测量、控制和决策。
DACs
DACs是用于将微控制器中的数字值转换为模拟信号的电子设备。这种转换过程对于各种应用至关重要,包括生成用于音频的模拟输出(AOs)和创建平滑的波形。
通过利用 DACs,微控制器中存储的数字信息可以转换为连续和可变模拟信号。这允许准确表示音频信号,使微控制器能够产生高质量的音频输出。此外,DACs 在合成器、音乐制作和其他音频相关领域发挥着至关重要的作用。
PWM 输出
PWM 输出是一种多功能特性,允许生成具有可变脉冲宽度的数字信号,这有效地模拟了模拟信号。这种功能为控制各种组件和设备开辟了广泛的可能性。
PWM 输出的一个关键应用是控制电机的速度。通过调整数字信号的脉冲宽度,可以精细调整电机的旋转速度,从而提供对其运动的精确控制。
此外,PWM 输出通常用于驱动伺服电机。通过改变数字信号的脉冲宽度,可以精确控制伺服电机轴的角位置,从而在机器人技术和自动化系统中实现精确定位。
JTAG
JTAG 是一种用于调试和测试集成电路(ICs),包括 ESP32 等微控制器(MCUs)的标准接口。它最初是为测试印刷电路板而设计的,但后来已演变成一种广泛用于电路板内调试的工具。
Timers
定时器是跟踪时间的一种基本工具。它们通过维持一个以预定速率递增的计数器来工作。这种功能可用于各种目的,例如以下所述:
-
监测事件或过程的持续时间
-
任务调度和协调
-
实现基于时间的动作或触发器
-
测量间隔或时间间隔
-
创建倒计时或闹钟
实时时钟
实时时钟(RTC)是一个设计为即使在低功耗睡眠模式下也能持续运行的外围组件,以准确跟踪时间。
RTC 提供了两个基本的时间功能:RTC 和周期性中断定时器(PIT)。RTC 跟踪当前时间和日期,而 PIT 允许设备从睡眠模式唤醒或定期中断。有了这些功能,RTC 不仅确保了准确的时间跟踪,还使设备能够有效地管理功耗并在特定时间间隔内执行任务。
这些外围设备和接口,包括各种设备和软件,正积极与各种传感器和执行器进行交互。这种交互促进了大量数据的收集,从环境因素到用户输入。此外,它还允许根据这些数据执行特定操作。这种外围设备、接口、传感器和执行器之间的复杂交互构成了我们数据驱动世界的基础,使得自动化和决策能力得到增强。现在,让我们看看另一个重要的话题。
传感器和执行器
在物联网的广阔领域中,终端设备配备了各种传感器和执行器,这构成了与物理世界动态交互的基石。这些组件不仅感知其环境的细微差别,而且对其产生影响,为智能和响应式的物联网应用铺平了道路。
传感器
物联网设备中的传感器用于捕获并发送环境数据到微控制器(MCU)。它们可以检测各种参数,如温度、湿度、光照和运动。传感器提供了有关环境的宝贵信息,有助于决策和自适应动作。
物联网设备中使用的许多传感器是微机电系统(MEMS)设备。MEMS 技术,它使得机械和机电元件能够小型化到很小的尺寸,对传感器技术产生了重大影响。通过在硅基板上将机械和机电元件与电子组件相结合,MEMS 传感器提供了许多优势。这些传感器在物联网设备和消费电子产品中得到广泛应用,因为它们体积小、功耗低且性能优异。因此,MEMS 技术彻底改变了传感器技术,使得在物联网和消费电子领域开发出更小、更高效、性能更高的设备成为可能。
这里有一些传感器的例子:
-
温度传感器:测量环境温度,其变体如热敏电阻和热电偶提供精确度
-
湿度传感器: 测量水分含量;对气候控制系统至关重要
-
压力传感器: 监测大气或水压;在天气预报和工业应用中至关重要
-
接近传感器: 使用超声波或红外技术无接触地检测附近物体
-
光传感器: 测量亮度,使用光电二极管或光敏电阻来调整照明或监测环境条件
-
运动和占用传感器: 检测运动,利用 PIR 等技术进行安全和自动化
-
气体传感器: 识别各种气体;对安全和环境监测至关重要
-
空气质量传感器: 测量空气污染物;对健康和环境质量评估至关重要
-
声音传感器: 监测声级,使用麦克风或压电传感器进行噪声测量或用户交互
-
水质传感器: 评估水质参数;在确保水质安全和质量方面至关重要
-
陀螺仪和加速度计: 跟踪方向和运动;在导航和运动敏感设备中不可或缺
-
心率传感器: 监测心脏节律;在健康和健身设备中至关重要
执行器
相反,执行器将来自传感器的数字数据转换为实际动作。它们是物联网设备的肌肉,使它们能够对其周围环境产生物理影响。无论是通过调节光强度、调节电机的速度还是驱动阀门,执行器都会对传感器输入或远程命令做出响应,从而营造一个响应性和适应性强的环境。
这里有一些执行器的例子:
-
电机(直流、步进、伺服): 驱动机械系统,实现运动和精确控制
-
继电器: 作为电动开关,管理较大负载,常用于家庭自动化
-
电磁铁: 电磁执行器,用于锁定系统和流体控制
-
LEDs and displays: 提供视觉反馈或界面;用作状态指示器或信息显示
-
蜂鸣器和扬声器: 生成音频信号用于警报或用户交互;在报警系统中不可或缺
-
加热器和冷却器: 管理温度以提供舒适或设备安全
-
泵: 推动液体;用于自动化灌溉或智能水族馆等应用
-
伺服机构: 提供对位置的精确控制;在机器人和精密应用中至关重要
传感器上的常用引脚
将传感器与微控制器(MCU)集成涉及通过各种引脚进行接口,每个引脚都执行特定功能。正确理解和连接这些引脚对于准确收集数据和设备性能至关重要。常见的引脚定义包括以下内容:
-
电压公共收集器(VCC):此引脚用于为传感器供电。它通常连接到电源,其电压级别必须与传感器的需求相匹配(通常是 3.3V 或 5V)。
-
GND:地引脚为电源和信号水平提供一个公共参考点。对于完成电路和稳定传感器操作至关重要。
-
数据引脚(DATA):此引脚将传感器的数据传输到 MCU。数据传输的性质可能不同——可能是模拟或数字,协议可以是 I2C、SPI、UART 或专有协议。
-
SCL 和 SDA:这些引脚专门用于 I2C 通信。SCL 携带时钟信号,SDA 携带数据。这两条线都是双向的,允许多个传感器连接到同一个总线上。
-
MISO、MOSI 和 SCK:用于 SPI 通信,这些引脚促进了全双工数据传输。SCK 是时钟线,MOSI 从 MCU 向传感器发送数据,MISO 从传感器向 MCU 发送数据。
-
TX 和 RX:在 UART 通信中,TX 和 RX 用于串行数据传输。MCU 的 TX 连接到传感器的 RX,反之亦然。
-
AO 和 数字输出(DO):一些传感器提供模拟和数字输出。AO 提供一个与测量参数成比例的可变电压水平,而 DO 提供一个二进制输出,指示参数是否高于或低于某个阈值。
-
INT(中断):中断引脚允许传感器在不进行连续轮询的情况下通知 MCU 某些事件(如阈值跨越或数据就绪)。
例如,让我们看看 DHT11 温湿传感器的引脚排列。这是一种常用的温湿度传感器,通常具有以下引脚:
-
VCC:电源(3.3 至 5V)
-
DATA:输出温度和湿度数据
-
GND:地
对于 DHT11,一个 DATA 引脚以串行数字形式传输温度和湿度读数。它支持基于时序的通信方案的单线协议。MCU 必须使用特定的时序来正确读取这些数据。
理解传感器规格
数据表是了解传感器和执行器能做什么以及它们的限制的有价值资源。一开始可能看起来令人不知所措,但学习如何在数据表中找到有用信息是一项重要的技能。许多传感器和执行器模块被设计成可以轻松与流行的开发板(如 Arduino、Raspberry Pi 和 ESP8266/ESP32)一起使用。这些模块通常附带库和示例代码,可以帮助初学者快速入门。某些传感器可能需要校准以确保它们提供准确的读数。确保你知道如何校准你的传感器,并在你将使用传感器的相同环境中进行校准。
以下列表包含了一些对于初学者在构建创新原型之前理解传感器规格的一般性建议:
-
灵敏度:这表示当测量量发生变化时,传感器的输出变化有多大。灵敏度更高的传感器可以检测到测量参数的更小变化。例如,一个高灵敏度等级的温度传感器可以准确地检测到温度的微小变化,使其适用于需要精确温度监测的应用。
-
范围:传感器的范围指的是传感器可以准确检测的测量参数的最小和最大值。例如,一个范围广泛的压力传感器可以准确地测量低压和高压,使其适用于各种工业应用。
-
分辨率:这定义了传感器可以检测到的测量量的最小变化。分辨率更高的传感器可以检测到更小的变化。例如,一个高分辨率的 pH 传感器可以检测到酸度水平的微妙变化,这对于科学实验中的精确 pH 监测是有益的。
-
准确性:这指的是传感器的读数与实际值之间的接近程度。在考虑传感器的准确性时,还应考虑其精度(可重复性)。例如,一个高度准确的重量传感器可以提供精确的测量值,与真实重量之间的偏差最小,确保工业称重等应用中的可靠数据。
-
响应时间:这指的是传感器对测量量变化做出反应所需的时间。较快的响应时间意味着传感器可以准确地跟踪快速变化。例如,一个高速运动传感器可以快速检测并对快速运动做出反应,使其适用于体育追踪或安全系统等应用。
-
功耗:这指的是传感器在运行过程中消耗的电量。较低的功耗是理想的,因为它可以延长电池寿命并降低能源成本。例如,一个节能的光传感器可以有效地检测环境光强度的变化,同时消耗最小的电量,使其适合智能手机或智能手表等电池供电设备。
摘要
在本章中,我们学习了物联网系统中使用的物联网终端设备。我们讨论了它们的类型和硬件架构,以及微控制器(MCU)的重要性。我们还探讨了这些设备与其周围环境交互的重要部分和连接。此外,我们还讨论了传感器和执行器,它们收集数据并使现实世界中的动作成为可能。
随着我们进入下一章,我们将通过探索无线数据通信如何在空中工作来构建这一知识。无线连接是将单个设备连接到物联网网络,该网络可以传输数据和命令以充分利用物联网潜力。我们将详细研究包括 Wi-Fi、BLE、LTE-M 和 NB-IOT 在内的不同无线连接技术,这些技术位于 4G/LTE 和 5G 领域。
第四章:无线连接,物联网数据传输的神经通路
在物联网架构中,无线连接功能作为一个传导子系统,类似于人体内的神经通路,传递生物电信号(传感器数据或执行器命令),在神经细胞(物联网终端设备)和大脑(后端云平台)之间传输。
在本章中,你将学习构建物联网创新时初学者应了解的无线数据通信的基本知识点。这些知识将为你理解无线数据传输、接收和信号处理的复杂性提供一个坚实的基础。
通过探索 4G/LTE 和 5G 领域内流行的无线技术(如 BLE、Wi-Fi、LTE-M 和 NB-IoT)的细节,你将全面了解它们的性能和局限性。
到本章结束时,你将获得丰富的知识,这将使你能够自信地导航物联网创新背景下的无线数据通信领域。
从第十一章开始,在 ChatGPT 的帮助下,你将练习在 ESP32 微控制器上编写 Wi-Fi 客户端堆栈代码,通过你的家庭 Wi-Fi 网络访问互联网。
本章涵盖了以下主题:
-
无线数据通信的 10 个知识点
-
蓝牙(BLE)
-
Wi-Fi
-
4G/LTE 和 5G
无线数据通信的 10 个知识点
在第二章中,我们讨论了由蓝牙、Wi-Fi、LoRaWAN、4G/LTE、5G 和 LEO 覆盖的多种物联网网络。它们都属于无线数据通信的范畴。从物理层详细了解无线数据通信的工作方式可能具有挑战性和令人畏惧,尤其是对于那些没有强大专业背景的人来说。
然而,对于努力将物联网创新应用于商业的初学者来说,花时间掌握无线技术底层(如物理层和数据链路层)的复杂性是必要的。了解无线数据通信在实地如何工作的基础知识,对你的创新开发过程和实地试点可能有所帮助。
为了帮助你在这一旅程中,我们将涵盖 10 个关于无线数据通信的初学者应了解的重要技术事实。这些事实将成为你理解的基础,并使你能够更深入地研究这一主题。
OSI 模型
无线数据通信技术的架构模型遵循一个广泛接受的行业标准,称为开放系统互联(OSI)模型。OSI 是一个用于理解和标准化数据通信系统功能的框架,无论是有线还是无线。OSI 模型是在 20 世纪 70 年代由国际标准化组织(ISO)开发的。它旨在有效地组织和简化数据通信的不同功能。OSI 模型将端到端的数据通信功能划分为七个层次,每个层次都有其特定的目的。下表显示了七层模型以及每一层如何对数据通信过程做出贡献:
| 层 | 功能描述 |
|---|---|
| 7, 应用层 | 与充当数据通信组件的软件应用程序交互。它促进了电子邮件、文件传输、网页浏览、即时消息、语音和视频电话以及视频流等服务。 |
| 6, 表示层 | 在网络所需的格式和计算机期望的格式之间转换数据。它处理数据加密和解密,以及数据压缩,例如安全套接字层(SSL)加密。 |
| 5, 会话层 | 管理应用程序之间的会话或连接。它建立、管理和终止两个或多个设备之间的连接。 |
| 4, 传输层 | 确保完整的数据传输,并通过流量控制、分段/解分段和错误控制(如传输控制协议(TCP)和用户数据报协议(UDP))来控制给定链路的可靠性。 |
| 3, 网络 | 管理设备寻址,跟踪网络中设备的地理位置,并确定移动数据的最优方式。它负责在网络边界(如互联网协议(IP)地址)之间路由和转发数据包。 |
| 2, 数据链路层 | 由两个子层组成:逻辑链路控制(LLC)和媒体访问控制(MAC)。它负责节点到节点的数据传输以及在物理层中进行错误检测和纠正,例如以太网和 Wi-Fi 中的 MAC 地址。 |
| 1, 物理层 | 处理设备之间的物理连接以及通过物理介质(如电缆、光纤或无线)传输和接收原始比特流。 |
表 4.1 – OSI 模型的 7 层
重要的是要理解,当涉及到不同的无线通信技术时,第 3 层(网络)和第 7 层(应用)之间可能没有太大的区别。然而,值得注意的是,在第 1 层(物理)和第 2 层(数据链路)的功能和特性上可能会有显著差异。这些低层的差异可以对无线通信系统的整体性能和效率产生重大影响。因此,有必要仔细分析和评估第 1 层和第 2 层,因为它们在塑造无线网络的行为和能力方面发挥着关键作用。
物理层
物理层在 OSI 模型中最为重要,尤其是在像 BLE、Wi-Fi 和 4G/LTE 这样的无线通信技术中。这一层负责在物理介质上发送和接收原始比特流,在无线技术中这通过电磁波完成。传输过程涉及几个关键步骤:使用 DAC 将数字比特转换为模拟信号,通过适当的调制准备这些信号以进行传输,并使用天线发送它们。在接收端,这些步骤以相反的顺序进行:天线接收电磁波或信号,然后通过解调并使用 ADC 将它们转换回数字信号。我们将在信号处理部分更详细地介绍这些内容。
数据链路层
数据链路层是数据通信过程中的一个重要部分,尤其是在无线网络中。它在 OSI 模型中位于物理层之上。这一层包含两个子层:逻辑链路控制(LLC)层和媒体访问控制(MAC)层。每个子层都有特定的功能以确保有效和可靠的通信。它处理的一些任务包括错误检测和纠正、帧同步以及控制对物理介质的访问。在无线通信中,这一层还包括信道编码/解码和交织/解交织,这对于可靠的数据传输非常重要,并且与物理层紧密合作。
中介访问的方法在不同无线技术中各不相同。例如,Wi-Fi 采用基于争用的模型,客户端之间相互竞争以访问用于数据传输的频谱。这个过程通常通过如载波侦听多路访问与碰撞避免(CSMA/CA)这样的协议进行管理。相反,在 4G/LTE 网络中,频谱的访问更加结构化,并由基站(称为 4G/LTE eNodeB)进行协调。在这种情况下,eNodeB 为每个 4G/LTE 客户端分配特定的时频资源,从而促进有组织和计划化的频谱访问,以实现高效的数据传输。
信号处理
无线数据通信的信号处理是一个复杂且错综的过程,涉及众多步骤。数据传输始于对要发送的信息进行编码和调制。这确保了数据被转换为适合可靠无线传输的格式。接下来,调制信号通过跳频或扩频等技术在空中传输。这有助于确保信号稳健,能够抵御干扰或噪声。一旦信号到达接收器,它就会进行解调以提取原始信息。最后,解码后的数据由接收设备处理和解释,使接收者能够访问和使用传输的信息。
以下流程图是表示无线数据通信信号处理的基本图:

图 4.1 – 无线数据通信流程
电磁波
根据麦克斯韦方程,无线数据以电磁波的形式在空中传播。麦克斯韦方程是经典电磁学、经典光学和电磁电路的基础。这些方程为电力生成、电动机、无线通信、透镜、雷达等技术提供了数学模型。它们解释了电荷、电流和场的变化如何产生电场和磁场。
电磁波是由两个振荡场形成的:一个电场(E)和一个磁场(B)。电场和磁场是同相振荡的,这意味着电场和磁场波形之间没有相位差,因此这些场的峰值和谷值完美对齐,导致同步振荡。其次,电场和磁场彼此垂直,它们的传播方向也是如此,彼此形成 90°的角度。
以下是对空中电磁波的 3D 视图:

图 4.2 – 空中的电磁波
重要的是要知道声波和电磁波是不同的。声波,也称为声波,是在空气或水等介质中的粒子振动时产生的。电磁波是在电场和磁场相互作用时产生的,并且它们不需要介质来传播。
在我们的日常生活中,阳光由自然电磁波组成。除了众所周知的无线通信技术,如 Wi-Fi、蓝牙和蜂窝网络之外,电磁波还用于无线电和电视广播、微波炉、遥控器、GPS、军事和民用雷达系统、家用照明灯和医疗 X 射线等多种应用。
频率和波长
频率和波长在确定电磁波如何传播和与环境相互作用方面起着至关重要的作用。理解频率与波长之间的关系对于理解无线信号的传输、接收和处理至关重要。
频率
频率是一个单位,用于衡量在给定时间内相同波(无论电磁波还是声波)重复的频率,通常以每秒周期数或赫兹(Hz)表示。人耳能听到的声波频率范围大约是 20 Hz 到 20,000 Hz(20 kHz)。允许 Wi-Fi 使用的频率是 2.4GHz、5GHz 和 6GHz(Wi-Fi 6E)。
下面的图显示了 2.4 GHz 与 5 GHz 在-1 纳秒(10^-9秒)周期内的频率波形:

图 4.3 – 2.4 GHz 与 5 GHz 的频率波形
波长
波长是波中连续峰值(或任何相同点)之间的距离,以米(m)为单位。电磁波中频率与波长的关系是反比的,并由一个简单的方程式控制:
光速 = 频率 × 波长
在这里,光速(在真空中)大约是 3 × 10⁸ 米每秒(m/s)。
从这个方程式中,你可以看出,随着频率的增加,波长减小,反之亦然。波的频率越高,其波长越短。
例如,可见光在波长上从 400 到 700 纳米(nm)不等。从频率的角度来看,这相当于大约 430 太赫兹(THz)到 750 THz。蜂窝网络中的 5G 毫米波(mmWave)指的是 24 GHz 到 100 GHz 的频率范围,对应的波长在 1 毫米到 10 毫米之间。
下面的波长图表显示了 2.4 GHz 与 5GHz 在 1 周期时的对比:

图 4.4 – 2.4 GHz 与 5 GHz 的波长
频率分配
通常,一个国家的监管机构管理的频率分配用于各种目的,包括军事和民用。
军事频率:
-
军事用途分配的频率通常被指定用于国防和国家安全目的
-
这些可能包括军事通信、导航、雷达和其他专业军事应用
-
由于安全原因,分配给军事用途的具体频率通常不会公开披露
民用频率:
-
民用频率是指分配给非军事用途的频率。这个广泛的类别包括各种商业、私人和国有用途。
-
例子包括商业广播(广播和电视)、蜂窝网络(如 4G/LTE 和 5G)、Wi-Fi、卫星通信、紧急服务、航空通信等。
-
这些频率的分配通常由国家监管机构(如美国的联邦通信委员会)管理,并且通常公开。
用于物联网应用的无线频谱属于民用频率。
频谱监管
一个国家的电磁波频谱涵盖了从最低到最高的所有频率范围,这些频率被分配给各种用途,包括民用、军事、科学和工业应用。它包括所有由国家或地区当局合法批准和监管的频率。例如,国际电信联盟(ITU)在协调全球频谱分配方面发挥着关键作用,这涉及到为各种地面或太空无线电通信服务分配特定频段的标准,以防止国际干扰。在美国,联邦通信委员会(FCC)负责监管无线电、电视、有线、卫星和有线电视通信。同样,欧洲电信标准研究院(ETSI)负责欧洲国家的信息和通信技术标准化。
在频谱的民用使用中,通常有两种类别:授权频谱和非授权频谱。让我们更详细地了解一下:
-
授权频谱要求实体从国家或地区当局获得使用许可。这种频谱通常指定用于公共和全国性服务,例如蜂窝网络(如 4G/LTE 和 5G)、广播无线电和电视,在这些服务中,可靠且无干扰的通信至关重要。任何在授权频谱内传输信号的设备都必须从国家监管机构,如美国的 FCC,获得许可。
-
非授权频谱指的是不需要政府许可即可使用的无线电频率,但在此频段内运行的设备必须遵循某些技术标准,以最小化干扰并有效利用频谱。ISM 频段是非授权频谱的一个特定部分,最初是为非电信目的而预留的,例如工业、科学和医疗用途。ISM 频段现在被各种无线技术广泛使用,包括 Wi-Fi(在 2.4 GHz、5 GHz 和 6 GHz)、蓝牙、ZigBee 和 Thread(所有在 2.4 GHz),以及 LoRaWAN 和 Wireless Hart(通常在 433 MHz、868 MHz 和 915 MHz)。
频谱带宽
频谱带宽指的是通信信道或信号在电磁频谱中占据的频率宽度或范围。它是电信和无线通信中的一个基本概念,表明信道携带信息的能力。
例如,工作在 2.4 GHz 频率的 Wi-Fi 覆盖了从 2.4 GHz 到 2.4835 GHz 的频率范围。这个范围也被称为总信道带宽,大约为 83.5 MHz。工作在 5 GHz 频段的 Wi-Fi 覆盖范围从 5.150 GHz 到 5.850 GHz,提供了超过 600 MHz 的频谱带宽。请注意,由于不同的监管环境,确切的频率界限可能因地区而异。
信道带宽
信道带宽是分配给每个通信信道的频率范围,以 Hz 为单位。它表示信道内最高频率和最低频率之间的差异。例如,根据电气和电子工程师协会(IEEE)802.11 b/g/n 标准,工作在 2.4 GHz 频段的 Wi-Fi 从 2.4 GHz 到 2.4835 GHz,提供了大约 83.5 MHz 的总带宽。在此频谱内,标准定义了 11 个重叠的信道(在大多数国家),每个信道的带宽为 20 MHz。
dB, dBm, 和 dBi
分贝(dB)、分贝毫瓦(dBm)和分贝全向(dBi)是无线通信中重要的功率单位,每个单位都服务于特定的目的。dB 用于相对功率水平,dBm 用于绝对功率水平,dBi 用于天线增益。对这些术语的清晰理解对于从事无线系统和网络工作的专业人士至关重要:
-
dB:
-
定义:表示两个值之间比率的相对度量单位。它是一个对数单位,用于描述值的变化(如功率或强度)。
-
用法:dB 用于表示信号中的增益、损耗和相对水平。它是无单位的,因为它描述的是一个比率。
-
示例:说一个放大器提供 10 dB 的增益意味着它将输入信号的功率水平增加了与 10 dB 相对应的倍数。
-
-
dBm:
-
定义:以 1 毫瓦(mW)为参考的绝对功率分贝单位。
-
用法:dBm 用于定义一个绝对尺度上的功率水平。它在无线通信中被广泛用于表示发射机输出功率、接收机灵敏度等。
-
示例:0 dBm 的功率水平对应于 1 mW。功率水平为-10 dBm 的信号比功率水平为 0 dBm 的信号弱。
-
-
dBi:
-
定义:天线增益的度量。它比较天线辐射的功率与一个假想的全向天线辐射的功率,该天线在所有方向上均匀分布能量。
-
用法:dBi 用于表示天线相对于全向天线在特定方向上有效地定向或聚焦能量的程度。
-
示例:增益为 3 dBi 的天线意味着它可以在特定方向上比全向天线聚焦信号功率高 3 dB。
-
让我们看看关键的区别:
-
dB 与 dBm 的比较: dB 是一个没有参考绝对刻度的相对度量(比率),而 dBm 是一个相对于特定功率水平(1 mW;当你说 0 dBm 时,意味着功率水平等于 1 mW)的绝对度量。
-
dBm 与 dBi 的比较: dBm 测量功率水平,而 dBi 测量天线增益。dBm 关于信号的强度,而 dBi 关于天线在特定方向上传输或接收信号的有效性。
传输功率
传输功率,通常被称为发射机功率或 TX 功率,是无线通信中的一个关键概念。它指的是无线电发射机在发送信号时使用的电功率。传输功率通常以瓦特(W)或更常见地以 mW 来衡量,有时它以相对于毫瓦(dBm)的分贝表示。例如,1 mW 的传输功率相当于 0 dBm。
在不同的无线频段和应用中,对传输功率的使用有国家或地区性的监管限制。这些限制由美国联邦通信委员会(FCC)和欧洲电信标准协会(ETSI)等组织设定,以避免与其他无线服务的干扰,并最小化与电磁暴露相关的健康风险。
有效全向辐射功率(ERP)和有效全向辐射功率(EIRP)是无线通信领域的重要概念,尤其是在讨论发射机(TX 功率)的输出功率或强度时。这两个术语都是用相对于参考功率的有效性来描述无线电信号的功率水平。让我们更详细地看看:
-
ERP:
-
定义: ERP 指的是一个理论上的半波偶极子天线为了产生与实际发射天线在其最高增益方向上相同的信号强度而需要发射的功率。
-
计算: ERP 是根据发射机的输出功率、传输线损耗以及与半波偶极子天线的增益来计算的。
-
ERP (dB) = 发射功率 (dBm) + 天线增益 (dBi) − 线路损耗 (dB)
-
用途: ERP 通常用于广播以及 VHF 和 UHF 电视天线
-
-
EIRP:
-
定义: EIRP 是指一个全向天线(在所有方向上均匀辐射功率)为了产生与实际天线在其最强方向上相同的信号强度而需要发射的等效功率。
-
计算: EIRP 类似于 ERP,但使用全向天线作为参考。它考虑了发射机功率、相对于全向辐射器的天线增益(dBi)和线路损耗。
-
EIRP (dB) = 发射功率 (dBm) + 天线增益 (dBi) − 线路损耗 (dB)。
-
用途: EIRP 在卫星通信和移动蜂窝网络环境中被广泛使用。
-
信号强度和质量
信号强度和质量是无线技术中的关键因素。了解信号强度是如何测量的以及它对无线通信可靠性和性能的影响是至关重要的,尤其是对于初学者来说。
信号强度是指设备从源(如 Wi-Fi 接入点)接收到的无线信号的功率水平。它是接收到的信号功率的直接度量,没有任何特定的参考尺度或指标:
-
测量:这通常以 dBm 为单位量化。更高的 dBm 值表示更强的信号。
-
对网络性能的影响:更强的信号通常意味着网络性能的改善,这体现在更高的数据速率和更稳定的连接上。弱信号可能导致数据速率降低、连接不稳定和范围受限。
信号质量,与信号强度不同,关注无线信号的清晰度和完整性。它包括两个关键因素,即接收信号强度指示器(RSSI)和信噪比(SNR),这两者对于数据的准确接收和解释至关重要:
-
RSSI: RSSI 是指无线设备从接入点接收到的信号强度的估计值。虽然以 dBm 表示,但它是一个相对指标,并未标准化,这意味着其值可能在不同设备之间有所不同。更高的 RSSI 值,接近 0 dBm,通常表示更强的信号。例如,-50 dBm 被认为比-100 dBm 的信号强度更好。
-
SNR:SNR 是评估无线通信中信号质量的关键指标,它衡量信号强度(S)与背景噪声水平(N)之间的差异,通常以 dB 表示。更高的 SNR 表明信号相对于噪声更清晰,从而带来更好的无线性能。例如,SNR 值为 25 dB 或更高的通常表明 Wi-Fi 连接稳健且可靠。然而,来自微波或其他 Wi-Fi 网络的外部干扰可能会对信号质量产生负面影响。
SNR 的功率基本公式为 SNR dB = S / N,其中S是信号功率,N是噪声功率。两者应使用相同的单位(例如,W 或 mW)。虽然 SNR 通常以 dB 表示,但在某些情况下,您可能需要将其作为纯比率。在这些情况下,您可以使用 SNR 比率 = 10^SNR dB / 10 的公式将 SNR dB 转换为 SNR 比率。
深度学习与理论信道容量
Shannon’s Law,由克劳德·香农提出,是信息论中的一个基本定理,它定义了在给定条件下,在通信信道上无误差地实现的最大数据速率(或信道容量)。它对于理解在信道上可以传输的内容的极限至关重要,尤其是在无线通信中。
深度学习的公式如下,用于计算最大信道容量:
C = B × log 2 (1 + SNR 比率)
这里,我们有以下内容:
-
C 是理论信道容量(通信信道可以处理的每秒最大无误差数据速率,称为最大信道数据速率)
-
B 是信道的带宽(以赫兹为单位)
-
S 是在带宽内接收到的平均信号功率,以瓦特(或伏特平方)计算
-
N 是在瓦特(或伏特平方)中计算的带宽内平均干扰功率或噪声
-
SNR 是通信信号相对于高斯噪声干扰的 SNR,表示为线性功率比
深圳定律表明,可以通过增加信道带宽或提高信噪比来增加数据速率。然而,即使信噪比非常高,数据速率也有理论上的极限。
例如,假设 Wi-Fi 信道具有 20 MHz 的带宽和 30 dB 的信噪比,最大信道容量计算如下:
将 30 dB 的 SNR 从 dB 转换为比率:SNR 比率 = 10^(30/10) = 1000
C = B × log 2 (1 + SNR 比率) = 20,000,000 × log 2 (1 + 1000) ≈ 200Mbps
此容量表示在 30 dB 的信噪比下,20 MHz Wi-Fi 信道的数据传输的理论上限
调制
调制是无线通信中的基本过程,它将载波波改变以编码信息,使其可以通过空气发送。这对于在无线信道上有效地高效地传输数据非常重要。所使用的具体技术取决于应用的需求、传输距离、数据速率和环境条件等因素。
以下是在无线通信过程中的调制的关键功能:
-
数字和模拟信号:调制可以应用于数字和模拟信号。在数字调制中,数字信号(如二进制数据)调制载波波。在模拟调制中,模拟信号(如语音或音乐)执行调制。
-
转换过程:对于数字信号,调制通常涉及将这些信号转换为适合通过射频信道传输的模拟格式。这种转换是必要的,因为通过空间传播的电磁波本质上是模拟的。
-
载波波:载波波,通常是高频正弦波,根据信息信号进行修改。这种修改可以是幅度、频率、相位或这些方面的组合。
-
频率分配:调制允许信号在特定的频率信道中传输,使得可以在不同的频率带中同时进行多个不同的传输,从而有效地利用电磁频谱。
-
环境适应:不同的调制技术对干扰和噪声的抵抗程度不同,这使得某些技术在某些环境或传输距离下比其他技术更适合。
模拟调制方案用于使用特定频率的载波波传输模拟信息,如音频或视频信号。在模拟调制中,载波波的一些方面会根据模拟信号的幅度、频率或相位进行变化:
-
幅度调制(AM):这种调制方案根据消息信号改变载波信号的强度。AM 用于调幅广播、航空无线电和早期的电视广播系统。
-
频率调制(FM):这种调制方案根据消息信号改变载波信号的频率。FM 在调频广播中得到了广泛的应用,并且与 AM 相比,对噪声和干扰的抵抗能力更强。
-
相位调制(PM):这种方案根据消息信号改变载波信号的相位。
数字调制方案是通信系统中用于使用载波波传输数字信息的方法。与传输模拟信号的模拟调制不同,数字调制将数字数据编码到载波波中。以下是一些流行的调制方案的示例:
-
高斯频率移键控(GFSK)是一种调制方案,它使用高斯滤波器来塑造传输信号的频率谱。GFSK 通过改变载波波的频率来调制数据。高斯滤波器可以减少带宽和干扰。GFSK 在蓝牙低功耗和射频应用中得到了广泛的应用。
-
相移键控(PSK)是一种重要的调制方案,它使用不同的相位角度来表示符号。PSK 通过改变载波信号的相位来编码数据。它有各种级别,例如二进制 PSK(BPSK)、正交 PSK(QPSK)或更高阶的 PSK(例如,8-PSK),这取决于每个符号编码的位数。PSK 的级别越高,数据速率越高,但噪声敏感性也越高,功率效率越低。PSK 常用于 Wi-Fi、RFID、蓝牙经典和卫星通信。
-
正交幅度调制(QAM)是一种高级调制技术,它结合了幅度调制和相位调制。它能够实现更高的数据速率传输,并且在数字通信系统中得到广泛应用。QAM 将幅度调制与相移键控相结合,允许每个符号携带更多的信息。QAM 可以有多种级别,如 16-QAM、64-QAM、256-QAM 或更高,这取决于每个符号编码的位数。QAM 级别越高,数据速率越高,但噪声敏感性也越高,功率效率越低。QAM 易于实现,具有良好的频谱效率,但容易受到衰落和非线性失真的影响。
-
正交频分复用(OFDM)是一种频分复用技术,它将整个可用带宽分成更小的块,以实现高效的数据传输。它将总频谱分成许多窄的子载波,每个子载波具有不同的频率,并且不会相互干扰。OFDM 可以在每个子载波上使用任何调制方案,如 QAM 或 PSK,这取决于信道条件和所需的数据速率。这意味着这些子载波可以通过 QAM 或 PSK 独立调制,使用不同的调制方案。OFDM 具有多个优点,包括高效率、抗信号衰落和适应不同信道的能力。使用 QAM 的 OFDM 在 Wi-Fi 5、6、7,4G/LTE 和 5G 中得到广泛应用。
天线技术
天线在无线通信系统中扮演着关键角色,作为设备和无线电波之间的接口。它们将电信号转换为电磁波进行传输,反之亦然,用于接收。理解天线操作和设计的基本原理至关重要,尤其是对于无线技术新手来说。
以下是天线的基本功能:
-
转换信号:天线被设计成高效地将电信号转换为电磁波,反之亦然。这涉及到电磁辐射和接收。
-
谐振:大多数天线都是谐振装置,这意味着它们会在特定频率下自然振荡。天线的尺寸和形状通常决定了其谐振频率。
-
极化:这指的是辐射波的电场方向。天线可以是垂直极化、水平极化或圆极化。
-
增益:天线增益是衡量天线在特定方向上如何有效地引导或集中信号的一个指标。高增益天线可以在更远的距离上更有效地发送和接收信号,但通常覆盖范围较窄。
让我们来看看不同类型的天线及其应用场景:
-
贴片天线: 贴片天线是紧凑型天线,常用于物联网终端设备、移动电话和无线路由器。这些天线因其低矮的轮廓而备受推崇,这使得它们可以轻松地安装在平坦的表面上。此外,贴片天线在信号接收和传输方面表现出色。它们紧凑的尺寸也使它们成为空间有限的应用的理想选择。
-
面板天线: 它们设计用于在特定方向传输和接收信号,提供增强的信号强度和覆盖范围。面板天线由多个天线单元组成,排列成类似面板的结构,允许集中和高效的信号传输。这些天线常用于点对点通信、无线回程和户外无线网络等应用。
-
全向天线: 这些天线设计用于在所有水平方向辐射和接收信号,提供广泛的覆盖区域。它们在多种应用中都很常见,包括家用 Wi-Fi 路由器和蜂窝网络基站。由于它们能够在所有方向上传输和接收信号,全向天线确保在整个覆盖区域内信号强度可靠且一致,使它们成为需要向所有方向扩展信号覆盖的理想选择。
-
偶极天线: 这是天线最简单的形式,由两个导电元件组成。它们用于从 FM 收音机到更复杂的系统等各种应用。
-
八木-宇达天线: 这些是高增益的定向天线,常用于电视接收和点对点通信链路。
-
抛物面天线: 这些呈碟形的天线,也称为抛物面天线,是高度定向且增益高的天线。用于卫星通信和射电望远镜。
以下因素将影响您选择哪种天线:
-
工作频率: 不同的天线针对不同的频段进行了优化
-
方向性: 应用是否需要定向或全向覆盖
-
物理尺寸和形状因素: 基于天线将被集成到其中的设备或系统的限制
-
环境: 室内、室外、城市或乡村环境都可能影响所使用的天线类型
传播距离
无线通信中的传播距离是指信号从其源头传播多远仍能保持有效性和可靠性。在设计部署无线系统时,这是一个需要考虑的关键方面,因为多个因素会影响信号如何在空间中传播。让我们更详细地看看:
-
发射功率: 信号在其源头的强度显著影响其可以传播的距离,但最大发射功率受国家法规限制。
-
接收灵敏度:接收器检测信号最小水平的能力是确定最大距离的关键。它指定了每个供应商的无线芯片组的特点。
-
天线类型:发射和接收天线的增益、类型和方向在信号传播中发挥作用。
-
信号的频率:由于衰减增加,尤其是障碍物的影响,高频信号往往具有较短的传播距离。
-
环境条件:物理障碍物、大气条件和来自其他来源的干扰可能会随着距离的增加而降低信号强度。
链路预算
在无线通信系统中,我们使用链路预算来评估信号可以传播的距离。它考虑了系统中的所有增益和损耗,例如发射器功率、天线增益、路径损耗和障碍物。
链路预算分为两部分:用于从用户设备向接入点传输数据的上行链路预算,以及用于从接入点向用户设备传输数据的下行链路预算。这两个预算都限制了信号实际可以传播的距离。
上行链路预算(以 dBm 为单位)可以通过以下公式计算:
上行链路预算 = P TX, Up + G TX, Up − L TX, Up − L Pathloss, Up − L RX, Up + G RX, Up
这里,我们有以下内容:
-
P TX, Up 是用户设备的发射功率(以 dBm 为单位)
-
G TX, Up 是用户设备的发射天线增益(以 dBi 为单位)
-
L TX, Up 是用户设备的发射系统(如电缆损耗、连接器损耗等)中的损耗(以 dB 为单位)
-
L Pathloss, Up 是上行链路的路径损耗(以 dB 为单位)
-
L RX, Up 是接入点或基站(如电缆损耗、连接器损耗等)的接收系统中的损耗(以 dB 为单位)
-
G RX, Up 是接入点或基站的接收天线增益(以 dBi 为单位)
下行链路预算(以 dBm 为单位)可以通过以下公式计算:
下行链路预算 = P TX, Down + G TX, Down − L TX, Down − L Pathloss, Down − L RX, Down + G RX, Down
这里,我们有以下内容:
-
P TX, Down 是接入点或基站的发射功率(以 dBm 为单位)
-
G TX, Down 是接入点或基站的发射天线增益(以 dBi 为单位)
-
L TX, Down 是接入点或基站的发射系统(如电缆损耗、连接器损耗等)中的损耗(以 dB 为单位)
-
L Pathloss, Down 是下行链路的路径损耗(以 dB 为单位)
-
L RX, Down 是用户设备的接收系统(如电缆损耗、连接器损耗等)中的损耗(以 dB 为单位)
-
G RX, Down 是用户设备的接收天线增益(以 dBi 为单位)
将链路预算与接收灵敏度进行比较
在确定通信链路是否能够可靠工作时,将接收灵敏度纳入链路预算方程是很重要的。接收灵敏度是接收器理解信号所需的最小信号强度。将链路预算与接收灵敏度进行比较很重要。如果链路预算等于或大于接收灵敏度,则链路是可行的。换句话说,接收到的信号强度必须等于或大于接收器的灵敏度,才能保证可靠的通信。
例如,如果下行链路预算为-65 dBm,而用户设备的无线芯片组声称其接收灵敏度为-90 dBm,则下行链路被认为是可行的。
到现在为止,你应该已经对无线数据通信的基本方面有了基本的了解。这些对于物联网在实际现场部署中的成功至关重要。
在以下章节中,我们将将这些知识应用于 4G/LTE 和 5G 蜂窝技术背景下流行的无线技术,如 BLE、Wi-Fi、LTE-M 和 NB-IoT。
BLE
蓝牙、蓝牙经典和 BLE 的概念常常被初学者误解和混淆。理解这些概念对于全面掌握蓝牙技术的功能和特性至关重要。
蓝牙是一种无线技术,允许设备在短距离内进行通信和数据传输。它已经变得非常流行,并被用于各种应用,例如将智能手机连接到无线耳机或在不同设备之间传输文件。
蓝牙经典,也称为蓝牙基本速率/增强数据速率(BR/EDR),是蓝牙技术的原始版本。它通常用于音频流媒体、文件传输和其他需要持续稳定连接的应用。与 BLE 相比,蓝牙经典提供更高的数据传输速率,但功耗更大。
BLE 是蓝牙技术的节能版本。它被引入以应对对低功耗设备(如健身追踪器、智能手表和其他物联网设备)日益增长的需求。BLE 设计用于短时间的数据传输,使其非常适合需要间歇性通信和长电池寿命的应用。
蓝牙低功耗(BLE)已成为物联网应用中最广泛采用的无线技术,尤其是在智能家居和个人可穿戴设备领域。BLE 已成为今天数亿设备中普遍存在的技术,从智能手机和电脑到物联网设备和医疗设备。这种显著的成功源于它为最终用户提供的用户友好的连接体验,以及它为物联网创新开发者提供的益处:低成本、低功耗、长距离、易于集成、以及在家和个体使用场景中快速部署的低成本。随着物联网的快速增长,BLE 已成为一个不可或缺的组成部分,使大量功耗敏感的物联网设备能够与云进行通信和交互。
历史及现状
蓝牙技术的历史非常迷人,其特点是合作、创新和推动创建通用无线通信标准的动力。蓝牙是以 10 世纪斯堪的纳维亚国王哈拉尔“蓝牙”戈姆松的名字命名的,他因将丹麦部落联合成一个单一王国而闻名。这个名字旨在反映该技术统一通信协议的能力。蓝牙技术的发展始于 1994 年,由瑞典电信公司爱立信开始。目标是开发一种无线替代 RS-232 数据电缆。1998 年,五家公司——爱立信、诺基亚、IBM、东芝和英特尔——成立了蓝牙特别兴趣小组(SIG),这是一个非营利组织,负责监督蓝牙标准的开发和蓝牙技术的许可。
蓝牙 1.0 至 3.0——蓝牙经典时代
蓝牙最初的规范(版本 1.0 和 1.0B)于 1999 年发布。它使用GFSK作为其调制方案。GFSK 通过在两个频率之间切换载波来表示 1s 和 0s。这导致蓝牙 1.0 的数据速率限制在 1 Mbps,范围可达 10 米。当 2004 年发布蓝牙 2.0 时,GFSK 被两种较新的调制方案所取代:π/4 DQPSK 和 8DPSK。这些方案使用波形相位的改变来传输信息,而不是频率调制。因此,蓝牙的数据速率分别达到 2 Mbps 和 3 Mbps。2009 年发布的蓝牙 3.0 通过添加对 IEEE 802.11 的支持,将数据速率提高到 24 Mbps。这次发布是蓝牙的一个重要里程碑,因为它为无线数据通信的重大技术进步铺平了道路,为短距离无线解决方案提供了可靠的高速连接。
然而,在那个时刻,一个主要问题阻止了蓝牙在物联网中的广泛应用:功耗。蓝牙 1.0 至 3.0,也称为蓝牙经典,并不节能,导致物联网设备快速耗尽电池。这使得它们在功耗敏感的物联网应用中不切实际。
蓝牙 4.0 至 5.3 及以后——BLE 的时代
为了满足对低功耗物联网设备的日益增长的需求,蓝牙 4.0 在 2010 年引入了一种名为 BLE 的新蓝牙类型。蓝牙 4.0 中的 BLE 以 1 Mbps 的较低数据速率运行,使用 GFSK 调制方案。虽然这种数据速率可能不适合无线扬声器或视频流媒体等需要持续高数据率的产品,但它对仅需要定期或按需发送小数据包的物联网应用有益。例如,一个健身可穿戴设备每隔几分钟通过移动应用将你的心率传输到你的智能手机。通过优先考虑低能耗,BLE 使得许多物联网应用能够由纽扣电池供电数周甚至数月。这使得它们既实用又高效。
2016 年发布的蓝牙 5.0 在之前的 BLE 标准上实现了显著改进。蓝牙 5.0 引入了以下不同的 PHY 和数据速率,以满足物联网应用的多样化需求:
-
Standard PHY:这继续了蓝牙 4.0 的 1 Mbps 数据速率,在速度和功耗效率之间取得平衡,适用于标准 BLE 应用。
-
LE Coded PHY:这为 125 kbps 和 500 kbps 提供了新的 PHY 选项,专门设计用于长距离通信,在最佳条件下可能扩展到 200 米的距离。蓝牙 5.0 中带有 LE Coded PHY 的 BLE 被称为BLE Long Range (BLE-LR)。
2020 年,发布了蓝牙 5.2,引入了一种名为LE 2M PHY的新 PHY。这种新 PHY 支持 2 Mbps 的数据速率。与原始 BLE 标准相比,数据速率翻倍,同时保持低功耗,这对需要效率和速度的应用有益。
虽然蓝牙 5.2 对 BLE 进行了增强,包括对 LE Coded PHY 的改进,这可能有助于增加范围,但超过 400 米的说法可能是理论上的。在实际使用中,由于环境干扰、物理障碍和特定蓝牙硬件的能力等因素,这样的范围往往难以实现。
2022 年发布的蓝牙 5.3 引入了旨在提高蓝牙设备性能、效率和可靠性的多项增强功能。虽然它没有像之前版本那样引入重大变化,但它专注于改进现有功能。
标准组织
蓝牙技术受全球标准的监管,这些标准由蓝牙 SIG 创建和维护。蓝牙 SIG 是一个监督蓝牙标准发展并授权制造商使用蓝牙技术和商标的组织。蓝牙 SIG 还提供产品认证计划,以确保产品符合质量兼容性的要求标准。除了遵守蓝牙 SIG 标准外,蓝牙设备还必须遵守有关无线通信的区域和国际法规,例如美国联邦通信委员会(FCC)或欧洲电信标准协会(ETSI)设定的法规。
2000 年,为了创建一个被更广泛的工程界认可的正式标准,IEEE 采用了并标准化了蓝牙协议,作为 IEEE 802.15.1。IEEE 802.15.1 为蓝牙提供了协议和层定义,涵盖了从物理层(PHY)到链路层的各个方面。其目的是确保互操作性并定义蓝牙无线技术的技术规范,特别是针对短距离无线通信。
生态系统参与者
蓝牙 SIG 由超过 35,000 家来自电信、计算、网络和消费电子领域的会员公司组成。这些标准的广泛应用导致了大量蓝牙设备生态系统的形成。除了庞大的芯片制造商外,蓝牙生态系统还包括来自各个领域的参与者、贡献者和开发者:
-
消费电子产品
-
医疗设备
-
智能家居
-
智能建筑
-
定位服务
-
物流应用
-
车载娱乐系统
以下表格概述了各种规格:
| 规格 | BLE | 蓝牙经典 |
|---|---|---|
| 频段 | 2.4GHz ISM 频段,范围从 2.402 – 2.480 GHz | 2.4GHz ISM 频段,范围从 2.402 – 2.480 GHz |
| 频谱带宽 | 80 MHz | 80 MHz |
| 信道带宽 | 2 MHz | 1 MHz |
| 信道分配 | 40 个信道,每个信道带宽 2 MHz,3 个广告信道/37 个数据信道 | 79 个信道,每个信道带宽 1 MHz |
| 频谱扩展 | 跳频扩频(FHSS) | FHSS |
| 调制方案 | GFSK | GFSK、π/4 DQPSK、8DPSK |
| 数据速率 | LE 2M PHY:2 Mb/sLE 1M PHY:1 Mb/sLE 编码 PHY(S=2):500 Kb/sLE 编码 PHY(S=8):125 Kb/s | EDR PHY(8DPSK):3 Mb/sEDR PHY(π/4 DQPSK):2 Mb/sBR PHY(GFSK):1 Mb/s |
| 发射功率 | ≤ 100 mW (+20 dBm) | ≤ 100 mW (+20 dBm) |
| 功耗 | 约 0.001 W-0.5 W | 约 1W |
| Rx 灵敏度 | LE 2M PHY:≤-70 dBm(BLE 5.2)LE 1M PHY:≤-70 dBm(BLE 5.0)LE 编码 PHY(S=2):≤-75 dBm(BLE 5.0)LE 编码 PHY(S=8):≤-82 dBm(BLE 5.0) | ≤-70 dBm |
| 传播距离 | 10-30 米(BLE)和 200 米(BLE-LR) | 10-30 米 |
| 网络拓扑 | 点对点广播网状 | 点对点 |
| 设备配对 | 可选 | 必需 |
| 通信方向 | 单向方向(单向) | 双向方向(双向) |
表 4.2 – BLE 和经典规格
如需更多信息,请参阅www.bluetooth.com/learn-about-bluetooth/tech-overview/。
蓝牙低功耗(BLE)和蓝牙经典是家庭物联网设备中使用的两种主要无线技术。它们结合了效率和多功能性,适用于各种智能家居应用。Wi-Fi 也是住宅环境中的关键技术,以其高数据速率能力和成本效益优势而闻名。在接下来的章节中,我们将详细讨论 Wi-Fi 技术,包括其优势、应用以及对现代智能家居生态系统的影响。
Wi-Fi
Wi-Fi,代表无线保真度,是一种流行且成功的无线宽带技术。它被广泛应用于家庭、学校和商业场所。Wi-Fi 改变了我们连接互联网的方式,并已成为我们日常生活的重要组成部分。它与各种设备兼容良好,提供快速的网络接入,使其成为个人和组织的首选。无论你是浏览网页、流式传输视频还是进行商业活动,Wi-Fi 都是必不可少的。它可靠、安全且易于使用,是当今数字世界的重要组成部分。随着技术的进步,Wi-Fi 将继续改进并保持领先的无线连接解决方案。
Wi-Fi 在物联网领域的应用中,服务于两种不同的场景。第一种场景旨在满足高带宽应用,如视频流和安防监控,在这些应用中,高数据速率至关重要。第二种场景针对的是长距离和低功耗应用,称为 Wi-Fi HaLow。这种 Wi-Fi 变体专门优化,以提供对需要广泛覆盖同时消耗最小能量的设备的连接。
历史与现状
1999 年,802.11b Wi-Fi 的推出标志着重要的一步,提供高达 11 Mbps 的数据速率。在 2000 年代初,Wi-Fi 802.11a 和 802.11g 将数据速率提高到 54 Mbps。2009 年推出的 802.11n Wi-Fi(Wi-Fi 4)显著提高了速度(高达 600 Mbps)和范围,引入了多输入多输出(MIMO)技术。2014 年发布的 802.11ac Wi-Fi(Wi-Fi 5)进一步提高了速度(高达数 Gbps)和效率,利用 5 GHz 频段和主要及高级调制技术。2019 年正式推出的 Wi-Fi 6(802.11ax)提供了更高的速度(高达 9.6 Gbps)、效率性能,尤其是在拥挤的区域。Wi-Fi 6E 将 Wi-Fi 6 的能力扩展到 6 GHz 频段,提供了更多的频谱、更高的数据速率和更少的干扰。预计 Wi-Fi 7(802.11be)将是下一个重大飞跃,可能将 Wi-Fi 6 的速度提高三倍。
已观察到,截至撰写本文时,Wi-Fi 6 是市场上最受欢迎的产品。此外,2020 年,美国联邦通信委员会(FCC)和欧洲电信标准协会(ETSI)已批准 6 GHz 频谱用于 Wi-Fi 6E。展望未来,特别是在 2025 年左右,预计 Wi-Fi 7 将在市场上出现并蓬勃发展。
Wi-Fi 6
Wi-Fi 6,也称为 802.11ax,在其前辈 Wi-Fi 5(802.11ac)的基础上引入了多项关键改进。这些改进由于它们在设备密集环境中的效率、容量和性能方面的关注,对物联网应用尤其相关。以下是主要的改进:
-
增加速度和效率:Wi-Fi 6 提供比 Wi-Fi 5 更高的数据速率,理论上可达 9.6 Gbps,而 Wi-Fi 5 的数据速率为 3.5 Gbps。这是通过更有效的数据编码实现的,从而提高了吞吐量。
-
正交频分多址接入 (OFDMA):Wi-Fi 6 使用 OFDMA,通过在频率内建立独立调制的子载波来提高无线网络性能。这种方法允许同时向多个客户端发送和接收数据,特别适用于高密度客户端使用场景。
-
多用户、多输入、多输出 (MU-MIMO):Wi-Fi 5 仅支持下行链路(从接入点(AP)到客户端)的 MU-MIMO,而 Wi-Fi 6 支持下行链路(从 AP 到客户端)和上行链路(从客户端到 AP)的 MU-MIMO。此外,Wi-Fi 6 在 MU-MIMO 中支持多达八个流,与 Wi-Fi 5 支持的四个流相比,允许更多设备同时与路由器通信。
-
目标唤醒时间 (TWT):TWT 是一种帮助设备安排何时唤醒并与路由器通信的功能。这减少了功耗,对物联网设备有益,并延长了它们的电池寿命。
-
基本服务集(BSS)着色:Wi-Fi 6 引入了 BSS 着色,有助于减轻信号干扰。它通过给数据包标记“颜色”来区分不同的网络,从而减少来自相邻网络的干扰。
-
1024-正交幅度调制 (QAM):Wi-Fi 6 使用 1024-QAM,与 Wi-Fi 5 中的 256-QAM 相比,允许在每个信号中打包更多的数据。这增加了吞吐量和效率。
-
改进的范围和可靠性:Wi-Fi 6 通过诸如波束成形等技术来提高信号范围和可靠性,这些技术将 Wi-Fi 信号集中在特定的设备上,从而提高信号质量和范围。
-
改进的安全性:Wi-Fi 5 仅支持 WPA2,而 Wi-Fi 6 支持最新的 WPA3,它提供更强的加密和增强了对某些类型网络攻击的保护。
这些改进使 Wi-Fi 6 更适合于有许多连接设备的场景,如智能家居、智能城市和工业物联网设置,在这些场景中,效率、容量和性能至关重要。
Wi-Fi 6E
Wi-Fi 6E 在 Wi-Fi 6 和 Wi-Fi 5 之上进行了增强,主要是通过扩展到 6 GHz 频段。以下是 Wi-Fi 6E 相较于 Wi-Fi 6 和 Wi-Fi 5 带来的关键改进:
-
6 GHz 频段访问权限:最显著的改进是增加了 6 GHz 频段。与 Wi-Fi 5 和 Wi-Fi 6 使用的传统 2.4 GHz 和 5 GHz 频段相比,该频段更加宽松,导致干扰更少,性能更好。
-
增加带宽:6 GHz 频段提供了额外的非重叠信道。这种增加的带宽允许更大的信道(高达 160 MHz),这对于高带宽应用(如高清视频流和虚拟现实)非常理想。
-
减少拥堵:由于 6 GHz 频段仅限于 Wi-Fi 6E 设备,与拥挤的 2.4 GHz 和 5 GHz 频段相比,拥堵显著减少。这导致连接更加可靠,性能更加一致。
-
提高速度和效率:虽然 Wi-Fi 6 已经比 Wi-Fi 5 提供了更高的速度,但工作在 6 GHz 频段的 Wi-Fi 6E 设备由于额外的频谱和更宽的信道,可以实现更高的速度和更高的效率。
-
更低的延迟:6 GHz 频段中的较低拥堵也有助于降低延迟,这对于需要实时响应的应用程序至关重要,例如游戏、增强现实和某些物联网应用。
-
增强容量:Wi-Fi 6E 可以同时处理更多的设备,这对于人口密集地区或拥有许多物联网设备的环境来说是有利的。
重要的是要注意,为了充分利用 Wi-Fi 6E 的优势,路由器和客户端设备都需要支持 6 GHz 频段。Wi-Fi 6E 与 Wi-Fi 6 和 Wi-Fi 5 设备向后兼容,但这些较旧的设备将无法在 6 GHz 频段中运行。Wi-Fi 6E 的进步在需要网络性能和容量的场景中特别有益,例如智能家居、智能城市、工业物联网和密集的城市环境。
美国 FCC 和欧洲 ETSI 为 Wi-Fi 6E 频谱分配的 6 GHz 频段在范围和频谱带宽的可用性方面存在一些差异,尤其是用于未经授权 Wi-Fi 使用的频段范围和程度。以下是跨越 2.4 GHz、5 GHz 和 6 GHz 的完整频谱比较:
-
FCC(美国):
-
2.4 GHz 频段:这个频段在两个地区都相似,通常覆盖 2.400 GHz 到 2.4835 GHz。
-
5 GHz 频段:与 ETSI 相比,FCC 在这个频段分配了更多的频谱。它通常包括 5.150 GHz 到 5.250 GHz(UNII-1)、5.250 GHz 到 5.350 GHz(UNII-2)、5.470 GHz 到 5.725 GHz(UNII-2 扩展)和 5.725 GHz 到 5.850 GHz(UNII-3)。
-
6 GHz 频段(Wi-Fi 6E):联邦通信委员会(FCC)在 6 GHz 频段进行了重大分配,从 5.925 GHz 到 7.125 GHz,为未经授权的 Wi-Fi 使用增加了 1,200 MHz 的频谱。
-
-
ETSI(欧洲):
-
2.4 GHz 频段:这个频段类似于 FCC 的分配。
-
5 GHz 频段:在 5 GHz 频段,ETSI 的分配相对较为严格。它包括 5.150 到 5.350 GHz 和 5.470 到 5.725 GHz。5 GHz 频段高端部分(5.725 到 5.850 GHz)在不同欧洲国家的可用性各不相同。
-
6 GHz 频段(Wi-Fi 6E):ETSI 对 6 GHz 频段的分配与 FCC 不同。欧盟曾提议在 6 GHz 频段低端(5.945 到 6.425 GHz)分配 500 MHz 用于 Wi-Fi 6E,这比 FCC 分配的 1,200 MHz 要少。
-
Wi-Fi 7
Wi-Fi 7(802.11be)仍在开发中,其最终规范预计将在 2024 年由 IEEE 批准。基于提议的功能和进步,Wi-Fi 7 预计将比 Wi-Fi 6、6E 和 5 带来重大改进。以下是预期的一些关键改进:
-
更高的数据速率:预计 Wi-Fi 7 将提供比 Wi-Fi 6/6E 显著更高的数据速率,可能高达 30-40 Gbps,而 Wi-Fi 6 的最大速率为 9.6 Gbps。这是通过更有效的频谱使用和更高阶的调制(4096-QAM)实现的。
-
更宽的信道带宽:Wi-Fi 7 可能支持高达 320 MHz 的更宽信道带宽,而 Wi-Fi 6/6E 的最大带宽为 160 MHz。这种带宽的增加允许一次传输更多的数据,从而进一步提高吞吐量。
-
改进的延迟:预计 Wi-Fi 7 的延迟将比 Wi-Fi 6/6E 更低,使其更适合需要实时通信的应用,如游戏、AR 和 VR。
-
多链路操作(MLO):Wi-Fi 7 的一个重要特性预计将是 MLO,它允许设备在多个频段(2.4 GHz、5 GHz 和 6 GHz)上同时传输和接收数据。这可以提高可靠性、降低延迟并改善负载均衡。
-
增强型 MU-MIMO:虽然 Wi-Fi 6/6E 支持 MU-MIMO,但预计 Wi-Fi 7 将增强这一功能,可能支持更多的并发流。这种改进在设备众多的环境中尤其有益,例如智能城市中的物联网应用或工业环境。
-
更好的能效:能效是物联网设备的一个关键方面,预计 Wi-Fi 7 将在这一领域带来改进。这对电池供电的物联网设备将是有益的。
需要注意的是,尽管这些改进意义重大,但 Wi-Fi 7 的采用将取决于兼容硬件的可用性以及用户和应用的具体需求。对于物联网而言,这些增强可能意味着更稳健、高效和高速的无线连接,从而支持更复杂和有需求的应用。
标准组织
负责 Wi-Fi 技术的标准组织是 IEEE。具体来说,IEEE 802.11 工作组是 IEEE LAN/MAN 标准委员会(IEEE 802)的一部分,负责制定和维护 Wi-Fi 标准。
IEEE 802.11 工作组多年来开发了各种 Wi-Fi 标准,每个标准都有一个独特的后缀,例如 802.11a、802.11b、802.11g、802.11n(Wi-Fi 4)、802.11ac(Wi-Fi 5)和 802.11ax(Wi-Fi 6)。这些标准定义了实现 无线局域网(WLAN)的协议,并且不断更新以提高速度、范围和效率等因素。
生态系统参与者
Wi-Fi 联盟是一个非营利组织,它汇集行业领导者以推广和推进 Wi-Fi 技术。它作为协作、创新和制定确保 Wi-Fi 设备良好协作的标准的核心枢纽。Wi-Fi 联盟认证 Wi-Fi 产品以满足行业标准,以便人们可以信任他们的 Wi-Fi 设备质量优良且兼容。
Wi-Fi 联盟的一个重要角色是提升 Wi-Fi 技术。当开发新的 Wi-Fi 版本时,Wi-Fi 联盟与行业合作伙伴合作,制定技术标准和要求。这种合作确保新的 Wi-Fi 标准满足用户和企业的需求,同时考虑性能、安全性和能效等因素。
Wi-Fi 联盟在应对物联网的挑战和机遇中也发挥着关键作用。随着更多设备连接到互联网,Wi-Fi 联盟致力于确保 Wi-Fi 能够满足不断增长的连接需求,同时提高能效并扩大覆盖范围。这包括创建 Wi-Fi HaLow,这是一种专为低功耗、长距离物联网应用设计的 Wi-Fi 版本。
此外,Wi-Fi 联盟致力于确保 Wi-Fi 技术在许多不同的行业和领域中得以应用。他们与公司、服务提供商和其他团体合作,向人们传授 Wi-Fi 的优点和能力。他们希望通过展示 Wi-Fi 的优越性,让更多人使用它,并使其成为无线连接的最佳方式。
下表总结了该领域的各种规格:
| 规格 | Wi-Fi 5 | Wi-Fi 6/6E | Wi-Fi 7 |
|---|---|---|---|
| 频率范围 | 5 GHz | 2.4 GHz, 5 GHz, 6 GHz (Wi-Fi 6E) | 2.4 GHz, 5 GHz, 6 GHz |
| 频谱带宽 | FCC:5.150 至 5.250 GHz(UNII-1),5.250 至 5.350 GHz(UNII-2),5.470 至 5.725 GHz(UNII-2 扩展),以及 5.725 至 5.850 GHz(UNII-3)。ETSI:5.150 至 5.350 GHz 和 5.470 至 5.725 GHz | FCC:2.400 至 2.4835 GHz;5.150 至 5.250 GHz(UNII-1),5.250 至 5.350 GHz(UNII-2),5.470 至 5.725 GHz(UNII-2 扩展),以及 5.725 至 5.850 GHz(UNII-3);5.925 至 7.125 GHz(Wi-Fi 6E)ETSI:5.150 至 5.350 GHz 和 5.470 至 5.725 GHz;5.945 至 6.425 GHz(Wi-Fi 6E) | 与 Wi-Fi 6/6E 相同 |
| 频道带宽 | 20 MHz、40 MHz 和 80 MHz(160 MHz 频道为可选) | 20 MHz、40 MHz、80 MHz 和 160 MHz | 20 MHz、40 MHz、80 MHz、160 MHz 和 320 MHz |
| 频道分配 | 5 GHz:20 MHz 带宽的 24 个频道(根据地区可能有所不同) | 2.4 GHz:20 MHz 带宽的 11 个频道(在大多数国家)5 GHz:20 MHz 带宽的 24 个频道(根据地区可能有所不同)6 GHz:20 MHz 带宽的 59 个频道(根据地区可能有所不同) | 与 Wi-Fi 6/6E 相同 |
| 频谱扩散 | DSSS | DSSS | DSSS |
| 子载波间隔 | 312.5 KHz | 78.125 KHz | 78.125 KHz |
| 调制方案 | OFDM + 256-QAM | OFDMA + 1024-QAM | OFDMA + 4096-QAM |
| MIMO | MU-MIMO,仅下行链路 | MU-MIMO,下行链路和上行链路 | MU-MIMO,下行链路和上行链路 |
| 空间流 | 4 | 8 | 16 |
| 数据速率 | 最高达 3.5 Gbps | 最高达 9.6 Gbps | 最高达 30 到 40 Gbps |
| 发射功率 | FCC:通常约为 1 瓦特(30 dBm)ETSI:通常约为 200 毫瓦(23 dBm) | FCC:2.4 GHz 和 5 GHz 通常约为 1 瓦特(30 dBm),6 GHz 低功耗模式高达 500 毫瓦(27 dBm)。ETSI:2.4 GHz 通常约为 100 毫瓦(20 dBm),5 GHz 和 6 GHz 通常约为 200 毫瓦(23 dBm)。 | 与 Wi-Fi 6/6E 相同 |
表 4.3 – Wi-Fi 规范
如需更多信息,请参阅www.wi-fi.org/。
蓝牙和 Wi-Fi 已成为家庭环境中两种高度专注的无线技术。由于它们的低成本实现、免费频谱许可、强大的生态系统以及不断进化以满足用户需求和科技进步,它们受到了广泛的欢迎。这些特性使它们成为智能家居应用的理想选择,从家庭自动化到安全系统,再到连接的家用电器和娱乐系统。
然而,当我们走出家庭环境时,情况就发生了变化。在物联网领域,主导地位的是授权频谱的蜂窝技术,如 4G/LTE 以及更近期的 5G。这些技术提供广泛的覆盖范围和高数据速率,使它们适合各种需要广域连接的物联网应用。这可以包括连接的汽车和智能城市应用,到大规模工业自动化和远程监控系统。在下一节中,我们将探讨 4G/LTE 和 5G 在物联网应用中的工作方式。
4G/LTE 和 5G
4G/LTE 和 5G 是使用当地电信服务提供商拥有的授权频谱的蜂窝网络类型。它们为用户在移动设备上提供语音和视频通话、消息和互联网浏览等服务。此外,这些网络在各种物联网应用中也被广泛使用,例如高分辨率摄像头监控、高速列车和车队连接、大规模资产跟踪以及水、天然气和电力计量等公用事业。
历史和现状
3G 网络在 21 世纪初期的引入开启了蜂窝网络支持物联网应用的时代,其中包括通用移动通信系统(UMTS)和码分多址(CDMA)。3G 网络在空中提供的数据速率有限,最高可达 384 kbps。在基本 3G 之上的增强版本高速分组接入(HSPA)可以提供下行速度通常高达 14.4 Mbps,上行速度高达 5.76 Mbps。3G 的先进版本,如 HSPA+(演进 HSPA),可以将这些速度进一步提高,理论下行速度高达 42 Mbps,上行速度高达 22 Mbps。
4G/LTE 网络在 2010 年的启动是改善物联网应用的一大步。除了在空中提供高达 300 Mbps 的数据速率外,NB-IoT 和 LTE CAT-M 的诞生,这些技术源自 4G/LTE,也彻底改变了物联网应用。它通过允许使用超低功耗和广泛覆盖范围的互联设备,为行业和个人带来了好处。
自 2020 年以来,5G 网络已大规模进入市场,旨在覆盖三个目标用例:增强型移动宽带(eMBB)提供高达 10 Gbps 的更高吞吐量,超可靠低延迟通信(URLLC)用于具有高达 1 ms 往返延迟的至关重要的工业应用,以及大规模机器类型通信(mMTC)用于高达每平方公里 1 百万设备的更高密度。到 2024 年,当前 5G 网络仅支持 eMBB。
6G 网络目前正在研究和构思中。预计将在 2030 年代开发和部署。6G 网络的目标,目前仍在定义中,预计将超越 5G。它们旨在提供极快的数据传输(可能达到每秒太比特(Tbps)的量级),极低的延迟(以微秒计)以及适用于各种应用的广泛连接性。
为了支持在城市和农村等广阔空间中的电池供电物联网应用,NB-IoT 和 LTE CAT-M 是最受欢迎的 4G/LTE 技术,它们因其低功耗、低至中等的数据速率和长的传播覆盖范围而被广泛采用。根据 ABI Research 的研究,到 2026 年,NB-IoT 和 LTE CAT-M 将占据 36 亿 LPWAN 连接中的超过 60%。
NB-IoT
NB-IoT(包括 LTE Cat NB1 和 LTE Cat NB2)是为需要低数据量、低带宽、长电池寿命且能长时间无人操作的物联网设备而设计的。
NB-IoT 在 LTE 频谱中运行于 200 kHz 的窄带宽度内。它可以在现有的 LTE 运营商或之前由 GSM 使用的未使用的 200 kHz 频带上部署。它使用 OFDM 调制进行下行链路通信,并使用 SC-FDMA 进行上行链路通信。
NB-IoT 为了实现卓越的节能效果,设计时考虑了有限的移动能力,适用于固定或低移动性应用,如公用事业表计。它已经开发了各种用例,包括智能计量(水、天然气和电力)、智能停车、资产管理、环境监测、智能农业等。它提供了广泛的覆盖范围、效率和成本效益,使其成为不需要高吞吐量或超低延迟的物联网应用的绝佳选择。
LTE CAT-M
LTE CAT-M(也称为 LTE-M 或简称 Cat-M,包括 LTE Cat M1 和 LTE Cat M2)与 NB-IoT 相似,但使用的带宽比 NB-IoT 更宽,为 1.4 MHz。它与常规 LTE 使用相同的 LTE 基础设施和频段。LTE CAT-M 具有更快的数据速率,并支持更低的空中延迟,这对于需要频繁通信且具有适度延迟要求的物联网应用来说更好。LTE CAT-M 设计时考虑了移动能力,适用于移动设备的应用,如车辆跟踪和可穿戴设备,因为它支持更高的移动性。
标准组织
第三代合作伙伴计划(3GPP)是一个全球标准组织,在推动 4G/LTE、5G、6G 以及超越蜂窝技术的进步和发展中发挥着关键作用。作为一个拥有来自世界各地成员的国际组织,3GPP 包括电信公司、技术提供商和监管机构。他们共同努力开发和维护全球移动通信技术标准。这种合作确保了全球范围内不同网络和设备可以访问和兼容最新的移动技术进步,促进了全球用户的无缝通信和连接。
3GPP 采用路线图发布的方法来定义蜂窝技术(如用于 eMBB 的 5G 新无线和 4G/LTE Advanced Pro,该技术包含在 Release 15 中)、用于 uRLLC 和高级工业物联网(IIoT)的 5G,该技术得到了 Release 16 的支持、卫星集成和 5G mMTC,该技术被纳入 Release 17 的范围,以及 Release 18,它将专注于 6G 的引入。
生态系统参与者
4G/LTE 和 5G 的生态系统是全世界最大的行业群体!它包括一个复杂而广泛的利益相关者、技术、标准和应用的复杂网络,共同定义和实现了现代蜂窝通信。该生态系统包括以下内容:
-
标准化机构和工作组:3GPP 本身是多个电信标准组织之间的合作,包括 GSMA、ETSI、ARIB、TTA、TTC、ATIS 和 CCSA。
-
移动网络运营商:这些是全球的运营商或服务提供商,它们部署 4G 和 5G 网络并向最终用户提供通信服务。
-
设备和基础设施制造商:这些公司设计和制造 4G 和 5G 网络所需的硬件,包括基站、天线、路由器和其它基础设施组件。这还包括智能手机、平板电脑和物联网设备(如苹果和谷歌)的制造商。
-
芯片组和组件制造商:这些公司生产对 4G 和 5G 技术至关重要的半导体和组件,如调制解调器、处理器和射频组件,包括高通、英特尔、三星等。
-
监管和政策制定者:政府机构和监管机构定义了 4G 和 5G 网络运营的法律和政策框架,包括频谱分配、隐私法规和国际协议。
-
研究机构和学术界:大学和研究机构通过研究和开发为 3GPP 生态系统做出贡献,经常推动蜂窝技术可能性的边界。
下表概述了各种规格:
| 规格 | NB-IoT (发布 14,LTE Cat NB2) | LTE CAT-M (发布 13,LTE Cat M1) |
|---|---|---|
| 频率范围 | 800 MHz, 900 MHz, 1.4 GHz, 1.8 GHz, 2.1 GHz | 450 MHz, 700 MHz, 800 MHz, 900 MHz, 1.8 GHz, 2.1 GHz |
| 频谱带宽 | 200 kHz | 1.4 MHz |
| 信道间隔 | 180 kHz | 1.08 MHz |
| 调制方案 | OFDM/SC-OFDM + QPSK/16QAM/64QAM | OFDM + QPSK/16QAM/64QAM |
| 双工模式 | 半双工 | 半双工和全双工 |
| 数据速率 – 下行链路 | 127 kbps | 1 Mbps (半双工), 384 Kbps (全双工) |
| 数据速率 – 上行链路 | 159 kbps | 1 Mbps (半双工), 384 Kbps (全双工) |
| 延迟 | 1.6 - 10s | 50 - 100 ms |
| 发射功率 | 23 dBm | 20 dBm |
| 范围估计 | 15 km/s | 10 km/s |
| 移动性 | 有限 | 是 |
| 漫游 | 有限 | 是 |
| 电池寿命估计 | 使用 AA (5000 mAh) 电池可达 10 年 | 使用 AA (5000 mAh) 电池可达 10 年 |
表 4.4 – NB-IoT 和 LTE CAT-M 规格
摘要
在本章中,我们更深入地了解了无线连接,这是物联网设备传输数据的无形但强大的力量。我们讨论了无线数据通信的基本信息,研究了节能的蓝牙技术,并讨论了连接我们设备的常见 Wi-Fi 网络。此外,我们还探讨了蜂窝网络的能力和未来可能性,如 4G/LTE 和新的 5G,这些网络旨在通过 LTE-M 和 NB-IOT 设计物联网的使用。
在下一章中,我们将深入探讨云,我们将关注点从数据传输转移到数据存储、处理和分析的平台。云是一个数字环境,无线物联网设备的大量数据可以用来获得新的见解并做出决策。下一章将解释云计算平台如何与物联网协同工作,提供灵活可扩展的资源,以支持复杂物联网应用的开发。我们将讨论云作为物联网的中心系统的作用,提供必要的处理能力和存储空间,将原始数据转化为有用的信息。
第五章:云,物联网的“超级大脑”
在物联网错综复杂的领域中,云扮演的角色类似于人脑,收集、处理和分析由无数物联网设备产生的海量数据流,就像大脑解释神经元细胞发出的信号一样。
在本章中,我们将探讨云在物联网解决方案中的重要作用,并揭示云如何有效地解决物联网应用快速增长的挑战。
此外,我们还将讨论物联网如何与云交互,包括云对设备的管理和数据摄取。通过理解这些集成方面,你可以看到物联网和云如何协同工作,在真实的生产场景中提供便捷的连接和数据使用。
我们还将讨论一些流行的通信协议,这些协议有助于物联网设备和云之间的数据交换和交互。理解这些协议对于物联网生态系统中高效和安全的通信至关重要。
最后,我们将介绍亚马逊网络服务(AWS),它提供广泛使用的强大服务,用于构建强大且可扩展的物联网架构。
到本章结束时,你将全面了解云在物联网解决方案中的作用以及有助于物联网项目成功实施的组件。
本章将涵盖以下主题:
-
为什么云对于物联网是必不可少的?
-
将物联网与云集成
-
物联网设备和云之间的通信协议
-
AWS 物联网
重要提示
在第十三章、第十四章、第十五章和第十六章的项目实践中,你将编程 ESP32 连接到 AWS,利用多个 AWS 服务处理传感器异常事件,以及收集、存储和查询传感器数据,然后将实时数据转换为可视化仪表板。你在这里学到的关于云的知识将帮助你完成这些实践。
为什么云对于物联网是必不可少的?
在第三章和第四章中,我们讨论了物联网元素的两个重要方面:设备和无线连接。然而,我们还需要考虑物联网系统中另一个关键元素——云。
毫无疑问,云通过提供灵活性、可扩展性、可靠性和成本效益来管理大规模物联网数据,从而促进高效的物联网解决方案,创造了巨大的商业机会。它作为所有物联网设备数据的运营中心。事实证明,云已经有效地解决了阻碍物联网行业发展的一系列挑战,包括高额的初始投资、对动态市场增长的缓慢反应、对新服务需求的不灵活性以及有限的全球客户参与度,所有这些内容将在以下章节中讨论。
云出现之前物联网的痛点
随着物联网应用提供商业务的增长,他们面临的一个残酷挑战是物联网设备和数据的不可预测增长规模。
通常,物联网应用提供商通过在实验室中创建原型来开始他们的创新。然后,他们在客户现场进行小规模测试。如果效果良好,他们可以扩大规模并在一个国家或全球范围内实施物联网解决方案。物联网设备的数量可以在一周内从几十个迅速增加到几百个,甚至在几个月内增加到几千或几万个,这取决于客户增长情况。因此,从这些物联网设备收集的数据可以迅速从兆字节增长到千兆字节和太字节。这种快速增长,虽然标志着商业成功,但对于物联网应用提供商来说,提出了一个重要问题:他们如何构建一个能够以弹性、灵活和成本效益的方式处理这种不可预测流量增加的数据平台?
在云服务广泛采用之前,物联网应用提供商通常购买服务器并在客户的数据中心或公共数据中心物理安装它们。重要的任务是确保服务器有足够的容量,包括 CPU、内存、硬盘驱动器和联网带宽,不仅能够处理当前的流量需求,还能够应对未来的流量需求。
例如,在部署物联网应用的初期阶段,客户可能只需要连接几十个传感器。这需要一台能够处理每秒大约 10 个数据包传输速率的服务器,一个 100MB 的硬盘驱动器,以及 100Mbps 的联网带宽。然而,在接下来的几周内,如果客户迅速扩大其部署,传感器的数量可能会增加到数万个。这种增长规模要求服务器支持每秒高达 1,000 个数据包的传输速率,一个 100GB 的硬盘驱动器,以及 1Gbps 的联网带宽。不幸的是,现有服务器的硬件容量和联网带宽无法处理这种流量激增,导致服务质量下降,进而造成糟糕的客户体验。
在过去,为了应对这种不可预测的流量激增,物联网应用提供商通常从早期阶段就开始为服务器配备高于所需容量的硬件。然而,这种方法导致了小规模部署的显著额外成本,使其不是一个成本效益的解决方案。
如前所述,在市场推广的早期阶段,物联网应用提供商只需要支持少数客户。他们可能拥有足够的工程资源来协助这些客户在客户的办公室或公共数据中心设置数据平台。然而,随着他们的业务超越小规模客户群,客户数量可能会迅速增加,需要超出他们当前工程能力之外的资源。如果客户群跨越国家、地区和大陆,他们的工程资源在及时实施合同方面将面临相当大的挑战。
云技术的影响
随着云技术的兴起,传统的自建数据中心模式已经发生了彻底的改变。现在,物联网应用提供商不再需要安装物理服务器硬件,他们可以从像 AWS 这样的云服务提供商那里租赁虚拟服务器和服务。这不仅简化了流程,还带来了许多优势。
其中一个关键优势是可扩展性。借助云技术,物联网应用提供商可以轻松地根据需求调整其基础设施的规模。这意味着他们可以轻松应对需求激增,而无需任何麻烦。此外,这种可扩展性还确保资源得到优化分配,从而提高性能和效率。
例如,AWS 提供了一个名为自动扩展的突出功能。该功能帮助您监控和调整应用程序在各种 AWS 服务中的容量,例如弹性计算云(EC2)、弹性容器服务(ECS)、DynamoDB(一个完全管理的、无服务器的键值 NoSQL 数据库)和Aurora(一个完全管理的数据库引擎)。您可以通过简单的扩展计划和推荐来提高性能、优化成本或在这两者之间取得平衡。
以下是一些 AWS 自动扩展的好处:
-
您可以使用单一直观的界面快速轻松地设置扩展
-
您可以根据您的偏好和服务的建议做出智能的扩展决策
-
即使工作负载不可预测或正在变化,您也可以自动维护性能和可用性
-
您可以在可用区之间平衡容量,以实现高可用性和弹性
-
您可以在单个自动扩展组内启动多个实例类型和购买选项(Spot 实例和按需实例),以优化成本
此外,云使物联网应用提供商能够快速扩展业务并扩大客户覆盖范围,尤其是在全球扩张方面。例如,AWS 提供庞大的全球云基础设施,为广泛的灵活物联网部署提供基础。截至 2023 年 12 月,AWS 在全球 33 个地理区域内拥有 105 个可用区,超过 600 个接入点和 13 个区域边缘缓存。这个广泛的网络确保物联网应用提供商可以自信地在全球范围内部署他们的解决方案,无论其客户基础的地理分布如何,都能保证高可用性、低延迟和强大的容错能力。
最后,可扩展性和灵活性带来的成本效益是最大的优势。通过消除物理硬件安装和维护的需求,物联网应用提供商可以通过使用云来降低初始成本。这种智能地将他们的支出从前期费用转移到运营费用。他们只为使用的资源付费,这有助于他们优化支出并更有效地分配预算。这种成本效益让提供商能够将更多资源分配给核心应用开发和创新,促进物联网行业的发展和进步。
现在我们已经了解了云出现之前物联网增长的限制以及云带来的优势,让我们来探讨云在物联网游戏中的作用。
将物联网与云集成
物联网与云的集成有两个主要焦点:设备管理和数据摄取。这种集成使我们能够连接和控制多个设备,以及收集和处理大量数据。通过使用云服务,客户可以从这些数据中分析和获得有价值的见解,从而提高决策效率和效率。此外,这种集成创造了新的创新可能性,推动了前沿应用的开发,这些应用可以在各个行业中带来重大变化。
设备管理
在物联网与云结合的领域,由于涉及的设备数量和种类繁多,管理终端设备至关重要。这种高效的管理确保了操作顺畅、安全且可扩展。它包括授权与云账户关联的客户设备以及访问其他数据服务。终端设备管理涉及以下关键功能:
-
注册:
-
设备配置:这一步涉及通过提供设备的唯一标识符(如设备 ID 和类型)以及元数据(如位置、所有者和组织)来将设备连接到云。这有助于在物联网网络中建立设备的身份。
-
凭证管理:鉴于物联网中安全的重要性,此阶段侧重于创建和保护设备云认证所需的凭证。这包括访问密钥、密码、令牌和证书。仔细管理这些凭证对于防止未经授权的访问和潜在的安全漏洞至关重要。
-
-
配置:
-
操作设置:注册后,设备配置为默认设置,例如网络配置、数据报告频率和操作模式,使设备操作与预定义的规范相一致。
-
服务策略分配:设备被分配特定的角色和权限,以访问数据服务或应用程序。这些策略决定了每个设备可以执行的操作、资源和访问级别,确保它们遵循预期的操作范围。
-
-
监控:
-
健康监控:这包括对操作状态、电池寿命和连接性的检查。
-
日志和诊断:系统性的日志记录有助于问题诊断、行为理解和性能提升。日志分析提供了对系统性能的见解,有助于问题识别和解决。
-
-
生命周期管理:
- 固件更新(FOTA):通过空中固件更新(FOTA)进行定期更新对于增强功能、修复错误和加强安全性至关重要。
数据摄取
为了确保物联网设备的数据安全,需要将其安全地发送到云端。数据摄取不仅限于存储数据,它还涉及预处理、存储、分析和可视化数据。让我们更详细地看看这些步骤:
-
数据收集:从物联网设备发送的协议消息中检索原始数据负载,例如从物联网设备发布的 MQTT 消息的有效负载部分提取原始数据。
-
数据预处理:通过转换、规范化、过滤、附加或合并原始数据以简化存储进行预处理。例如,将温度传感器的原始数据转换为统一单位,或将当前时间戳附加到有效负载数据中。
-
数据存储:将处理后的数据加载到云数据库中,为后续分析和展示做准备。
-
数据分析:使用时间序列分析进行趋势发现或预测,或利用机器学习算法关联数据点,以发现特定事件或情况。您应根据预设阈值或异常检测构建警报系统,随后通过消息或电子邮件通知客户。
-
数据可视化:在仪表板上以清晰直观的格式呈现数据,或生成定期报告,总结关键指标和见解,展示系统的健康状况。
现在我们已经了解了云在整体物联网架构中可以执行的功能,让我们看看云如何远程与物联网设备通信。
物联网设备和云之间的通信协议
在第四章中,我们讨论了 OSI 模型的应用层,它适用于无线连接。应用层,也称为第 7 层,与软件应用程序交互,并作为数据通信组件。
事实上,物联网设备和云之间的通信协议对于确定物联网解决方案的工作效果非常重要。这些协议旨在满足物联网生态系统的特定需求,例如使用低功耗、尽可能发送少量数据,并确保即使在网络不稳定的情况下也能可靠地传输数据。这些协议是 OSI 模型的应用层的一部分。
目前在物联网和云之间使用了几种流行的协议,包括消息队列遥测传输(MQTT)、用户数据报协议(UDP)、约束应用协议(CoAP)和轻量级机器到机器(LwM2M)。让我们更深入地了解这些协议中的几个。
MQTT
-
类型:应用层协议。
-
发布/订阅模型:传感器连接到 MQTT 代理并发布其数据在主题内。MQTT 代理作为代理使信息对其他方可用,例如云服务、数据库、仪表板,甚至其他设备。这些方作为 MQTT 客户端,通过订阅发布的主题来获取信息。
-
特性:
-
轻量级和高效:提供可靠的消息传递,保留消息以供未来的订阅者使用,并支持遗嘱和遗言消息以通知断开连接。
-
服务质量(QoS)级别:提供三种消息传递保证级别(最多一次、至少一次和恰好一次)。
-
-
用例:广泛应用于物联网中,用于从设备向云发送数据以及反向操作。它轻量级,专为低带宽、高延迟或不稳定的网络设计。
LwM2M
-
类型:应用层协议。
-
建立在 CoAP(传输层)之上,利用了 CoAP 轻量级和易于实现的特点。
-
特性:
-
设备管理和服务启用:在数据传输和功耗方面效率高,支持固件更新、远程诊断和报告等功能。
-
安全:支持多种安全模式,包括数据报传输层安全(DTLS)。
-
-
用例:专门为物联网中的远程设备管理和遥测设计。用于管理物联网设备的生命周期、它们的配置以及它们如何收集遥测数据。
CoAP
-
类型:Web 传输协议。
-
GET、POST、PUT和DELETE类型。 -
特性:
-
专为物联网设计:支持内置服务和服务资源的发现,异步消息交换,并提供低开销和解析复杂性。
-
支持 RESTful 服务:允许在请求/响应模型中与物联网设备进行交互。
-
-
用例:专门为受限设备和网络(如物联网)设计。它用于机器到机器(M2M)应用,如智能能源和楼宇自动化。
每个协议都有其优势,并旨在解决物联网通信中的特定挑战和需求。协议的选择很大程度上取决于物联网应用的具体需求,包括网络可靠性、电力可用性、数据传输频率和有效载荷大小等因素。了解这些协议及其特性对于设计强大、高效和可扩展的物联网解决方案至关重要。
理解物联网设备和云之间的常见通信协议对于根据您的特定用例选择合适的选项至关重要。接下来,我们将重点关注市场领导者 AWS,并探讨其针对物联网应用的流行云服务。请注意,本书后续章节的实践项目中将使用其中的一些服务。
AWS for IoT
AWS 被广泛认为是市场上的领先云平台。它提供了一套全面的先进服务,为云计算提供灵活性和可扩展性。AWS 与物联网相关的服务范围广泛,包括各种功能。其中一些服务专门针对物联网应用,而其他则是常用服务,在处理物联网数据中也发挥着关键作用。
在本节中,我们将介绍一些在物联网应用中广泛使用的 AWS 云服务。这些服务协同使用,可以创建一个完整的物联网应用管理系统,包括设备管理、数据收集、存储、分析和从数据中获取洞察。根据您的项目需求,您可以使用这些服务中的几个来构建一个完整的物联网解决方案。
AWS IoT Core
AWS IoT Core 是一种云服务,它帮助设备安全、轻松地连接并与云应用程序和其他设备交互。它可以处理大量设备和消息,并安全地将它们路由到不同的端点。
以下是其关键特性和优势:
-
设备连接和管理:AWS IoT Core 确保设备无论位于何处都能可靠、安全地连接到云。它支持轻量级通信协议,如 MQTT 和 HTTP,这些协议非常适合资源有限的物联网设备。
-
安全的设备通信:它为所有设备连接提供身份验证和加密,确保只有在身份验证后,数据才在设备和 AWS IoT Core 之间交换。
-
消息代理: AWS IoT Core 的消息代理允许 IoT 设备与 AWS 服务之间进行通信。它可以处理大量消息并将它们路由到必要的端点。
-
规则引擎: 规则引擎允许您有效地处理和转换消息。您可以使用基于 SQL 的规则查询消息内容,并使用结果将消息路由到其他 AWS 服务。例如,您可以根据传入数据触发 Lambda 函数、发送推送通知或将数据存储在 DynamoDB 表中。
-
设备阴影: AWS IoT Core 提供设备阴影,即云中的设备虚拟版本。此功能允许您跟踪设备的当前状态和期望状态,以便您的应用程序即使在设备离线时也能与它们交互。
-
与其他 AWS 服务的集成: 它可以无缝集成到其他 AWS 服务中,使您能够构建收集、处理、分析和对连接设备生成数据进行操作的 IoT 应用程序,而无需管理基础设施。
截至 2023 年 12 月,AWS IoT Core 支持以下与 IoT 设备的通信协议:
-
MQTT.
-
通过 WebSocket 的 MQTT 安全 (WSS).
-
超文本传输协议 – 安全 (HTTPS).
-
长距离广域网络 (LoRaWAN). 了解更多,请访问
docs.aws.amazon.com/iot-wireless/latest/developerguide/iot-lorawan.html.
以下是在 IoT 中的用例:
-
智能家居自动化: 控制和监控灯光、恒温器和安全摄像头等家庭设备
-
工业物联网: 连接和管理输送带、机械臂和传感器等工业设备
-
智能农业: 从土壤湿度传感器、气象站和农业设备上的 GPS 跟踪器等农业传感器收集数据
-
医疗监测: 安全地处理和分析来自可穿戴健康监测器和医疗设备的医疗设备数据
要了解 AWS IoT Core 在 IoT 设备中的工作方式,请参阅 aws.amazon.com/blogs/compute/building-an-aws-iot-core-device-using-aws-serverless-and-an-esp32/.
AWS IoT 设备管理
AWS IoT 设备管理,作为 IoT Core 的一部分运行,是一种服务,使您能够以规模轻松注册、组织、监控和远程管理您的 IoT 设备。它提供必要的工具和功能,以保持设备健康,管理权限和设置,并远程解决设备问题。
以下是其关键功能和优势:
-
设备注册: 它简化了连接 IoT 设备的过程。您可以单独或批量注册设备,AWS IoT 设备管理确保在发送数据之前它们被正确连接和认证。
-
设备组织:它可以管理和分类设备组,并执行批量更改。这对于管理设置或一次性部署更新到多个设备特别有用。
-
远程设备管理:它可以安全地远程管理设备。它可以推送更新、重置、重启或更改您的设备,而无需物理访问。
-
监控和故障排除:它可以监控设备健康和活动,为不符合规定的设备设置警报,并使用诊断功能远程排除故障。
-
访问控制:它可以与AWS 身份和访问管理(IAM)集成,以实现细粒度的权限控制。确保设备仅执行授权操作。
-
审计和合规性:它可以审计设备群以确保符合安全策略,并维护您的物联网生态系统的安全和完整性。
现在,让我们看看它在物联网中的一些用例:
-
车队管理和维护:高效地管理和维护您的物联网设备车队,确保它们始终处于运行状态、保持最新并安全。
-
软件更新:远程更新设备上运行的软件,确保它们拥有最新的功能和安全补丁。
-
设备监控:监控设备健康和活动,并设置警报以通知潜在问题或所需的维护。
-
安全和合规性:确保您的设备符合您的安全策略和最佳实践,降低安全漏洞的风险。
要了解更多关于 AWS IoT Device Management 的功能块,请参阅aws.amazon.com/iot-device-management/。
AWS IoT Device Defender
AWS IoT Device Defender,作为物联网核心的一部分运行,是一项帮助保护您的物联网设备的服务。它检查您的物联网配置,以确保它们遵循安全最佳实践,并提供监控设备行为和检测异常的工具。
以下是其关键功能和优势:
-
持续审计:AWS IoT Device Defender 会检查您的物联网配置,以确保它们遵循安全最佳实践。它检查策略、设备证书以及设备与 AWS IoT Core 的通信,以识别潜在的安全漏洞。
-
实时监控和检测:它监控您的物联网设备,以检测可能表明安全威胁的异常行为。例如,如果设备开始更频繁地发送数据或发送到未识别的端点,物联网设备防御者会向您发出警报。
-
警报和缓解:当检测到问题时,AWS IoT Device Defender 会根据您的标准发送警报。它还可以与 AWS Lambda 集成,以触发自动操作,例如隔离设备。
-
安全指标:它提供预定义的安全指标来评估设备的行为。这些指标包括身份验证失败、连接断开和发送的消息。
-
与其他 AWS 服务集成:AWS IoT Device Defender 与其他 AWS 服务(如 AWS IoT Core、AWS IoT Analytics 和 AWS IoT Events)协同工作,以创建一个安全的物联网生态系统。
让我们看看它在物联网中的一些应用案例:
-
防止未授权访问:检测并响应针对您的物联网设备的未授权访问尝试。
-
确保设备真实性:持续检查并确保您的设备使用正确的证书和政策。
-
监控车队指标:从中央位置跟踪您车队的安全指标,使管理大量物联网设备变得更加容易。
-
自动安全响应:自动响应潜在的安全威胁,减少物联网安全管理所需的时间和资源。
请参阅 aws.amazon.com/iot-device-defender/ 了解 AWS IoT Device Defender 的功能模块。
AWS IoT Analytics
AWS IoT Analytics 是一种托管服务,它使得分析大量物联网数据变得简单,无需承担通常的成本和复杂性。它专门为物联网数据和数据分析而设计,提供高级功能来分析来自物联网设备的数据并做出明智的商业决策。
这里是其关键功能和优势:
-
数据收集:IoT Analytics 自动化从物联网设备收集数据的过程。您可以设置一个通道,安全且大规模地收集物联网数据。
-
数据处理和丰富:在数据收集后,该服务允许您处理、过滤和丰富数据。您可以将数据转换成适合分析的形式。
-
数据存储:该服务提供针对物联网场景优化的时序数据存储,适用于大量时序数据,如传感器读数。
-
数据分析:AWS IoT Analytics 允许您使用内置的 SQL 查询引擎运行查询。您还可以使用 Jupyter Notebooks 进行更复杂的分析,或连接到如 AWS QuickSight 这样的 BI 工具进行可视化。
-
与机器学习集成:该服务与 Amazon SageMaker 集成,允许您在物联网数据上构建、训练和部署机器学习模型。您还可以使用您自己的预训练模型。
-
安全和隐私:AWS IoT Analytics 通过 AWS IAM 策略控制数据访问,确保只有授权的服务和个人可以访问数据。
这里是它在物联网中的一些应用案例:
-
预测性维护:分析工业设备数据以预测机器可能发生故障的时间,以便及时安排维护以防止故障。
-
资产跟踪:分析位置数据以实时跟踪资产并了解资产利用率模式。
-
环境监测:收集和分析来自环境传感器的数据,以监测空气质量、水质、温度、湿度等,并根据环境条件做出明智的决策。
-
用户行为分析:了解用户如何与 IoT 设备互动,以帮助改进产品、定向营销和个性化用户体验
要了解更多关于 AWS IoT Analytics 函数块的信息,请参阅aws.amazon.com/iot-analytics/。
AWS Lambda
AWS Lambda 是一种无服务器服务,允许您在不担心服务器的情况下运行代码。它自动处理计算资源,如内存、CPU 和网络。这对于 IoT 应用程序来说非常棒,因为它可以轻松扩展、适应并节省成本。
让我们看看它的关键功能和优势:
-
事件驱动:Lambda 对来自各种 AWS 服务和其他应用程序的事件做出响应。在 IoT 中,Lambda 可以实时处理来自设备的数據。
-
可扩展性:Lambda 通过为每个触发运行代码来扩展您的应用程序。它可以处理任何大小的负载,从几个请求到每秒数千个。
-
成本效益:您只需为代码运行的时间和触发时付费。在不运行时没有费用。这对于具有间歇性或不可预测的设备交互的 IoT 应用程序来说是有益的。
-
与 AWS IoT 集成:Lambda 可以通过 AWS IoT 规则触发,允许使用实时数据处理系统。
-
灵活:Lambda 支持多种编程语言,可用于任何类型的应用程序或后端服务。
-
微服务:Lambda 与微服务架构配合良好,允许您在不使用基础设施的情况下管理后端服务。
下面是它在 IoT 中的用例:
-
数据处理:在将数据发送到其他服务之前转换或丰富 IoT 数据
-
设备配置和管理:自动管理连接到您的网络上的设备
-
警报和通知:基于 IoT 传感器数据发送警报或通知
请参阅aws.amazon.com/lambda/以了解 AWS Lambda 在 IoT 应用程序中使用时的流程。
AWS Kinesis
AWS Kinesis 是为数据流服务设计的。它提供的服务允许您实时加载和分析流数据,以及构建自定义流数据应用程序。它在 IoT 场景中特别有用,因为在 IoT 场景中,许多设备生成大量需要快速收集、分析和采取行动的数据流。
下面是 AWS Kinesis 不同组件及其关键功能和优势的分解:
-
AWS Kinesis Data Streams:此服务允许您构建针对特定需求处理或分析流数据的自定义应用程序。在 IoT 中,您可以使用 Kinesis Data Streams 连续捕获和存储来自各种来源的大量数据,例如传感器、网站点击流、金融交易、社交媒体流、IT 日志和位置跟踪事件。
-
AWS Kinesis 数据 Firehose:Kinesis 数据 Firehose 是可靠地将流数据加载到数据湖、数据存储和分析服务中的最简单方法。它可以捕获、转换和加载数据到 AWS 数据存储中,以便使用现有的商业智能(BI)工具和仪表板进行近乎实时的分析。物联网应用通常使用此服务将设备数据路由到 AWS S3、AWS Redshift 或 AWS Elasticsearch 服务进行进一步分析。
-
AWS Kinesis 数据分析服务:此服务允许您使用标准 SQL 分析流数据,无需学习新的编程语言或处理框架。在物联网应用中,Kinesis 数据分析可以帮助对从设备收集的数据进行实时分析,提供即时洞察并支持快速决策。
-
AWS Kinesis 视频流:此服务简化了从连接设备安全地将视频流式传输到 AWS 进行分析、机器学习和其他处理的过程。具有视频流的物联网设备,如安全摄像头或无人机,可以使用 Kinesis 视频流将视频流式传输到 AWS 进行分析和存储。
下面是其在物联网中的应用案例:
-
实时监控和分析:物联网设备会产生大量数据。Kinesis 可以实时处理和分析这些数据,以便立即获得洞察并采取行动。例如,它可以用于监控工业环境中的设备健康状况,并在检测到异常时发送实时警报。
-
时间序列分析:对于需要时间序列数据分析的物联网应用(如传感器数据分析),Kinesis 可以摄取这些大量数据以进行实时分析和后续决策。
-
来自物联网设备的视频数据分析:使用 Kinesis Video Streams,您可以将连接设备的视频流式传输到云中进行分析、机器学习、回放和其他处理。
-
数据路由:Kinesis 数据 Firehose 可以高效地将数据移动到各种 AWS 服务,如 S3、Redshift 或 Elasticsearch,您可以在那里进一步分析、存储或构建交互式仪表板。
您可以在aws.amazon.com/kinesis/了解更多关于 AWS Kinesis 在物联网应用中的数据流。
AWS DynamoDB
AWS DynamoDB是一个专为物联网应用设计的,高效且可扩展的 NoSQL 数据库服务。
让我们来看看它的关键功能和优势:
-
高性能:DynamoDB 每天可以处理超过 1000 万亿个请求,并支持每秒超过 2000 万个请求的峰值。这使得它非常适合处理来自众多物联网设备的大量请求。
-
灵活的数据存储:DynamoDB 支持键值和文档数据结构。这对于存储来自物联网设备的各种类型的数据非常理想,例如传感器读数、用户设置和设备状态。
-
快速响应时间:DynamoDB 提供了持续的低延迟,在个位数毫秒范围内,确保物联网应用中数据的实时访问,以便及时做出决策。
-
安全数据存储:DynamoDB 默认对静态数据进行加密,并使用 AWS IAM 提供细粒度的访问控制,确保对您的物联网数据的授权访问。
-
全面管理和无烦恼:DynamoDB 是一个全面管理的服务,负责硬件配置、设置、配置、复制、软件补丁和集群扩展。这使您能够专注于物联网应用开发,无需担心数据库管理。
-
全局数据复制:DynamoDB 支持多区域、完全复制表,使物联网应用中数据具有最小延迟的全球访问。
-
流和触发器:DynamoDB Streams 捕获按时间顺序排列的项目级修改,并触发 AWS Lambda 函数。此功能可用于在设备数据发生变化时发送警报或执行操作。
-
与 AWS IoT 无缝集成:DynamoDB 与其他 AWS 服务无缝集成,如 AWS IoT Core、AWS Lambda 和 AWS IoT Analytics,提供全面的物联网解决方案。
在其使用案例方面,在物联网项目中,DynamoDB 通常用于存储和检索设备遥测数据、设备状态、用户设置以及管理动态内容。其可扩展性、性能和集成能力使其成为物联网应用后端的一个优秀选择。
您可以访问 aws.amazon.com/blogs/compute/implementing-a-serverless-aws-iot-backend-with-aws-lambda-and-amazon-dynamodb/ 了解更多关于 AWS DynamoDB 在物联网应用中使用时的流程。
AWS QuickSight
AWS QuickSight 是一种基于云的 BI 服务,它从数据源提供易于理解的洞察、可视化和仪表板。它设计为可扩展、无服务器和可嵌入,并内置机器学习功能。
以下是其关键特性和优势:
-
交互式仪表板:它可以创建可以从任何设备访问的交互式仪表板。这些仪表板会自动更新新数据,非常适合实时监控物联网设备和系统。
-
易于集成:QuickSight 与各种数据源集成,包括流行的云服务,如 AWS S3、AWS RDS、AWS Redshift 和 AWS Athena,以及第三方数据库。您可以从这些服务中轻松导入存储在物联网设备中的数据,并使用 QuickSight 进行分析。
-
机器学习洞察:QuickSight 提供由机器学习驱动的洞察,帮助揭示隐藏的趋势和异常,预测未来结果,并促进明智的决策。对于物联网,这意味着预测设备维护需求、优化操作或了解使用模式。
-
无服务器和可扩展性:作为一个完全托管的服务,QuickSight 无需服务器配置或管理。它能够轻松扩展以支持数万名用户,使其非常适合处理可能由数百万个物联网设备生成的大量数据。
-
按会话计费:QuickSight 提供独特的按会话计费模式,对于许多用户偶尔访问仪表板的组织来说,这可能具有成本效益。
-
可嵌入性:您可以将 QuickSight 仪表板嵌入到应用程序和网站上,在物联网应用或平台内提供集成分析。
-
安全性:QuickSight 提供强大的安全功能,包括行级安全、列级安全和多因素认证,确保对物联网设备和其他来源的数据进行安全访问和分析。
在物联网的应用案例中,QuickSight 简化了从各种设备中可视化解释数据的过程。它帮助利益相关者理解模式,监控系统,并做出数据驱动的决策。例如,您可以为不同地点的物联网传感器报告的环境条件创建仪表板进行监控,可视化工厂中的设备性能,或跟踪智能家居设备的用法模式。
要了解 AWS QuickSight 在物联网应用中的流程,请参阅aws.amazon.com/blogs/big-data/build-a-visualization-and-monitoring-dashboard-for-iot-data-with-amazon-kinesis-analytics-and-amazon-quicksight/。
摘要
在本章中,我们讨论了云在物联网应用中的不可或缺的作用,其基本功能,常见的通信协议,以及为物联网设计的几个 AWS 服务。在规划您的物联网创新时,理解这些概念至关重要。我们将在第十三章至第十六章中练习一些这些 AWS 服务。第十三章至第十六章。
到目前为止,我们从高层次的角度涵盖了基本物联网元素,包括其网络、架构、设备、无线连接和云。在接下来的章节中,我们将探讨如何利用 ChatGPT 加速我们的物联网创新之旅。这包括 ChatGPT 在开发过程中可以应用的区域,我们创新的具体提示框架和技能,以及一些适合初学者的带有提示示例的物联网动手项目。使用这些技能,您可以指示 ChatGPT 根据您的设计准确绘制物联网应用逻辑流程图,并生成根据您的硬件原型驱动的代码,符合您的意图。
第二部分:在物联网开发中利用 AI
书的第二部分将人工智能,特别是 ChatGPT,应用于物联网项目,将理论与实际操作相结合。它介绍了将 ChatGPT 集成到物联网项目中的方法,讨论了人工智能在构思和执行物联网解决方案中的作用,以及它对创新的变革性影响。它还突出了与 ChatGPT 的交互原则,物联网应用的有效的提示框架选项,以及在物联网项目背景下指导 ChatGPT 生成 ESP32 上的 C++代码片段的示例。还提供了关于开始物联网项目的实用建议,强调逐步方法以避免常见陷阱并确保可持续发展。十个详细的项目示例展示了 ChatGPT 如何简化开发过程,从传感器集成到数据处理。最后,本部分探讨了使用 AI 工具创建流程图,这对于规划和理解物联网项目中的数据流至关重要,是编码和组装阶段的蓝图。
本部分包含以下章节:
-
第六章, 在物联网创新之旅中应用 ChatGPT
-
第七章, 开始您的第一个物联网项目的建议
-
第八章, 使用 ChatGPT 提示的 10 个适合初学者的物联网项目
-
第九章, 使用 AI 工具绘制应用流程图
第六章:在物联网创新之旅中应用 ChatGPT
你好,欢迎来到这一章!
想象一下走进一个世界,在那里你的创意想法可以变成真实、实用的装置和解决方案,让生活变得更轻松、更有趣。这一章节是你在这段激动人心的旅程中的第一步,我们将探索如何应用 OpenAI 的 GPT 大型语言模型(LLM)ChatGPT 的神奇力量,以加速你的物联网创新,并迅速将你的最酷想法变成可触摸的原型。
我们将从深入探讨 AI 如何重塑我们的生活、工作和广泛社会开始我们的旅程。我们将不仅了解 AI 的影响,还将展望其潜力,革命性地改变我们周围的每一个行业。从想法的最初火花到实施的最终细节,我们将展示 ChatGPT 如何作为伴侣和指南,在整个物联网开发过程中提升创造力、效率和效果。
然后,我们将概述在与 ChatGPT 互动和开发有效互动策略时应遵循的基本原则。在这里,你将发现专为物联网应用设计的有效 ChatGPT 提示框架和模式的最佳实践。最后,我们将探讨一些有用的技能,你可以使用这些技能来增强你在利用 ChatGPT 为 ESP32 微控制器生成 C++代码时的体验。
本章将涵盖以下主题:
-
用 AI 重塑未来
-
在物联网开发过程中利用 ChatGPT
-
正确与 ChatGPT 互动
-
初学者物联网项目的最佳实践
-
在 ESP32 上生成代码片段
重要提示
我们将应用本章中介绍的 ChatGPT 提示技巧到一个示例项目中第十一章。通过在真实项目中持续练习这些技能,你将全面理解交互原则,并提高你在未来物联网项目中的教学技能。
用 AI 重塑未来
想象一个世界,技术不仅能理解你,还能深思熟虑地回应你的每一个问题或需求。这不仅仅是一部科幻电影中的场景;得益于多个 AI LLM(如 OpenAI 的 GPT、Meta Llama 和 Google Gemini)的进步,这正在成为我们的现实。AI 不仅仅是一个技术术语;它是一场革命,正在重塑我们全球的生活、工作和互动方式。
人工智能正在全球范围内颠覆商业、服务和行业。凭借其先进的技术和能力,人工智能越来越受欢迎,并在客户服务和内容创作等领域的重大影响日益显著。它能够准确自然地理解和回应人类查询的非凡能力确实令人印象深刻。随着世界各地企业认识到人工智能的潜力,其影响力持续增长,让我们更接近一个人工智能解决方案成为我们生活不可或缺部分的未来。
以下是人工智能在各个领域掀起波澜的方式,简化任务,提升体验,并开辟新的可能性:
-
教育:人工智能充当数字导师,帮助学生完成作业,生成测验问题,甚至根据个人需求定制学习材料。它就像一个始终准备以最佳方式帮助你学习的个人学习助手。
-
医疗保健:在医疗保健领域,人工智能成为了一位友好的助手,回答健康问题,指导人们了解症状,并支持心理健康。它就像一位全天候的健康伴侣,始终在那里提供建议和安慰。
-
金融:人工智能进入金融世界,帮助提供客户服务,提供关于银行产品的建议,并使投资建议更加易于获取。这就像口袋里有一位金融顾问,随时准备为你揭示金融世界的复杂性。
-
零售:有了人工智能,购物变得轻松愉快,它可以推荐产品,回答疑问,甚至帮助你找到完美的礼物。这就像和一个知道你想要什么的朋友一起购物。
-
旅行:计划你的下一次冒险吗?人工智能可以提供旅行建议,协助预订,并个性化餐饮或住宿推荐,使每一次旅行都更加顺畅和愉快。
-
技术支持:人工智能可以简化技术支持,提供常见问题的解决方案,并指导用户一步步解决问题。这就像身边总有一位技术专家,随时准备提供帮助。
-
创意产业:对于创意人士来说,人工智能可以激发想法,帮助撰写剧本,甚至创作音乐,将创作瓶颈转化为灵感迸发。
-
法律和人力资源:人工智能消除了法律术语的神秘感,并简化了人力资源流程,使人们更容易应对职场问题和法律文件。
-
无障碍:人工智能革命性地改变了残疾人士的接入方式,通过语音命令、文本输入、视觉手势和其他可定制方法,促进与技术的互动。
-
公共服务:政府和公共机构可以利用人工智能使信息更易于获取,自动化对常见查询的响应,并改善公共服务交付。
这些用例展示了人工智能的广泛应用范围,证明了其能够简化流程,并在各个领域创造新的参与和创新机会。
在审视了人工智能在各个领域的变革性影响之后,我们现在将关注其在物联网中的具体作用。在接下来的部分,我们将探讨物联网开发旅程的各个阶段,其中 ChatGPT 的编码技能可以帮助。在我们导航物联网项目的复杂性时,从分析客户痛点到构建原型,ChatGPT 将证明是一个无价的助手。本讨论的这一部分旨在强调 ChatGPT 如何通过提供可操作的见解和编程任务来加速开发过程,增强解决问题的能力,并通过促进对用户需求和系统性能的更深入理解来培养创新。
在物联网开发过程中使用 ChatGPT
要导航复杂的物联网开发过程,你需要了解客户想要什么以及合适的解决方案是什么样的。ChatGPT,这个由人工智能驱动的聊天机器人,是一个可以帮助你在整个过程中(从头脑风暴到原型开发)的工具。
下面是 ChatGPT 如何使你的物联网开发变得更简单的说明:
-
痛点分析:在与客户互动时,准备好应对各种类型的反馈和投诉至关重要。这些投诉可以通过不同的语气表达,有时可能隐藏真实的问题。但有了 ChatGPT 的协助,你可以有效地分析和总结客户关注的问题。这有助于你确定他们最常遇到的挑战或 痛点。通过理解这些痛点,你可以做出明智的决定并采取适当的行动来解决问题,从而提高整体客户体验。
-
解决方案头脑风暴:一旦你通过彻底的痛点分析确定了客户的 主要关注点,ChatGPT 就会成为你在物联网项目头脑风暴阶段的无价助手。这一阶段完全是关于创造力和利用 ChatGPT 生成大量新想法的能力。
-
可行性研究:有了 ChatGPT 提供的具有希望解决方案,并通过你的洞察力和专业知识进行校准,下一步重要的步骤就是评估它是否可行。在这一阶段,ChatGPT 也发挥着关键作用,通过进行彻底的研究来确定你的物联网项目是否可行。利用其关于最新技术进步的广泛知识库,ChatGPT 可以为你提供将你的想法变为现实所需的技术能力的详细分析。它不仅评估了当前物联网景观的潜力,还预测了可能影响项目成功的未来趋势。
-
风险评估:认识到没有完美的解决方案,使用 ChatGPT 对您的物联网项目进行全面的风险分析是关键的一步。这个由 AI 驱动的审计过程会仔细识别可能阻碍项目成功的在技术、市场和安全方面的潜在问题。技术风险可能涉及硬件可靠性、软件兼容性或可扩展性问题。市场风险可能源于用户需求的变化、竞争或法规。安全风险尤为重要,包括对数据隐私、可能的违规和系统漏洞的担忧。
-
架构设计:在确定解决方案是否可行的研究初步完成后,ChatGPT 可以帮助您设计端到端架构。这个重要阶段包括对使用哪些硬件组件、选择设备连接的通信协议以及使用有效的数据处理技术以获得良好性能的重要决策。ChatGPT 可以提供关于最新技术、兼容性考虑和行业最佳实践的信息,以确保您的解决方案架构不仅功能性强,而且可扩展且安全。这种逐步指导有助于为您的物联网解决方案建立一个坚实的基础,确保成功执行和未来的可扩展性。
-
需求收集:在完成架构设计阶段后,ChatGPT 可以帮助您定义物联网项目的最小可行产品(MVP)。它是通过总结一份简洁的技术和功能需求列表来做到这一点的。这个过程确保了识别并优先考虑了项目初始成功所需的核心组件。通过使用 ChatGPT,您可以提取出一组清晰的、针对基础技术需求(如特定的硬件组件、连接选项和数据处理能力)以及为最终用户提供价值的键功能的需求。这种 MVP 方法简化了开发过程,让您能够快速将物联网解决方案的功能版本推向市场。它满足了关键用户需求,同时也为未来的改进和迭代奠定了基础。在 ChatGPT 的帮助下,您可以确保项目建立在基本功能之上,最大化效率并有效解决已识别的痛点与目标。
-
硬件原型构建:当你开始为你的物联网项目构建硬件原型时,ChatGPT 可以为你提供建议和支持。这一阶段对于将你的想法转化为真实产品至关重要,ChatGPT 可以帮助你在原型开发过程中做出选择和解决问题。它可以根据行业实践和技术进步提供见解。ChatGPT 可以帮助你选择适合项目需求和预算的正确组件,例如微控制器(MCU)、无线连接、传感器和电源供应。它还可以提供组装它们的建议和解决常见硬件问题的方法。无论你是添加传感器、降低功耗还是确保可靠的连接,ChatGPT 都可以帮助你简化构建硬件原型的过程。
-
软件编程辅助:一旦你成功组装和设置了你的硬件原型,使用 ChatGPT 进行软件编程是至关重要的下一步。这是你的项目真正开始成形的地方,从物理组装转变为智能且功能齐全的物联网系统。ChatGPT 可以通过生成针对项目特定应用逻辑定制的代码来帮助你。无论你需要编程设备交互、处理传感器数据、管理连接还是开发用户界面组件,ChatGPT 都可以提供符合项目要求的代码片段和编程见解。
-
云平台集成:最后,你的物联网项目的一个关键方面是确保传感器数据无缝地从你的硬件设备过渡到后端云平台,例如 AWS。这种集成对于充分利用云计算的全部好处至关重要,包括可扩展的数据管理和高级分析能力。为了促进这一关键步骤,你可以利用 ChatGPT 制定一个详细、分步的指南,专门针对云平台集成的复杂性。
从最初的想法生成到与云平台集成,导航物联网开发的复杂性显示了 ChatGPT 在将想法转化为实际解决方案中的宝贵作用。在过程的每一步,如识别问题、头脑风暴解决方案和进行可行性研究,ChatGPT 都展示了其在提高效率、创造力和决策方面的多种能力。然而,要充分发挥这个 AI 工具的潜力,不仅需要访问 ChatGPT,而且还需要知道如何有效地使用它。在接下来的部分,我们将探讨充分利用 ChatGPT 的细节。目标是赋予你知识和技能,以充分利用 ChatGPT 的功能,使其成为创新的强大工具,而不是一个未被充分利用的资源。
正确与 ChatGPT 交互
既然我们已经认识到 ChatGPT 在物联网开发领域的无处不在,那么承认一个基本事实至关重要:这个先进 AI 工具的有效性不在于其功能,而在于我们如何与之互动。
本节的目的并非降低 ChatGPT 的价值,而是为您提供有效利用此工具所需的基本技能。通过了解如何创建特定的提示、准确解读输出以及将洞察力融入您的物联网项目中,您可以将 ChatGPT 从一款基本的数字助手转变为强大的创新工具。我们将共同探讨增强与 ChatGPT 沟通的策略,确保每个问题都服务于目的,每个回答都能帮助您实现物联网目标。本指南不仅将帮助您使用 ChatGPT,还将赋予您掌握提示艺术、将潜力转化为现实的能力。
以下是与 ChatGPT 互动的基本原则:
-
将 ChatGPT 视为一次对话进行互动:与 ChatGPT 的互动不应仅仅是提出问题并等待答案,而应是一种对话或对话,而不是独白。与使用谷歌等搜索引擎不同,您输入一个查询并必须浏览可能或可能不会直接有效地回答您问题的长列表结果,与 ChatGPT 的互动需要更细腻的方法,类似于进行对话。想象一下,您在遇见一个新人,比如朋友、伴侣或导师,并希望从他们那里获得有意义的帮助。一个清晰、精确且深思熟虑的指令,比如全面且周到的开场白,将引导接下来的对话走向有意义的方向,并产生符合您期望的结果。
-
不要期望第一次对话就能得到完美的答案:ChatGPT 的第一轮回答可能并不总是完美地符合您的期望或需求,这并不令人惊讶。重要的是要理解 ChatGPT 是由一个 LLM 框架驱动的,它利用预测机制来生成回答。这种机制基于 LLM 的 transformer 架构,旨在根据您提供的上下文预测最可能出现的下一个单词或短语。因此,其答案是由其广泛训练中的模式和数据进行塑造的,而不是直观的理解。这意味着您的期望与实际答案之间总会有一定的偏差。为了解决这个问题,持续的校准通过持续的对话是必要的。因此,您必须准备好根据初始答案调整您的查询或提出后续问题。通过这样做,您可以确保从 ChatGPT 那里获得最准确和相关的信息。
-
明确你的提问:你的请求和背景越具体和详细,ChatGPT 的回答就会越准确和有帮助。为了确保你获得最准确和有帮助的回答,提供组织良好的、具体和详细的提示框架和模式是非常重要的。这样做不仅使 ChatGPT 对你的请求有更清晰的理解,而且引导它准确地调整信息以适应你的特定需求。因此,在与 ChatGPT 互动时,尽量做到尽可能详细,将相关细节和背景信息纳入你的查询中。这种提供全面背景的做法确保你获得的见解是直接相关和充分信息的,最大化了你与模型互动的效用。
-
减轻 ChatGPT 知识库的限制:尽管 ChatGPT 是一个强大的工具,但它确实存在局限性。ChatGPT 4 的训练数据仅包括截至 2023 年 12 月的信息。因此,任何在 2023 年 12 月之后发生的事件、发展或更新可能不会反映在其回答中。为了减轻 ChatGPT 的知识限制,你可以选择上传最新的文档供其参考。例如,你可以在与 ChatGPT 的对话中粘贴 ESP32-C3 或 ESP32-C6 的数据表、规范和引脚图。
-
鼓励创造性和多样化的回答:如果 ChatGPT 提供的答案与你的预期不同,请不要感到惊讶。为了从 ChatGPT 中获得最佳效果,你应该创建一个开放的环境,重视并鼓励不同和创造性的回答。这将帮助你发现新的和创新性的解决方案。在头脑风暴会议期间,重要的是要拥抱并支持 ChatGPT 的创造力,因为它可以带来突破性的想法和独特的方法。你应该培养一种开放和欣赏多样化观点的心态,以便你能从 ChatGPT 那里生成富有想象力和多样化的输出。
-
保护你的隐私和安全:在使用 ChatGPT 时,始终优先考虑你的隐私和安全非常重要。强烈建议你在对话中避免分享任何机密或私人数据。为了确保最高级别的保护,建议你谨慎行事,不要在互动中透露敏感的个人信息。
-
持续验证和交叉检查:虽然 ChatGPT 可以提供有用的信息和帮助,但重要的是要记住,它不应该是做出重要决策的唯一信息来源。建议在采取任何重大行动之前,用其他来源验证从 ChatGPT 收到的任何信息或建议。这对于重要决策尤其关键。通过双重检查和验证信息,您可以确保其准确性并提高您决策过程的可信度。使用可靠的验证框架允许采取更明智、更安全、更有信心的方法来应用所获得的见解,防止潜在的错误和不准确。
随着我们探索与 ChatGPT 互动的基本原则,我们现在已经到了可以更深入地研究如何与这个 AI 互动的技能的时候了。通过遵循与 ChatGPT 互动的最佳实践,具体化我们的请求,策略性地进行角色扮演,以及持续验证和交叉检查,我们可以就使用 ChatGPT 完成任务进行更有意义的讨论。
在下一节中,我们将专注于将这些原则实际应用于物联网项目。本节将指导您创建有效的提示,以应对物联网开发的独特挑战和机遇。我们的目标是确保您与 ChatGPT 的互动不仅仅局限于简单的对话,而是成为物联网领域创新和解决问题的垫脚石。
初学者物联网项目的最佳实践
OpenAI 已经发布了一份关于 ChatGPT 提示工程的综合指南,可在 platform.openai.com/docs/guides/prompt-engineering 查阅。这些策略和战术为任何渴望掌握为 LLMs(如 ChatGPT 4)设计有效提示的艺术的人提供了无价的指导,旨在提高交互质量并针对特定需求定制响应。
提示框架选项
许多博客已经汇编了不同的有效提示框架,这些框架是初学者的绝佳起点。这些框架根据它们的重点系统地分类:以角色为导向、以任务为导向、以情境为导向、以目标为导向或以目的为导向。理解并根据具体重点应用适当的提示框架对于有效地传达您的目标至关重要,尤其是在指导 AI 或团队成员进行项目开发、研究或问题解决场景时。让我们探讨每个框架如何被用于特定目标,同时考虑到它们的优点和应用。
以角色为导向的框架
在 ChatGPT 提示的情境中,角色引导框架涉及根据 AI 模型预期模仿的具体角色或角色定义提示。这种方法侧重于根据角色通常具有的特征、专业知识和行为来定制 AI 的响应。
这里是角色引导框架的关键方面:
-
AI 的角色定义:这涉及明确定义 AI 在您的对话中将扮演的角色。例如,在物联网项目的情境中,您可以指示 ChatGPT 扮演一个在 RISC-V 架构 MCU 上精通嵌入式 C++的资深软件开发者,或者在 Python 上开发 AWS Lambda 上的算法。
-
您的角色创建:这涉及用更复杂的身份向 AI 描述您的角色。此角色可以拥有独特的特质、背景和专业知识,这些特质塑造了它如何解释和响应提示。例如,您可能描述自己为一个有基本 Python 编程技能的高中生。
以下是一些流行的结构,它们在对话开始时突出了角色:
-
角色、任务和格式(RTF):此框架简单直接。它告诉 AI 应该扮演什么角色,提供背景信息,并概述预期的结果。它非常适合个人角色对结果有重大影响的工程项目——例如,一位熟练的软件开发者编写教育性的 C++代码片段来指导一位有 Python 经验的中学学生。
-
角色、行动、情境和期望(RACE):此框架以行动和情境为导向,使其非常适合步骤顺序和环境重要的任务。它关注所需的行动、它们发生的具体情境以及预期的结果。这使得它在需要细微互动的复杂场景中特别有效。例如,AI 作为熟练的系统架构师,可以设计物联网解决方案来解决客户的现有痛点并满足他们的期望。该框架强调 AI 在特定情境中的行动,并旨在阐明这些行动预期的结果。
-
角色、输入、情境和期望(RISE):此框架侧重于输入和即时情境,使其非常适合需要适应性和即时响应的场景。它明确了 AI 的角色、它将接收的输入、它所处理的情境以及预期的结果。当 AI 必须准确处理敏感或动态情境时,此框架特别有益。例如,AI 作为物联网应用设计师,根据特定事件发生作为输入设计服务流程,然后生成相应的反应。
-
角色、目标、场景、解决方案和步骤(ROSSS):这个框架提供了构建提示的详细方法,侧重于全面的任务执行和问题解决。它在需要精确、系统响应的复杂环境中特别有用。它有助于创建提示,不仅指导 AI 做什么,还指导 AI 如何做,涵盖了从问题理解到解决方案实施的全面计划。例如,作为物联网端点堆栈软件开发者的 AI 可以用来开发使用 TLS 和 MQTT 堆栈的通信协议,该协议可以与 AWS 通信。
任务导向框架
以任务为导向的框架侧重于 AI 需要执行的具体任务。它更多地关注完成任务涉及的动作和过程。因此,提示被设计成高度指导性的,明确指定 AI 应该完成什么。
以下是一些流行的结构:
-
任务、行动和目标(TAG):这种框架适用于目标明确且简单的项目,例如创建营销活动或开发新功能。
-
任务、要求、期望和格式(TREF):这种框架非常适合具有特定要求和预期成果的作业,如撰写报告或创建演示文稿。
-
任务、要求、行动、情境和示例(TRACE):这种框架非常适合教育或培训场景,提供情境和示例可以帮助说明复杂任务或概念。
从本质上讲,虽然以任务为导向的框架更多地关注 AI 做什么(侧重于任务和结果),但以角色为导向的框架更多地关注 AI 如何做(侧重于行为和交互)。
环境导向框架
以环境为导向的 AI 提示框架强调环境或情境的重要性,其中交互发生。它旨在根据每次交互周围的具体情况调整 AI 的响应,确保 AI 的行为是适当且与给定情境相关的。
以下是一些流行的结构:
-
情境、任务和格式(CTF):这种框架非常适合受外部因素严重影响的项目,例如为新市场调整产品或根据用户反馈修改服务。
-
情境、行动、结果和示例(CARE):这种框架适用于案例研究或回顾性分析,在这种情况下,理解在特定情境中采取的行动和结果至关重要。
-
场景、问题、行动和结果(SPAR):这种框架适用于问题解决场景,尤其是在项目总结或规划项目管理中的纠正措施时。
-
情境、复杂情况、目标、计划和评估(SCOP):这对于预期将遇到重大挑战的项目来说非常出色。它适用于在不确定性下规划,例如在高度竞争的市场中开发新产品。评估部分确保有一个内置的审查过程来评估结果与目标的一致性。
-
情境、任务、行动和结果(STAR):在行为面试问题中常用,这个框架也适用于项目总结和案例研究。它有助于分析在特定情境中采取的具体行动如何导致结果,对于团队来说,这是一个理解决策影响的学习工具。
-
情境、行动、目标和期望(SAGE):这最适合战略规划和目标导向的行动,其中情境决定了实现目标的具体行动集合。它非常适合设定这些行动结果的明确期望。
上下文引导框架的主要目标是增强人工智能对细微差异的敏感性,通过使其与用户的当前情况和更广泛的环境更加一致来改善其交互。这导致更直观、有帮助和富有同理心的 AI 系统,它们看起来更加警觉并且能够处理复杂的人类环境。
目标引导框架
在 AI 提示中,目标引导框架的核心是定义清晰的 AI 系统在与用户交互中旨在实现的目标。这种方法侧重于从 AI 的表现中期望的结果或成果,引导 AI 的行为和决策过程朝着这些目标发展。
以下是一些流行的结构:
-
目标、请求、行动、细节和示例(GRADE):这对于具有具体请求的目标导向型项目非常有效,例如推出产品或实现销售目标,其中细节和示例可以指导执行。
-
目的、期望、情境、请求和行动(PECRA):这对于理解更广泛的目的和情境对于满足期望至关重要的项目来说最好,例如战略倡议或组织变革努力。
这些框架中的每一个都有助于组织和简化复杂信息,使其更容易理解和传达。通过为特定情况选择合适的框架,领导者和管理团队可以改善他们项目或任务的规划、执行和评估。无论你是在处理战略规划、运营问题、学习和开发,还是解决问题,这些框架都提供了一种结构化的方法来实现清晰和一致性。
一些框架可能在某种程度上相互重叠。然而,这些重叠不是缺陷,而是使它们在不同场景中更有用和更适用的特性。通过理解每个框架的主要组件和具体重点,你可以更好地调整你的方法以适应你项目或任务的需求。
最佳实践提示示例
尽管我们讨论了许多提示框架,但强烈建议初学者在开始物联网项目时从以角色为导向和以任务为导向的框架开始,特别是 RTF、RACE、TAG 和 TREF。让我们更深入地了解一下:
-
RACE: 你扮演的是一个经验丰富的产品经理,负责推动智能家居技术中的物联网创新。你的图表确定了客户的痛点,并将它们转化为可操作见解,以推动新产品和解决方案的发布(角色)。你致力于编制一个全面的产品需求文档,不仅详细说明了最小可行产品(MVP)功能,还进行了对目标市场、竞争和用户体验的深入分析(行动)。你的现有客户正在抱怨……(背景)。你的文档将指导你的工程团队开发出与客户需求深度契合的创新解决方案。你将与软件和硬件开发团队紧密合作,确保与技术可行性和资源可用性保持一致(期望)。创新始终是你的强烈愿望;鼓励你花时间跳出思维定式(给 ChatGPT 思考的时间 思考)。
-
RTF: 假设你是一个经验丰富的解决方案架构师,在物联网技术方面拥有全面背景,专注于智能家居技术(角色)。利用你对行业最佳实践的深入理解,你将根据提供的产品需求文档设计一个稳健、经济高效且安全的物联网解决方案(使用参考源)。你的设计将在系统需求文档中记录,并涵盖端到端功能(任务)。你还应包括系统安全性、数据隐私、设备管理和服务可扩展性等因素。你的文档应分为四个部分,包括系统高级图、终端设备、无线连接和云平台集成。每个部分都应提供有关组件、关键技术、协议、建议以及优缺点的详细信息(格式)。系统稳健性应始终是你的首要任务。鼓励你参考市场上广泛采用的架构,并在全面评估后提出你的设计(给 ChatGPT 思考的时间 思考)。
-
TAG: 你扮演一位经验丰富的资深硬件开发工程师,在物联网和智能家居技术方面拥有丰富的经验。你当前的任务是设计一款创新的家用智能烟雾探测器,重点关注当用户不在家时通过短信和电子邮件提醒用户(任务)。你将开发一个硬件原型参考指南(行动),同时遵守系统需求文档中概述的规范。有关芯片组功能的详细信息,请参阅
www.espressif.com/sites/default/files/documentation/esp32-c6_datasheet_en.pdf中的 ESP32-C6 数据表和 MQ-2 烟雾传感器规范components101.com/sensors/mq2-gas-sensor(使用参考来源)。你的指南不仅应解决技术规范,还应探讨创新设计和功能,以提升用户体验。你对尖端解决方案的探索和对细节的关注将在实现可靠性、成本和以用户为中心的设计之间取得平衡(目标和给 ChatGPT 思考时间)。 -
TREF: 你是一位熟练的高级软件开发人员,被委以开发智能烟雾探测器云注册功能(任务)。为了实现这一功能,必须采取以下步骤以满足服务逻辑(需求以及完成子任务所需的步骤):
-
在 AWS IoT Core 中预配置 ESP32 设备。
-
从 ESP32 设备启动 Wi-Fi 连接到家庭 Wi-Fi 路由器。
-
通过 TLS 安全连接到 AWS IoT Core。
-
创建一个 JSON 有效负载,包括设备 ID、型号、固件版本、电池水平和太平洋时区的当前时间戳。
-
将带有 JSON 有效负载的 MQTT 发布主题发送到 AWS IoT Core。
-
在成功注册后,将 ESP32 设备的 LED 灯改为始终开启的绿色。
-
保持 Wi-Fi 连接 1 分钟。
-
断开 Wi-Fi 连接,但 LED 灯始终保持绿色。
-
四小时后从步骤 II重新启动。
-
请将你的 C++源代码结构化,包括注释部分、库导入、变量声明、函数定义、一个setup()函数、一个loop()函数,以及一行带有*插入以分隔每个部分的代码(格式)。
在本节中,我们探讨了专门针对初学者在物联网项目中开始使用 ChatGPT 的最佳实践和高级策略。下一节将提供有关有效请求 ChatGPT 为 ESP32 平台生成 C++代码的宝贵提示和示例。这些见解旨在增强你的理解,特别是对你从第十一章中的工程示例,并确保项目开发过程更加流畅和成功。
在 ESP32 上生成代码片段
为了优化 ChatGPT 在 ESP32 上生成代码片段的使用,特别是对于复杂项目,如用于智能家居用例的物联网终端设备开发,采用结构化的提示方法可以显著提高输出的质量和相关性。
这里有一些有用的提示,可以帮助您在构建生成代码的有效提示时进行指导:
-
我使用带有 PlatformIO 扩展的 Microsoft Visual Studio Code,espressif32 平台和Arduino 框架。 -
在我的项目中,我使用 ESP32-C3 作为 MCU,MQ2 作为烟雾传感器。 -
我在 ESP32-C3 的 GPIO2 上连接到 MQ2 的数字输出引脚,GPIO 4 连接到 MQ2 的模拟输出引脚。 -
请参考 ESP32-C3 和 MQ2 的引脚布局图,并推荐引脚连接。 -
我是一名初级软件程序员,使用 Python,对 C++了解很少。请为我生成易于理解的代码,我的背景是这样的。*我希望每个代码片段都以对其目的的简要说明开始,并包括逐行注释以阐明逻辑。*请为我生成实际的代码,而不是伪代码。*如果在我的代码中包含 AWS 账户访问证书存在安全顾虑,请提供建议。*在代码片段的底部,请包括如何验证这些代码片段的部分。*我喜欢你的答案,它几乎是我预期的,让我们根据当前的输出做一些改进。*我喜欢你的答案和输出格式,这正是我想要的,从现在开始,请为未来的代码生成案例保持此格式,确保每个部分都有清晰的解释和详细的注释!* 版本控制:您可以考虑使用 Git 等版本控制系统维护生成的代码版本。这可以帮助您跟踪更改并促进协作。
让我们通过一个生成示例的代码片段来了解一下:
嗨,ChatGPT,请扮演一名熟练的高级软件开发者,开发智能烟雾探测器的云注册功能。我是一个高中生,对 Python 有基本了解,但没有 C++经验。请确保您的代码对我这样的背景的人来说易于理解。请尝试为代码的每一行添加注释,不要生成 伪代码。
您应使用带有 PlatformIO 扩展的 Microsoft Visual Studio Code IDE,espressif32 平台和 Arduino 框架。为开发目的,暂时将 Wi-Fi 访问凭据硬编码,但计划在生产中采用安全的凭据管理方法 方式。
预期的功能逻辑严格遵循以下步骤。
-
步骤 1:在 AWS IoT Core 中预配置 ESP32 设备。 -
步骤 2:从 ESP32 设备启动到家庭Wi-Fi 路由器的连接` -
步骤 3:通过 TLS 安全连接到 AWS IoT Core 服务。 -
步骤 4:创建包含设备 ID、型号和固件版本、电池级别和太平洋时区当前时间戳的 JSON 有效负载 -
步骤 5:将带有 JSON 有效负载的 MQTT 发布主题发送到 AWSIoT Core -
步骤 6:在成功注册后,将 ESP32 设备 LED 改为始终开启的绿色 -
步骤 7:保持 Wi-Fi 连接1 分钟 -
步骤 8:断开 Wi-Fi 连接但保持 LED始终开启的绿色 -
步骤 9:在4 小时后从步骤 2 重新开始
请结构化您的 C++ 源代码,包括整个代码说明、库导入、变量声明、函数定义、setup() 函数、loop() 函数部分,并在每个部分之间插入一行“*”。
-
代码说明部分:从描述创建日期、作者、代码的目的和结构、安全风险、测试和验证方法的全面注释开始。 -
库导入部分:导入必要的库,注释说明每个库的用途 -
变量声明部分:声明在此代码中使用的变量,注释说明每个变量的定义。 -
函数部分:定义带有清晰注释的函数,说明其目的和用法。 -
设置部分:详细说明 setup() 函数,包括初始配置。 -
循环部分:概述 loop() 部分,描述其连续操作。
ChatGPT 的输出可能看起来像 github.com/PacktPublishing/Accelerating-IoT-Development-with-ChatGPT/blob/main/Chapter_6/main.cpp 中所示。当您有自己的代码时,您可以参考它。
如前所述,当使用 ChatGPT 为您的物联网项目生成代码时,您必须选择适合您情况的提示框架。由于 ChatGPT 可能并不总是提供完全准确的代码,您应该继续对话以微调结果。
摘要
在本章中,我们讨论了人工智能的优势及其在物联网项目中的应用,探讨了各种有效的提示框架,并提供了指导 ChatGPT 在 ESP32 上生成代码的物联网项目示例。
在下一章中,我们将回顾当前市场上最受欢迎的 10 个物联网项目示例,并提供相应的编码提示。
第七章:开始您的第一个物联网项目的建议
你好,欢迎来到第七章!
在上一章中,我们介绍了人工智能和 ChatGPT 提示框架的介绍,以及在实际的物联网创新旅程中应用 ChatGPT 的实用技巧和提示。有了这些工具,您就有能力将您的创新想法变为现实。恭喜!您现在已准备好并渴望开始您的第一个物联网项目。本章旨在提供实用的建议,以帮助您顺利地完成项目的初步步骤,并帮助您避免潜在的挫败感。
在本章中,我们将涵盖以下主题:
-
大胆设想,从小处着手:以兴奋的心情拥抱您的物联网创新大想法,但将您的项目分解为小、可管理、细致的阶段。这样,您可以在前进的过程中保持热情,并积极学习,而不会从一开始就被您的宏伟计划所压倒。
-
先摘取低垂的果实:有些项目可能较为简单,而有些则可能更具挑战性。作为一名初学者,从简单的任务开始您的第一次尝试是明智的。这将使您能够逐步建立知识和技能,然后再承担更具挑战性的项目。
技术要求
以下是最受认可、用户友好且价格合理的入门级套件,适合那些以最低投资进入物联网世界的初学者:
-
带有 PlatformIO 扩展的 Microsoft Visual Studio Code
-
ChatGPT
-
ESP32 微控制器
-
兼容 Arduino 的传感器
-
AWS 免费层云服务
大胆设想,从小处着手
想象一下,您非常兴奋地想要创建一个智能灌溉解决方案,使用土壤湿度测量传感器;一个野火哨兵解决方案,使用火焰/烟雾检测传感器;一个河流/湖泊污染监控系统,使用水质测量传感器;一个在烟囱上安装的 CO2 排放预警系统,使用空气质量测量传感器;一个屋顶安全监控系统,使用振动和倾斜传感器;一个超声波和身体PIR(被动红外)传感器接近危险区域时的警报系统;一个通过水滴传感器在洗手间报告水泄漏的解决方案;甚至是一个连接到云端的鼠标夹,以在您的手机上触发警报。这些宏伟的想法激励您卷起袖子,从头开始开发物联网创新,尽可能快地过渡到一个完全功能化的解决方案。
以任何方式鼓励大胆思考。通过大胆思考,我们释放了超越看似可能的梦想的潜力,并展望一个大胆而鼓舞人心的未来。它推动我们探索新想法,拥抱创新,并追求卓越。然而,在实践方面,理想的做法是切换到不同的方法,以确保项目的全面发展。
正如我们在前面的章节中讨论的那样,一个完整的物联网解决方案通常包括室内或室外使用的终端设备,住宅房间内的无线连接或在城市或农村地区的广泛区域内的无线连接,以及针对不同客户需求定制的云平台上的数据处理。从第一天开始构建这样的解决方案无疑是一项具有挑战性的任务。
在这个背景下,从小开始是一种提倡的实用策略。它涉及将最终交付成果分解成更小、更渐进的阶段。通过采取实际步骤并逐步积累知识,我们可以在旅途中积累宝贵的经验。这种方法使我们能够取得进步,从错误中学习,并在必要时调整我们的行动方案。
例如,如果你计划发明一种野火哨兵解决方案,完整的解决方案包括一个配备火焰/烟雾传感器的户外设备以及长距离无线回程。这种解决方案旨在部署在森林或农田等农村地区。此类设备的首要要求是低功耗。例如,它应该能够使用四节 AA 电池至少运行一年。此外,你必须考虑这些地区的无线覆盖情况。通常,NB-IOT、LTE-M 或 LoRaWAN 是合适的选择。
通过坚持从小开始的哲学,在初始的概念验证阶段,你可以从带有一些 Arduino 兼容传感器的 ESP32 开始。你可以使用其内置的 Wi-Fi 功能来访问你的家庭 Wi-Fi,这样你就可以通过快速原型设计来测试你的想法。如果这个想法可行,你可以进入下一步,并切换到带有 NB-IOT/LTE-M 或 LoRaWAN 无线电的 ESP32 模块。这将使你能够评估它们的功耗,并为基于实际性能的进一步开发奠定基础。
应用大处着眼,小处着手的哲学意味着在设定宏伟愿景的同时,也关注可实现的开端。这为更大的目标奠定了坚实的基础,并导致首先争取低垂的果实的策略。通过利用简单的机会,我们获得快速胜利和动力,使我们能够应对更复杂的挑战,并将我们的宏大思考转化为可行的路径。
首先争取低垂的果实
物联网项目的复杂度差异很大,从那些需要最少努力的项目到那些需要领域专业知识的项目。对于初学者来说,最初专注于简单的任务是明智的。这种策略能够逐步提高你的知识和技能,为你未来处理更复杂的项目打下坚实的基础。
下表展示了不同复杂度级别项目的重点。
| 项目 复杂度 | 入门(适合初学者**) | 中等(经验玩家**) | 高级(领域专业知识**) |
|---|---|---|---|
| 服务可用性 | 能够容忍偶尔的错误和短暂的服务中断,不会造成重大后果 | 如果有错误,则在应用层使用重传机制,并使用校验和或散列确保数据完整性 | 采用高级错误纠正技术,确保高可用性和容错性,并建立严格的 SLA(服务等级协议)以处理关键数据,最小化停机时间 |
| 部署环境 | 居住区(室内) | 校园或商业建筑(室内和室外)及受控环境 | 多样化的环境,包括城市、农村地区、农场、森林和恶劣天气及条件下的边境地区,需要坚固耐用的设备 |
| 终端设备物理特性 | 消费级 | 商业级,设计用于持续使用和适度的环境变化 | 工业级,设计用于承受极端温度、湿度、太阳紫外线和强烈的风 |
| 无线连接选项 | 家庭 Wi-Fi 或 BLE 集线器 | 企业 Wi-Fi 和 LoRaWAN,提供更大的覆盖范围和穿透力 | NB-IoT、LTE-M 或 LoRaWAN,优化用于长距离通信、穿透力和电力效率 |
| 终端设备漫游 | 固定在墙壁或天花板上 | 固定或本地区域漫游(允许本地区域的服务连续性) | 固定或广域漫游(需要无缝连接) |
| 终端设备电源 | 外部电源 | 电池或外部电源,注重能源效率 | 电池或可再生能源,如太阳能板,优先考虑自给自足和可持续性,可能结合能量收集技术 |
| 与云的数据通信 | 主要为上行,很少从云接收数据 | 双向通信,下行用于单播,支持命令和控制 | 强健的双向通信,下行用于广播或多播,支持如OTA(空中传输)更新、远程诊断和控制等复杂交互 |
| 移动设备参与 | 短信或电子邮件通知 | 短信或电子邮件通知 | 完整的移动应用程序集成,用于实时监控和控制,支持通知、自动化规则和用户自定义 |
| 应用示例 | 室内温度和湿度监测器、空气质量监测器、连接式捕鼠器、智能照明、智能门铃、智能摄像头、烟雾探测器等 | 智能停车、智能照明、智能摄像头、资产追踪、设施安全监控、HVAC 自动化、水泄漏、智能灌溉、烟雾探测器等 | 水和燃气计量、街道照明、噪声检测、垃圾收集、车队、农业、自然灾害预报、野火警报、水和空气质量监测、土壤湿度测量、资产追踪、野生动物追踪等 |
在本节中,我们提供了一个关于物联网(IoT)项目不同复杂性的结构化概述。这将帮助您评估和选择与您当前专业知识水平相匹配的项目。从适合初学者的项目开始可以帮助巩固您的基础知识并建立信心。它还为您逐渐过渡到更复杂的应用做好准备。使用本指南战略性地规划您的物联网(IoT)学习之旅,确保每一步都富有意义,并为您对这一领域的整体掌握做出贡献。
摘要
在本章中,我们介绍了“大处着眼,小处着手”的哲学,强调了在庞大而复杂的物联网(IoT)世界中逐步取得进步的重要性。您已经学到了耐心的重要性以及从简单任务开始的战略方法——从与您不断增长技能相匹配的项目开始,建立坚实的知识和经验基础。
在下一章中,您将找到一系列为初学者设计的项目样本,这些样本经过精心挑选,旨在增强您的学习并激发您的创造力。这些项目作为垫脚石,将我们讨论的原则付诸实践,并为您提供将想法变为现实的机会。有了坚实的基础,现在是时候动手实践,深入体验将改变您对物联网(IoT)理解的实际经验。
第八章:10 个适合初学者的物联网项目与 ChatGPT 提示
欢迎来到创新工坊,在这里,您的想法将在您构建、测试和改进真实世界的物联网解决方案的过程中变为现实。
在上一章中,我们探讨了初学者开始他们的第一个物联网项目的基础建议,强调了“大处着眼,小处着手”和“先摘低垂的果实”的哲学。
本章旨在帮助您从理论过渡到实践。我们将探索 10 个适合初学者的物联网项目示例,展示了一系列应用。通过这些示例,您将了解各种传感器与 ESP32 的集成和交互,以及这些组件如何协同工作以收集数据。每个项目都是精心挑选的,以符合我们在上一章中讨论的哲学,允许您在进步的过程中建立坚实的基础并获得信心。
10 个示例涵盖了以下项目:
-
项目 1 – 温度和湿度测量
-
项目 2 – 火焰检测
-
项目 3 – 红外移动检测
-
项目 4 – 气体检测
-
项目 5 – 距离测量
-
项目 6 – 倾斜检测
-
项目 7 – 振动检测
-
项目 8 – 碰撞检测
-
项目 9 – 土壤湿度检测
-
项目 10 – 磁性变化检测
技术要求
在接下来的 10 个项目案例中,我们将选择 ESP32-C3 作为与 Arduino 传感器交互的示例。ESP32-C3 的硬件规格和引脚定义在 第十一章 中展示。
这里是本章涵盖的传感器列表:
| 项目 | 传感器模块 |
|---|---|
| 温度和湿度测量 | DHT11 |
| 火焰检测 | KY-026 |
| 红外移动检测 | HC-SR501 |
| 气体检测 | MQ-2 |
| 距离测量 | HC-SR04 |
| 倾斜检测 | SW-520D |
| 振动检测 | SW-420 |
| 碰撞检测 | 开关传感器 |
| 土壤湿度检测 | HS-S09 |
| 磁性变化检测 | KY-003 |
项目 1 – 温度和湿度测量
此项目利用了 DHT11 传感器,这是一种既紧凑又经济的数字传感器。DHT11 传感器广泛应用于各种应用。这些应用范围从个人在业余时间创建的爱好者项目,到市场上广泛可用的更大规模的消费电子产品。DHT11 传感器是一种多功能的设备,将多个功能集成到一个紧凑的单元中:它包含一个热敏电阻用于测量温度,一个电容式湿度传感器用于测量湿度水平。这两个组件协同工作,提供全面的环境数据。此外,DHT11 传感器还配备了一个高性能的 8 位微控制器。这个微控制器使得 DHT11 传感器能够提供可靠和准确的读数。此外,DHT11 传感器通过简单的数字接口呈现这些读数,使其成为许多用户可访问的选择,无论他们的技术水平如何。
规格
| 规格 | 描述 |
|---|---|
| 接口 | 3 个引脚,VCC、GND 和信号输出 |
| 工作电压 | 3.3 V 至 5 V |
| 工作电流 | 测量时 2.5 mA,待机时 60 uA |
| 工作温度 | 0 °C 至 50 °C |
| 温度测量范围 | 0 °C 至 50 °C(32 °F 至 122 °F),精度 ±2 °C |
| 湿度测量范围 | 20 % 至 90 % 相对湿度(RH),精度 ±5 % RH |
| 分辨率 | 温度:1 °C;湿度:1 % RH |
| 采样率 | 每秒一次 |
| Arduino 库 | DHT.h |
应用
-
家庭环境监控:用于 DIY 气象站或室内气候监控系统
-
教育项目:非常适合教授传感器集成和环境监测的基础知识
-
农业和园艺:用于监测温室或土壤条件
-
智能家居自动化:可以根据温度和湿度水平集成到控制供暖、通风和空调(HVAC)的系统
向 ChatGPT 发送提示
角色:
担任专注于嵌入式 C++ 开发的资深软件开发人员。您的专业知识包括使用 ESP32 芯片、Arduino 兼容传感器和 PlatformIO IDE 的物联网项目。
任务:
作为一名教育高中生并具备基本 Python 知识但 C++ 新手的导师,您的 C++ 代码片段应具有指导性,并满足指定的目标和要求,面向 初学者水平。
目标:
为 ESP32 C3 创建一个清晰且具有指导性的代码示例,以完成以下任务:
-
每 3 秒从 DHT11 传感器读取温度和湿度值,并将这些值与预定义的范围进行比较 -
蜂鸣器发出蜂鸣声并改变 LED 颜色以指示异常情况
要求:
-
使用 PlatformIO 作为您的 IDE -
将 ESP32 GPIO 0 连接到 DHT11 的信号输出引脚 -
将 ESP32 GPIO 2、3、10 连接到三色 LED 的 R/G/B 引脚 -
将 ESP32 的 GPIO 11 连接到蜂鸣器的信号引脚 -
使用脉冲宽度调制 (PWM) 控制蜂鸣器和三色 LED -
当温度在 15°C 到 30°C 之间且湿度在 10 % 到80 %之间时,LED 会变为稳定的绿色` -
当温度超过 30 °C 或湿度超过 80 % 时,LED 会变为稳定的红色,并且会发出快速、高音调的蜂鸣器警报 -
当温度低于 15 °C 或湿度低于 10 % 时,LED 会变为稳定的蓝色,并且会发出快速、高音调的蜂鸣器警报 -
打印当前温度值、湿度值、LED 颜色和蜂鸣器开/关状态
这是我们期望的输出:
-
按照以下顺序结构化您的输出代码片段:导入库、常量和变量声明、硬件初始设置、函数初始声明、设置函数、主循环函数和函数定义。 -
为每行代码提供详细的注释以增强可读性。 -
将 C++ 编程最佳实践应用于此代码片段,并遵守以下规则:-
代码简洁性:优先考虑可读性和简洁性,避免过度复杂的解决方案。将大型函数重构为更小、更易于管理的部分。 -
一致性:在您的项目中坚持一致的代码风格,例如缩进、括号放置和空白符的使用。 -
命名约定:使用 camelCase 为变量和函数定义命名,并使用 PascalCase 为类名命名。 -
模块化:将代码拆分为逻辑模块或组件,例如函数或类,每个处理程序的功能的特定部分。 -
错误处理:确保异常安全并检查返回值。
-
代码示例
main.cpp 示例代码位于以下链接:github.com/PacktPublishing/Accelerating-IoT-Development-with-ChatGPT/blob/main/Chapter_8/Project_1/main.cpp。
在此示例代码中,正如我们指示的,ChatGPT 创建了以下四个函数:
-
void readDHTSensor(): 这读取传感器的输出数据,例如摄氏度和华氏度的温度以及湿度 -
void updateIndicatorStatus(): 根据实际数据与预定义数据范围的比较,更改 LED 的颜色并调用Buzzer蜂鸣函数 -
void beepBuzzerAlert(): 使蜂鸣器发出开/关警报 -
void printSystemStatus(): 这在每个循环中打印出当前传感器数据、LED 的颜色和蜂鸣器的开/关状态
在 第十一章 中,有使用 PlatformIO 编译和上传 ESP32 代码的说明;您可以遵循该说明来验证此示例代码,以观察这四个函数是否完全满足我们的要求。
在此项目中,我们定期从 DHT11 传感器读取数据以监控温度和湿度数据。通过将这些读数与预定义的范围进行比较,我们使用 RGB LED 和压电蜂鸣器进行视觉和听觉指示。这个过程有助于了解如何处理传感器数据并使用基本组件和 C++ 编程响应不同的条件。
在这个基础上,我们的下一个项目将专注于火焰检测。我们将设计类似的代码结构来读取火焰传感器引脚的数字值,并使用相同的方法通过 LED 和蜂鸣器指示火焰的存在。这将进一步提高您在嵌入式系统中集成传感器和执行器的技能,同时加强物联网应用中基于条件的响应原则。
项目 2 – 火焰检测
此项目使用 KY-026 模块,这是一个专为与 Arduino 和其他各种微控制器一起使用而设计的复杂火焰检测模块。该模块的主要功能是检测火焰通常发出的红外光。
KY-026 模块的核心是 YG1006 传感器。这是一个以高速性能和卓越灵敏度著称的 负-正-负 (NPN) 硅光电晶体管。这些特性使其能够快速准确地检测火灾或过热的存在。
该模块的一个关键特性是其双输出功能,提供数字和模拟输出。这种双重功能使用户能够为特定应用选择最合适的输出,提供高度灵活的使用方式。
KY-026 模块在需要火焰或热检测的广泛场景中都有应用。例如,它可以集成到住宅环境的安全系统中,提供额外的防火安全级别。在工业环境中,它可以用于监控和控制高温运行的设备,从而防止潜在的事故。
规格说明
| 规格 | 描述 |
|---|---|
| 接口 | 4 个引脚,VCC,GND,模拟输出(A0)和数字输出(DO) |
| 输出类型 | 模拟输出提供随火焰强度变化的连续电压,数字输出在未检测到火焰时提供 LOW,检测到火焰时提供 HIGH |
| 工作电压 | 3.3 V 至 5 V |
| 工作电流 | 非常低 |
| 工作温度 | -25 °C 至 +85 °C |
| 检测波长 | 760 nm 至 1100 nm |
| 检测角度 | 60 度 |
模拟输出值
| 未检测到火焰 | 模拟值可能接近 1023 |
|---|---|
| 弱火焰或远距离 | 值可能在较高中等范围内,例如 600-800 |
| 中等火焰或中等距离 | 中等范围的值,例如 300-600 |
| 强烈火焰或接近传感器 | 较低的值,可能低于 300,表示强烈的火焰或接近传感器 |
应用:
-
火灾报警系统:用于 DIY 火灾报警系统,在检测到火焰时触发警报或采取行动
-
安全设备:集成到安全设备中,在出现火灾时提供警告或关闭系统
-
环境监测:用于环境监测设置中检测监控区域内的火灾爆发
-
机器人技术:在机器人项目中用于导航或避开火焰和高温区域
向 ChatGPT 发送提示
角色、任务和输出预期将与第一个项目相同:
角色:
扮演一位专注于嵌入式 C++ 开发的资深软件开发者。您的专业知识包括使用 ESP32 芯片、Arduino 兼容传感器和 PlatformIO IDE 的物联网项目。
任务:
作为一名教育高中生并具备 Python 基础知识但 C++ 新手的导师,您的 C++ 代码片段应具有指导性,满足指定的目标和要求,面向 初学者水平。
目标:
为 ESP32-C3 创建一个清晰且具有指导性的代码示例,以实现以下功能:
-
每3 秒从 KY-026 读取数字值(HIGH 或 LOW) -
蜂鸣蜂鸣器并更改 LED 颜色以指示检测到火焰
要求:
-
使用 PlatformIO 作为您的 IDE -
将 ESP32 GPIO 0 连接到 KY-026 的D0 引脚 -
将 ESP32 GPIO 2、3、10 连接到3 色 LED的 R/G/B 引脚 -
将 ESP32 GPIO 11 连接到蜂鸣器的信号引脚 -
使用 PWM 控制蜂鸣器和三色 LED -
如果值为 HIGH,表示检测到火焰,则蜂鸣蜂鸣器并更改 LED 颜色为红色 -
如果值为 LOW,表示未检测到火焰,则静音蜂鸣器并保持 LED 颜色为绿色 -
打印当前值、蜂鸣器开/关状态和LED 颜色
这是我们期望的输出:
-
按照以下顺序结构化您的输出代码片段:导入库、常量和变量声明、硬件初始设置、函数初始声明、设置函数、主循环函数和函数定义。 -
为每行代码提供详细的注释以增强清晰度。 -
将 C++ 编程最佳实践应用于此代码片段,遵守以下规则:-
代码简洁性:在可读性和简洁性方面优于过度复杂的解决方案。将大型函数重构为更小、更易于管理的部分。 -
一致性:在项目中保持一致的代码风格,例如缩进、括号放置和空白符使用。 -
命名约定:使用 camelCase 定义变量和函数,以及 PascalCase 定义类名。 -
模块化:将代码拆分为逻辑模块或组件,例如函数或类,每个处理程序的功能的一部分。 -
错误处理:确保异常安全并检查返回值。
-
代码示例
可以在以下链接找到 main.cpp 代码的示例:github.com/PacktPublishing/Accelerating-IoT-Development-with-ChatGPT/blob/main/Chapter_8/Project_2/main.cpp.
在这个示例代码中,以下三个函数是从上一个项目中复用的:
-
void updateIndicatorStatus() -
void beepBuzzerAlert() -
void printSystemStatus()
我们不是读取火焰传感器的模拟值,而是使用一个新的布尔函数 isFlameOn() 来读取数字值(未检测到火焰为 LOW 或检测到火焰为 HIGH),并将比较结果作为 true 或 false 返回,从而简化了确定系统对火焰传感器输出的响应逻辑。
在这个项目中,我们通过检查每个循环周期中火焰传感器的数字引脚值,有效地确定了火焰的存在。这种方法使我们能够使用 LED 和蜂鸣器来指示是否检测到火焰,从而加强了我们使用数字传感器读数进行基于条件的响应的理解。
基于这些知识,我们的下一个项目将涉及使用类似的方法从 PIR 运动传感器读取数字值。这个项目的目标是检测传感器前方是否存在人或动物,进一步提高你在物联网应用中集成传感器进行实时监控和警报系统的技能。
项目 3 – 红外线运动检测
该项目使用 HC-SR501,这是一种专门为检测人类或动物存在而设计的 PIR 传感器。它通过利用红外信号来实现这一点。该传感器提供两种不同的工作模式,即 可重复(H) 和 不可重复(L)。这些模式在应用和使用方面提供了灵活性。该传感器特别适合于各种应用,包括但不限于自动照明、安全警报和工业自动化控制。
该传感器的一个显著特点是它具有广泛的温度范围能力。这意味着它可以在各种不同的环境条件下有效地工作。此外,它还具有低功耗的特点。这使得它成为长期部署的经济选择。因此,它成为任何运动检测需求的灵活选择,提供效率和适应性。
规格说明
| 规格 | 描述 |
|---|---|
| 接口 | 3 个引脚,VCC、GND 和信号输出 (HIGH/LOW) |
| 输出类型 | 检测到运动时为 HIGH,未检测到运动时为 LOW |
| 工作电压 | 4.5 V 至 20 V |
| 工作电流 | 50 µA |
| 工作温度 | -20 °C 至 +80 °C |
| 检测范围 | 最长 7 米(约 23 英尺) |
| 视角 | 最高可达 100 度 |
| 输出延迟时间 | 可调节从 5 秒到 200 秒 |
应用程序
-
安全系统: 对于基于运动的安防设备,在检测到入侵者时触发警报或灯光
-
自动照明: 当有人进入房间或区域时开启灯光,当无人占用时关闭灯光
-
智能家居自动化: 集成到智能家居系统中,实现节能和便利功能
-
野生动物监控: 用于野生动物相机在检测到运动时捕捉图像或视频
向 ChatGPT 发送提示
角色、任务和输出预期将与第一个项目中的相同。其他方面如下:
目标:
为 ESP32-C3 创建一个清晰且具有指导性的代码示例,以实现以下功能:
-
每 3 秒从 HC-SR501 读取数字值(HIGH 或 LOW) -
蜂鸣器蜂鸣并改变 LED 颜色以指示检测到运动
要求:
-
使用 PlatformIO 作为您的 IDE -
将 ESP32 GPIO 0 连接到 HC-SR501 的信号输出引脚 -
将 ESP32 GPIO 2、3、10 连接到3 色 LED的 R/G/B 引脚 -
将 ESP32 GPIO 11 连接到蜂鸣器的信号引脚 -
使用 PWM 控制蜂鸣器和三色 LED -
如果值为 HIGH,表示检测到运动,则蜂鸣蜂鸣器并改变 LED 颜色为红色 -
如果值为 LOW,表示未检测到运动,则静音蜂鸣器并保持 LED 颜色为绿色 -
打印当前值、蜂鸣器开/关状态和LED 颜色
代码示例
main.cpp代码的示例可以在以下链接找到:github.com/PacktPublishing/Accelerating-IoT-Development-with-ChatGPT/blob/main/Chapter_8/Project_3/main.cpp。
在这个示例代码中,我们继续使用来自项目 1和项目 2的相同三个函数:
-
void updateIndicatorStatus() -
void beepBuzzerAlert() -
void printSystemStatus()
此外,我们引入了一个布尔函数isPIROn(),从 PIR 传感器读取数字值(检测到运动时为HIGH,未检测到运动时为LOW)。此函数将比较结果返回为true或false,简化了确定系统对运动检测响应的逻辑。
在这个项目中,我们成功使用 PIR 传感器通过检查其数字输出来检测运动。这使得我们能够通过 LED 和蜂鸣器指示运动检测,加强了我们处理数字传感器读数和实现响应式警报的能力。
在下一个项目中,我们将扩展这种方法到气体传感器。通过从气体传感器读取数字值,我们将设计一个系统来在检测到任何气体时提醒我们,继续构建您在实时监控和警报系统方面的专业知识,使用各种传感器和 ESP32。
项目 4 – 气体检测
本项目采用 MQ-2 传感器,该传感器因其强大的功能在气体检测设备领域得到了广泛认可和使用。MQ-2 传感器不仅能够检测广泛的气体,而且在这方面非常熟练。这些包括 液化石油气(LPG)、异丁烷、丙烷、甲烷、酒精、氢气,甚至烟雾。
这种广泛的检测能力使 MQ-2 传感器成为一个极其多才多艺的工具。它不仅因其能检测的气体种类多样而与其他传感器区分开来,还因其速度和灵敏度。该传感器因其快速响应时间而备受推崇,这一特性在时间至关重要的关键情况下尤其有价值。此外,其高灵敏度允许检测到即使是微量的气体,这在预防潜在危险中可能至关重要。
由于这些独特的属性,MQ-2 传感器是众多安全应用的理想选择,尤其是在气体泄漏检测至关重要的场合。
规格
| 规格 | 描述 |
|---|---|
| 接口 | 4 个引脚,VCC、GND、模拟输出(A0)和数字输出(D0) |
| 输出类型 | 模拟电压输出与气体浓度成正比,气体检测时以 HIGH 输出,无气体检测时以 LOW 输出 |
| 工作电压 | 5 V |
| 工作温度 | -20 °C 到 50 °C |
| 目标气体 | 液化石油气(LPG)、异丁烷、丙烷、甲烷、酒精、氢气和烟雾 |
| 检测范围 | 对于各种气体,大约为 300 到 10,000 百万分之一(ppm) |
| 预热时间 | 初始加热大约需要 20 秒到 1 分钟 |
| 负载电阻 | 可调,通常约为 5 KΩ |
| 加热器功耗 | 大约 800 mW |
模拟输出值
| 清洁空气 | 在清洁空气(基准值)中的输出电压可能约为 1 V 到 1.5 V。 |
|---|---|
| 低浓度气体 | 气体浓度轻微增加可能会使电压略微高于基准水平。例如,检测低浓度的甲烷可能会导致输出电压在 1.5 V 到 2.5 V 的范围内。 |
| 高浓度气体 | 在可燃气体高浓度存在的情况下,输出电压可能接近传感器的最大工作电压(对于 5V 供电,接近 5 V)。 |
应用
-
气体泄漏检测器:用于住宅或商业环境检测危险气体泄漏
-
空气质量监测:监测空气中各种气体的存在和浓度
-
DIY 项目:在涉及气体检测和环境监测的 DIY 电子产品项目中很受欢迎
-
安全警报:集成到安全系统中,在存在可燃气体时触发警报
提醒 ChatGPT
角色和任务以及输出预期将与第一个项目相同。其他方面如下:
目标:
为 ESP32-C3 创建一个清晰且具有指导性的代码示例,以实现以下功能:
-
每
3 秒从 MQ-2 读取数字值(高或低) -
蜂鸣器响并改变 LED 颜色以指示检测到气体
要求:
-
使用
PlatformIO作为你的 IDE -
将 ESP32 的 GPIO 0 连接到 MQ-2 的 D0 引脚
-
将 ESP32 的 GPIO 2、3、10 连接到
三色 LED的 R/G/B 引脚 -
将 ESP32 的 GPIO 11 连接到
蜂鸣器的输入引脚 -
使用 PWM 控制蜂鸣器和
三色 LED -
如果值是高,表示检测到气体,则蜂鸣器响并改变 LED 颜色为红色
-
如果值是低,表示未检测到气体,则关闭蜂鸣器并保持 LED 颜色为绿色
-
打印当前值、蜂鸣器开关状态以及
LED 颜色
代码示例
main.cpp代码示例可以在以下链接找到:github.com/PacktPublishing/Accelerating-IoT-Development-with-ChatGPT/blob/main/Chapter_8/Project_4/main.cpp.
在这个示例代码中,我们遵循与项目 3相同的函数结构。isGasOn()布尔函数通过从 MQ-2 传感器读取数字值(检测到气体时为高,未检测到气体时为低)来检查气体的存在。此函数返回布尔值,以简化确定系统对气体检测响应的逻辑。
在这个项目中,我们使用了 MQ-2 传感器的数字输出来检测各种气体。这使得我们能够通过 LED 和蜂鸣器发出气体检测信号,从而提高我们在管理数字传感器读取和设置响应式警报方面的技能。
在我们的下一个项目中,我们计划使用 HC-SR04 超声波传感器,通过其发射和接收天线来测量物体距离。这个项目将加深我们对嵌入式系统中传感器集成和实时数据处理的理解。
项目 5 – 距离测量
本项目突出使用了 HC-SR04 传感器,这是一种在众多 Arduino 项目中广泛使用的超声波传感器,尤其是在涉及距离测量的项目中。HC-SR04 超声波传感器基于一个基本而有效的原理运作。它以 40 kHz 的频率发射超声波,这是一种声波。这种波在空气中无缝传播,作为传感器的探测机制。如果发射的波路径上恰好有物体或障碍物,声波会被反射回来,有效地弹回到传感器。这种现象类似于在大型空旷房间或山谷中听到的回声。通过测量声波发射和回声接收之间的时间间隔,传感器可以精确计算出物体或障碍物的距离。这种精确可靠的功能使得 HC-SR04 超声波传感器成为各种应用的流行选择。这包括但不限于机器人技术、避障系统和距离检测项目。
规格
| 规格 | 描述 |
|---|---|
| 接口 | 4 个引脚,VCC,GND,Trig(触发),和 Echo(接收) |
| 触发输入信号 | 10 μS TTL (晶体管-晶体管 逻辑)脉冲 |
| 回波输出信号 | 输入 TTL 电平信号,持续时间与距离成正比 |
| 工作电压 | 5 V DC |
| 工作温度 | -20 °C 至 +70 °C |
| 工作电流 | 15 mA |
| 超声波频率 | 40 kHz |
| 最大范围 | 4 m (约 13 英尺) |
| 最小范围 | 2 cm (约 0.8 英寸) |
| 测量角度 | 15 度 |
| 分辨率 | 0.3 cm |
应用
-
避障系统:在机器人技术中,HC-SR04 传感器用于检测机器人路径上的障碍物,使其能够绕过它们
-
距离测量:该传感器用于需要精确距离测量的应用,例如在制造和质量控制过程中
-
停车传感器:在汽车应用中,HC-SR04 可用于开发停车辅助系统,以提醒驾驶员车辆后方物体的距离
-
安全和监控:该传感器可以集成到安全系统中,以检测受限区域中的人员或物体的存在
提示 ChatGPT
其角色和任务将与第一个项目相同。其他方面如下:
目标:
为 ESP32-C3 创建一个清晰且具有指导性的代码示例,以实现以下功能:
-
每100 毫秒从 HC-SR04 读取输出值 -
蜂鸣器发出声音并改变 LED 颜色以指示异常距离范围
要求:
-
使用 PlatformIO 作为您的 IDE -
将 ESP32 GPIO 0 连接到 HC-SR04 的 Trig 引脚,将引脚 1 连接到 Echo 引脚 -
将 ESP32 GPIO 2,3,10 连接到 3 色 LED 的 R/G/B 引脚 -
将 ESP32 GPIO 11 连接到蜂鸣器的信号引脚 -
使用 PWM 控制蜂鸣器和三色 LED -
如果距离值在 10 cm 以内,蜂鸣器蜂鸣并改变 LED 颜色为红色 -
如果距离值在 10 cm 到 30 cm 之间,蜂鸣器蜂鸣并改变 LED 颜色为蓝色 -
如果距离值超过 30 cm,关闭蜂鸣器并保持 LED 颜色为绿色 -
打印当前值,蜂鸣器开/关状态,以及LED 颜色
代码示例
main.cpp代码的示例可以在以下链接中找到:github.com/PacktPublishing/Accelerating-IoT-Development-with-ChatGPT/blob/main/Chapter_8/Project_5/main.cpp。
在这个项目中,我们使用了 HC-SR04 超声波传感器来报告从传感器到其路径上物体的实时距离测量。与我们的前一个项目不同,前一个项目返回布尔结果,指示条件的存在或不存在,本项目使用readUltrasoundSensor()函数来计算并返回测量的距离。这个距离是通过测量从 Trig 引脚发送脉冲到在 Echo 引脚接收回波之间的时间间隔来计算的,使用SOUND_SPEED_CM_PER_US = 0.017常量,它代表声速在 cm/μs,除以 2。测量的距离通过 LED 和蜂鸣器指示,增强了我们处理实时传感器数据和实施响应式警报系统的能力。
在我们的下一个项目中,我们计划整合 SW-520D 传感器进行倾斜检测。这个项目将专注于加深我们对监控倾斜状态变化和及时响应的理解。这将进一步培养我们在实时监控和警报系统中整合多种传感器类型的专长。
项目 6 – 倾斜检测
本项目采用了 SW-520D 传感器的使用,这是一种简单而高效的倾斜传感器,具有广泛的应用范围。这种多功能性使其适用于从小型爱好者项目到更复杂和先进的电子系统的一切。传感器的核心由两个金属球组成,这些金属球被放置在一个圆柱形外壳内。
该传感器的功能基于其相对于地面的位置。当传感器从水平位置倾斜超过 15 度角时,两个金属球会接触到端子,从而闭合电路。这种机制使得传感器能够检测到方向上的显著变化。
然而,当传感器返回到水平状态或倾斜小于 15 度时,金属球不会接触到端子。这导致电路保持开启状态。
SW-520D 传感器的实际应用非常广泛。通过检测物体的方向或运动,它可用于各种场景,例如监控门的开关,跟踪机器人的运动,甚至作为玩具的组件。
规格
| 规格 | 描述 |
|---|---|
| 接口 | 3 个引脚,VCC,GND,数字输出(HIGH/LOW) |
| 输出类型 | 检测到倾斜时输出HIGH,未检测到倾斜时输出LOW |
| 工作电压 | 3.3 V 至 5 V |
| 工作电流 | 15 mA |
| 工作温度 | -20 °C 至 +80 °C |
| 感测角度 | 通常从水平方向 15 到 80 度触发变化 |
应用
-
报警系统: 用于安全设备中检测篡改或未经授权的物体移动,如保险箱、门或窗户
-
智能家居设备: 用于智能照明系统,根据倾斜角度开关灯或调整亮度,或在智能窗帘系统中自动调整百叶窗或窗帘
-
水准仪: 用于建筑和测量设备中,以确保水平测量和校准的准确性
-
个人安全设备: 集成到老年护理产品中,如跌倒探测器,当检测到跌倒时会提醒护理人员
向 ChatGPT 发送提示
角色任务和输出期望将与第一个项目相同。其他方面如下:
目标:
为 ESP32-C3 创建一个清晰且具有指导性的代码示例,以实现以下功能:
-
每 3 秒从 SW-520D 读取一次数字值(HIGH 或 LOW) -
蜂鸣器响并改变 LED 颜色以指示是否检测到倾斜
要求:
-
使用 PlatformIO 作为您的 IDE -
将 ESP32 GPIO 0 连接到 SW-520D 的 D0 引脚 -
将 ESP32 GPIO 2、3、10 连接到3 色 LED 的 R/G/B 引脚 -
将 ESP32 GPIO 11 连接到蜂鸣器的信号引脚 -
使用 PWM 控制蜂鸣器和三色 LED -
如果值为 HIGH,表示检测到倾斜,则蜂鸣器响并改变 LED 颜色为红色 -
如果值为 LOW,表示未检测到倾斜,则关闭蜂鸣器并保持 LED 颜色为绿色 -
打印当前值,蜂鸣器开/关状态,以及LED 颜色
代码示例
在github.com/PacktPublishing/Accelerating-IoT-Development-with-ChatGPT/blob/main/Chapter_8/Project_6/main.cpp中,我们提供了一个示例代码。代码结构与项目 2、3和4中的完全相同。它使用一个isTiltOn()布尔函数从倾斜传感器引脚读取数字值,然后返回结果为真或假。
在这个项目中,我们使用了 SW-520D 倾斜传感器来监测倾斜变化。我们通过读取其数字引脚并解释数据来实现这一点。这种方法使我们能够检测倾斜事件并做出适当的反应,从而提高了我们对基于条件的数字传感器的响应知识的理解。
对于下一个项目,我们计划使用 SW-420D 传感器进行振动检测。我们计划通过数字引脚读取来感应振动状态,采用类似的方法。这将进一步提高我们集成各种传感器类型进行实时监控和警报系统的能力。
项目 7 – 振动检测
本项目使用 SW-420,这是一种高度敏感的振动传感器模块,经过精心设计,可以检测到最轻微的移动。
从成为保护我们家庭和商业的高科技安全系统的一部分,到在先进的警报系统中发挥关键作用,提醒我们潜在的危险,SW-420 传感器已经证明了其多功能性。它不仅限于这些领域;该传感器还在智能车辆中找到了其位置,为更安全、更智能的交通做出了贡献。
此外,在自然灾害管理领域,它在地震检测系统中发挥着至关重要的作用,提供早期预警,以防止人员伤亡和财产损失。SW-420 传感器不仅仅是一个传感器;它是一种救命技术。
该模块最引人注目的特点之一是其振动传感器组件。该组件旨在在检测到的震动超过预定阈值时立即产生信号。这一独特功能使 SW-420 传感器非常适合检测未经授权或意外的移动,为任何集成到其中的系统增加了一层安全和控制。
规格
| 规格 | 描述 |
|---|---|
| 接口 | 3 个引脚,VCC,GND,数字输出(HIGH/LOW) |
| 输出类型 | 检测到振动时为HIGH,未检测到振动时为LOW |
| 工作电压 | 3.3 V 至 5 V |
| 工作电流 | <15 mA |
| 工作温度 | -20 °C 至 +70 °C |
| 感测灵敏度 | 通过板载电位器可调 |
应用
-
安全系统:用于检测通过门或窗户的未经授权的访问
-
车辆检测:这可以用来检测附近移动车辆引起的震动
-
地震监测:在检测震动和振动的 DIY 项目中
-
工业监控:监控机械的意外震动,这可能表明故障或维护需求
提示 ChatGPT
该项目的角色、任务和输出预期将与本章的第一个项目相同。其他方面如下:
目标:
为 ESP32-C3 创建一个清晰且具有指导性的代码示例,以实现以下功能:
-
每1 秒从 SW-420 读取数字值(高或低) -
蜂鸣器响起并改变 LED 颜色以指示是否检测到振动
要求:
-
使用 PlatformIO 作为您的 IDE -
将 ESP32 GPIO 0 连接到 SW-420 的 D0 引脚 -
将 ESP32 GPIO 2、3、10 连接到 3 色 LED 的 R/G/B 引脚 -
将 ESP32 GPIO 11 连接到蜂鸣器的信号引脚 -
使用 PWM 控制蜂鸣器和三色 LED -
如果值为 HIGH,表示检测到振动,则使蜂鸣器发声并改变 LED 颜色为红色 -
如果值为 LOW,表示未检测到振动,则关闭蜂鸣器并保持 LED 颜色为绿色 -
打印当前值、蜂鸣器开关状态和LED 颜色
代码示例
在 github.com/PacktPublishing/Accelerating-IoT-Development-with-ChatGPT/blob/main/Chapter_8/Project_7/main.cpp 可以找到示例代码。结构与 项目 5 完全相同。它使用 isVibrationOn() 布尔函数从振动传感器引脚读取数字值,然后返回 true 或 false 的结果。
在这个项目中,我们使用了 SW-420 振动传感器,通过读取其数字引脚并解释结果来检测振动状态的变化。这种方法使我们能够检测振动并相应地做出反应,进一步增强了我们对使用数字传感器进行基于条件的响应的理解。
在下一个项目中,我们将使用开关传感器来检测碰撞。这个项目将继续提高您在实时监控和警报系统中集成各种传感器的技能,使用类似的方法来感知和响应碰撞事件。
项目 8 – 碰撞检测
这个项目侧重于碰撞检测的概念,这是许多领域和应用中的基本组成部分。这个项目的主要特点是使用开关传感器,它也通常被称为碰撞开关、机械开关或触觉开关。
这些类型的开关简单而高效,因此成为检测物理接触或冲击的流行选择。它们在各个领域和应用中得到了广泛使用,从复杂的机器人系统到关键的安全设备。这些开关的主要功能是它们能够在遇到任何类型的物理力量或障碍时改变状态——从 ON 到 OFF 或相反。
这种独特特性使它们非常适合需要基本碰撞或接近检测的任务。无论是防止机器人撞到障碍物还是当某个边界被越过时触发警报,这些开关都证明是非常有用和可靠的。该项目旨在全面了解如何在各种实际场景中最佳地使用这些开关。
规格
| 规格 | 描述 |
|---|---|
| 接口 | 3 个引脚,VCC,GND,数字输出 (HIGH/LOW) |
| 输出类型 | 检测到无碰撞时输出 HIGH,检测到物理接触或力时输出 LOW。 |
| 工作电压 | 3.3 V 至 5 V |
| 工作温度 | -10 °C 至 +70 °C |
应用
-
机器人技术:在机器人中用作碰撞传感器,用于检测障碍物并通过改变机器人的路径来防止碰撞
-
安全系统:集成到安全设备中作为篡改开关,用于检测未经授权的访问或违规行为
-
消费产品:在玩具和消费电子产品中用作基本输入设备或检测部件连接或组装时
-
工业机械:用作限位开关,用于检测机器组件的存在或位置,以确保安全和控制
向 ChatGPT 发送提示
角色任务和输出预期将与第一个项目相同。其他方面如下:
目标:
为 ESP32-C3 创建一个清晰且具有指导性的代码示例,以实现以下功能:
-
每1 秒读取一次开关传感器的数字值(HIGH或LOW) -
当检测到碰撞时,蜂鸣器会发出声音并改变 LED 的颜色以指示是否检测到碰撞
要求:
-
使用 PlatformIO 作为您的 IDE -
将 ESP32 的 GPIO 0 连接到开关传感器的 D0 引脚
-
将 ESP32 的 GPIO 2、3、10 连接到三色 LED 的 R/G/B 引脚 -
将 ESP32 的 GPIO 11 连接到蜂鸣器的信号引脚 -
使用 PWM 控制蜂鸣器和三色 LED -
如果值为LOW,表示检测到碰撞,则蜂鸣器发出声音并将 LED 颜色改为红色 -
如果值为
HIGH,表示未检测到碰撞,则静音蜂鸣器并保持 LED 颜色为绿色 -
打印当前值、蜂鸣器开/关状态和LED 颜色
代码示例
访问我们的 GitHub 仓库以获取示例代码:github.com/PacktPublishing/Accelerating-IoT-Development-with-ChatGPT/blob/main/Chapter_8/Project_8/main.cpp。在这个例子中,我们使用 isCollisionOn() 布尔函数来读取数字值。此函数返回布尔值:检测到碰撞时返回 true(当数字值为 LOW 时),未检测到碰撞时返回 false(当数字值为 HIGH 时)。这与之前的项目略有不同。
在这个项目中,我们采用开关传感器通过读取其数字引脚并解释结果来报告碰撞状态的变化。这种方法使我们能够检测碰撞并相应地做出反应,进一步提高了我们使用数字传感器进行基于条件的响应的技能。
在下一个项目中,我们将专注于监测土壤湿度水平。我们将集成土壤湿度传感器来测量和报告土壤湿度,进一步深化我们在使用各种传感器进行实时环境监测和警报系统方面的专业知识。
项目 9 – 土壤湿度检测
在这个项目中,我们正在使用一种高度专业化的土壤湿度传感器来收集有关土壤水分含量的关键数据。该传感器的机制基于土壤电阻率测量的概念。这种技术通过测量两个特别设计的探针之间的电阻力来实现,这些探针被小心地插入土壤中。
土壤水分含量与其电阻力之间的关系非常有趣。本质上,土壤中的水分含量越高,两个探针之间测量的电阻力就越低。这是因为水是良好的导电体,因此,随着土壤中水的增加,电流在探针之间流动变得更容易,从而降低了测量的电阻。
这种反向关系构成了土壤湿度传感器的工作原理核心。通过持续监测电阻水平,传感器可以准确地测量在任何给定时刻土壤中存在的湿度量。这些信息对于各种应用至关重要,从农业实践到环境监测和研究。它允许进行精确的灌溉控制,帮助预测作物产量,并有助于我们了解土壤健康及其对植物生长的影响。
规格
| 规格 | 描述 |
|---|---|
| 引脚 | VCC、GND、模拟输出(A0)和数字输出(D0) |
| 输出类型 | 模拟输出提供与声音强度成比例的连续电压信号。数字输出在无湿度检测时报告HIGH,在湿度检测时报告LOW |
| 工作电压 | 3.3 V 至 5.5 V 直流电 |
| 工作电流 | 15 mA |
应用
-
农业:
-
灌溉管理:它通过提供实时土壤湿度数据来帮助优化灌溉,确保植物获得适量的水分
-
精准农业:它允许农民监测田地不同部分的土壤湿度水平,从而更有效地利用水资源
-
-
环境监测:
-
土壤健康评估:它监测土壤湿度以评估土壤的健康和质量,这对于可持续农业实践至关重要
-
干旱监测:它有助于跟踪土壤湿度趋势,以识别干旱条件并告知水资源管理策略
-
-
园艺 和景观设计:
- 自动灌溉系统:它与自动浇水系统集成,以确保根据土壤的实际湿度需求浇灌花园和景观
提示 ChatGPT
该项目的角色、任务和输出预期将与第一个项目相同。其他方面如下:
目标:
为 ESP32-C3 创建一个清晰且具有指导性的代码示例,以实现以下功能:
-
每 3 秒从湿度传感器读取数字值(HIGH 或 LOW) -
蜂鸣器响/不响,并改变 LED 颜色以指示是否检测到湿度
要求:
-
使用 PlatformIO 作为您的 IDE -
将 ESP32 GPIO 0 连接到湿度传感器的 D0 引脚 -
将 ESP32 GPIO 2、3、10 连接到三色 LED 的 R/G/B 引脚 -
将 ESP32 GPIO 11 连接到蜂鸣器的信号引脚 -
使用 PWM 控制蜂鸣器和三色 LED -
如果值为 LOW,表示检测到湿度,则蜂鸣器响并改变 LED 颜色为红色 -
如果值为 HIGH,表示未检测到湿度,则关闭蜂鸣器并保持 LED 颜色为绿色 -
打印当前值,蜂鸣器开/关状态,以及LED 颜色
代码示例
访问我们的 GitHub 仓库github.com/PacktPublishing/Accelerating-IoT-Development-with-ChatGPT/blob/main/Chapter_8/Project_9/main.cpp,以获取示例代码。在这个例子中,我们使用了一个isMoistureOn()布尔函数来读取土壤湿度传感器的数字值。HIGH值表示未检测到湿度,而LOW值表示检测到湿度。
在这个项目中,我们使用土壤湿度传感器来测量土壤的湿度水平。我们读取传感器的数字引脚并解释结果,这使得我们能够监控土壤湿度并根据需要做出响应。这个过程提高了我们在使用数字传感器进行环境监控和基于条件的响应方面的技能。
在我们的下一个项目中,我们将使用磁场传感器来检测和报告磁场的存在。这将继续增强我们在实时监控和警报系统中集成不同类型传感器的专业知识。
项目 10 – 磁场变化检测
该项目利用了 KY-003 传感器的功能,这是一个霍尔磁传感器模块。该模块是各种电子项目中的关键组件,尤其是那些涉及 Arduino 平台的项目。KY-003 传感器的主要功能是检测磁场。它具有广泛的应用范围,从识别磁体的存在或不存在到测量磁体的精确位置。当与磁铁结合使用时,该传感器还可以用于计数旋转物体,这在许多工业和科学环境中非常有用。
KY-003 模块集成了霍尔效应传感器,这是一种基于迷人原理工作的设备。当在垂直于传感器中电流流动方向施加磁场时,它会在电导体上产生电压差。这个电压差可以通过微控制器检测到,这通常是传感器嵌入的系统中的组成部分。
磁场存在通常通过传感器数字输出引脚的状态变化来指示。根据传感器的设计和使用的磁铁的性质,此引脚可能变为 HIGH 或 LOW。这种状态变化提供了一个清晰、二进制的信号,可以用于触发系统中的其他组件或过程。
规格说明
| 规格 | 描述 |
|---|---|
| 引脚 | 3 个引脚,VCC、GND 和数字输出(HIGH/LOW) |
| 输出类型 | 当检测到磁场时输出为HIGH,当磁场移除时返回LOW |
| 工作电压 | 5 V |
| 工作温度 | 40 °C 至 85 °C |
| 工作电流 | 非常低 |
应用
-
磁场检测:感知磁场的存在或不存在
-
转速测量:用于计算磁轮或齿轮的旋转次数,适用于速度表和旋转计数器
-
位置感应:用于确定附着在移动物体上的磁铁的位置,适用于机器人中的精确控制
-
非接触式开关:创建一个在磁场存在时激活的开关,适用于安全和安保应用
向 ChatGPT 发送提示
角色任务和输出期望将与第一个项目相同。其他方面如下:
目标:
为 ESP32-C3 创建一个清晰且具有指导性的代码示例,以实现以下功能:
-
每1 秒从霍尔磁传感器读取数字值(HIGH或LOW)| -
蜂鸣器发出声音并将 LED 颜色改为红色以指示是否检测到磁场|
要求:
-
使用 PlatformIO 作为您的 IDE| -
将 ESP32 GPIO 0 连接到 KY-003 传感器的 D0 引脚| -
将 ESP32 GPIO 2、3、10 连接到三色 LED 的 R/G/B 引脚| -
将 ESP32 GPIO 11 连接到蜂鸣器的信号引脚| -
使用 PWM 控制蜂鸣器和三色 LED| -
如果值为HIGH,表示检测到磁场,则蜂鸣器发出声音并将 LED 颜色改为红色| -
如果值为LOW,表示未检测到磁场,则关闭蜂鸣器并保持 LED 颜色为绿色| -
打印当前值、蜂鸣器开/关状态和LED 颜色|
代码示例
访问我们的 GitHub 仓库 github.com/PacktPublishing/Accelerating-IoT-Development-with-ChatGPT/blob/main/Chapter_8/Project_10/main.cpp,以获取示例代码。在这个例子中,我们使用 isMagneticOn() 布尔函数从磁传感器读取数字值。HIGH 值表示检测到磁场,而 LOW 值表示未检测到磁场。
在这个项目中,我们使用磁传感器通过读取其数字引脚并解释结果来检测磁场的存在。这种方法与涉及 PIR 运动、倾斜和振动检测的先前项目类似,加强了你对数字传感器集成和响应机制的理解。
经过各种项目案例的丰富旅程后,我们现在已经成功完成了所有 10 个项目。每个项目都经过精心详细说明,提供了代码的实际示例,以确保全面理解。这些项目从简单的传感器集成到更复杂的实时监控系统不等,每个项目都提供了独特的见解和实际经验。
为了提供最佳的学习体验,我们提供了丰富的资源。你可以在我们的 GitHub 仓库中访问详细的代码示例。这包括主要文件,如main.cpp和platformio.ini,以及向 ChatGPT 的提示。这个仓库组织得很好,可以在github.com/PacktPublishing/Accelerating-IoT-Development-with-ChatGPT/tree/main/Chapter_8找到。
摘要
本章中的 10 个项目经过精心设计,旨在共同提高你在各个关键领域的技能。它们提供了亲身体验各种传感器的机会,每个传感器都有其独特的特性和用法。你将学习如何实现实时监控系统,这是物联网应用的关键方面。此外,这些项目将帮助你了解如何使用 ESP32-C3 和 PlatformIO 开发响应式物联网系统。在第十一章中,有如何使用 PlatformIO 在 ESP32 中编译和上传代码的说明,你可以应用这些说明来实现这 10 个项目。
通过完成这些项目,你不仅将获得技术技能,还能培养在物联网开发领域中至关重要的解决问题的能力和批判性思维能力。我们希望这段旅程对你来说就像我们整理它一样丰富多彩。
从下一章开始,我们将开始一段选择 DHT11 温度和湿度传感器的实际旅程。你也可以从这 10 个项目中选择另一个案例。这段实际旅程将从学习如何使用 ChatGPT 绘制物联网应用图开始,在布线硬件和编写第一行代码之前。定义良好的图示不仅能够生动地展示你的应用流程,还将作为组织代码生成逻辑的指南。
第九章:使用 AI 工具绘制应用程序流程图
在上一章中,我们探讨了 10 个适合初学者的物联网项目,并附有 ChatGPT 提示示例。希望你现在迫不及待地想要选择一个项目,开始你的创新开发之旅。
本章建议在你开始编码之前,先为你的应用程序设计一个流程图作为你的第一个实践项目。这一步至关重要。我们将指导你如何使用 AI 工具创建详细图表,说明应用程序如何在本地工作、连接到互联网以及访问云端。这些图表将帮助你理解数据交互、错误处理以及物联网项目中不同组件的集成。到本章结束时,你将能够借助 AI 工具将你项目应用程序的叙述转化为一个全面的图表。
我们将涵盖以下主题:
-
使用图表改善应用程序之旅
-
本地数据处理
-
建立互联网连接
-
将传感器数据发送到云
-
云端数据处理
使用图表改善应用程序之旅
在开始编码之前,一个全面的应用程序流程图是有益的。详细的图表可以阐明本地数据处理过程、传感器数据与本地电子设备的交互、错误处理、功耗机制以及激活无线连接设置的条件。一旦数据到达云端,应创建一个图表来概述数据存储、转发、处理、分析、可视化和客户通知的流程。
编写一个详尽的叙述,精确地描述你的关于数据流的故事。这个故事将作为指南,提供明确的指示,以确保你的代码符合你的特定需求和目标。
来自传感器的原始数据通常形成从小几比特到字节的微小数据包。这似乎是一个简单、直接且直接的旅程,其中 MCU 捕获这些数据并将其发送到其无线接口以访问互联网,最终到达云端。然而,在实际部署中,这段旅程很少是平静和愉快的,总是遇到许多异常情况和不可控的挑战。
因此,在编写第一行代码之前,创建一个说明每个阶段数据处理方式的图表至关重要。这不仅让你清楚地了解应用程序的工作方式,还作为后续使用 ChatGPT 进行编码过程的指导基准。
有许多 AI 工具可供使用,可以帮助您创建此类图表。对于简单的文本块格式图表,您可以使用 ChatGPT-4o(免费)。或者,您可以在 ChatGPT 4 中使用 GPTs,如Diagram: Show Me(这需要订阅)。对于更专业的图表,请考虑使用专门的 AI 驱动网站,例如www.mermaidchart.com/。在以下章节中,我们将练习使用www.mermaidchart.com上的 AI 聊天功能生成典型场景的图表。
本地数据处理
传感器数据首先由 MCU 在本地收集。在大多数情况下,MCU 在以下情况下在本地处理传感器数据:
-
正常情况:MCU 成功从传感器获取数据,或者传感器按预期触发事件。
-
异常情况:MCU 无法从传感器获取数据,或者传感器未能触发事件。在这种情况下,最可能的原因是传感器初始化失败或硬件故障。
为了提升用户体验并快速指示服务状态,考虑在您的物联网设备上使用可变色 LED 和蜂鸣声,向用户传达有意义的消息。
考虑到这一点,让我们使用www.mermaidchart.com/上的 AI 聊天功能生成一个流程图。
以下截图显示了在 mermaidchart.com 上提示 AI 聊天创建图表的过程。

图 9.1 – mermaidchart.com 生成图表的概述
您可以使用以下提示作为在AI Chat窗口中插入指令的示例:
任务:假设您正在计划开发一个用于监控客户仓库条件的温度传感器端设备。此设备包括温度传感器、MCU、四个不同的 LED 用于各种状态指示(温度范围、Wi-Fi 接入、AWS 云接入和系统信息)、蜂鸣器和嵌入式 Wi-Fi 模块。
操作:创建一个展示本地数据交互序列的图表:
-
当 MCU 成功读取传感器的数据时,它将执行以下操作-
如果数据在正常范围内:LED1(温度指示器)显示稳定的绿色;关闭蜂鸣声 -
如果数据低于正常范围:LED1 变为稳定的蓝色;发出低音调的蜂鸣声; -
如果数据高于正常范围:LED1 闪烁红色;发出高音调的蜂鸣声;
-
-
当 MCU 无法读取传感器的数据时,它将执行以下操作如果数据检索失败,MCU 将在进入故障状态前尝试 3 次,LED#1 变为关闭状态,LED4(系统错误指示器)变为稳定的红色,并持续发出蜂鸣声
目标:确保图表清晰,准确反映设备的数据交互流程。它应直观地表示传感器数据处理、LED 响应、Wi-Fi 和 AWS 云连接以及基于不同温度读数的蜂鸣器警报。
生成的图表如下所示。

图 9.2 – 数据本地处理流程
在本节中,我们设计了一个包含收集到的值、LED 颜色变化以及蜂鸣器蜂鸣开/关的数据本地处理流程。如图图 9.1所示,我们假设使用本地 Wi-Fi 网络将数据报告给 AWS 云。然而,在实际部署中,通过本地 Wi-Fi 网络的互联网访问仍然存在异常情况,例如 Wi-Fi 网络背后的防火墙可能会阻止设备访问互联网。
建立互联网连接
在处理本地数据后,建立互联网连接是必要的,以便将数据报告到云。为了节省电力,物联网设备通常不需要始终保持在线连接。相反,它应该只在有数据要传输时建立互联网连接。
假设使用家庭 Wi-Fi 网络访问互联网,您可能会遇到两种基本情况:
-
正常情况:MCU 成功连接到您的家庭 Wi-Fi 路由器并获得有效 IP 地址
-
异常情况:由于信号强度弱或 SSID 和密码不正确等原因,MCU 无法连接到您的家庭 Wi-Fi 路由器(未分配有效 IP 地址)
继续使用mermaidchart.com,可以生成流程图,如下所示。以下提示用于生成图表:
任务:假设你正在计划开发一个用于监控客户仓库条件的温度传感器端设备。该设备包括温度传感器、MCU、四个用于不同状态指示的独立 LED(温度范围、Wi-Fi 访问、AWS 云访问和系统信息)、蜂鸣器和嵌入式 Wi-Fi 模块。你现在正专注于以下方面的数据连接序列:
行动:创建一个说明 Wi-Fi 连接序列的图表。MCU 在从传感器收集数据后,将启动与家庭 Wi-Fi 路由器的连接。
-
正常情况:如果 IP 地址由家庭 Wi-Fi 路由器分配,LED2 将显示稳定的绿色。 -
错误处理:如果 MCU 无法连接到 Wi-Fi 路由器,它将进行三次额外的尝试。如果失败,LED2 将发出稳定的红色光以指示连接问题。
目标:构建一个清晰界定设备操作流程的图表,包括 LED 信号解释和 Wi-Fi 连接。该图表应有效地传达设备如何响应各种数据条件,管理 Wi-Fi 连接,并通过 LED 颜色设置指示系统状态。
生成的图示如下所示:

图 9.3 – Wi-Fi 访问流程
在本节中,我们设计了一个流程来访问家庭 Wi-Fi 网络,考虑了正常和异常情况。现在,在成功接入互联网后,我们期望传感器数据到达云端。然而,此过程可能有例外。例如,设备可能由于认证凭证不正确而被云拒绝,我们需要意识到这种场景。
将传感器数据发送到云端
一旦建立无线连接并获得 IP 地址,您的设备将准备好向云端传输数据。然而,在此步骤中仍需考虑两种情况:
-
正常情况:MCU 成功连接到云
-
异常情况:MCU 由于某些原因(例如错误的注册凭证)无法连接到云。
使用 mermaidchart.com,你可以得到如下所示的流程图。以下提示用于生成该图:
任务:假设您正在计划开发一个用于监控客户仓库条件的温度传感器端设备。此设备包括温度传感器、MCU、四个用于不同状态指示的独立 LED(温度范围、Wi-Fi 访问、AWS 云访问和系统信息)、蜂鸣器和嵌入式 Wi-Fi 模块。您现在正专注于数据到达云端,考虑以下方面:
操作:创建一个图示,说明数据到达云端的顺序,即 AWS IoT Core`。
-
云连接:MCU 初始化并与 AWS IoT Core 建立安全的 MQTT 通信以进行数据传输。
-
数据处理:-
正常情况:MCU 从 AWS IoT Core 收到确认并设置 LED3 为稳定绿色。 -
错误处理:在 MCU 未从 AWS IoT Core 收到确认的情况下,它将尝试重新发送数据三次。如果所有尝试都失败,LED3 将激活为稳定红色,表示云连接存在问题。
-
目标:此图示应作为视觉指南,清晰地传达数据传输到 AWS IoT Core 所涉及的步骤,包括处理通信成功或失败机制。
生成的图示如下所示。

图 9.4 – 云访问流程
云端数据处理
一旦设备与云建立通信并发送数据,数据开始在云中传输。您仍然可以使用 mermaidchart.com 创建一个数据处理流程图,概述数据是如何被处理的:
任务:假设您正在计划开发一个用于监控客户仓库条件的温度传感器端设备。该设备包括温度传感器、MCU、四个不同状态的 LED 指示灯(温度范围、Wi-Fi 访问、AWS 云访问和系统信息)、蜂鸣器和嵌入式 Wi-Fi 模块。当前的开发阶段集中在 AWS 云环境中的数据处理和上。
行动:设计一个综合图表,说明各种 AWS 云服务之间数据处理和处理的顺序。
-
数据摄取:传感器数据通过 MQTT 协议发布到 AWS IoT Core
-
数据处理和分析:-
AWS IoT Core 将异常传感器数据转发到 AWS Lambda 进行处理和分析。 -
当检测到异常情况时,AWS Lambda 触发警报通知到 AWS SNS。 -
AWS SNS 向客户发送电子邮件或消息以通知
-
-
数据存储、丰富和查询:AWS IoT Core 将所有传感器数据路由到 AWSIoT Analytics
-
数据可视化:AWS QuickSight从AWS IoT Analytics查询传感器数据以生成客户应用程序仪表板。
目标:构建一个详细展示不同 AWS 服务间数据处理流程的图表。此图表不仅应描绘操作工作流程,还应阐明数据如何从传感器移动到云端,经过处理和分析,存储、可视化,并触发警报通知。强调 AWS IoT Core、AWS Lambda、AWS IoT Analytics、AWS SNS 和 AWS QuickSight 之间的集成和交互,以提供系统架构和数据生命周期的清晰全面视图。
生成的图表如下所示。

图 9.5 – 云端数据处理
在生成准确表示您应用程序流程的图表后,您将对其功能有全面的理解,从传感器到云端。这个概述不仅提供了您应用程序的视觉表示,还有助于识别潜在的改进区域或问题。在有了这个视觉辅助工具和对您应用程序工作流程的清晰理解之后,您就可以开始您的创新之旅了。下一步关键步骤是在创建第一个项目之前设置您的开发环境。
摘要
在本章中,我们开始了您向物联网创新之旅。借助如 mermaidchart.com 这样的 AI 驱动工具,您可以可视化清晰的应用程序流程。这有助于掌握服务交互的逻辑,包括如何管理异常情况。不仅此图表从系统设计角度增强了您的理解,而且它还作为 ChatGPT 理解您的流程并相应生成代码的简化指南。
随着我们进入下一章,我们将专注于设置开发环境。这将通过在 Visual Studio Code 中使用 PlatformIO IDE 来完成。这种设置至关重要,因为它简化了由 ChatGPT 生成的软件代码的编译和上传过程。更具体地说,在随后的示例项目中,您将获得实际操作经验,学习如何有效地使用该环境来编译和上传软件代码。这项实际练习不仅将巩固您对开发过程的理解,还将为您提供处理未来物联网项目所需的基本技能。
第三部分:实践端到端项目
本部分提供了使用 Visual Studio Code 和 PlatformIO IDE 建立开发环境的详细指南,重点关注物联网项目的软件安装和设置。它介绍了 ChatGPT 辅助的 ESP32 微控制器 C++编程,包括代码编写、编译和调试。此外,指南详细说明了使用 ChatGPT 将 ESP32 连接到 Wi-Fi 以及通过 MQTT/TLS 与 AWS IoT Core 集成的过程。您将学习如何将传感器数据传输到 AWS IoT Core,利用 ChatGPT 辅助的 Python 编码进行 AWS Lambda 的数据处理,以及使用 AWS IoT Analytics 进行数据存储和查询管理。最后,它教授如何在 ThingsBoard Cloud 上创建交互式数据可视化仪表板,使您能够自信地从头到尾管理自己的综合物联网项目。
本部分包含以下章节:
-
第十章, 设置您的第一个项目的开发环境
-
第十一章, 在 ESP32 上编写您的第一个代码
-
第十二章, 建立 Wi-Fi 连接
-
第十三章, 将 ESP32 连接到 AWS IoT Core
-
第十四章, 将传感器数据发布到 AWS IoT Core
-
第十五章, 在 AWS 云上处理、存储和查询传感器数据
-
第十六章, 在 ThingsBoard 上创建数据可视化仪表板
第十章:设置第一个项目的开发环境
在 第八章 中,我们介绍了 10 个适合初学者的物联网项目,并提供了 ChatGPT 提示示例。您可能会兴奋地选择一个项目并开始您的创新开发之旅。在 第九章 中,我们通过使用 AI 驱动的工具介绍了应用图生成方法。
在本章中,我们的目标是赋予您将创新物联网概念转化为现实所需的实用技能。学习如何使用 VS Code、PlatformIO IDE 和其他编码扩展设置开发环境,将为您提供有效编译和上传软件代码所需的工具。此外,在 PlatformIO 中创建您的第一个项目将提供实际操作经验,加深您对开发过程的理解。这些技能不仅将促进您当前的学习之旅,还将为未来的物联网项目做好准备,增强您将创意愿景变为现实的能力。
在本章中,我们将涵盖以下主题:
-
安装 Visual Studio Code (VS Code)
-
设置 PlatformIO IDE
-
安装其他编码辅助扩展
-
在 PlatformIO 下创建您的第一个项目
技术要求
本章将向您展示如何在 MacBook 上安装 VS Code、PlatformIO 和其他编码辅助扩展。为了获得最佳效果,请确保您的系统配备了运行 macOS Sonoma、版本 14.3.1 的 ARM CPU(即 Apple M1)。
安装 Visual Studio Code (VS Code)
Visual Studio Code,通常简称为 VS Code,是由微软开发的一个轻量级但功能强大的源代码编辑器。它提供了对 JavaScript、TypeScript 和 Node.js 的内置支持,以及丰富的扩展生态系统,支持其他语言,如 C++、C#、Python、PHP 等。此外,它还提供了调试、语法高亮、智能代码补全、代码片段、代码重构和嵌入式 Git 等功能。
在本章中,我们将指导如何在 macOS 上安装 VS Code。您可以从互联网上找到 Windows 和 Linux 的安装指南。
为了启动我们项目的设置,让我们看看以下流程并在 macOS 上安装 VS Code:
- 首先,您需要通过点击 下载 Mac Universal 从
code.visualstudio.com/下载 VS Code 软件。

图 10.1 – 下载 VS Code
- 在系统下载目录中点击下载的 Visual Studio Code 软件。

图 10.2 – 在下载中找到 VS Code
- 您现在将看到 欢迎 页面。从这里,您可以根据您的偏好选择一个主题。

图 10.3 – VS Code 欢迎页面
- 在左侧侧边栏中,找到 扩展 图标(如图 10.4 中箭头所示)。我们将从 扩展 部分安装 PlatformIO 和其他编码辅助工具。

图 10.4 – VS Code 欢迎页面中的扩展
您现在已完成了 VS Code 的初始安装。下一步是在 VS Code 上安装 PlatformIO IDE 扩展。
设置 PlatformIO IDE
一个开源的 集成开发环境(IDE),PlatformIO 兼容跨平台和跨架构。它支持超过 30 个嵌入式平台,具有多平台构建系统,包含众多库,并支持超过 800 个开源硬件板。它还作为 VS Code 中的强大扩展。在以下步骤中,我们将学习如何安装 PlatformIO:
- 从上一节的 步骤 4 继续操作,点击 扩展。您将在左上角找到搜索窗口,如图 10.5 所示。

图 10.5 – 扩展搜索窗口
- 在搜索窗口中输入
Platformio以定位它。

图 10.6 – 在搜索窗口中搜索“Platformio”
- 在 PlatformIO IDE 下点击 安装 以安装此扩展。

图 10.7 – 选择并安装“PlatformIO IDE”
- 安装后,您将看到如下所示的 PlatformIO 的 欢迎 页面:

图 10.8 – PlatformIO IDE 欢迎页面
- 要首次启动 PlatformIO,点击类似 蚂蚁头 的图标。此操作将启动 PlatformIO 初始化过程。此过程包括安装 PlatformIO 核心和 Python 以及 clang 等其他所需软件包。请根据需要安装它们,并请注意这可能需要几分钟。

图 10.9 – 安装后首次启动 PlatformIO
- 如果之前在您的 MacBook 上尚未安装 clang,请通过点击 安装 允许其安装。

图 10.10 – Clang 工具安装
- 在下一屏幕上继续安装过程,如图 10.11 所示。

图 10.11 – PlatformIO 核心初始化过程
- 安装后点击 立即重新加载。

图 10.12 – 初始化完成并重新加载 PlatformIO
- 重新加载后,您将看到如图 10**.12 所示的 PlatformIO 界面。继续点击TERMINAL,您将被引导到 PlatformIO 终端窗口。

图 10.13 – 打开终端窗口
- 现在我们将安装开源软件包管理器。例如 Ubuntu 和 Debian 这样的 Linux 系统使用
/bin/bash -c “$(curl -``fsSLraw.githubusercontent.com/Homebrew/install/HEAD/install.sh)”。

图 10.14 – 复制 Homebrew 安装链接
- 切换到 VS Code 窗口,将安装链接粘贴到TERMINAL命令行中,并按Enter键。

图 10.15 – 在 PlatformIO 的终端窗口中粘贴 Homebrew 安装链接
- 可能会要求您输入 root 用户密码,这是您 MacBook 的登录密码。

图 10.16 – 输入您的 root 用户密码
- 将开始 Homebrew 的安装过程。然后,在需要时按RETURN或ENTER键继续。

图 10.17 – 在 PlatformIO 上开始 Homebrew 安装
- 完成 Homebrew 的安装过程后,按照指示将 Homebrew 添加到您的
PATH中:

图 10.18 – 将 Homebrew 添加到您的 MacOS 的 PATH 中
- 复制、粘贴并运行第一个命令。

图 10.19 – 执行第一个命令
- 然后复制、粘贴并运行第二个命令。

图 10.20 – 执行第二个命令
- 在终端窗口中,使用
brew install platformio安装 PlatformIO CLI(命令行)。

图 10.21 – 使用 Homebrew 安装 PlatformIO CLI
- PlatformIO CLI 安装完成后,重新启动 VS Code 以在终端窗口中使用 PlatformIO 命令行。

图 10.22 – 通过 CLI 安装 PlatformIO 源
- 重启后,通过 CLI 在终端窗口中使用
pio platform install espressif32安装最新的稳定版 PlatformIO 包。

图 10.23 – 安装 PlatformIO 最新包
- 现在的安装过程应该如以下图所示。

图 10.24 – PlatformIO 包安装过程
安装过程完成后,您需要重新启动 VS Code。恭喜!您已成功设置开发环境,并准备好开始您的第一个项目!
安装后,您可以使用终端窗口中的pio system info命令检查您的 PlatformIO 系统信息。

图 10.25 – 检查 PlatformIO 包信息
我们现在已经成功完成了 PlatformIO IDE 扩展在 Visual Studio Code 中的安装,包括其 CLI 和最新包。这个设置构成了我们编码环境的基础结构。
为了优化我们的开发工作流程和体验,考虑安装额外的扩展是至关重要的。这些扩展可以显著提高您的编码、故障排除和测试过程。
安装其他编码辅助扩展
VS Code 中有许多编码辅助工具作为扩展可用,如 Prettier、缩进彩虹和更好的注释。它们可以帮助使代码更容易阅读和调试,并增强您的编码体验:
-
Prettier:这是一个流行的代码格式化工具,支持多种语言,并且与 VS Code 集成良好。Prettier 会根据一组预定义的样式指南自动格式化您的代码。这有助于保持代码看起来整洁和一致,使其更容易阅读和维护。您可以选择在保存文件时自动格式化代码,或者手动运行它。此工具在团队项目中特别有用,以确保每个人都遵守相同的编码风格,从而减少差异并提高协作。
-
缩进彩虹:这是一个视觉工具,通过以渐变方式着色缩进级别,使缩进更易于阅读。每个缩进级别都有独特的颜色,有助于一眼区分代码的各个作用域和代码块。这在缩进在语言中起关键作用的语言中特别有用,例如 Python,或者在任何复杂的嵌套代码结构中,使代码的逻辑流程更容易跟踪。颜色和作为缩进级别的空格数是可定制的,允许用户根据他们的喜好和编码标准调整外观。
-
更好的注释:此扩展增强了代码中注释的可读性和功能性。它允许您对注释进行分类和彩色编码,使它们更加显眼和组织。例如,您可以区分信息性注释、问题、TODO 项、突出显示或警报,每个都有不同的颜色或格式。
在 PlatformIO 下创建您的第一个项目
在设置开发环境后,让我们来了解一下在 PlatformIO 中创建第一个项目的流程:
- 点击左侧栏中的 PlatformIO 图标。

图 10.26 – 在 VS Code 中启动 PlatformIO IDE
- 在 PIO 主页 下点击 打开。

图 10.27 – PlatformIO 欢迎页面
- 在 快速访问 下点击 新建项目。

图 10.28 – 创建新项目
- 你将看到如下所示的 项目向导。在 名称 字段中为项目命名。

图 10.29 – 给项目命名
- 点击 板 下拉菜单以查找你的 ESP32 板型。

图 10.30 – 查找硬件类型
例如,如果你想使用 ESP32-C3,你可以输入 esp32-c3,然后你会找到你期望的板型。点击板型名称来选择它。

图 10.31 – 选择你将要使用的硬件
- 在 框架 下拉菜单中,确保选择 Arduino 框架,然后点击 完成。

图 10.32 – 在框架下拉菜单中选择“Arduino 框架”
- 然后 PlatformIO 开始自动配置你的项目,如下图所示。

图 10.33 – 正在创建新项目
- 点击 是,我信任作者 以继续。

图 10.34 – 选择“是”以信任作者
- 现在你的第一个项目已经正确创建,如下图所示。点击左侧栏中的 src,你会看到 main.cpp,这是你编写 C++ 代码片段的地方。

图 10.35 – 浏览 main.cpp 模板
到目前为止,所有必要的发展环境设置都应该已经正确配置。你应该能够在 PlatformIO IDE 中成功创建你的第一个物联网项目。
摘要
在本章中,你已经设置了你的开发环境,并准备好创建你的第一个物联网项目。现在你已经配置了 VS Code 和 PlatformIO IDE,你拥有了开始这段创新之旅所需的所有工具和知识。在接下来的章节中,我们将指导你完成第一个项目的实际实施,帮助你有效地应用所学知识。
第十一章:在 ESP32 上编写你的第一个代码
在第十章中完成了开发环境、VS Code 和 PlatformIO IDE 扩展的设置,以及你的第一个项目后,现在是时候开始一个动手实践案例了。从本章开始,我们将设计一个温度和湿度监测应用程序。在本章中,我们将使用 ESP32-C3 和 DHT11 传感器构建一个硬件原型。在随后的章节中,我们将建立 Wi-Fi 连接,在 AWS 上发送和处理数据,并在 ThingsBoard Cloud 上创建一个可视化仪表板。
到本章结束时,你将能够利用 ChatGPT 完成一个操作硬件原型,并本地收集传感器数据。
本章将涵盖以下主题:
-
设计应用程序的本地逻辑
-
使用 ChatGPT 创建流程图
-
构建设备硬件原型
-
指导 ChatGPT 生成 C++代码
-
代码示例
-
使用 PlatformIO 在 ESP32 上编程代码
设计应用程序的本地逻辑
本节将教你如何使用你的逻辑思维来精心设计应用程序流程。这个过程包括为常规程序、不规则场景和故障情况制定计划和策略。考虑应用程序应该如何响应,设备上应该显示哪些视觉和音频指示,以及应该激活哪些功能。
想象一个场景,我们创建一个物联网项目来监控仓库内的温度和湿度。为此,我们需要开发一个具有以下功能的传感器设备:
-
定期测量温度和湿度数据
-
向云端报告传感器数据
-
如果传感器数据超出正常范围,则向客户发出警报
在本节中,我们的重点将放在设备侧的应用逻辑。为了提供最佳的用户体验,我们希望传感器设备不仅定期读取数据,而且通过 LED 和蜂鸣器为仓库工作人员提供视觉和听觉指示。考虑到这些因素,让我们设计应用程序的本地逻辑如下:
-
ESP32 定期从 DHT11 传感器检索温度和湿度数据。
-
ESP32 将检索到的数据与预设的正常范围进行比较。
-
正常情况 - 如果检索到的数据在正常范围内,则绿色 LED 保持常亮,没有任何警报蜂鸣声。
-
异常情况 - 如果检索到的数据低于正常范围,则闪烁蓝色 LED 并发出蜂鸣声表示。如果数据超过正常范围,则闪烁红色 LED 并发出蜂鸣声表示。
-
故障处理 - 如果 DHT11 无法提供数据,系统 LED 将变为红色,并发出连续的声音表示故障状态。ESP32-C3 尝试读取数据三次。如果所有尝试都失败,它将启动重启。
这种结构化逻辑设计确保设备不仅运行高效,而且能够有效地与仓库工作人员沟通,确保对环境变化的快速和适当的响应。使用这种本地逻辑,你可以使用在 第十章 中提到的 AI 工具创建流程图。
使用 ChatGPT 创建流程图
在本节中,我们将创建一个全面且视觉上吸引人的图表,以有效地反映你的应用程序流程。这个过程有助于概念化应用程序的结构,并在下一步构建代码时作为参考。
使用上一节中设计的逻辑流程,并在 mermaidchart.com 的 AI Chat 窗口中创建提示文本,你可以看到生成的服务流程图如下。请注意,此图在 第九章 中并未提及。

图 11.1 – 本地服务逻辑图
一个清晰简洁的图表无疑将帮助你建立全面系统设计,充分考虑正常情况和异常情况。你可以使用此图作为指南来制作硬件原型,并指导 ChatGPT 生成相应的代码。现在,让我们继续到创建硬件原型的部分。
构建设备硬件原型
为了确保 Arduino 兼容的温度和湿度传感器 DHT11 与 MCU ESP32 正确运行以进行数据收集,你必须了解它们之间的正确连线。此外,你还应正确匹配 ESP32、一个用于警报的蜂鸣器和用于指示数据范围的 LED 之间的连线。根据我们在上一节中创建的图,为了制作设备硬件原型,我们需要以下元素:
-
一个微控制器 – ESP32-C3
-
温湿度传感器 – DHT11
-
一个带有红色、绿色和蓝色颜色的数据范围指示 LED
-
ESP32-C3 上的系统 LED
-
一个压电蜂鸣器
让我们更详细地了解这些内容:
- ESP32-C3:在 第三章 中,我们介绍了 ESP32-C3,包括其规格和接口,如 GPIO、SPI 和 I2C。ESP32-C3(EVB 型号:esp32-c3-devkitc-02)模块的引脚布局如下表所示。
| 引脚顺序 | 引脚名称 | GPIO | ADC | I2C | SPI | 其他功能 |
|---|---|---|---|---|---|---|
| 1 | GND | |||||
| 2 | IO00 | GPIO0 | ADC_0 | |||
| 3 | IO01 | GPIO1 | ADC_1 | |||
| 4 | IO12 | GPIO12 | SPI_HD | LED D4 控制 | ||
| 5 | IO18 | GPIO18 | USB_D- | |||
| 6 | IO19 | GPIO19 | USB_D+ | |||
| 7 | GND | |||||
| 8 | UART0_RX | GPIO20 | ||||
| 9 | UART0_TX | GPIO21 | ||||
| 10 | IO13 | GPIO13 | ||||
| 11 | NC. | |||||
| 12 | RST | RTC | ||||
| 13 | 3V3 | |||||
| 14 | GND | |||||
| 15 | PWB | |||||
| 16 | 5V0 | |||||
| 17 | GND | |||||
| 18 | 3V3 | |||||
| 19 | IO02 | GPIO2 | ADC_2 | SPI_CK | ||
| 20 | IO03 | GPIO3 | ADC_3 | SPI_MOSI | ||
| 21 | IO10 | GPIO10 | SPI_MISO | |||
| 22 | IO06 | GPIO6 | ||||
| 23 | IO07 | GPIO7 | SPI_CS | |||
| 24 | IO11 | GPIO11 | VDD_SPI | |||
| 25 | GND | |||||
| 26 | 3V3 | |||||
| 27 | IO05 | GPIO5 | ADC_5 | I2C_SCL | ||
| 28 | IO04 | GPIO4 | ADC_4 | I2C_SDA | ||
| 29 | IO08 | GPIO8 | ||||
| 30 | BOOT | GPIO9 | ||||
| 31 | 5V0 | |||||
| 32 | GND |
表 11.1 – ESP32-C3 引脚分配图
请注意,ESP32-C3 具有两个内置 LED:
-
由 GPIO12 控制的 LED D4
-
由 GPIO13 控制的 LED D5
在本章中,我们将使用 LED D5 作为系统 LED。在第十二章中,我们将配置 LED D4 作为互联网访问状态指示器。
-
DHT11: DHT11 温度和湿度传感器在第第八章中介绍,配备 GND、VCC 和一个输出数据端口。
-
蜂鸣器: 我们这里使用的蜂鸣器是主动型,需要 GND 和 VCC 输入。
-
RGB LED: 我们这里使用的 RGB LED 是一种变色 LED。它配备了 GND、VCC、红色、蓝色和绿色引脚。
-
电线连接: 下面的原理图将指导您如何使用 DHT11 传感器、蜂鸣器和 RGB LED 连接 ESP32-C3 模块。
-
电源供应: 当您通过 USB-C 线缆从 MacBook 连接时,该板的电源通过 USB-C 端口供电。

图 11.2 – 连接原理图
到目前为止,您应该能够根据图 11.2中的原理图正确地将 DHT11 传感器、数据范围指示 LED 和蜂鸣器连接到 ESP32。硬件原型搭建完成后,您现在可以开始对 ESP32 进行编码。
指导 ChatGPT 生成 C++代码
在本节中,我们将直接指导 ChatGPT 在 ESP32 上生成 C++代码,使用精心设计的应用程序逻辑图和硬件引脚连线作为有效提示。
在您仔细审查了图示、理解了应用逻辑并熟悉了在第第六章和第八章中概述的 ChatGPT 提示后,您可以创建自定义提示。这些提示将指导 ChatGPT 根据您的应用逻辑生成代码。
以下是一个提示示例,用于指导 ChatGPT 根据您的应用逻辑生成代码:
你好,ChatGPT,
角色:
你扮演一个具有嵌入式开发专业知识的高级软件开发者,特别是使用 ESP32、Arduino 兼容传感器和 AWS 云 的物联网项目。
任务:
你的任务是指导一个像我这样的对 Python 有基本了解但对 C++ 新手的高中生。你需要开发一个满足以下目标、详细要求、实施指导和输出格式的综合代码片段。
目标:
根据以下要求,在 ESP32-C3 上使用 PlatformIO IDE 和 Arduino 框架以及 Espressif32 平台创建一个教育性的 C++ 代码片段。
要求:
-
引脚连接:-
将 DHT11 的数据引脚连接到 ESP32-C3 的 IO2。 -
将压电蜂鸣器的信号引脚连接到 ESP32-C3 的 IO11。 -
将 RGB LED 连接到 ESP32-C3 的 IO1 以控制红色,IO12 用于蓝色,IO0 用于绿色。 -
使用 IO13 控制 ESP32-C3 内置 LED D5,指定为系统 LED。
-
-
数据检索操作:定期读取 DHT11 传感器的温度和湿度数据,并以摄氏度和华氏度在本地打印出来。 -
正常条件:检索到的数据在预定义的正常范围内。 -
异常条件:检索到的数据超出预定义的正常范围。 -
错误条件:数据检索失败,系统将尝试读取数据三次。如果三次尝试都失败,系统将启动重启。 -
视觉和声音指示:-
正常条件:RGB LED 亮起并关闭蜂鸣器。 -
异常条件:如果数据超出正常范围,RGB LED 将闪烁红色,蜂鸣器将同步鸣叫;如果数据低于正常范围,RGB LED 将闪烁蓝色,蜂鸣器将同步鸣叫。 -
错误条件:系统 LED 亮起并触发蜂鸣器连续鸣叫。
-
必须应用:
-
采用 C++ 编程最佳实践。 -
使用 "constexpr" 声明与硬件相关的变量。 -
使用 millis() 函数管理时间,而不阻塞其他代码执行。 -
优先使用函数而不是类。 -
使用 ledcSetup 和 ledcAttachPin 实现系统 LED 和蜂鸣器的 PWM 控制。 -
在定义常量变量时避免使用魔法数字。 -
使用非阻塞方法独立闪烁 LED。 -
包含必要的依赖库。 -
提供逐行注释以提高清晰度。
输出格式:您的代码片段输出必须符合以下示例格式。
1. // **********************************
2. // Created by: ESP32 Coding Assistant
3. // Creation Date: [Current Date]
4. // **********************************
5. // Code Explanation
6. // **********************************
7. // Code Purpose:
9. // Requirement Summary:
11. // Hardware Connection:
13. // New Created Function/Class:
15. // Security Considerations:
17. // Testing and Validation Approach:
19. // **********************************
20. // Libraries Import
21. // **********************************
23. // **********************************
24. // Constants Declaration
25. // **********************************
27. // **********************************
28. // Variables Declaration
29. // **********************************
31. // **********************************
32. // Declaration
33. // **********************************
35. // **********************************
36. // Setup Function
37. // **********************************
39. // **********************************
40. // Main loop Function
41. // **********************************
42. // **********************************
40. // Functions Definition
41. // **********************************
-
创建一个平台 io.ini 文件,其中包含所需的库依赖和环境设置。 -
确保包含以下信息。
1. [env:esp32-c3-devkitc-02]
2. platform = espressif32
3. board = esp32-c3-devkitc-02
4. framework = arduino
5. monitor_filters = esp32_exception_decoder, colorize
6. monitor_speed = 115200
7. build_src_filter = +<../../src/> +<./>
8. board_build.flash_mode = dio
9. build_flags =
10. -DARDUINO_USB_MODE=1
11. -DARDUINO_USB_CDC_ON_BOOT=1
12. -w
13. lib_deps =
14. adafruit/DHT sensor library@¹.4.6
15. adafruit/Adafruit Unified Sensor@¹.1.14
到目前为止,你已经学会了如何使用这些提示请求 ChatGPT 在你的 ESP32 上生成代码。接下来,让我们看看一些代码示例。
代码示例
您可以在 github.com/PacktPublishing/Accelerating-IoT-Development-with-ChatGPT/tree/main/Chapter_11 找到 ChatGPT_Prompt、main.cpp 代码和 platformio.ini 文件的示例。
在main.cpp的示例中,你可以找到用户定义的setup()和loop()函数,它们实际上是在 FreeRTOS 任务中运行的。我们在第三章的MCUs部分提到了 FreeRTOS。当在 PlatformIO 上使用 Arduino 框架时,ESP32 默认支持 FreeRTOS。Arduino ESP32 平台自动包含 FreeRTOS 堆栈,并在setup()和loop()函数中调用 FreeRTOS 的 API。
在main.cpp示例代码中,以下七个函数是由 ChatGPT 生成的。请注意,函数名可能与 ChatGPT 的输出不同:
-
checkSensorReadings(): 读取传感器数据值 -
updateLEDs(bool red, bool green, bool blue): 根据数据值更新 RGB LED 的颜色 -
indicateNormalCondition(): 当数据值落在预定义阈值范围内时,指示正常条件 -
indicateConditionBelowRange(): 如果数据值低于预定义阈值,指示低于范围的状况 -
indicateConditionAboveRange(): 如果数据值超过预定义阈值,指示超出范围的状况 -
indicateSensorError(): 如果数据值为空,指示传感器错误 -
ledBlinking(): 处理 LED 闪烁和蜂鸣器蜂鸣
此外,为了按照要求控制 LED 和蜂鸣器,ChatGPT 通过digitalWrite()方法创建了正确的方法,PWM 可以有效地控制 LED 的亮度。这比使用电阻来降低 LED 亮度更节能,并且可以实现亮度级别之间的更平滑过渡。此外,PWM 不仅可以用于蜂鸣器的音量控制,还可以生成不同的音调。通过改变 PWM 信号的频率,可以改变蜂鸣器发出的声音的音调,这在需要不同警报音或音符的应用中非常有用。
在本节结束时,你应该能够通过遵循你的指示和应用逻辑来提示 ChatGPT 生成代码。在下一节中,我们将通过 PlatformIO 对 ESP32 进行编译和上传代码。
使用 PlatformIO 在 ESP32 上编程
在本节中,我们将通过 PlatformIO IDE 在 ESP32 上构建和上传代码。然后,我们将观察在 Macbook 上本地打印的消息,并验证结果是否与我们的逻辑一致。
这里是要遵循的步骤:
- 在 VS Code 中启动 PlatformIO IDE,转到你在第十章中创建的项目,在
project文件夹下的src中查找main.cpp,从 ChatGPT 对话窗口中复制你得到的代码,并将其放入main.cpp中,如图所示:

图 11.3 – 将 ChatGPT 中的 main.cpp 代码复制到 PlatformIO
- 在您的项目文件夹中找到
platformio.ini文件,然后从 ChatGPT 对话窗口复制platformio.ini内容,并将其粘贴到此处。

图 11.4 – 从 ChatGPT 复制 platformio.ini 代码到 PlatformIO
- 在
platformio.ini文件示例中,lib_deps下有两个库:adafruit/DHT sensor library@¹.4.6和adafruit/Adafruit Unified Sensor@¹.1.14。您需要从 PlatformIO 的 库 部分手动安装它们,如图中所示截图。

图 11.5 – 在 PlatformIO 中安装 Adafruit Unified Sensor 和 DHT 传感器库
- 寻找如图 图 11.6* 所示的 构建 按钮,以编译从 ChatGPT 生成的代码。

图 11.6 – 代码构建的开始
- 在 图 11.7* 中显示的
SUCCESS表示您的代码已成功编译并准备好上传到 ESP32。如果有任何错误报告,您可以请求 ChatGPT 帮助您纠正,直到构建成功。

图 11.7 – 代码构建完成
- 代码构建成功后,请确保您的 MacBook 和 ESP32 之间的控制台电缆连接正确,按照 图 11.8* 中显示的说明进行检查,然后再将代码上传到 ESP32。请注意,控制台电缆通常是 Type-C 到 Type-C USB 电缆。如果您的 MacBook 和 ESP32 板之间的控制台电缆连接正确,您可以点击 自动 检查 USB 端口是否显示如下。

图 11.8 – 检查 MacBook 的 USB 端口是否连接到 ESP32
- 点击 上传 按钮将编译后的代码上传到 ESP32。

图 11.9 – 点击“上传”将代码上传到 ESP32
- 观察写入过程,直到显示
SUCCESS。

图 11.10 – 代码上传完成
- 写入过程完成后,ESP32 将重新启动,您可以在 串行监视器 中找到 Serial Monitor 按钮,以查看打印在 MacBook 控制台端口上的消息。

图 11.11 – 在串行监视器中打开本地控制台窗口
- 当您的代码正确且符合您的预期,并且您已成功将其上传到 ESP32 后,您可以在 TERMINAL 窗口中看到打印出来的消息。

图 11.12 – 在 TERMINAL 窗口中观察输出消息
现在,你应该准备好在 ESP32 上编译和上传代码以验证结果。如第六章中所述,ChatGPT 在第一轮对话中可能无法提供 100%准确的代码。你可能需要通过进一步的对话不断提示 ChatGPT 来纠正和改进其输出。重复验证过程几次,直到完全符合你的期望。
摘要
在本章中,你将 ESP32-C3 连接到了一个 DHT11 传感器和一个压电蜂鸣器,成功完成了你的第一个物联网项目代码。你应该能够在你的本地控制台端口上验证输出,观察温度和湿度数据。LED 的颜色将改变,根据你的应用程序流程,蜂鸣器将在异常或错误情况下发出蜂鸣声。
在下一章中,我们将通过将你的 ESP32-C3 连接到你的家庭 Wi-Fi 网络来继续前进。这是在将 DHT11 数据传输到 AWS 云之前的一个关键步骤。
第十二章:建立 Wi-Fi 连接
在上一章中,我们成功构建了硬件原型并编写了第一个代码来读取 DHT11 传感器的数据。这些数据可以从 PlatformIO 终端窗口的本地控制台端口观察到。下一步是从 ESP32 建立到您家 Wi-Fi 路由器的 Wi-Fi 连接。
将 ESP32 连接到互联网是将传感器数据发送到云端的必要步骤。在本章中,我们将继续设计 Wi-Fi 访问逻辑,使用 AI Chat 在 mermaidchart.com 绘制图表,并指导 ChatGPT 生成代码以启用 ESP32 上的 Wi-Fi 访问。
本章将涵盖以下主题:
-
设计 Wi-Fi 访问逻辑
-
创建 Wi-Fi 访问流程图
-
指导 ChatGPT 生成代码
-
代码示例
-
在 ESP32 上验证互联网访问
在本章中,我们将 Wi-Fi 凭据、ping 主机地址和 NTP 服务器地址存储在 Platformio.ini 文件中,然后将其传递给主代码。这是一种高度适应性的方法,旨在绕过在代码主体中直接存储信息的需求。这样做使得未来的修改和改进更加容易,从而提高了代码的整体效率、功能、安全性和可读性。
设计 Wi-Fi 访问逻辑
想象一下将我们在上一章中创建的硬件原型带到仓库。在这里,您需要使用正确的 SSID 和密码将 ESP32 连接到本地 Wi-Fi 网络。在收到有效的 IP 地址后,您将 ping 一个公共主机以验证互联网访问,然后与 NTP 服务器同步以获取准确的时钟时间。有两种方法可以向您的设备提供 SSID 和密码:
-
通过
main.cpp代码或通过存储并通过Platformio.ini文件传递。 -
选项 2:使用您的手机帮助 ESP32 连接到您的本地 SSID 并输入您的密码。
选项 1 简单直接,但缺乏安全和灵活性。选项 2 灵活、安全,且易于在各种地点部署,但代码设计复杂度高。
在这个项目中,我们将以 选项 1 为例来配置 SSID 和密码。以下是简化后的 Wi-Fi 访问逻辑:
-
ESP32 使用 SSID 和密码访问本地的 Wi-Fi 接入点(AP)或路由器。
-
本地 Wi-Fi AP 或路由器与 ESP32 执行 WPA2-PSK 认证。
如果认证成功,本地 Wi-Fi AP 或路由器将为 ESP32 分配一个有效的本地 IP 地址。如果密码错误,认证将失败。
-
在正常情况下,一旦 ESP32 接收到有效的 IP 地址,它就会 ping 一个公共互联网目标并与 NTP 服务器同步以获取当前时间。
-
在异常情况下,如果 ESP32 无法获取有效的 IP 地址,ESP32 将设置为打开 LED D4 作为互联网连接失败的指示器,蜂鸣器将发出声音,重试三次,然后重启。
在本节中,我们为 ESP32 访问 Wi-Fi 网络设计了逻辑,考虑了正常情况和异常情况。在下一节中,我们将使用这个逻辑与 AI 创建流程图。
创建 Wi-Fi 访问流程图
与第十一章一样,我们可以在mermaidchart.com上继续生成一个服务流程图,您可能会看到如下示例中生成的一个服务流程图。

图 12.1 – 互联网访问图
在此图中,我们使用 ESP32 上的 LED D4 和蜂鸣器来指示互联网访问状态。它们提供视觉和听觉信号,以便轻松显示互联网访问是否成功。这种方法比在终端窗口中观察打印消息更方便。
在本节中,我们使用 AI Chat 在mermaidchart.com创建了一个互联网访问图。通过遵循此图,我们可以开始指导 ChatGPT 更新第十一章中的先前代码,以支持通过 Wi-Fi 进行互联网访问。
指示 ChatGPT 生成代码
在本节中,我们将要求 ChatGPT 更新在第十一章中生成的先前代码,以实现 Wi-Fi 访问逻辑。您可以指示 ChatGPT 处理先前代码并添加互联网访问需求:
Hi, ChatGPT
请参考以下代码,保持其当前的结构和风格,并支持以下 附加要求。
需求:
-
Wi-Fi 访问:使用预配置的 SSID 和密码访问 Wi-Fi。SSID 和密码存储在Platformio.ini 文件中。 -
正常情况:ESP32 收到一个有效的 IP 地址。然后它 ping 一个公共互联网目标并与 NTP 服务器同步以获取当前时间。 -
异常情况:如果 ESP32 无法获取有效的 IP 地址,ESP32 的 LED D4(IO12)将打开作为 Wi-Fi 连接失败的指示器。蜂鸣器将发出蜂鸣声,系统将在重启前重试三次。
Platformio.ini 文件:
创建一个新文件,包含ESP32Ping 库。
接下来,让我们看看 ChatGPT 为我们生成的代码示例。
代码示例
您可以在github.com/ai-camps/book/blob/main/Chapter_12找到完成的main.cpp和Platformio.ini片段。
在更新的main.cpp中,您可以看到 ChatGPT 基于先前版本创建的三个新函数:
-
connectToWiFi(): 通过 SSID 和密码连接 Wi-Fi 的函数 -
pingHost(): Ping google.com以检查公共互联网是否可访问 -
syncNTP:从公共互联网 NTP 服务器获取当前日期和时间
此外,在更新的 platformio.ini 中,我们还采用了一种灵活的方法来存储和传递以下关键参数,使用build_flags将它们传递到主代码中。在提示时,您可以要求 ChatGPT 使用 platformio.ini 中相同的名称宏。这样做可以确保 ChatGPT 的输出不使用不同的名称:
build_flags =
……..
-D WIFI_SSID=\"WiFi_TEST\" //replace it by your actual Wi-Fi SSID
-D WIFI_PASSWORD=\"WiFi_Password\" //replace it by your actual Wi-Fi password
-D PING_HOST=\www.google.com\ //the DNS server for ping destination
-D NTP_SERVER=\"pool.ntp.org\" //the NTP server for time synchronization
-D GMT_OFFSET_SEC=-28800 //replace it by your local time zone, i.e., -28800 seconds means Pacific time zone, You can find your local time zone information at https://en.wikipedia.org/wiki/List_of_UTC_offsets.
-D DST_OFFSET_SEC=3600 // Day saving time is on
……..
在此上下文中使用build_flags提供了几个好处。它封装了您的凭证参数,将它们与您的代码和配置文件分开,通过降低凭证泄露的风险来增强安全性。这种做法也提高了可移植性,允许您轻松地将项目转移到另一台机器或开发环境中,而不会泄露敏感信息。更新也变得更加容易,因为您只需修改 platformio.ini 文件中的build_flags部分来更改这些参数,从而无需修改您的代码。重要的是,build_flags是一个构建时构造,使其与平台无关,可以在不同的平台上使用而无需修改。
在platformio.ini文件示例中,lib_deps下有一个新的库,即marian-craciunescu/ESP32Ping@¹.7。在编译代码之前,您需要从 PlatformIO 库中手动安装它,如下面的截图所示。

图 12.2 – 从 PlatformIO 安装 ESP32Ping 库
在本节中,我们要求 ChatGPT 通过添加对 Wi-Fi 访问的要求来修改之前的代码。接下来,让我们编译并上传新版本到 ESP32 以验证结果。
验证 ESP32 上的互联网访问
在本节中,我们将观察 PlatformIO 终端窗口中的Ping命令响应和 NTP 同步结果。您可以使用 PlatformIO 按照上一章中的步骤编译和上传此代码到您的 ESP32。
图 12.3显示了在 PlatformIO 控制台终端窗口中打印的成功消息截图。

图 12.3 – 观察终端窗口中的打印信息
记下您屏幕截图上显示的设备 ID。设备 ID 是通过使用ESP.getEfuseMac()函数从 eFuse Mac 地址读取的唯一值派生出来的。在下一章中配置此设备在 AWS IoT Core 时,我们将使用设备 ID 作为THING的名称。重要的是要知道,一旦硬件模块制造完成,eFuse Mac 地址就不能更改。
在本节中,您已经学习了如何使用 Platformio 验证 ChatGPT 生成的更新代码。与第十一章一样,您可能需要调整对 ChatGPT 的提示,使其更加具体。这种迭代对话将有助于微调其代码生成。调整后,您应该重新验证新版本,直到结果完全符合您的服务流程图。
摘要
在本章中,您将 ESP32 连接到您的本地 Wi-Fi 网络。您应该能够在 PlatformIO 控制台 TERMINAL 窗口中验证前面的输出,观察 Wi-Fi 访问、互联网 ping 和 NTP 同步信息,以及温度和湿度数据。
在下一章中,我们将开始将 ESP32 连接到 AWS 云的旅程,首先关注 IoT Core。为此,我们将在 AWS IoT Core 中创建一个设备,生成访问凭证文件,将这些文件编程到 ESP32 上的代码中,并在 ESP32 和 AWS 之间设置基于 TLS(传输层安全性)的 MQTT(消息队列遥测传输)连接。
第十三章:将 ESP32 连接到 AWS IoT Core
在上一章中,我们成功指导 ChatGPT 在 ESP32 上生成代码,以连接到你的 Wi-Fi 网络,获取 IP 地址,ping 一个互联网主机,并与NTP(网络时间协议)服务器同步以获取本地时间。现在,我们正在进入最关键的一步:通过传输层安全性(TLS)连接,使用 MQTT 协议将 ESP32 连接到AWS IoT Core。
到本章结束时,你将能够掌握将 ESP32 配置为 AWS IoT Core 中新的THING所需的技术和知识。不仅如此,你还将能够通过安全的 TLS/MQTT 连接将 ESP32 连接到 AWS IoT Core。
本章将涵盖以下主题:
-
了解将 ESP32 连接到 AWS IoT Core 的方法:了解 AWS IoT Core 实施的基于 X.509 证书的 TLS 安全访问机制
-
在 AWS IoT Core 中创建一个 THING:在 AWS IoT Core 控制台中配置 ESP32 作为新的 THING,生成设备证书和私钥,并附加连接策略
-
在 ESP32 上创建 AWS 凭证头文件:生成一个头文件以存储 TLS 设置中 AWS 根证书颁发机构(CA)证书、设备证书和私钥的内容
-
指导 ChatGPT 在 ESP32 上生成 TLS 和 MQTT 代码:请求 ChatGPT 通过在 ESP32 上导入 MQTT 和 TLS 库以及头文件来生成代码
-
在 ESP32 上验证访问状态:在 ESP32 本地终端窗口中监控连接状态
技术要求
在本章中,我们将继续使用Platformio.ini文件来存储和传递 AWS IoT Core 访问信息到 ESP32 的代码中。除了创建证书头文件外,我们还将创建一个硬件信息头文件,以识别 ESP32 的模块信息并将其包含在主代码中以进行设备识别。
理解将 ESP32 连接到 AWS IoT Core 的方法
如同在第五章([B22002_05.xhtml#_idTextAnchor170])中AWS for IoT*部分所讨论的,AWS 云提供的物联网设备访问服务是 AWS IoT Core。正如该部分所强调的,截至 2023 年 12 月,以下四种通信协议得到支持:
-
MQTT
-
通过 WebSocket 安全传输 MQTT(WSS)
-
超文本传输协议 – 安全(HTTPS)
-
LoRaWAN
在这些协议中,MQTT 因其广泛的应用而脱颖而出。它通过允许发布和订阅消息来满足客户端的需求。MQTT 的机制在第五章的物联网设备与云之间的通信协议部分中进行了解释。
在物联网设备与 AWS IoT Core 之间建立 MQTT 通信之前,必须使用 TLS 创建一个安全的低层连接。TLS 是一种加密协议,旨在在网络中提供安全的通信,支持服务器和客户端的身份验证。
在 ESP32 上实现 TLS 功能需要三个凭证文件来建立基于 X.509 证书的 TLS 连接与 AWS IoT Core:AWS 根 CA 文件、您的 ESP32 设备证书.pem文件和私钥.pem文件。以下是对它们的解释、功能以及获取方法:
-
iot:Data和iot:Data-ATS。iot:Data端点展示由 VeriSign Class 3 Public Primary G5 根 CA 证书签名的证书。iot:Data-ATS端点展示由 Amazon Trust Services CA 签名的服务器证书。您可以在docs.aws.amazon.com/iot/latest/developerguide/server-authentication.html中找到详细信息。请注意,Arduino TLS 库仅支持
iot:Data类型的端点。我们将选择支持iot:Data类型端点的 AWS IoT Core 区域,例如us-west-2-amazonaws.com。您可以在docs.aws.amazon.com/general/latest/gr/iot-core.html中找到这些区域的详细信息,在AWS IoT Core部分的第五章。您可以从
cacerts.digicert.com/pca3-g5.crt.pem下载 AWS 根 CA 证书、VeriSign Class 3 Public Primary G5 根 CA 证书,用于iot:Data类型端点。 -
----``BEGIN CERTIFICATE----- -
base64 编码的
----``END CERTIFICATE-----
此证书包含设备的公钥,并由 CA 签名。它在 TLS 握手过程中用于向另一方证明设备的身份。
----BEGINPRIVATE KEY-----* base64 编码的密钥*----ENDPRIVATE KEY-----
在 TLS 握手过程中,设备不会传输其私钥。相反,它使用该密钥创建数字签名或解密用其公钥加密发送给它的信息,从而证明它持有相应的私钥,而不泄露它。
当您在 AWS IoT Core 控制台中创建一个设备时,系统会提示您下载设备证书 PEM 文件和设备私钥文件。您需要将它们保存,并将内容复制粘贴到凭证文件中,我们将在本章的练习中创建该文件,然后将它们编程到 ESP32 中。我们将向您展示如何创建凭证文件并在本章的主代码中调用它。
在 ESP32 代码实现中,我们将使用两个标准的 Arduino 库:WiFiClientSecure.h用于建立 TLS 连接,以及PubSubClient.h用于执行 MQTT 通信。这两个库通常一起使用,以确保通过 TLS 进行安全的 MQTT 通信:
-
WiFiClientSecure.h:Arduino Wi-Fi 盾库的一部分,这个库支持 TLS/SSL 连接。它是为处理加密连接而设计的WiFiClient的变体,这对于在互联网上安全地传输敏感数据至关重要。 -
PubSubClient.h:这个库提供了一个与 MQTT 服务器进行简单发布/订阅消息的客户端。
以下是在 ESP32 和 AWS IoT Core 之间设置 TLS 连接的步骤:
-
登录 AWS 控制台。
-
选择AWS IoT Core服务
-
创建一个东西。
-
生成并下载证书(设备证书 PEM 和私钥)。
-
生成策略并将其附加到证书。
-
使用 AWS 根 CA 证书和下载的证书在 PlatformIO 中创建
SecureCredentials.h。 -
通过调用
WiFiClientSecure.h和PubSubClient.h来设置 TLS/MQTT 连接,在 ESP32 上编写程序代码。 -
观察 ESP32 本地终端窗口中的打印消息。
在本节中,我们走过了整个流程,从在 AWS IoT Core 中配置设备到建立 TLS 连接。在下一节中,我们将逐步完成此流程。
在 AWS IoT Core 中配置 ESP32
在 AWS IoT Core 中开始配置 ESP32 之前,您必须完成以下任务作为先决条件:
-
在您的区域创建 AWS 账户
-
拥有一个具有管理员访问权限策略的管理员角色
假设您已经完成了前面的任务,让我们按照以下步骤在 AWS IoT Core 中配置您的 ESP32:
- 以管理员角色作为IAM(身份和访问管理)用户从 AWS 控制台登录您的 AWS 账户:

图 13.1 – AWS 登录页面
- 查找并点击IAM服务:

图 13.2 – 定位并启动 IAM 控制台
- 查找并点击左侧的用户:

图 13.3 – 在 IAM 控制台中定位用户
- 找到用于访问 AWS IoT Core 服务的常规 IAM 用户,例如以下截图中的
jun.wen。如果您没有这样的常规 IAM 用户,您可以在以下截图中的 创建用户 上单击以设置一个。此操作遵循 AWS 的 最小权限 原则,这是一种基本的安全实践,涉及授予用户和系统完成任务所需的最小访问级别。在 AWS 中实施此原则对于最小化潜在的安全风险和确保您的 AWS 环境的安全性至关重要。在此步骤中,我们将创建一个常规用户并授予他们足够的访问权限以访问合格的 AWS 资源。一旦我们完成此操作,我们将使用此常规 IAM 用户执行其余步骤的配置。

图 13.4 – 定位常规 IAM 用户
- 单击常规 IAM 用户名称,并确保它已附加到以下截图中的这五个权限策略,因为我们将在后续步骤中使用所有这些服务:

图 13.5 – 检查此常规 IAM 用户的权限策略
在此步骤中,我们将将此常规 IAM 用户附加到本章和第十五章所需的以下权限策略:
-
AWSIoTFullAccess:这提供了对 IoT 全部服务的访问权限,将在本章中使用。 -
AmazonSNSFullAccess:这提供了对 SNS(简单通知服务)服务的访问权限,将在第十五章中使用。 -
AWSIoTAnalyticsFullAccess:这提供了对 IoT 分析服务的访问权限,将在第十五章中使用。 -
AWSLambda_FullAccess:这提供了对 Lambda 服务的访问权限,将在第十五章中使用。
- 如果您没有找到这些权限策略附加到此常规 IAM 用户,请单击前一个截图中的 添加权限。搜索并直接附加策略,如以下截图所示:

图 13.6 – 将必要的权限附加到此常规 IAM 用户
- 现在,您已准备好以此常规 IAM 用户登录 AWS 控制台,如下所示:

图 13.7 – 使用此常规 IAM 用户登录 AWS 控制台
登录后,选择靠近您位置的区域并支持 iot:Data 的端点类型,例如 us-west-2 (iot.us-west-2.amazonaws.com);您可以在 docs.aws.amazon.com/general/latest/gr/iot-core.html 的 AWS IoT Core - 控制平面端点 中找到它:

图 13.8 – 使用 AWS IoT Core 服务选择您的区域
- 在左侧找到并点击IoT Core服务:

图 13.9 – 定位并移动到 IoT Core 控制台
- 您将看到如下截图所示的AWS IoT服务:

图 13.10 – IoT Core 欢迎页面
- 在左侧找到并点击事物,然后点击创建事物:

图 13.11 – 开始创建事物
- 点击创建单个事物并点击下一步:

图 13.12 – 选择创建单个事物
- 给事物一个
deviceID名称,您从上一章运行代码中获得的 eFuse MAC。

图 13.13 – 将 deviceID 分配给事物名称
- 生成设备证书。请注意,证书文件可以与其他设备共享。在创建第一个设备之后,您可以选择跳过创建证书,然后将相同的证书附加到这些设备:

图 13.14 – 生成设备证书
- 现在,您可以下载所有这些文件以供将来使用,或者只需下载如下截图所示的设备证书和私钥文件。将这些文件保存在您的计算机上,我们将复制并粘贴其内容到凭证头文件中,以便在 ESP32 上编程。

图 13.15 – 下载设备证书和私钥文件
- 点击创建事物以完成第一个设备创建过程。

图 13.16 – 完成新设备创建
- 您将看到之前分配的
deviceID。

图 13.17 – 成功页面
- 在左侧,找到并点击策略以创建策略:

图 13.18 – 创建 IoT Core 访问策略
- 您可以在此处输入策略名称,例如,
AWS_IOT_Core_Access,如下截图所示。然后,点击us-west-2) 和您的账户 ID。您可以通过点击右上角的账户名称来获取您的账户 ID 信息:

图 13.19 – 编辑策略文档
这里是策略文档内容的更详细查看(您可以在github.com/PacktPublishing/Accelerating-IoT-Development-with-ChatGPT/blob/main/Chapter_13/AWS_IOT_Core_Access找到示例):
1\. {
2. "Version": "2012-10-17",
3. "Statement": [
4. {
5. "Effect": "Allow",
6. "Action": "iot:Connect",
7. "Resource": "arn:aws:iot:your_region:your_account_id:client/*"
8. },
9. {
10. "Effect": "Allow",
11. "Action": "iot:Publish",
12. "Resource": "arn:aws:iot:your_region:your_account_id:topic/*"
13. },
14. {
15. "Effect": "Allow",
16. "Action": "iot:Subscribe",
17. "Resource": "arn:aws:iot:your_region:your_account_id:topicfilter/*"
18. },
19. {
20. "Effect": "Allow",
21. "Action": "iot:Receive",
22. "Resource": "arn:aws:iot:your_region:your_account_id:topic/*"
23. }
24. ]
25\. }
26.
- 现在,您将创建一个名为
AWS_IOT_Core_Access的策略,如图所示:

图 13.20 – 完成 AWS IoT Core 访问策略创建
- 在左侧,点击 证书,您将看到已创建的证书 ID。点击此 证书 ID:

图 13.21 – 定位之前创建的证书
- 现在,点击 附加策略:

图 13.22 – 开始将策略附加到证书
- 在提示窗口中,选择之前创建的策略。

图 13.23 – 定位之前创建的策略
- 现在,您可以看到附加到此证书 ID 的策略。

图 13.24 – 策略附加成功页面
现在,您已在 AWS IoT Core 中完成了设备配置过程,包括以下步骤:
-
您已创建了一个具有设备 ID 的设备名称(您的 ESP32 的设备 eFuse MAC 地址)
-
您已生成设备证书和私钥
-
您已在您的 PC 上下载了设备证书和私钥
-
您已创建连接策略并将其附加到证书 ID
您可以使用为未来其他设备创建的相同的证书、私钥和连接策略。这意味着当您添加更多设备时,您不需要创建新的证书、密钥和策略。在本步骤中,您已完成了在 AWS IoT Core 中的 ESP32 配置,生成了设备证书和私钥,并创建了一个访问 AWS IoT Core 的权限策略。在本章中,配置任务已在 AWS 端完成;现在,让我们继续编程 AWS 以支持 TLS 和 MQTT。
在 ESP32 上创建 AWS 凭证头文件
如所述,我们将创建一个包含 AWS 根 CA 证书、设备证书和私钥的凭证头文件,这是 TLS 设置所请求的。此头文件将被导入并在 ESP32 的主代码中调用。
你可以在github.com/PacktPublishing/Accelerating-IoT-Development-with-ChatGPT/tree/main/Chapter_13找到SecureCredential.h头文件的示例。此头文件将在main.cpp中调用。你的SecureCredential.h内容应类似于以下截图。

图 13.25 – SecureCredential.h文件格式示例
除了凭证头文件外,我们还需要创建一个硬件头文件来读取 ESP32 芯片组硬件信息,包括用于deviceID的 eFuse MAC 地址。你可以在相同链接文件夹中找到HardwareInfo.h头文件的示例。
只要创建了这两个头文件,SecureCredential.h和HardwareInfo.h,在下一步中,我们将继续提示 ChatGPT 更新上一章的代码,以调用这些新头文件,SecureCredential.h、HardwareInfo.h、WiFiClientSecure.h和PubSubClient.h,在main.cpp代码中,并与 AWS IoT Core 建立 TLS/MQTT 连接。
指导 ChatGPT 在 ESP32 上生成 TLS 代码
现在,让我们列出 ESP32 主代码中访问 AWS IoT Core 所需的必要信息:
-
TLS 证书,将存储在
SecureCredentials.h头文件中 -
MQTT 服务器地址和端口,将存储在
Platformio.ini文件中,例如,AWS_IOT_MQTT_SERVER=\"xxxxxxxxxxxxxx.iot.your_aws_region.amazonaws.com\", AWS_IOT_MQTT_PORT=8883 -
deviceID,将从HardwareInfo.h头文件中填充
注意,AWS_IOT_MQTT_SERVER是以下图中显示的端点地址;它在 AWS IoT 的设置下。请记住从端点地址中删除-ats,因为我们使用的是iot:Data端点类型,而不是iot:Data-ATS。

图 13.26 – 定位你的端点信息
你现在可以继续使用上一章创建的代码,并添加以下提示的 TLS MQTT 要求:
Hi, ChatGPT。
请更新之前的代码,保持其当前的结构、风格和输出格式,并支持以下附加要求:`
-
导入并使用 ESP32 标准库 WiFiClientSecure.h 进行 TLS 和 PubSubClient.h 进行 MQTT 堆栈。 -
导入 SecureCredentials.h,该文件存储 AWS 证书,并在主代码中调用它。 -
导入 HardwareInfo.h 以读取 eFuse MAC 地址作为deviceID。` -
在 Platformio.ini 文件中存储 AWS_IOT_MQTT_SERVER 和 AWS_IOT_MQTT_PORT 信息。 -
在主代码中创建一个名为 connectAWS 的专用函数,用于 AWS IoT Core 访问。 -
正常情况:如果 ESP32 成功访问 AWS IoT Core,打印出成功消息。 -
异常情况:如果 ESP32 无法访问 AWS IoT Core,则打印出接收到的错误消息。
代码示例
main.cpp代码的示例位于github.com/PacktPublishing/Accelerating-IoT-Development-with-ChatGPT/tree/main/Chapter_13。
在 main.cpp 代码中,您将找到一个由 ChatGPT 创建的新函数 connectAWS(),该函数位于 setup() 部分,负责初始化 TLS 连接。在此过程中,它调用根 CA、设备证书和私钥内容:
void connectAWS() // Function to connect to AWS IoT Core
{
// Configure WiFiClientSecure to use the AWS IoT device credentials
net.setCACert(AWS_ROOT_CA); // Set the AWS Root CA certificate
net.setCertificate(AWS_CERT_CRT); // Set the device certificate
net.setPrivateKey(AWS_PRIVATE_KEY); // Set the private key
// Set the AWS IoT endpoint and port
mqttClient.setServer(AWS_IOT_MQTT_SERVER, AWS_IOT_MQTT_PORT);
Serial.println("Connecting to AWS IOT Core");
while (!mqttClient.connect(deviceID.c_str())) // Connect to AWS IoT Core
{
Serial.print(".");
delay(MQTT_RECONNECT_DELAY_MS);
}
if (!mqttClient.connected()) // Check if the client is connected
{
Serial.println("AWS IoT Core connection is failed!");
return;
}
Serial.println("AWS IoT Core is connected successfully!");
}
在编译和上传新代码之前,您需要从 PlatformIO 库中搜索并安装 PubSubClient.h;请参考以下屏幕截图来执行它。

图 13.27 – 安装 PubSubClient 库
现在,您将 SecureCredentials.h 和 HardwareInfo.h 文件保存在 PlatformIO 中与 main.cpp 代码相同的文件夹中,如下面的屏幕截图所示:

图 13.28 – 将 SecureCredential.h 和 HardwareInfo.h 复制到与 main.cpp 同一文件夹中
到本节结束时,您将能够请求 ChatGPT 更新代码以支持 TLS/MQTT 连接。在下一节中,我们将编译和上传代码,并在 ESP32 的终端窗口中验证访问状态。
在 ESP32 上验证访问状态
现在,您可以复制并粘贴 ChatGPT 中更新的主代码,编译并将其传输到 ESP32,然后在本地终端窗口中检查访问状态,如下面的屏幕截图所示。

图 13.29 – 验证 AWS IoT Core 连接状态
在本节中,您已将 main.cpp 代码的修订版上传到 ESP32。之后,您将检查有关 ESP32 和 AWS IoT Core 之间连接状态的打印消息。如果您的 SecureCredential.h 头文件和 AWS MQTT 服务器配置正确,您的 ESP32 应该能够成功连接到 AWS IoT Core。
概述
在本章中,您使 ESP32 通过 TLS 连接通过 MQTT 访问 AWS 云。这是将传感器数据发送到 AWS 云的基本步骤。
在下一章中,在成功连接到 AWS IoT Core 之后,我们将使用 ESP32 上的 Arduino JSON 库发布 DHT11 温湿度和湿度数据到 AWS,并将在 AWS IoT Core 上观察接收到的 MQTT 消息。我们将继续使用 ChatGPT 在 ESP32 上构建代码以发布 MQTT 主题并创建 JSON 有效负载。
第十四章:将传感器数据发布到 AWS IoT Core
在前一章中,我们成功指导 ChatGPT 生成代码,通过 TLS/MQTT 加密连接将 ESP32 连接到 AWS IoT Core。在本章中,我们将使用 MQTT 协议将传感器数据发布到 AWS 云。
到本章结束时,您将能够指导 ChatGPT 在 ESP32 上编程代码,创建 MQTT 发布主题,并生成 JavaScript 对象表示法(JSON)文档。这将允许您封装传感器数据以发送到 AWS IoT Core。
本章将涵盖以下主题:
-
理解通过 MQTT Publish 发送传感器数据的方法:了解 MQTT Publish 操作的数据传输机制
-
在 ESP32 中构建 MQTT 发布主题和有效载荷:指导 ChatGPT 生成代码以创建 MQTT 主题和 JSON 有效载荷
-
验证交付的传感器数据:在本地终端窗口中监控执行结果并观察从 AWS MQTT 测试客户端接收到的消息
技术要求
在本章中,我们将指导 ChatGPT 更新我们在 第十三章 中创建的 ESP32 代码。在 AWS 云上,您将登录 AWS IoT Core 以配置一个 MQTT 测试客户端来订阅一个主题,这是您在 ESP32 代码中创建的 MQTT 发布主题。
在本书中,我们将仅演示使用 MQTT Publish 从 DHT11 传感器向上游传输报告数据到 AWS IoT Core 的操作。将数据从 AWS IoT Core 传输到物联网设备(例如,在执行设备固件升级时)的操作称为 MQTT Subscribe。此操作在本项目中将不会使用。
通过 MQTT Publish 发送传感器数据
在 第五章 中,我们讨论了 MQTT 协议及其发布/订阅模型。以下图描述了 MQTT 代理(如 AWS IoT Core)如何与 MQTT 发布者或 MQTT 订阅者(如物联网设备)交互。在前一章中,我们在 MQTT 发布者(ESP32)和 MQTT 代理(AWS IoT Core)之间建立了 TLS 连接。
一旦成功建立 TLS 连接,下一步就是物联网设备(MQTT 发布者)将传感器有效载荷数据封装成 JSON 格式,并声明一个 主题 以发送到 MQTT 代理,AWS IoT Core。

图 14.1 – MQTT 流程
以下定义适用于 MQTT 协议流程中使用的 主题、有效载荷 和 JSON 术语:
-
deviceID/pub以区分不同设备之间的主题。唯一的deviceID值是从ESP.getEfuseMac()中派生的,它包含在前一章中创建的HardwareInfo.h头文件中。 -
有效载荷:此术语指代传感器原始数据;在本项目的情况下,它包括设备信息、温度和湿度值等,这些数据使用 JSON 格式化。
JSON 是一种轻量级且高度用户友好的数据交换格式。它旨在易于人类读取和编写,同时足够简单,以便机器解析和生成。JSON 不局限于任何特定的编程语言。相反,它是一种与语言无关的文本格式,已被广泛接受和采用,跨越了多种语言。这些语言包括但不限于 C、C++、C#、Java、JavaScript、Perl 和 Python。在结构方面,JSON 由不同的形式组成。例如,一个对象是一个无序的键值对集合。对象的开始由左花括号
{标识,结束于右花括号}。在对象中,每个名称后面跟着一个冒号,名称/值对由逗号分隔。让我们考虑以下示例来阐明这个概念:
1\. { 2. "deviceInfo": { 3. "macAddress": "00:1A:2B:3C:4D:5E", 4. "firmwareVersion": "1.0.5" 5. }, 6. "sensorData": { 7. "temperatureC": 22.5, 8. "temperatureF": 72.5, 9. "humidity": 50 10. } 11\. } 12. -
JsonSerializer.Serialize方法。这是数据传输和存储的一个关键方面,因为它允许将复杂的数据结构转换为易于存储或传输的格式,并在必要时重新构建。通过使用JsonSerializer.Serialize方法,可以有效地管理和操作 JSON 数据,促进无缝的数据交换和通信。在 PlatformIO IDE 中,有一个标准库ArduinoJson.h,用于执行 JSON 格式数据的序列化。
在本节中,我们探讨了 MQTT 通信中的关键术语。这些术语对于在物联网设备和 MQTT 服务器之间交换信息至关重要。在下一节中,我们将将这些术语应用到我们的项目中。
在 ESP32 中构建 MQTT 发布主题和有效载荷
在上一章中,我们介绍了两个与 TLS/MQTT 功能相关的标准 Arduino 库。WiFiClientSecure.h 库用于设置 TLS 连接,而 PubSubClient.h 库用于 MQTT 发布。
在本章中,我们将介绍另一个 Arduino 库,ArduinoJson.h。这个库用于构建 JSON 文档并将其序列化,以便传输到 AWS IoT Core。
在 lib_deps 目录下的 platformio.ini 文件中,然后使用 #include <ArduinoJson.h> 将其集成到你的源代码中。
在编译 main.cpp 代码之前,我们将手动在 Platform 中安装这个库。
基于上一章创建的代码,你可以继续提示 ChatGPT 添加 MQTT 发布主题、JSON 数据格式和序列化要求,以下是一个提示示例:
Hi, ChatGPT
请更新之前的代码,保持其当前的结构、风格和输出格式,并支持以下 附加要求:
-
导入并使用 ArduinoJson.h 进行 JSON 数据格式和序列化操作。 -
导入 SecureCredentials.h,该文件存储 AWS 证书,并在main代码中调用它。 -
导入 HardwareInfo.h 以读取 eFuse MAC 作为唯一的设备 ID。 -
通过设备 ID + "/``pub" 构建发布主题 AWS_IOT_PUBLISH_TOPIC。 -
创建一个名为 "mqttPublishMessage" 的专用函数来发送传感器数据。 -
创建一个包含 "timeStamp", "deviceID", "status", "date", "time", "timezone", "DTS", "data" 以及 "data" 的 "temp_C", "temp_F"和 "humidity" 值的 JSON 字符串。
接下来,让我们看看一些代码示例。
代码示例
您可以在 github.com/PacktPublishing/Accelerating-IoT-Development-with-ChatGPT/tree/main/Chapter_14 找到 main.cpp 代码的示例。以下是从 main.cpp 代码中提取的内容。ChatGPT 按要求创建了一个新函数 mqttPublishMessages():
void mqttPublishMessage(float humidity, float temperatureC, float temperatureF, SensorConditionStatus condition) // Function to publish message to AWS IoT Core
{
if (!mqttClient.connected()) // Check if the client is connected
{
connectAWS(); // Connect to AWS IoT Core if not connected
}
// Fetch the current time
struct tm timeinfo;
if (!getLocalTime(&timeinfo))
{
Serial.println("Failed to obtain time");
return; // Don't proceed if time couldn't be obtained
}
// Format the date and time separately
char formattedDate[11]; // Buffer to hold the formatted date "mm-dd-yyyy"
char formattedTime[9]; // Buffer to hold the formatted time "hh:mm:ss"
// Use strftime to format the date and time separately
strftime(formattedDate, sizeof(formattedDate), "%m-%d-%Y", &timeinfo);
strftime(formattedTime, sizeof(formattedTime), "%H:%M:%S", &timeinfo);
// Get Unix time
time_t unixTime = mktime(&timeinfo);
String conditionStr = condition == Normal ? "Normal" : condition == BelowNormal ? "Below Normal"
:condition == AboveNormal ? "Above Normal"
: "Sensor Error";
// Create a JSON document
StaticJsonDocument<256> doc;
// Populate document
doc["timeStamp"] = unixTime;
doc["deviceModel"] = "DHT11";
doc["deviceID"] = String(ESP.getEfuseMac(), HEX);
doc["status"] = conditionStr;
doc["date"] = formattedDate;
doc["time"] = formattedTime;
doc["timeZone"] = timezoneStr;
doc["DST"] = dstStatus;
JsonObject data = doc.createNestedObject("data"); // Create a nested object for data
data["temp_C"] = temperatureC;
data["temp_F"] = round(temperatureF);
data["humidity"] = humidity;
String jsonString; // Create a string to hold the JSON data
serializeJson(doc, jsonString); // Serialize the JSON document to a string
Serial.print("Publishing message: "); // Print the message
Serial.println(jsonString); // Print the JSON data
// Determine buffer size
size_t jsonSize = measureJson(doc) + 1; // +1 for null terminator
Serial.print("Calculated JSON buffer size: ");
Serial.println(jsonSize); // Print the buffer size
if (!mqttClient.publish(AWS_IOT_PUBLISH_TOPIC.c_str(), jsonString.c_str()))
{
Serial.println("Publish failed");
}
else
{
Serial.println("Publish succeeded");
}
}
此函数使用 MQTT 协议将传感器数据发布到 AWS IoT Core。它接受四个参数:humidity(湿度)、temperatureC(摄氏温度)、temperatureF(华氏温度)和 condition。这些分别代表传感器的湿度、温度读数和条件。
该函数首先检查 MQTT 客户端是否连接到 AWS IoT Core。如果没有连接,它将调用 connectAWS 函数来建立连接。
然后,它使用 getLocalTime 函数获取当前时间。如果失败,它将打印错误消息并退出函数。如果成功,它使用 strftime 函数分别格式化日期和时间。
接下来,它创建一个 conditionStr 字符串来以人类可读的格式显示传感器条件。它是通过使用三元运算符将 SensorConditionStatus 枚举映射到字符串来实现的。
该函数随后使用来自 ArduinoJson 库的 StaticJsonDocument 类构建一个 JSON 文档。该文档包括各种详细信息,如时间戳、设备型号、设备 ID、传感器状态、日期、时间、时区、夏令时状态和传感器数据(温度和湿度)。
使用 serializeJson 函数将 JSON 文档序列化为字符串,并将此字符串打印到串行监视器以进行调试。
该函数使用 measureJson 函数计算 JSON 文档的大小,并将此大小打印到串行监视器。
最后,该函数尝试使用 mqttClient.publish 函数将 JSON 字符串发布到 AWS IoT Core。如果失败,它将打印错误消息。如果成功,它将打印成功消息。
在 github.com/PacktPublishing/Accelerating-IoT-Development-with-ChatGPT/tree/main/Chapter_14 的同一文件夹中,您还可以看到一个 platformio.ini 文件的示例,如下所示:
1. [env:esp32-c3-devkitc-02]
2. platform = espressif32
3. board = esp32-c3-devkitc-02
4. framework = arduino
5. monitor_filters = esp32_exception_decoder, colorize
6. monitor_speed = 115200
7. build_src_filter = +<../../src/> +<./>
8. board_build.flash_mode = dio
9. build_flags =
10. -D ARDUINO_USB_MODE=1
11. -D ARDUINO_USB_CDC_ON_BOOT=1
12. -D WIFI_SSID=\"WiFi_SSID\"
13. -D WIFI_PASSWORD=\"WiFi_Password\"
14. -D PING_HOST=\"www.google.com\"
15. -D NTP_SERVER=\"pool.ntp.org\"
16. -D GMT_OFFSET_SEC=-28800
17. -D DST_OFFSET_SEC=3600
18. -D AWS_IOT_MQTT_SERVER=\"endpoint.iot.your_aws_iot_region.amazonaws.com\"; please be noted the "endpoint" information can be found at the "Settings" in AWS IoT.
19. -D AWS_IOT_MQTT_PORT=8883
20. -w
21. lib_deps =
22. adafruit/DHT sensor library@¹.4.6
23. adafruit/Adafruit Unified Sensor@¹.1.14
24. marian-craciunescu/ESP32Ping@¹.7
25. bblanchon/ArduinoJson@⁷.0.4
26. knolleary/PubSubClient@².8
在 lib_deps 下有一个新的 bblanchon/ArduinoJson 条目。您需要手动在 Platformio 库中查找并安装它。

图 14.2 – 在 PlatformIO 中安装 ArduinoJson 库
在本节中,您已经学习了 MQTT 协议的关键组件,并指导 ChatGPT 通过创建一个新的专用函数来更新您之前的代码,以支持 MQTT 发布操作。现在,让我们编译代码,上传它,并验证结果。
验证交付的传感器数据
编译并将更新的代码上传到 ESP32 后,您可以在本地终端窗口中检查执行结果。
在以下屏幕截图中,显示的发布消息包括在主代码中定义的序列化 JSON 格式有效负载。

图 14.3 – 在本地终端窗口中验证结果
现在,您可以登录 AWS 管理控制台,并选择如图所示AWS IoT。在测试下,点击MQTT 测试客户端。

图 14.4 – 在 AWS IoT Core 中定位“MQTT 测试客户端”选项
在+/pub下。+通配符字符与主题层次结构中的恰好一个项目匹配。例如,订阅Sensor/+/room1将接收发布到Sensor/temp/room1、Sensor/moisture/room1等消息。
在 ESP32 的代码中,我们通过+/pub定义了主题,这里可以匹配每个设备的 MQTT 发布主题。在以下屏幕截图中,您可以看到读取的连接详情为已连接,传感器数据与我们定义在主代码中的 JSON 格式相同。

图 14.5 – 验证 AWS IoT Core 中发布的消息
现在我们已经到达本节的结尾,您将能够在本地终端窗口和 AWS IoT Core MQTT 测试客户端中观察到 MQTT 发布消息操作。如果结果不符合预期,请调整您的提示以更具体地满足您的需求。
摘要
在本章结束时,传感器数据已成功到达 AWS IoT Core。然而,这仅仅是商业级物联网应用中云服务的初始步骤。现在,原始数据需要进一步处理。这可能包括在检测到异常事件时触发即时警报,或将数据存储以供未来分析和可视化。
在下一章中,您将学习使用各种 AWS 服务存储、处理和分析这些传感器数据。我们计划在 AWS IoT Core 中建立两条消息路由规则。第一条规则将涉及 AWS Lambda,这是首屈一指的无服务器计算服务。如果检测到异常传感器数据,我们将请求 ChatGPT 在 AWS Lambda 上生成基于 Python 的算法,这将触发 AWS SNS 上的电子邮件警报。第二条规则将指导数据流向 AWS IoT Analytics 进行存储和后续可视化的准备。
第十五章:在 AWS 云上处理、存储和查询传感器数据
在上一章中,我们成功指导 ChatGPT 在 ESP32 中创建了一个 MQTT 发布主题和 JSON 格式的有效载荷,然后这些序列化数据被发送到 AWS IoT Core。从本章开始,我们将使用额外的 AWS 服务。这些服务将使我们能够处理异常事件、触发相应的电子邮件警报,以及存储、转换、排序和查询所有接收到的传感器数据。
到本章结束时,您将掌握配置各种其他 AWS 服务以处理、存储和查询收集到的传感器数据所需的技能。这将使您能够执行在商业部署环境中常规使用的各种关键任务。
在本章中,我们将介绍以下主要主题:
-
创建客户管理的策略
-
任务 1 – 异常事件处理
-
任务 2 – 数据存储和查询
创建客户管理的策略
在 第十三章 中,我们利用 AWS 中的 最小权限原则 创建了一个常规 IAM 用户,并将其以下权限策略附加到该用户上:
-
AWSIoTFullAccess -
AmazonSNSFullAccess -
AWSIoTAnalyticsFullAccess -
AWSLambda_FullAccess
这些权限在 AWS IAM 控制台中标记为 AWS Managed 策略,由 AWS 创建和管理。它们旨在简化为常用 AWS 服务和任务授予权限的过程。AWS-managed policies 确保您的 IAM 角色遵循最佳安全实践,与 AWS 指南保持一致。然而,对于更具体的用例或要获得更细粒度的控制,通常您需要创建一些 客户管理的 策略。
与 AWS 预定义的、适用于多个账户的 AWS-managed policies 不同,客户管理的策略是您在您的 AWS 账户内管理的 IAM 策略。这使您能够完全控制您设置的权限,从而允许更详细地管理您的 AWS 资源。
由于我们将使用必要的 AWS 资源——IoT Core、Lambda、SNS 和 IoT Analytics——来完成以下两个任务,因此这些服务必须获得适当的角色和权限,以便根据我们的请求执行操作。
这里是这两个任务策略设置的配置步骤:
-
使用您的管理员角色登录 AWS IAM 控制台。
-
在 访问管理 | 策略 下,点击 创建策略。
-
在 策略编辑器 中,通过点击 JSON 创建策略声明。

图 15.1 – 创建策略声明
您可以在 github.com/PacktPublishing/Accelerating-IoT-Development-with-ChatGPT/blob/main/Chapter_15/aws_customer_managed_policy 找到示例策略声明文件。
此客户管理的策略示例授予足够的权限来设置本章中我们将完成的两个任务。以下是每个部分的分解和解释:
-
IAM 角色管理:它允许读取、列出、创建和传递 IAM 角色,限于您自己的 AWS 账户内的服务角色
-
IAM 策略管理:它允许通过服务角色而不是基于身份的策略,在同一 AWS 账户下列出、创建、附加和解除对资源的 IAM 策略
-
IAM 用户管理:它提供列出和获取用户、角色、策略及其附件的权限
-
KMS 密钥描述:当 IAM 用户创建 SNS 主题时是必需的
-
SNS 发布:它授予向您所在区域的任何 SNS 主题发布消息的权限
-
访问分析器:最后的语句允许列出策略生成并使用 AWS IAM 访问分析器验证所有资源中的策略
请注意,您需要在此策略语句示例中将<your_region>和<your_account_id>替换为您自己的信息。您可以在管理账户右上角找到<your_account_id>的值。
-
您现在可以为此策略命名并创建它。例如,您可能称之为
Service_Role_Policy_For_IoT。然而,请随意选择一个符合您偏好的名称。 -
在
Service_Role_Policy_For_IoT中,并将其附加到此 IAM 用户。您应该在策略名称下看到它。

图 15.2 – 新附加的策略
现在,作为 IAM 管理员,我们已经授予 IAM 用户执行以下两个任务设置程序的必要权限。
在商业物联网应用的领域,数据到达云中总是触发两个必须立即执行的基本任务:
-
数据处理
-
数据存储和查询
数据处理操作的主要目标是通常分析来自物联网设备报告的任何异常事件。如果检测到任何异常,需要根据事件的严重性采取适当的行动。这些措施可能包括发送短信警报到启动电子邮件通知,确保对任何潜在问题的及时响应。
数据的存储和随后的查询是物联网设备数据收集的基础。这些操作不仅仅是基本程序,而且在整体操作中起着至关重要的作用。收集的数据通常用于维护操作状态的历史记录,并为未来的预测提供基础。此外,它还有助于创建提供系统状态清晰简洁概述的视觉表示。
现在您已经准备好继续配置以下两个任务。
任务 1 – 异常事件处理
如前一章所述,主 ESP32 代码中的传感器数据以 JSON 格式封装。您可以在以下输出中查看序列化的数据流,如图所示:
Publishing message: {"timeStamp":1713218277,"deviceModel":"DHT11","deviceID":"645ad13bdaec","status":"Normal","date":"04-15-2024","time":"14:57:57","timeZone":"-08:00","DST":"Yes","data":{"temp_C":17,"temp_F":63,"humidity":40}}
在 AWS IoT Core MQTT 测试客户端中,接收到的 MQTT 消息负载将显示如下截图。

图 15.3 – 在 AWS IoT Core 中显示的 MQTT 消息
您可能会在前两条消息中注意到一个名为status的变量。此变量表示传感器的状态,指示温度和湿度值是否在正常范围内,以下或以上。null值表示传感器错误。此状态是通过将实际值与主代码中预定义的值范围进行比较来确定的。
在此任务中,我们将指导 AWS IoT Core 在变量status未设置为Normal时将有效负载数据转发到 Lambda。
要理解这个服务流程,我们将使用mermaidchart.com,如第九章中提到的,创建一个图表,按照以下说明进行:
创建一个流程图来反映以下 AWS 服务之间的交互。`
ESP32 以序列化的 JSON 格式将传感器数据发送到 AWS IoT Core。
AWS IoT Core 使用消息路由规则通过 SQL 语句过滤传感器数据状态。
如果"status"对象设置为"Normal",AWS IoT Core 不会将此事件 转发到 Lambda。
如果"status"对象未设置为"Normal",AWS IoT Core 将此事件 转发到 Lambda。
在接收到非"Normal"状态事件后,Lambda 生成包含传感器数据的电子邮件内容并将其发送到 SNS(亚马逊简单 通知服务)。
SNS 按顺序向预先订阅用户的 电子邮件地址发送电子邮件通知。`
根据前面的说明生成的服务流程如下。

图 15.4 – 任务 1 服务交互流程
此图表明确描述了任务配置流程,从 AWS IoT Core 开始,过滤接收到的数据,创建转发规则到 Lambda,并触发发送到 SNS 的电子邮件通知。
配置步骤
本任务的配置步骤,如图 15.4所示,包括以下阶段:
-
步骤 1 至 13;步骤 15 至 18:在 AWS IoT Core 上创建一个消息路由规则(通过 SQL 语句触发异常传感器数据),指向一个新的 Lambda 函数
-
步骤 14:生成一个新的 Lambda 函数以链接到此规则
-
步骤 19 至 23:建立 SNS 主题和订阅
-
步骤 24 至 31:为 Lambda 函数提供适当的角色以访问 SNS
-
步骤 32:在此 Lambda 函数上创建 Python 代码以从 AWS IoT Core 获取数据,生成电子邮件内容并将其发送到 SNS 以向收件人的地址发送电子邮件通知
让我们详细看看这些步骤。
创建消息路由规则
- 使用我们在上一步骤中创建的常规 IAM 用户jun.wen登录 AWS 控制台。

图 15.5 – 以常规 IAM 用户登录
- 搜索并点击IoT Core服务。

图 15.6 – 打开 IoT Core 控制台
- 点击左侧导航菜单中的消息路由下的规则。

图 15.7 – 定位规则
- 点击创建规则以从 AWS IoT Core 创建规则,向 Lambda 报告异常事件。

图 15.8 – 开始创建规则
- 在此处为规则命名,例如,
Report_Abnormal_Event_to_Lambda。

图 15.9 – 为此新规则命名
- 在此处创建一个 SQL 语句以向 Lambda 报告异常事件。

图 15.10 – 创建 SQL 语句
以下是我们将要使用的 SQL 语句:
1\. SELECT *
2\. FROM "+/pub"
3\. WHERE status <> 'Normal'
SELECT *和FROM '+/pub'语句表示从 JSON 有效负载中选择所有对象,并引用来自任何带有/pub后缀的 ESP32 设备的传入 MQTT 发布主题,其中状态不是正常。
你可能还记得,在 ESP32 代码中,我们创建的发布主题为AWS_IOT_PUBLISH_TOPIC = deviceID + /pub,这意味着任何带有/pub后缀的 ESP32 设备。
您也可以在docs.aws.amazon.com/iot/latest/developerguide/iot-sql-reference.html?icmpid=docs_iot_hp_act找到 AWS IoT SQL 参考。
- 在输入 SQL 语句后,导航到规则操作,并在操作 1下点击选择一个操作。

图 15.11 – 创建由此规则触发的操作
- 搜索并选择Lambda。
w

图 15.12 – 选择 Lambda 作为操作
- 点击创建 Lambda 函数,您将被重定向到 Lambda 控制台。

图 15.13 – 开始创建 Lambda 函数
- 在 Lambda 控制台中创建一个 Lambda 函数。为函数分配一个名称,例如
Process_Abnormal_Event_from_IoT_Core,并选择运行时。AWS Lambda 支持多种语言编写函数,例如 Python、Java、Dot NET、Ruby 和 Node.js。在这个任务中,我们将使用 Python。AWS Lambda 函数支持从 3.8 到 3.12 的 Python 版本,但 AWS 强烈建议使用版本 3.12。选择Python 3.12,然后点击创建函数。

图 15.14 – 使用 Python 运行时创建 Lambda 函数
创建 Lambda 函数
成功创建了一个名为Process_Abnormal_Event_from_IoT_Core的 Lambda 函数。在这个阶段,我们不会在上面部署任何实际代码——这将在最后一步完成。由于我们尚未完成 SNS 的设置,我们将返回到之前的 IoT Core 控制台以继续创建消息路由规则。

图 15.15 – 创建的 Lambda 函数(实际代码尚未部署)
让我们开始吧!
- 在之前的 IoT Core 控制台中,点击动作 1下的刷新,然后点击Lambda 函数以加载我们刚刚创建的新 Lambda 函数。

图 15.16 – 刷新 Lambda 函数
- 选择我们刚刚创建的新 Lambda 函数,然后点击下一步。

图 15.17 – 选择刚刚创建的 Lambda 函数
- 查看规则创建的配置信息,然后点击创建。

图 15.18 – 完成规则创建
- 现在,你可以看到规则已成功创建。

图 15.19 – 在规则下显示新规则
到目前为止,我们已经成功完成了以下操作:
-
创建了一个消息路由规则,允许 IoT Core 向 Lambda 函数报告异常状态
-
创建了一个 Lambda 函数,通过消息路由规则将 IoT Core 连接起来
接下来,我们将在执行任务之前完成剩余的配置:
-
创建一个 SNS 主题并订阅一个电子邮件地址
-
在 Lambda 函数上编写 Python 代码以在主题下生成警报电子邮件内容,该内容被发送到 SNS 以转发到订阅的电子邮件地址。
创建 SNS 主题
- 搜索
SNS并导航到 SNS 控制台。

图 15.20 – 登录 SNS 控制台
- 点击左侧导航菜单中的主题,然后点击创建主题。

图 15.21 – 开始创建 SNS 主题
- 在
DHT11_Abnormal_Event下。FIFO类型对于需要消息排序和去重的用例是一个更好的选择。然而,在我们的案例中,温度和湿度异常事件是独立的,没有任何顺序或关联,所以我们在这里选择标准类型。

图 15.22 – 选择标准类型
- 在成功创建主题后,点击此主题下的创建订阅。

图 15.23 – 创建订阅
- 将协议设置为电子邮件。

图 15.24 – 选择电子邮件协议
- 在端点部分,输入一个用于接收 SNS 关于任何异常事件的电子邮件通知的电子邮件地址。创建订阅后,将向该收件人地址发送确认电子邮件。收件人必须确认才能开始接收通知电子邮件。

图 15.25 – 创建订阅
- 到目前为止,SNS 电子邮件通知已正确设置。

图 15.26 – 订阅已确认
现在,我们已经完成了 SNS 主题的设置,并将电子邮件地址添加到订阅列表中。当 Lambda 向 SNS 发送匹配主题的通知时,此通知的内容将被转发到该电子邮件地址。
现在,我们已经到达了在 Lambda 函数上创建 Python 代码以触发通知的最终阶段。
编程 Lambda 函数
- 在这一最后步骤中,我们需要编程 Lambda 函数,使用之前定义的 SNS 主题向 SNS 发送异常事件电子邮件通知。

图 15.27 – 登录 Lambda 控制台
- 你将看到之前创建的 Lambda 函数。点击其名称以编辑它。

图 15.28 – 编辑 Lambda 函数
- 在 Lambda 函数上编写代码之前,我们需要授予此函数与 SNS 通信的权限。点击配置,然后权限,再点击角色名称。

图 15.29 – 点击执行角色名称
- 在此角色中,点击添加权限。

图 15.30 – 添加权限
- 搜索并选择AmazonSNSFullAccess,然后点击添加权限。

图 15.31 – 添加 AmazonSNSFullAccess 权限
- 现在,在资源摘要下,你应该能看到Amazon SNS。

图 15.32 – 检查是否已添加 Amazon SNS 权限
- 现在,点击代码。我们已经到达了最后一步:在之前创建的 Lambda 函数上编程 Python 代码。

图 15.33 – 代码选项卡
-
由于我们选择了 Python 3.12 作为运行时语言,我们可以继续指导 ChatGPT 根据我们的服务逻辑设计生成代码:
Hi, ChatGPT,请开发一个符合以下要求的 Python 3.12 代码,在 AWS Lambda 函数上:-
AWS IoT Core 将任何异常事件(对象“状态”的值不是“正常”)转发到 Lambda 函数。 -
Lambda 函数从 IoT Core 接收 JSON 格式的数据,以下是一个示例结构:1\. example: 2\. { 3. "timeStamp": 1713302072, 4. "deviceModel": "DHT11", 5. "deviceID": "645ad13bdaec", 6. "status": "Above Normal", 7. "date": "04-16-2024", 8. "time": "14:14:32", 9. "timeZone": "-08:00", 10. "DST": "Yes", 11. "data": { 12. "temp_C": 19, 13. "temp_F": 66, 14. "humidity": 99 15. } 16\. } 17.
在接收到数据后,Lambda 函数应生成以下格式的电子邮件内容,并通过“arn:aws:sns:my_region:my_account_id:DHT11_Abnormal_Event”主题发送到 SNS。1\. example: 2. 3\. Alert: DHT11 Abnormal Event Detected! 4\. Details: 5\. - Status: [value from "status"] 6\. - Device ID: [value from "deviceID"] 7\. - Device Model: [value from "deviceModel"] 8\. - Timestamp: [value from "timeStamp"] 9\. - Date: [value from "date"] 10\. - Time: [value from "time"] 11\. - TimeZone: [value from "timeZone"] 12\. - DST: [value from "DST"] 13\. - Temperature (C): [value from "data.temp_C"] 14\. - Temperature (F): [value from "data.temp_F"] 15\. - Humidity: [value from "data.humidity"] 16. 17\. Please take the necessary actions! 18.-
您必须创建两个独立的函数:format_email_content(received_event)用于生成包含事件详情的电子邮件内容,以及 lambda_handler(received_event, context)用于将格式化的电子邮件内容发送到SNS 主题。 -
从环境变量中检索 SNS 主题 ARN。
您可以在
github.com/PacktPublishing/Accelerating-IoT-Development-with-ChatGPT/tree/main/Chapter_15找到此提示文件和 Lambda 函数 Python 代码示例。 -
-
从 ChatGPT 获取 Python 代码后,将其复制并粘贴到代码部分。要激活代码,请点击部署。

图 15.34 – 部署 Python 代码
- 让我们通过从 ESP32 上移除 DHT11 的数据线连接器来进行现场测试。如果所有设置都正确,您应该会收到电子邮件通知,如下面的截图所示。

图 15.35 – 异常事件的电子邮件通知
- 如果收件人没有收到电子邮件通知,您可以在 CloudWatch 控制台下的规则名称下检查日志,例如
Process_Abnormal_Event_from_IoT_Core。点击最新的日志流名称。

图 15.36 – 在 CloudWatch 控制台中打开日志
- 下面的截图显示,一个异常事件“传感器错误”已成功作为 SNS 通知发送。

图 15.37 – 日志记录
现在,我们已经成功使用 AWS IoT Core、Lambda 和 SNS 设置了异常事件处理任务。当传感器报告其状态为“传感器错误”、“低于正常”或“高于正常”时,将向收件人发送警报电子邮件通知。
还可以创建一个 IoT 规则,将异常数据直接从 IoT Core 发送到 SNS 主题,其中原始 JSON 格式数据,而 Lambda 可以创建带有自定义电子邮件主题和内容的更易读的格式。
接下来,我们将处理在 IoT Analytics 上的数据存储和查询任务,这相当直接。
任务 2 – 数据存储和查询
与异常事件处理相比,在这个任务中,无论状态是否为“正常”,AWS IoT Core 都将将所有接收到的数据转发到 AWS IoT Analytics。
如在 第五章 中所述,AWS IoT Analytics 集成了多个子服务。这些包括通道、管道、数据存储和数据集。它们的功能在此简要描述:
-
通道:利用您的通道收集来自其他 AWS 服务的原始和未处理过的 IoT 设备数据
-
管道:通过使用活动来过滤、丰富和转换您的原始 IoT 设备数据,将您的通道中的原始数据转换为有价值的信息
-
数据存储:存储您的处理过的 IoT 设备数据以供未来的数据分析
-
数据集:处理来自 IoT 设备的查询数据,以提供关于您的设备的自动、频繁和最新的洞察
我们将继续使用 mermaidchart.com 根据以下说明创建图表:
请创建一个流程图,以反映以下 AWS 服务之间的交互。
-
ESP32 以序列化的 JSON 格式将传感器数据发送到 AWS IoT Core。 -
AWS IoT Core 使用消息路由规则将所有接收到的数据转发到 AWSIoT Analytics。 -
原始数据将首先到达数据通道。 -
然后在数据管道中转换数据。 -
然后将丰富后的数据存储在数据存储中。 -
然后将查询提供给数据集。
下面的服务流程是根据指示生成的。

图 15.38 – 数据存储和查询流程
流程图展示了数据存储流程,其中 ESP32 设备将序列化的 JSON 传感器数据发送到 AWS IoT Core,然后 AWS IoT Core 将原始数据转发到数据通道。这些通道将数据传输到数据管道进行转换。转换后的数据随后存储在数据存储中,通过查询访问以创建准备进一步分析的数据集。
此任务的配置步骤,如 图 15**.38 所示,包括以下操作:
-
步骤 1 到 9:创建 IoT Analytics 资源
-
步骤 10 到 14:在 AWS IoT Core 上创建第二个消息路由规则,将所有传感器数据转发到 IoT Analytics
-
步骤 15 到 18:在 IoT Analytics 运行数据查询
创建 IoT Analytics 资源
让我们详细地过一遍这些步骤:
- 在服务控制台中搜索并点击 IoT Analytics。

图 15.39 – 登录 IoT Analytics 控制台
- 在
dht11中输入前缀。

图 15.40 – 开始使用 IoT Analytics
- 所有 IoT Analytics 资源都将开始创建。这里无需等待。

图 15.41 – 创建中
- 在左侧导航菜单中点击 通道。您将看到一个名为 dht11_channel 的通道,它已经被创建。

图 15.42 – 检查数据通道的状态
- 在左侧导航菜单中点击管道。您会注意到已经创建了一个名为dht11_pipeline的管道。

图 15.43 – 检查数据管道的状态
- 在左侧导航菜单中点击数据存储。您会发现已经创建了一个名为dht11_datastore的数据存储。

图 15.44 – 检查数据存储的状态
- 点击dht11_datastore,然后点击存储设置,接着点击编辑。

图 15.45 – 编辑存储设置
- 您现在可以设置您处理数据的保留期,例如
7天。

图 15.46 – 修改存储时间
- 在左侧导航菜单中点击数据集。您会发现已经创建了一个名为dht11_dataset的数据集。

图 15.47 – 检查数据集的状态
现在,我们已经完成了 IoT Analytics 的设置,包括数据通道、数据管道、数据存储和数据集。接下来的步骤是在 IoT Core 中创建另一条消息路由规则,类似于我们之前的任务。然后,这条新规则应该与之前创建的 IoT Analytics 资源相关联。
创建第二条消息路由规则
- 导航到 AWS IoT Core 控制台。在消息路由下,您将找到之前任务中创建的第一个规则。现在,我们将通过点击创建规则来创建第二个规则。

图 15.48 – 在 IoT Core 中创建新规则
- 在这里输入规则名称,例如
Store_All_Events_to_IoT_Analytics,然后点击下一步。

图 15.49 – 为这条新规则命名
- 在SQL 语句部分,添加以下语句以将所有传感器数据转发到 IoT Analytics,无论其状态如何。

图 15.50 – 为此新规则创建 SQL 语句
- 在规则操作部分,点击操作 1。搜索并选择IoT Analytics。在通道名称下,点击刷新图标,然后点击查看按钮。在弹出窗口中,您将找到在步骤 2中创建的dht11_channel。在IAM 角色下,点击刷新图标,然后点击查看按钮。在弹出窗口中,您将找到也在步骤 2中创建的dht11_role。

图 15.51 – 为此规则选择操作、通道和角色
- 现在通过点击创建来审查并创建此规则。

图 15.52 – 两个规则均显示在消息路由下,并且现在处于活动状态
运行数据查询
在此阶段,当传感器数据通过第二个消息路由规则触发进入 IoT Core 时,所有传感器数据,无论其是否正常或异常,都将准备好转发到 IoT Analytics 进行存储和查询。
让我们按照以下步骤进行一次数据查询练习:
- 点击数据集名称。在 详细信息 下,点击 编辑。在此步骤中,我们将编辑 SQL 查询规则,以定义我们希望从数据集中查看的对象。

图 15.53 – 编辑 SQL 查询语句
例如,如果你想查询记录中的所有对象数据,并且所有记录都按时间戳降序显示(最新记录显示在顶部),你可以编辑当前的 SQL 查询,如下截图所示(github.com/PacktPublishing/Accelerating-IoT-Development-with-ChatGPT/blob/main/Chapter_15/dataset_sql_statement 也提供了一个示例)。

图 15.54 – 更新语句以按时间戳降序显示记录
- 确保你的 ESP32 正在运行并且成功连接到 AWS IoT Core。然后,转到 IoT Analytics 控制台。在 数据集 下,点击 立即运行 以执行数据查询。随后,在 内容 下,点击查询记录名称,如下截图所示。

图 15.55 – 运行数据查询
- 最后,你将看到存储在数据集中的所有传感器数据,无论其状态如何。

图 15.56 – 数据查询结果
在此阶段,我们已经成功使用 AWS IoT Core 和 IoT Analytics 设置了数据存储和查询任务。所有传感器数据都将被存储并准备好进行分析查询。
摘要
在本章中,你学习了完成商业物联网应用中两个基本任务的配置步骤。第一个任务是数据处理,这涉及到使用 AWS Lambda 触发通知到 SNS,以发送关于异常事件的警报电子邮件。第二个任务是使用 AWS IoT Analytics 进行数据存储和查询,这是物联网应用的关键方面,确保大量数据的有效处理和检索。这些任务构成了物联网应用的基础,掌握它们对于任何商业物联网项目的成功实施至关重要。
接下来,我们将探索最后一步:执行数据分析与可视化。在下一章中,我们将使用 ThingsBoard 云平台从 AWS IoT Core 摄取实时传感器数据,以创建一个动态仪表板。
第十六章:在 ThingsBoard 上创建数据可视化仪表板
在上一章中,我们成功处理了异常事件,并处理了数据存储和查询。这些步骤使我们能够有效地将传感器数据上传到云,为分析和可视化做准备。
在本章中,我们将继续到最后一步,并讨论以下主题:
-
将 AWS 云与 ThingsBoard 集成
-
任务 1 – 使用 AWS 提供 ThingsBoard 代理
-
任务 2 – 创建数据转换器并将其集成到 ThingsBoard 中
-
任务 3 – 使用 ThingsBoard 生成实时仪表板
到本章结束时,您将具备将创新转化为商业级解决方案的知识,使用这个充满活力的仪表板。
技术要求
在本章中,除了访问您的当前 AWS 账户外,还假设您已在 thingsboard.cloud 注册了 ThingsBoard 云账户。
将 AWS 云与 ThingsBoard 集成
ThingsBoard (thingsboard.io/) 是一个著名的开源物联网平台,用于数据收集、处理、可视化和设备管理。它支持通过行业标准物联网协议(如 MQTT、CoAP 和 HTTP)连接设备,并可在云和本地部署。凭借其可扩展性、容错性和高性能特性,ThingsBoard 确保您的数据始终安全且可访问。
ThingsBoard 是一个用户友好的平台,非常适合刚开始物联网创新之旅的初学者。它允许快速从您的设备中摄取数据,并在定制的实时仪表板上可视化数据。
要将 AWS 云集成作为 IoT 数据源,ThingsBoard 在 thingsboard.io/docs/user-guide/integrations/aws-iot/ 提供了详细的指导。
集成方法包括三个步骤:
-
在 AWS IoT Core 中提供设备:此设备将代表 ThingsBoard 代理,它将订阅由物联网设备发布的专用主题。此设备将生成自己的证书,并附加我们在 第十三章 中创建的策略。
-
在 ThingsBoard 中生成数据转换器:此转换器将负责将接收到的消息负载转换为要在最终仪表板上显示的输出数据。
-
在 ThingsBoard 中创建集成:此集成实例将利用代理的证书访问 AWS IoT Core,订阅发布的主题,并整合数据转换器。
只要此实例处于活动状态,就表示集成成功,并准备好从 AWS 云摄取实时数据,在 ThingsBoard 中构建最终仪表板。
让我们从以下任务开始配置指导。
任务 1 – 使用 AWS 提供 ThingsBoard 代理
要成功从 AWS IoT Core 接收传感器数据,必须在 AWS IoT Core 中配置一个特定的实体,代表 ThingsBoard Cloud。此代理用于订阅目标设备发布的 MQTT 消息。
在 AWS IoT Core 中创建此特定实体后,ThingsBoard 需要采用在创建此代理时生成的证书,以访问 AWS IoT Core。这是一个关键步骤,因为它使得两个平台之间的安全验证通信成为可能。
从本质上讲,代理不仅仅是简单的数据通道。它作为服务集成锚点,架起了 AWS IoT Core 和 ThingsBoard Cloud 之间的桥梁。它确保数据从一个点到另一个点的无缝传输,同时保持传输信息的一致性和安全性。订阅目标设备的 MQTT 消息促进了实时通信和数据交换,从而有效地将 AWS IoT Core 和 ThingsBoard Cloud 连接起来。
让我们开始任务:
- 以常规用户角色登录 AWS 控制台,导航到IoT Core服务,然后单击创建实体。

图 16.1 – 为 ThingsBoard Cloud 创建实体
- 创建单个实体。

图 16.2 – 为 ThingsBoard Cloud 创建单个实体
- 在这里为实体命名,例如,
ThingsBoard_Agent。

图 16.3 – 为实体命名
- 创建一个新的设备证书。

图 16.4 – 为此实体创建新证书
- 附加我们在第十三章中创建的策略。

图 16.5 – 将策略附加到这个新证书上
在这里下载所有证书和密钥。由于 ThingsBoard Cloud 支持的 AWS IoT 集成只请求设备证书、私钥文件和 Amazon Root CA 1,您只需导入这三个文件,如图图 16.6所示。

图 16.6 – 下载并保存证书文件
已在 AWS IoT Core 中成功创建一个名为ThingsBoard_Agent的新实体。

图 16.7 – 实体成功创建页面
- 在
your_account_ID-ats-iot.your_region.amazonaws.com。我们将在 ThingsBoard 的集成过程中需要这些信息。

图 16.8 – 定位端点信息
到目前为止,我们已经成功地将ThingsBoard_Agent作为设备创建在 AWS IoT Core 中,下载了它及其自己的证书文件,并附加了现有的策略。在下一个任务中,我们将完成在 ThingsBoard 上的集成任务。
任务 2 – 创建数据转换器并将其集成到 ThingsBoard
除了接收来自 AWS IoT Core 的发布消息外,ThingsBoard 还需要执行数据解码函数来解析传入消息的有效负载并将其转换为 ThingsBoard 使用的格式。
ThingsBoard Cloud 中的数据转换器过程涉及解码函数的创建。ThingsBoard 采用ThingsBoard 表达式语言(TBEL)(thingsboard.io/docs/pe/user-guide/tbel/)来创建解码函数,以方便数据处理和操作。TBEL 允许您编写可以解析、转换和处理设备数据的表达式,这些数据在进入 ThingsBoard 时被摄取。
在解码函数的上下文中,TBEL 用于解释来自设备的传入 JSON、文本或二进制(Base64)格式数据,这些数据通常通过 MQTT 或 CoAP 等 IoT 协议发送。解码函数随后从原始设备数据中提取值,如果需要则进行转换,并将它们格式化为 ThingsBoard 可以用于进一步处理和可视化的结构。
您可以在thingsboard.io/docs/user-guide/integrations/找到更多详细信息。
例如,在我们的项目中,从 ESP32 发布到 AWS IoT Core 的 JSON 有效负载格式如下:
1. {
2. "timeStamp": 1713817262,
3. "deviceModel": "DHT11",
4. "deviceID": "645ad13bdaec",
5. "status": "Normal",
6. "date": "04-22-2024",
7. "time": "13:21:02",
8. "timeZone": "-08:00",
9. "DST": "Yes",
10. "data": {
11. "temp_C": 22,
12. "temp_F": 72,
13. "humidity": 38
14. }
15. }
对于 ThingsBoard Cloud 上的数据可视化仪表板,我们可能不需要将此输入有效负载中的所有对象都包含在内。相反,我们计划使用以下输出对象来构建我们的仪表板:
1. {
2. "eventType": "Normal",
3. "deviceName": "645ad13bdaec",
4. "deviceType": "DHT11",
5. "telemetry": {
6. "temp_c": 22,
7. "temp_f": 72,
8. "humidity": 38
9. }
10. }
在我们的案例中,以下 TBEL 代码示例用于数据转换。您也可以在github.com/PacktPublishing/Accelerating-IoT-Development-with-ChatGPT/tree/main/Chapter_16找到它:
1. // Decode payload to JSON
2. var received_event = decodeToJson(payload);
3.
4. // Extract device ID and other telemetry values from JSON
5. var deviceID = received_event.deviceID;
6. var eventType = received_event.status;
7. var deviceType = received_event.deviceModel;
8. var temp_c = received_event.data.temp_C;
9. var temp_f = received_event.data.temp_F;
10. var humidity = received_event.data.humidity;
11.
12.
13. // Create telemetry object with extracted values
14. var telemetry = {
15. temp_c: temp_c,
16. temp_f: temp_f,
17. humidity: humidity
18.
19. };
20.
21. // Create result object with device ID and telemetry data
22. var result = {
23. eventType: eventType,
24. deviceName: deviceID,
25. deviceType: deviceType,
26. telemetry: telemetry
27.
28. };
29.
30. // Helper function to decode JSON
31. function decodeToJson(payload) {
32. var str = String.fromCharCode.apply(null, new Uint8Array(payload));
33. var received_event = JSON.parse(str);
34. return received_event
35. }
36.
37. return result;
现在,让我们逐步完成在 ThingsBoard Cloud 上的数据转换器和集成:
- 登录到
thingsboard.cloud。然后,在左侧导航栏中点击集成中心下的数据转换器。

图 16.9 – 在 ThingsBoard Cloud 中定位集成中心
- 点击+,然后点击创建****新转换器。

图 16.10 – 开始创建新的转换器
- 给这个数据转换器起一个名字,例如
AWS IoT Uplink Converter,将类型设置为上行链路,然后点击测试****解码函数。

图 16.11 – 创建解码函数
- 在此步骤中,我们将在TBEL下创建一个解码函数,正如我们在本节开头所讨论的。此解码函数将把 AWS IoT Core 的输入有效载荷转换为我们的期望输出数据格式。

图 16.12 – 测试我们的解码函数
您可以将示例输入复制并粘贴到有效载荷内容中。然后,将数据转换器代码粘贴到函数解码器中。点击测试以验证输出并将其保存以进入下一步。
- 点击添加以添加此数据转换器。

图 16.13 – 添加数据转换器
- 现在,此数据转换器已在 ThingsBoard 中成功创建。

图 16.14 – 完成数据转换器
- 现在,转到集成中心下的集成以添加集成实例。

图 16.15 – 开始添加集成
- 在集成类型下,选择AWS IoT。

图 16.16 – 将集成类型设置为 AWS IoT
- 启用三个选项并点击下一步。

图 16.17 – 启用选项
- 选择我们刚刚创建的现有上行链路数据转换器并点击下一步。

图 16.18 – 选择在第 6 步创建的数据转换器
- 跳过下行链路数据转换器。

图 16.19 – 跳过下行链路数据转换器
- 现在,输入 AWS IoT
xxxxxxxxxxxxxx-ats.iot.your_region.amazonaws.com。同时,上传在上一任务的步骤 5中下载的三个证书文件。

图 16.20 – 配置 AWS IoT 端点信息并上传三个证书文件
- 最后,在
+/pub下,点击添加以添加此集成实例。

图 16.21 – 定义您想要订阅的发布主题
- 您会注意到集成状态为挂起。

图 16.22 – 创建后集成状态为挂起
- 几秒钟后点击刷新图标,您将看到状态变为活动,这意味着集成已成功。

图 16.23 – 刷新后集成状态变为活动状态
- 点击此集成。在事件下,您将看到以下示例中所示接收到的消息。

图 16.24 – 观察从 AWS IoT Core 接收到的消息
- 点击数据转换器。在事件下,您将看到在输入下列出的接收到的有效负载,以及在输出下的输出有效负载,如图所示。

图 16.25 – 观察解码函数转换的数据
- 点击实体。在设备下,您将看到 ESP32 设备信息已被记录,并标记为活动。

图 16.26 – ThingsBoard 中的设备中显示的新设备
- 点击设备,在最新遥测下,您可以看到从 ESP32 读取的值。

图 16.27 – 观察设备下的转换后的传感器数据
到目前为止,集成任务已成功完成!现在,我们可以进行最后一步,在 ThingsBoard 上生成实时仪表板。
任务 3 – 使用 ThingsBoard 生成实时仪表板
在这个任务中,我们将使用 ThingsBoard 提供的仪表板功能。
ThingsBoard 中的数据仪表板功能提供了一系列工具,用于创建可定制的仪表板。这些工具可以包括各种小部件,如图表、地图、仪表盘和表格,它们旨在进行实时和历史数据分析。用户可以设置仪表板进行动态监控,使用实时数据流进行,并利用高级数据聚合功能(如平均值、总和和计数)进行详细的历史数据分析。仪表板是交互式的,便于直接参数操作和彻底的数据探索。它们可以与受控访问权限共享,以实现协作而不会损害安全性。此外,响应式设计确保了在各种设备和屏幕尺寸上的可用性,这对于有效的物联网环境监控是一个重要方面。
除了使用仪表板功能进行自定义外,您还可以浏览解决方案模板,以检查是否有模板符合您的应用需求。
在本节中,我们将使用仪表板功能来创建自己的仪表板:
- 在仪表板下创建一个新的仪表板。

图 16.28 – 开始创建新的仪表板
- 这里,您可以提供仪表板的标题和描述,例如
DHT11和温度和湿度数据测量。

图 16.29 – 为新的仪表板命名
- 在新的DHT11仪表板中,继续添加新的小部件。

图 16.30 – 添加新小部件
- ThingsBoard 提供了各种小部件包。选择一个适合你用例的。对于我们项目,我们将从图表开始。

图 16.31 – 从小部件包中选择图表
- 在图表部分,从各种可用小部件中选择折线图。

图 16.32 – 选择折线图
- 点击Datasource下的Device,在那里你可以找到 ESP32 报告的设备 ID。选择它。

图 16.33 – 选择目标设备以显示其数据
- 前往Series | Key | temperature,并点击编辑图标来编辑这个键。

图 16.34 – 开始配置数据输入(键)
- 点击Key值右侧的x来加载当前值。

图 16.35 – 自定义数据输入格式、单位和外观颜色
现在,你将看到实际的数据输入(key),例如temp_c、temp_f和humidity。

图 16.36 – 选择你想要显示的数据输入
例如,选择temp_c并点击添加。你将在仪表板上看到temp_c数据的动态折线图。

图 16.37 – 选择 temp_c 的数据输入
通过重复前面的步骤,你可以显示temp_c、temp_f和humidity的三条折线图。根据需要,你还可以向仪表板添加更多小部件。

图 16.38 – 仪表板外观
你现在已经完成了在 ThingsBoard 上创建温度和湿度传感器数据可视化仪表板的任务!你现在可以最终在这个仪表板上显示实时传感器数据,你可以改变 ESP32 周围的环境温度和湿度条件,然后相应地观察仪表板上的数据图表变化!
摘要
反思我们从第十一章开始的旅程,在 ChatGPT 的帮助下,我们开始在 ESP32 上编写第一行 C++代码。我们收集了 DHT11 传感器的数据,将其连接到我们的家庭 Wi-Fi 网络,并将传感器数据访问和发布到 AWS 云。我们在 AWS 云中创建了多个任务来处理异常事件,并存储传感器数据以供未来查询。最后,我们完成了 ThingsBoard 的集成,以从 AWS 云中摄取数据,并创建了一个实时仪表板来显示 ESP32 报告的动态数据!
到现在为止,你应该能够在仪表板上观察到你的传感器实时数据了!对于这样一小包数据来说,这真是一个漫长的旅程,从你桌上的 ESP32 板上飞出几个字节,穿越互联网,到达 AWS,最终在商业级仪表板上显示出它们有意义的值。在这段旅程的这些元素中,最具挑战性的部分是在 ESP32 上编程 C++代码以捕获传感器数据,并协调传感器、LED 和蜂鸣器协同工作。多亏了 ChatGPT 和其他 AI 工具的智能编码技能,你不必过于担心。通过使用有效的提示框架和技能,你可以指导 ChatGPT 根据你的创新想法创建 C++代码!
展望未来,AI 工具在物联网开发中的集成将变得更加复杂。随着 AI 的不断发展,它将带来新的能力,简化复杂的编码任务并提升整体开发过程。例如,未来的进步可能包括更直观的 AI 驱动调试工具、高级代码优化技术,以及与各种物联网平台的无缝集成。
记住,物联网发展的旅程是持续不断且不断演变的。拥抱挑战,保持好奇心,并不断尝试新的工具和技术。有了奉献精神和正确的资源,你将充分准备,将你的创新物联网想法付诸实践,并在连接设备的世界中产生有意义的影響。
第十七章:目录
由于本电子书版本没有固定的页码,以下页码仅为参考,基于本书的印刷版。
符号
4G/LTE 网络 85
生态系统 87
历史 85
5G 网络 85
生态系统 87
历史 85
6G 网络 86
802.1X 可扩展认证协议 (EAP) 10
1024-正交幅度调制 (QAM) 80
A
异常事件处理 264-266
配置步骤 266
Lambda 函数,创建 274-276
Lambda 函数,编程 281-287
消息路由规则,创建 267-273
SNS 主题,创建 277-280
访问分析器 263
执行器 53
示例 53
ADC 50
先进计量基础设施 (AMI) 19
高级软件包工具 (APT) 180
亚马逊 Kuiper LEO 5
调幅 (AM) 70
模拟输出 (AOs) 50
模拟信号 69
天线 71
双极天线 72
天线 72
增益 71
全向天线 72
面板天线 71
贴片天线 71
极化 71
共振 71
信号转换 71
Yagi-Uda 天线 72
应用层 94
应用程序的本地逻辑
设计 197,198
Arduino 45
Arduino 经典系列 45
Arduino Mega 系列 45
Arduino MKR 系列 46
Arduino Nano 系列 45
ArduinoJson.h 254
人工智能 (AI) 8, 108
应用程序 108, 109
未来,通过 108 进行重塑
增强现实 (AR) 6
Aurora 91
自主导航车辆 (AGV) 38
自主导航机器人 (AMR) 20
AWS
用于配置 ThingsBoard 代理 302-308
AWS 自动扩展 91
利益 91
AWS 云
与 ThingsBoard 集成 301, 302
AWS 凭证头文件
在 ESP32 上创建 243-245
AWS DynamoDB 102
特性和优势 102, 103
参考链接 103
AWS for IoT 95
AWS 身份和访问管理 (IAM) 97
AWS 物联网分析 99
特性和优势 99
参考链接 100
用例,在物联网 100, 101
AWS 物联网核心 96, 225
ESP32,配置 228-242
特性和优势 96
参考链接 97
用例,在物联网 97
AWS 物联网设备防御者 98
特性和优势 98
参考链接 99
用例,在物联网 99
AWS 物联网设备管理 97
特性和优势 97
参考链接 98
用例,在物联网 98
AWS Kinesis 101
参考链接 102
用例,在物联网 102
AWS Kinesis 数据分析 101
AWS Kinesis 数据消防水管 101
AWS Kinesis 数据流 101
AWS Kinesis 视频流 101
AWS Lambda 100
功能和优势 100
参考链接 101
用例,在物联网 (IoT) 中 101
AWS 管理策略 262
AWS QuickSight 103
功能和优势 103, 104
参考链接 104
AWS 根 CA 证书 225, 226
Azure 机器学习 (AML) 8
B
基本服务集 (BSS) 着色 80
更好的注释 190
二进制相移键控 (BPSK) 70
蓝牙 74
生态系统 77
历史 75
参考链接 78
标准组织 76
蓝牙 1.0 75
蓝牙 2.0 75
蓝牙 3.0 75
蓝牙 4.0 76
蓝牙 5.0 76
LE 编码物理层 76
标准物理层 (PHY) 76
蓝牙 5.2
LE 2M 物理层 76
蓝牙 5.3 76
蓝牙基本速率/增强数据速率 (BR/EDR) 74
蓝牙经典 74, 75
规范 77, 78
蓝牙低功耗 (BLE) 4, 74, 76
规范 77, 78
蓝牙低功耗长距离 (BLE-LR) 6, 76
蓝牙特殊兴趣小组 (SIG) 75, 76
商业智能 (BI) 工具 101
C
C++ 代码
生成,使用 ChatGPT 202-205
资本支出 (CapEx) 13
带冲突避免的载波侦听多路访问 (CSMA/CA) 59
载波波 69
信道带宽 65
信道 288
ChatGPT
代码示例 206、220、221
基本原则,与 112、113 交互
指示生成 C++ 代码 202-205
指示生成代码 219
指示在 ESP32 上生成 TLS 代码 245-247
交互 111
用于创建流程图 198
在物联网开发过程中使用 109-111
公民宽带无线电服务 (CBRS) 14
民用频率 64
云 90
数据处理 165、166
影响 91、92
将传感器数据发送到 163、164
码分多址 (CDMA) 5、85
ESP32 上的代码片段
生成 119
生成、技巧和示例 119-122
编码辅助扩展 190
更好的注释 190
缩进彩虹 190
Prettier 190
碰撞检测项目 148
应用 149
代码示例 150
向 ChatGPT 发送提示 149
规范 148
舒适和安全改进 15
个人护理 15、16
温馨家园 16
物联网设备与云之间的通信协议 94
限制应用协议 (CoAP) 95
轻量级机器对机器 (LwM2M) 94、95
消息队列遥测传输 (MQTT) 94
配置、设备管理
操作设置 93
服务策略分配 93
限制应用协议 (CoAP) 94, 95
功能 95
请求/响应模型 95
用例 95
上下文、动作、结果和示例 (CARE) 116
以上下文为导向的框架 115, 116
上下文、任务和格式 (CTF) 116
关键组件,微控制器单元 (MCU) 42
内置内存 42
连接模块 42
核心处理器 42
嵌入式操作系统 42
外设和接口 42
电源管理 42
客户管理的策略
创建 261-263
D
数模转换器 (DACs) 50
数据
处理,本地 158-161
数据分析 93
数据收集 93
数据转换器
创建 308-321
集成,与 ThingsBoard 308-321
数据仪表板功能 322
数据摄取 93
数据链路层 59, 60
数据引脚 (DATA) 54
数据预处理 93
数据处理
在云端 165, 166
数据集 288
数据存储 93
数据存储和查询 288, 289
数据查询,运行 296-298
物联网分析资源,创建 289-292
第二条消息路由规则,创建 293-296
数据存储 288
数据可视化 93
分贝 (dB) 65
示例 65
用法 65
与分贝毫瓦 (dBm) 66 相比
分贝全向 (dBi) 65, 66
示例 66
使用方法 66
分贝-毫瓦 (dBm) 65, 66
示例 66
使用方法 66
与分贝全向 (dBi) 相比 66
设备证书 227
页脚 227
标题 227
设备硬件原型
建筑物 199, 201
设备管理 92
配置 93
生命周期管理 93
监控 93
注册 92
设备私钥 227
页脚 227
标题 227
设备类型 36
边缘计算,需求 39
室内安装与室外安装 36, 37
通过外部电源供电,与电池供电 37
有线连接与无线连接 38
DHT11 传感器 130, 201
图表
使用 157, 158
数字输出 (DO) 54
数字信号 69
双极天线 72
天线 72
距离测量项目 142
应用程序 142
代码示例 143, 144
提示,向 ChatGPT 143
规格 142
区分编码规则 (DER) 证书 227
适合 DIY 的 MCU 43
Arduino 45
ESP32 46-48
ESP8266 46-48
树莓派 44
下行链路预算 73
DynamoDB 91
E
边缘计算 38
边缘智能 7
有效全向辐射功率 (EIRP) 67
计算 67
用法 67
有效全向辐射功率 (ERP) 67
计算 67
用法 67
弹性计算云 (EC2) 91
弹性容器服务 (ECS) 91
电磁波 60, 61
增强型移动宽带 (eMBB) 30, 85
企业 Wi-Fi 26
环境保护改进 18
灾害预警 18
污染监测 18
ESP32 46, 47, 129
访问状态,验证 248, 249
AWS 凭证头文件,创建 243-245
代码构建,使用 PlatformIO 207-216
交付的传感器数据,验证 258-260
互联网访问,在 222 上验证
配置,在 AWS IoT Core 中 228-242
规格 48
ESP32 和 AWS IoT Core
TLS 连接 228
ESP32-C3 200
ESP8266 46
欧洲电信标准研究院 (ETSI) 64
F
美国联邦通信委员会 (FCC) 64
空气中固件更新 (FOTA) 93
火焰检测项目 133, 134
模拟输出值 134
应用程序 134
代码示例 136
提示,到 ChatGPT 135
规格 134
流程图
使用 ChatGPT 创建 198
频率 61, 62
民用频率 64
军用频率 64
频率分配 63, 69
跳频扩频 (FHSS) 77
调频 (FM) 70
G
气体检测项目 139
模拟输出值 140
应用 140
代码示例 141
提示,到 ChatGPT 141
规格 140
高斯频率移位键控 (GFSK) 70
以目标为导向的框架 116, 117
目标、请求、操作、细节和示例 (GRADE) 116
市场推广 (GTM) 方法 9
GPIO 48
H
硬件安全模块 (HSMs) 10
HC-SR04 传感器 142
HC-SR501 传感器 137
供暖、通风和空调 (HVAC) 10, 131
赫兹 (Hz) 62
高速分组接入 (HSPA) 85
Homebrew 180
URL 180
超文本传输协议 - 安全 (HTTPS) 96
I
I2C 49
IAM (身份和访问管理) 228
IAM 策略管理 263
IAM 角色管理 263
IAM 用户管理 263
如果这个,那么那个 (IFTTT) 9
缩进彩虹 190
工业物联网 (IIOT) 市场 15
工业生产率提升 19
成本节约 19
规模扩展 20
工业、科学和医疗 (ISM) 5, 28
防护等级 (IP 等级) 11
边缘计算,需求 36
电气和电子工程师协会 (IEEE) 802.11 b/g/n 标准 65
指令集架构 (ISA) 46
集成电路 (ICs) 51
集成开发环境 (IDE) 175
国际标准化组织 (ISO) 58
国际电信联盟 (ITU) 64
互联网接入
验证,在 ESP32 上 222
互联网连接
建立 161,162
物联网 (IoT) 3
发展 4-8
互联网协议 (IP) 地址 58
INT (中断) 54
入侵检测系统 (IDSs) 10
物联网可寻址市场 8
城市 12,13
商业和商务 10
行业 14
社区和校园 11,12
居民区 9
农村地区 13,14
物联网应用提供商
痛点,在云之前 90,91
物联网开发过程
ChatGPT,利用 109-111
物联网设备
硬件架构 39-41
物联网影响 15
舒适性和安全性提升 15
环境保护提升 18
工业生产率提升 19
运营效率提升 17
物联网,与云集成 92
数据采集 93
设备管理 92,93
家庭中的物联网网络 24
蓝牙 (BLE) 24
家庭 Wi-Fi 24
线程 25,26
城市中的物联网网络 30
移动网络 30
公共 LoRaWAN 网络 31,32
农村地区的物联网网络 32
LEO 网络 33
私有 LoRaWAN 网络 33
校园和建筑中的物联网网络 26
企业 Wi-Fi 26,27
没有一种适合所有情况的方法 29
私有 LoRaWAN 网络 28, 29
Thread 网状结构 28
ISA100 14
J
JavaScript 对象表示法(JSON)251, 252
JTAG 51
K
KMS 密钥描述 263
KY-003 传感器 152
KY-026 模块 133, 134
L
Lambda 函数
创建 274-276
编程 281-287
大型语言模型(LLM)107
低地球轨道(LEO)网络 33
许可频谱 64
轻量级机器到机器(LwM2M)94
功能 95
用例 95
链路预算 73
比较接收灵敏度 74
下行链路预算 73
上行链路预算 73
液化石油气(LPG)139
本地 Wi-Fi 接入点(AP)218
逻辑链路控制(LLC)层 59
长距离广域网(LoRaWAN)
参考链路 96
长期演进类别 M(LTE-M)5
长期演进(LTE)技术 5
LoRaWAN 5
低地球轨道(LEO)5
低功耗广域网(LPWANs)5
LTE 高级(LTE-A)30
LTE CAT-1 38
LTE CAT-M 86
规范 88
LTE CAT-M(LTE-M)38
M
机器学习(ML)8
机器到机器(M2M)通信 4
磁性变化检测项目 152
应用 153
代码示例 154
提示,到 ChatGPT 153
规范 153
大规模机器类型通信(mMTC)85
主从输出(MISO)49
主从输入(MOSI)49
Matter 协议 25
微控制器(MCU)41
关键组件 42
适合 DIY 的 MCU43
关键特性 41
市售 MCU43
角色 41
媒体访问控制(MAC)层 59
消息队列遥测传输(MQTT)94,226
功能 94
发布/订阅模型 94
用例 94
消息路由规则
创建 267-273
米(m)62
微芯科技 PIC 系列 43
微机电系统(MEMS)52
军用频率 64
毫米波(mmWave)63
毫瓦(mW)66
最小可行产品(MVP)110
调制 69
调幅(AM)70
模拟信号 69
载波波 69
转换过程 69
数字信号 69
环境适应 69
频率分配 69
频率调制(FM)70
高斯频率移频键控(GFSK)70
正交频分复用(OFDM)71
相位调制(PM)70
相移键控(PSK)70
正交幅度调制(QAM)70
监控,设备管理
健康监控 93
记录和诊断 93
MQ-2 传感器 139
MQTT 流程 252
通过 WebSocket 安全(WSS)的 MQTT96
MQTT 发布
有效载荷,在 ESP32 中构建 253,254
传感器数据,通过 252 发送
主题,在 ESP32 中构建 253,254
多链路操作(MLO)82
多输入多输出(MIMO)79
多用户、多输入、多输出(MU-MIMO) 80
N
纳米(nm) 63
窄带物联网(NB-IoT) 5, 86
规格说明 88
负-正-负(NPN)硅光电晶体管 134
诺基亚 nRF51/nRF52 系列 43
NTP(网络时间协议)服务器 225
O
全向天线 72
开放系统互联(OSI)模型 58
应用层 58
数据链路层 59, 60
网络层 58
物理层 59
表示层 58
会话层 58
传输层 58
运营效率提升 17
节能 17
预测性维护 17, 18
OpEx 13
正交频分多址接入(OFDMA) 79
正交频分复用(OFDM) 71
OTA(空中)更新 126
P
面板天线 71
粒子 Photon 系列 43
百万分之一(ppm) 140
贴片天线 71
有效载荷 252
周期中断定时器(PIT) 52
相位调制(PM) 70
相移键控(PSK) 70
物理层 59
蜂鸣器 201
管道 288
PIR 运动检测项目 137
应用程序 138
代码示例 139
提示,向 ChatGPT 138
规格说明 137
PIR(被动红外)传感器 124
PlatformIO 175
安装 175-189
项目,创建 190-195
用于在 ESP32 上编程代码 207-216
即插即用 (PnP) 功能 7
功率宽度调制 (PWM) 206
Prettier 190
隐私增强邮件 (PEM) 格式 227
私有 LoRaWAN 网络 28, 29, 33
项目 CHIP 25
提示工程
参考链接 113
提示框架选项 114
以上下文为导向的框架 115, 116
以目标为导向的框架 116, 117
以角色为导向的框架 114
以任务为导向的框架 115
传播距离 72
公共 LoRaWAN 网络 31, 32
目的、期望、上下文、请求和行动 (PECRA) 116
PWM 输出 51
Q
正交幅度调制 (QAM) 70
正交相移键控 (QPSK) 70
R
树莓派 43
URL 44
树莓派 4 模型 B 44
树莓派 5 44
树莓派 Pico 44
树莓派 Pico W 44
树莓派 Zero 44
实时时钟 (RTC) 51
实时仪表盘
使用 ThingsBoard 322-328 生成
接收信号强度指示器 (RSSI) 68
接收器灵敏度
链路预算,与 74 比较
建议,开始第一个物联网项目
复杂度级别 125, 126
大胆思考,从小处着手哲学 124
精简指令集计算机-V (RISC-V) 46
注册,设备管理
凭证管理 92
设备配置 92
相对湿度 (RH) 131
远程身份验证拨号用户服务 (RADIUS) 10
RGB LED 201
角色、动作、上下文和期望 (RACE) 114, 117
角色、输入、情境和期望 (RISE) 115
以角色为中心的框架 114
方面 114
角色、目标、场景、解决方案和步骤 (ROSSS) 115
角色、任务和格式 (RTF) 114, 117
S
场景、复杂情况、目标、计划和评估 (SCOP) 116
场景、问题、行动和结果 (SPAR) 116
安全数字输入输出 (SDIO) 50
安全数字 (SD) 卡 48
安全套接字层 (SSL) 加密 58
传感器数据
发送,通过 MQTT 发布 252
发送,到云端 163, 164
传感器数据,发布到 AWS IoT Core
代码示例 254-258
传感器 52
空气质量传感器 53
常用引脚 54
示例 52
气体传感器 53
陀螺仪和加速度计 53
心率传感器 53
湿度传感器 52
光传感器 53
运动和占用传感器 53
压力传感器 52
距离传感器 53
声音传感器 53
温度传感器 52
水质传感器 53
传感器规格 55
精度 55
功耗 55
范围 55
分辨率 55
响应时间 55
灵敏度 55
串行时钟线 (SCL) 49
串行时钟 (SCLK) 49
串行数据线 (SDA) 49
序列化 253
按需服务模式 38
混沌定律 68
Sigfox 5
信号处理 60
信号质量 67,68
信号强度 67
对网络性能的影响 67
测量 67
信号与噪声比 (SNR) 68
硅实验室 EFM32 Gecko 系列产品 43
情境、行动、目标和期望 (SAGE) 116
情境、任务、行动和结果 (STAR) 116
从设备选择 (SS) 49
智能家居应用 9
SNS 发布 263
SNS (简单通知服务) 服务 232
SNS 主题
创建 277-280
土壤湿度检测项目 150
应用 151
代码示例 152
提示,到 ChatGPT 151
规格 150
SpaceX Starlink 5
频谱
授权频谱 64
无授权频谱 64,65
频谱带宽 65
频谱管理 64
串行外设接口 (SPI) 48
意法半导体 STM32 系列产品 43
供应链优化 (SCO) 14
SW-420 传感器 146
SW-520D 传感器 144
开关传感器 148
T
目标唤醒时间 (TWT) 80
任务、行动和目标 (TAG) 115,118
任务引导框架 115
任务、需求、行动、情境和示例 (TRACE) 115
任务、需求、期望和格式 (TREF) 115,118
温度和湿度测量项目 130
应用 131
代码示例 133
提示,到 ChatGPT 131
规格 130,131
每秒太比特 (Tbps) 86
太赫兹 (THz) 63
德州仪器 C2000/C3000 系列产品 43
理论信道容量 68
ThingsBoard
AWS 云,集成 301, 302
数据转换器,集成 308-321
网址 301
使用,用于生成实时仪表板 322-328
ThingsBoard 代理
配置,与 AWS 302-308
ThingsBoard 表达式语言 (TBEL)
参考链接 308
大胆思考,从小处着手哲学 124
第三代合作伙伴项目 (3GPP) 87
线程网格扩展器 (TME) 设备 28
倾斜检测项目 144
应用 145
代码示例 146
提示,向 ChatGPT 145
规格 144
计时器 51
主题 252
传输控制协议 (TCP) 58
传输功率 66
传输层安全性 (TLS) 225, 226
晶体管-晶体管逻辑 (TTL) 142
U
通用异步接收/发送 (UART) 49, 50
清除发送 (CTS) 50
地 (GND) 50
接收 (RX) 49
请求发送 (RTS) 50
发送 (TX) 49
超可靠低延迟通信 (URLLC) 14, 85
通用移动通信系统 (UMTS) 5, 85
未授权频谱 5, 64, 65
上行链路预算 73
USB 50
用户数据报协议 (UDP) 58, 94
V
震动检测项目 146
应用 147
代码示例 148
提示,向 ChatGPT 147
规格 146
虚拟现实 (VR) 6
Visual Studio Code (VS Code) 172
安装 172-174
电压公共收集器 (VCC) 54
W
瓦特 (W) 66
波长 61, 62
Wi-Fi 78
历史 79
Wi-Fi 5
规格 83, 84
Wi-Fi 6 79
增强 79, 80
Wi-Fi 6/6E
规格 83, 84
Wi-Fi 6E 80
增强 80, 81
频谱比较 81
Wi-Fi 7 82
生态系统 83
增强 82
规格 83, 84
标准组织 82
Wi-Fi 访问流程图
创建 218
Wi-Fi 访问逻辑
设计 218
Wi-Fi 联盟 83
URL 84
Wi-Fi 网状网络
带引导 27
客户端引导 27
自愈 27
单个 SSID 27
Wi-Fi 保护接入 2 (WPA2) 10
Wi-Fi 服务集标识符 (SSID) 10
无线数据通信 58
天线 71, 72
分贝 (dB) 65
分贝全向性 (dBi) 65, 66
分贝毫瓦 (dBm) 65, 66
电磁波 60, 61
频率 61-64
调制 69-71
OSI 模型 58-60
传播距离 72
香农定律 68
信号处理 60
信号质量 67,68
信号强度 67
波长 61,62
无线保真 24
无线 HART 14
无线局域网 (WLANs) 82
WiSUN 14
企业级 WPA2 (WPA2-ENT) 27
Y
Yagi-Uda 天线 72

订阅我们的在线数字图书馆,全面访问超过 7,000 本书籍和视频,以及领先的行业工具,帮助你规划个人发展并推进你的职业生涯。欲了解更多信息,请访问我们的网站。
为什么订阅?
-
使用来自 4,000 多名行业专业人士的实用电子书和视频,节省学习时间,多花时间编码
-
通过为你量身定制的技能计划提高你的学习效果
-
每月免费获得一本电子书或视频
-
完全可搜索,便于快速访问关键信息
-
复制粘贴、打印和收藏内容
你知道吗?Packt 为每本书都提供了电子书版本,包括 PDF 和 ePub 文件。你可以在packtpub.com升级到电子书版本,作为印刷书客户,你有权获得电子书副本的折扣。如需了解更多详情,请联系我们 customercare@packtpub.com。
在www.packtpub.com,你还可以阅读一系列免费的技术文章,注册各种免费通讯,并享受 Packt 书籍和电子书的独家折扣和优惠。
你可能还会喜欢的其他书籍
如果你喜欢这本书,你可能对 Packt 出版的其他书籍也感兴趣:
物联网 编程项目
科林·道
ISBN: 978-1-83508-295-9
-
将网络服务集成到项目中,以实现实时数据显示和分析
-
集成传感器、电机和显示屏来构建智能物联网设备
-
使用伺服电机和 LED 构建一个天气指示器
-
创建一个能够执行任务的自主物联网机器人汽车
-
开发具有实时警报和短信通知的家庭安全系统
-
探索 LoRa 和 LoRaWAN 进行远程环境监测
人工智能 机器人
弗朗西斯·X·戈弗斯三世
ISBN: 978-1-80512-959-2
-
从机器人学和人工智能基础知识开始
-
理解路径规划、决策树和搜索算法以增强你的机器人
-
使用神经网络和监督学习技术探索对象识别
-
使用遗传算法使你的机器人臂能够操纵物体
-
通过专家系统使用自然语言处理教你的机器人去听
-
使用机器学习和计算机视觉编程您的机器人如何避免障碍物和检索物体
-
将仿真技术应用于为您的机器人赋予人工个性
Packt 正在寻找像您这样的作者
如果您有兴趣成为 Packt 的作者,请访问authors.packtpub.com并今天申请。我们已与成千上万的开发人员和科技专业人士合作,就像您一样,帮助他们将见解与全球科技社区分享。您可以提交一般申请,申请我们正在招募作者的特定热门话题,或提交您自己的想法。
分享您的想法
现在您已经完成了《使用 ChatGPT 加速物联网开发》,我们非常想听听您的想法!如果您从亚马逊购买了本书,请点击此处直接进入本书的亚马逊评论页面并分享您的反馈或在该购买网站上留下评论。
您的评论对我们和科技社区非常重要,并将帮助我们确保我们提供高质量的内容。
下载本书的免费 PDF 副本
感谢您购买本书!
您喜欢在路上阅读,但又无法随身携带您的印刷书籍吗?
您的电子书购买是否与您选择的设备不兼容?
别担心,现在每购买一本 Packt 书籍,您都可以免费获得该书的 DRM 免费 PDF 版本。
在任何地方、任何设备上阅读。直接从您喜欢的技术书籍中搜索、复制和粘贴代码到您的应用程序中。
优惠远不止于此,您还可以获得独家折扣、时事通讯和每日收件箱中的精彩免费内容。
按照以下简单步骤获取好处:
- 扫描下面的二维码或访问以下链接
![img/B22002_QR_Free_PDF.jpg]()
packt.link/free-ebook/978-1-83546-162-4
-
提交您的购买证明
-
就这样!我们将直接将您的免费 PDF 和其他好处发送到您的电子邮件
目录
-
使用 ChatGPT 加速物联网开发
-
贡献者
-
关于作者
-
关于审稿人
-
前言
-
本书面向对象
-
本书涵盖的内容
-
充分利用本书
-
下载示例代码文件
-
使用的约定
-
取得联系
-
分享您的想法
-
下载本书的免费 PDF 副本
-
-
第一部分:理解物联网基础
-
第一章:物联网基础,您应该知道的一切
-
物联网的演变定义
-
从固定网络到移动网络的部署
-
从局域网到广域网的移动性
-
从城市到荒野的存在
-
吞吐量从 Mb/s 到 Gb/s
-
电池寿命从几天到几年
-
从点到点、点到多点网络到网状和星型拓扑的联网
-
边缘节点智能
-
人工智能与机器学习
-
-
可寻址市场
-
住宅
-
商业和商务
-
邻里和校园
-
城市
-
农村地区
-
行业
-
-
物联网对我们的影响
-
生活舒适性和安全性提升
-
运营效率提升
-
环境保护改善
-
工业生产率提升
-
-
总结
-
进一步阅读
-
-
第二章:物联网网络,事物的神经网络
-
家庭中的物联网网络
-
家庭 Wi-Fi
-
蓝牙低功耗
-
Thread
-
-
校园和建筑中的物联网网络
-
企业 Wi-Fi
-
Thread 网状
-
私有 LoRaWAN 网络
-
没有一刀切的方法
-
-
城市中的物联网网络
-
蜂窝网络
-
公共 LoRaWAN 网络
-
-
农村地区的物联网网络
-
私有 LoRaWAN 网络
-
低地球轨道网络
-
-
总结
-
-
第三章:物联网终端设备,物联网系统的神经元细胞
-
设备类型
-
室内与室外安装
-
通过外部电源供电与电池供电
-
有线连接与无线连接
-
边缘计算的需求
-
-
硬件架构
-
微控制器
-
角色
-
关键特性
-
关键组件
-
现成 MCU
-
DIY 适用的 MCU
-
-
外围设备和接口
-
GPIO
-
SPI
-
I2C
-
UART
-
USB
-
SDIO
-
ADC
-
DAC
-
PWM 输出
-
JTAG
-
定时器
-
实时时钟
-
-
传感器和执行器
-
传感器
-
执行器
-
传感器上的常用引脚
-
理解传感器规格
-
-
总结
-
-
第四章:无线连接,物联网数据传输的神经通路
-
关于无线数据通信的 10 个知识点
-
OSI 模型
-
信号处理
-
电磁波
-
频率和波长
-
dB, dBm, 和 dBi
-
信号强度和质量
-
香农定律和理论信道容量
-
调制
-
天线技术
-
传播距离
-
-
BLE
-
历史和现状
-
蓝牙 1.0 到 3.0 – 蓝牙经典时代
-
蓝牙 4.0 到 5.3 及以后 – BLE 时代
-
-
Wi-Fi
-
历史和现状
-
Wi-Fi 6
-
Wi-Fi 6E
-
Wi-Fi 7
-
-
4G/LTE 和 5G
-
历史和现状
-
NB-IoT
-
LTE CAT-M
-
标准组织
-
生态系统参与者
-
-
总结
-
-
第五章:云,物联网的“超级大脑”
-
重要提示
-
为什么云对物联网至关重要?
-
云出现之前的物联网痛点
-
云的影响
-
-
将物联网与云集成
-
设备管理
-
数据摄取
-
-
物联网设备和云之间的通信协议
-
MQTT
-
LwM2M
-
CoAP
-
-
AWS for IoT
-
AWS IoT 核心服务
-
AWS IoT 设备管理
-
AWS IoT 设备防御者
-
AWS IoT 分析
-
AWS Lambda
-
AWS Kinesis
-
AWS DynamoDB
-
AWS QuickSight
-
-
摘要
-
-
第二部分:在物联网开发中利用 AI
-
第六章:在物联网创新之旅中应用 ChatGPT
-
重要提示
-
用 AI 重塑未来
-
在物联网开发过程中利用 ChatGPT
-
正确与 ChatGPT 交互
-
入门级物联网项目的最佳实践
-
提示框架选项
-
最佳实践提示示例
-
-
在 ESP32 上生成代码片段
-
摘要
-
-
第七章:开始您的第一个物联网项目的建议
-
技术要求
-
大处着眼,小处着手
-
先摘取低垂的果实
-
摘要
-
-
第八章:10 个适合 ChatGPT 提示的入门级物联网项目
-
技术要求
-
项目 1 – 温湿测量
-
规格
-
应用
-
向 ChatGPT 发送提示
-
代码示例
-
-
项目 2 – 火焰检测
-
规格
-
模拟输出值
-
应用
-
向 ChatGPT 发送提示
-
代码示例
-
-
项目 3 – PIR 运动检测
-
规格
-
应用
-
向 ChatGPT 发送提示
-
代码示例
-
-
项目 4 – 气体检测
-
规格
-
模拟输出值
-
应用
-
向 ChatGPT 发送提示
-
代码示例
-
-
项目 5 – 距离测量
-
规格
-
应用
-
向 ChatGPT 发送提示
-
代码示例
-
-
项目 6 – 倾斜检测
-
规格
-
应用
-
向 ChatGPT 发送提示
-
代码示例
-
-
项目 7 – 振动检测
-
规格
-
应用
-
向 ChatGPT 发送提示
-
代码示例
-
-
项目 8 – 碰撞检测
- 规格
-
应用
-
向 ChatGPT 发送提示
-
代码示例
-
-
项目 9 – 土壤湿度检测
-
规格
-
应用
-
向 ChatGPT 发送提示
-
代码示例
-
-
项目 10 – 磁性变化检测
-
规格
-
应用
-
向 ChatGPT 发送提示
-
代码示例
-
-
摘要
-
-
第九章:使用 AI 工具绘制应用流程图
-
使用图表优化应用之旅
-
本地数据处理
-
建立互联网连接
-
将传感器数据发送到云
-
云上的数据处理
-
摘要
-
-
第三部分:实践端到端项目
-
第十章:为你的第一个项目设置开发环境
-
技术要求
-
安装 Visual Studio Code (VS Code)
-
设置 PlatformIO IDE
-
安装其他编码辅助扩展
-
在 PlatformIO 下创建你的第一个项目
-
摘要
-
-
第十一章:在 ESP32 上编写第一个代码
-
设计应用程序的本地逻辑
-
使用 ChatGPT 创建流程图
-
构建设备硬件原型
-
指导 ChatGPT 生成 C++ 代码
-
代码示例
-
使用 PlatformIO 在 ESP32 上编程代码
-
摘要
-
-
第十二章:建立 Wi-Fi 连接
-
设计 Wi-Fi 访问逻辑
-
创建 Wi-Fi 访问流程图
-
指导 ChatGPT 生成代码
-
代码示例
-
验证 ESP32 上的互联网访问
-
摘要
-
-
第十三章:将 ESP32 连接到 AWS IoT Core
-
技术要求
-
理解将 ESP32 连接到 AWS IoT Core 的方法
-
在 AWS IoT Core 中配置 ESP32
-
在 ESP32 上创建 AWS 凭据头文件
-
指导 ChatGPT 在 ESP32 上生成 TLS 代码
-
代码示例
-
在 ESP32 上验证访问状态
-
摘要
-
-
第十四章:将传感器数据发布到 AWS IoT Core
-
技术要求
-
通过 MQTT 发布发送传感器数据
-
在 ESP32 中构造 MQTT 发布主题和有效载荷
-
代码示例
-
验证交付的传感器数据
-
摘要
-
-
第十五章:在 AWS 云上处理、存储和查询传感器数据
-
创建客户管理的策略
-
任务 1 – 异常事件处理
-
配置步骤
-
创建消息路由规则
-
创建 Lambda 函数
-
创建 SNS 主题
-
编程 Lambda 函数
-
-
任务 2 – 数据存储和查询
-
创建 IoT 分析资源
-
创建第二个消息路由规则
-
运行数据查询
-
-
摘要
-
-
第十六章:在 ThingsBoard 上创建数据可视化仪表板
-
技术要求
-
将 AWS 云与 ThingsBoard 集成
-
任务 1 – 使用 AWS 配置 ThingsBoard 代理
-
任务 2 – 创建数据转换器并将其集成到 ThingsBoard 中
-
任务 3 – 使用 ThingsBoard 创建实时仪表板
-
摘要
-
-
索引
- 为什么订阅?
-
你可能喜欢的其他书籍
-
Packt 正在寻找像你这样的作者
-
分享你的想法
-
免费下载本书的 PDF 版本
-
标记
-
封面
-
目录
-
索引


浙公网安备 33010602011771号