Python 物联网

2025年03月17日 | 阅读 9 分钟

通常,物联网 (IoT) 系统的原型或实际系统必须快速高效地设计和开发。每当发生这种情况时,两个活动会立即出现:一是编程 IoT 设备,二是组织一个后端与这些设备进行交互。

在这两项活动中,我们都可以利用 Python 编程语言进行开发。或者,我们可以利用 MicroPython 的功能性和实用版本,以便在计算资源较少且价格非常低的设备上工作。

在下面的教程中,我们将了解 Python 在编程 物联网 (IoT) 设备中的使用,并为它们创建一个后端以供其工作。

但在此之前,让我们简要讨论一下物联网的重要性。

了解物联网的重要性

"物联网"一词于 1999 年由 Kevin Ashton 首次提出。自那以后,物联网的重要性和规模呈爆炸式增长,其中一个主要指标是 2018 年物联网市场规模为 1510 亿美元,并且逐年稳步增长。根据市场营销人员的预测,到 2022 年,物联网市场可能突破 5610 亿美元大关。

以前,我们可以用以下示例来解释物联网

"我们可以用手机打开和关闭房间里的灯泡。"

如今,智能电表已经不足为奇,它可以传输用电量读数,将信息上传到云端,并生成直接发送到电子邮件的月度账单。

物联网越来越多地应用于各个行业,以简化流程并提高效率。例如,制造生产线和农业是受益于物联网不同功能的各种行业的绝佳示例。在农业的特定场景中,物联网有助于协调收割机与带有升降机的卡车,以高效地处理谷物。

为什么在物联网中使用 Python?

对于许多开发人员来说,Python 被认为是市场上的首选语言。它易于学习,语法清晰,并拥有庞大的在线社区支持。在物联网方面,Python 是一个绝佳的选择。我们可以将其用于后端开发或设备软件开发。此外,Python 可以在 Linux 设备上运行,我们还可以将 MicroPython 用于微控制器。

Python 是一种编程语言,我们可以用它来减少我们需要处理的数据量,这些数据可以在云端访问。无论我们是从头开始创建物联网项目,还是与执行器、传感器和配件交互,Python 都能识别需求。

使用 Python 处理物联网设备的许多好处包括:适用于所有类型平台的丰富库以及快速开发代码的速度。

Python 是开发设备原型的绝佳盟友。即使我们在生产过程中用 C、C++ 或 Java 重写一些脚本以提高性能,系统通常也能在 Python 中完美运行。

Python 中有哪些最佳物联网解决方案?

Python 编程语言中一些最佳的物联网解决方案如下:

  1. Raspberry Pi 上的 Python
  2. PyBoard 上的 Python
  3. 带有 Micropython 的 ESP8266、ESP32

我们将简要讨论每个解决方案。

Raspberry Pi 上的 Python

在物联网设备上运行 Python 的主要目标是取出桌上的 Raspberry Pi。Python 已预装在操作系统中,我们唯一剩下的目标是编写代码脚本。

在这种情况下,我们可以控制 Raspberry Pi 扩展板上的 I/O 端口。幸运的是,该板支持无线通信(蓝牙和 WiFi)和以太网。我们还可以将显示器连接到 HDMI 输出、专用 3.2 英寸 320x240 TFT LCD 或用于 Raspberry Pi 的低功耗 E-Ink 2.13 英寸 250x122 显示器。

有各种计算能力和预算的控制器可供选择。我们可以为物联网系统选择这些控制器——从快速的 Raspberry Pi 4 Model B 8 GB 到最小的 Raspberry Pi Zero,所有这些都支持 Python 编程语言。如有必要,我们可以安装旧版本的 Python 2.7 以实现向后兼容。

让我们考虑以下 Python 代码片段,其中我们使用 GPIO Zero 库来控制 I/O 端口。

示例

说明

上面的例子演示了在释放按钮时,通过按下第二个引脚上的按钮来接收和处理信号。

利用这种方法的优势在于,基于 Raspberry Pi 的最复杂设备(涉及摄像机视频处理)有大量的开发实用程序、库和通信可供选择。

PyBoard 上的 Python

Python 在物联网设备中的另一个绝佳解决方案是带有 STM32F405RG 微控制器的 PyBoard。

PyBoard 被认为是一款紧凑而强大的电子开发板。它运行 MicroPython。PyBoard 通过 USB 连接到 PC,为我们提供一个 USB 闪存驱动器来存储 Python 脚本和一个用于即时编程的串行 Python 提示符(REPL)。它适用于 Windows、MacOS 和 Linux。

PyBoard 执行 MicroPython,它是标准 CPython 解释器的轻量级实现。官方文档还说:“MicroPython 是 Python 3 编程语言的精简高效实现,它包含 Python 标准库的一个小而精简的子集,并经过优化以在微控制器和受限环境中运行。MicroPython pyboard 是一款紧凑型电子电路板,它在裸机上运行 MicroPython,为您提供一个低级的 Python 操作系统,可用于控制各种电子项目。MicroPython 充满了高级功能,如交互式提示符、任意精度整数、闭包、列表推导、生成器、异常处理等等。然而,它足够紧凑,可以在 256k 代码空间和 16k RAM 中安装和运行。”

MicroPython 是 Python(版本 3.4)编程语言的完全重写,以适应并在微控制器上执行。它涉及各种优化以提高效率并消耗更少的 RAM。

MicroPython 在 PyBoard 上裸机执行,实质上为我们提供了一个基于 Python 的操作系统。内置的 pyb 模块包含用于控制板载外设(如 I2C、UART、ADC、DAC 和 SPI)的函数和类。

该板的尺寸令人印象深刻,大约占两个硬币大小,33 毫米 x 43 毫米,重量仅 6 克。

ESP8266、ESP32 搭配 MicroPython

另一种选择是使用 ESP8266 和 ESP32 运行 Python。我们必须创建一个低功耗、功能强大并集成了无线 Wi-Fi 网络的物联网设备。更准确地说,我们可以使用 MicroPython。

在系统上安装 Python 后,我们可以在命令行中使用 pip 安装程序来安装 esptool 模块。其语法如下所示

语法

MicroPython 的安装过程非常简单。我们可以从网站下载固件,然后借助 esptool 进行安装,切记在安装前格式化开发板。

我们还可以使用 MircoPython 开发的 IDE 之一。完整的开发过程在工作计算机上进行,然后编译并保存到 ESP8266 或 ESP32 微控制器的内存中。

让我们考虑以下示例,看看脚本可能有多简单

示例

说明

在上述代码片段中,我们从 machine 库中导入了 Pin 模块以及 time 模块。然后我们创建了一个 Pin 对象并在其上执行了一些函数。

与常规 Python 相比,MicroPython 有许多限制;然而,一般来说,我们可以轻松地在客户端编写所需的功能并在 ESP 微控制器上有效地执行它。此选项比购买 PyBoard 更具成本效益。

理解 Python 在物联网后端中的应用

我们可以通过多种方式将 Python 用作物联网的后端编程语言。其中一些如下:

MQTT 协议与 Python

物联网设备最流行的连接方法之一是 MQTT,它是一种用于有效实现 Python 的协议。

MQTT 协议是一种机器对机器 (M2M)/物联网连接协议,设计为高度轻量级的发布/订阅消息传输。它用于连接到需要小代码占用空间且网络带宽非常宝贵的远程位置。

名为 Eclipse Paho MQTT 的 Python 客户端库实现了 MQTT 协议的 3.1、3.1.1 和 5.0 版本。

Poho 库的代码提供了一个客户端类,允许应用程序链接到 MQTT 代理,以发布消息、订阅主题和接收已发布的消息。它还提供了一些辅助函数,可以更简单地向 MQTT 服务器发布一次性消息。

此外,此库支持 Python 2.7.9 及更高版本或 3.5 及更高版本。与旧的 Python 2.7 版本集成图像很简单。

Python 中基于 Flask 的物联网后端

我们还可以使用 Flask 微框架为物联网系统编写后端。Flask 微框架是一个快速、无麻烦的工具,可以轻松设置服务器端 I/O 信息,并且它还包含了许多功能,可以提高工作效率。

我们可以从决定要从物联网设备提供哪些请求开始。然后,我们必须设置 Flask 微框架并编写一段代码。然后 GET 方法将根据客户端的请求返回信息。

在某些情况下,我们在使用物联网设备时最好专注于 RESTful 协议。这使我们能够简化系统组件之间的交换,并有助于我们在未来扩展信息交换系统。

让我们考虑一个出现的任务,如下所示:在网页上显示物联网设备的信息。Flask 微框架将再次以其核心模板机制来拯救我们,我们可以在其中设计所需的网页,其中包含涉及图形的数据显示。

使用此方法的缺点是可能无法从服务器启动到设备的数据传输。因此,物联网必须定期和独立地从服务器拉取数据。请放心,有关键可以报告此风险。我们可以利用 Web Sockets 或用于 Pushsafer 的 Python 库。PushSafer 是一种简单安全的方式,可以实时向 Android、iOS 和 Windows 设备(移动和桌面)发送和接收推送通知,包括 Google Chrome、Mozilla Firefox、Opera 等互联网浏览器。

Python 中的 Microsoft Azure 物联网后端

Microsoft 发布了一个新的开源物联网扩展,以扩展 Azure CLI 2.0 的功能。Azure CLI 2.0 包含用于与 Azure Resource Manager 和管理端点交互的命令。

例如,我们可以使用 Azure CLI 2.0 构建 Azure 虚拟机或 IoT 中心。CLI 扩展允许 Azure 服务通过向用户提供对特定于服务的附加功能的访问来补充 Azure CLI。

物联网扩展为程序员提供了对物联网边缘、物联网中心和物联网中心设备预配服务功能的命令行访问。

Azure CLI 2.0 允许即时管理 Azure IoT 中心资源、设备预配服务实例以及相关中心。新的物联网扩展丰富了 Azure CLI 2.0,增加了设备管理和所有物联网边缘功能等特性。

  1. Azure CLI 2.0 物联网功能 - 控制平面
  2. 管理 IoT 中心实例、消费者组和作业
  3. 管理设备预配服务实例、访问策略、链接中心和证书
  4. 扩展的新功能 - 数据平面
  5. 管理设备和边缘模块身份及其各自的孪生定义
  6. 查询 IoT 中心以获取设备和模块作业、孪生和消息路由等详细信息
  7. 调用设备和模块方法
  8. 生成 SAS 令牌并获取连接字符串
  9. 云到设备和设备到云消息传递
  10. 设备文件上传
  11. 用于测试的设备模拟

下一个主题Python pysftp 模块