使用Python进行物联网开发

使用Python进行物联网开发

通常,原型或实际的物联网(IoT)系统需要快速且高效地设计和开发。在这种情况下,会立即进行两项活动:一是为IoT设备编程,二是组织一个后端与这些设备进行交互。

在这两个活动中,我们可以利用Python编程语言进行开发。或者,我们可以使用功能且实用的MicroPython版本来处理计算资源有限的设备,并且价格非常低。

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

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

了解物联网的重要性

物联网 ”一词最早由 凯文·阿什顿 在1999年提出。自那时以来,物联网的重要性和规模急剧增长,其中一个主要指标是,物联网市场规模在2018年达到了1510亿美元,并且每年稳步增长。根据营销人员的预测,到2022年,物联网市场规模可能超过5610亿美元。

当年,我们可以用以下示例来解释物联网:

“我们可以使用手机来控制房间里的电灯开关。”

如今,几乎没有人会对智能电表感到惊讶,它会传输电力消耗读数,将该信息上传到云端,并直接发送每月账单到电子邮件中。

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

为什么在物联网中使用Python

对于许多开发人员来说,Python是市场上首选的语言。它易于学习,语法清晰,并且有着庞大的在线社区支持。当涉及到物联网时,Python成为一个很好的选择。我们既可以用它来开发后端,也可以用它来开发设备的软件。而且,Python可以在Linux设备上工作,并且我们可以使用MicroPython来使用微控制器。

Python是我们可以使用的编程语言,可以减少我们需要在云端处理的数据量。无论是从头开始创建物联网项目还是与执行器、传感器和配件进行交互,Python都能满足需求。

使用Python开发物联网设备的许多好处之一是拥有大量适用于各种平台的库以及开发代码的速度。

Python是开发设备原型的伟大伙伴。即使我们在进行CC++或Java的生产时对一些脚本进行了重写以提高性能,系统在Python中通常能正常运行。

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

Python编程语言中适用于物联网的最佳解决方案如下:

  1. 树莓派上的Python
  2. PyBoard上的Python
  3. 使用Micropython的ESP8266,ESP32

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

树莓派上的Python

在脑中想到的在物联网设备上运行Python的首要目标是从桌子上拿起树莓派。Python已经预装在操作系统中,我们只需编写脚本。

在这种情况下,我们可以控制树莓派扩展栏上的I/O端口。幸运的是,该板支持无线通信(蓝牙和WiFi)和以太网。我们还可以将监视器连接到HDMI输出,专用的3.2英寸320×240 TFT LCD,或者低能耗的2.13英寸250×122电子墨水显示屏用于树莓派。

控制器的计算能力和预算有大量的选择。我们可以选择这些控制器用于物联网系统-范围从快速的树莓派4 Model B 8GB到最小的树莓派Zero,所有这些都支持Python编程语言。必要时,我们可以安装早期版本的Python 2.7以实现向后兼容。

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

示例:

# importing the required modules
from gpiozero import Button
from time import sleep

# creating an object of Button
the_button = Button(2)

# using the if-else statement
while True:
    if the_button.is_pressed:
        print("Button Pressed")
    else:
        print("Button Released")
    sleep(1)

Explanation:

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

利用这种方法的好处是可以利用各种开发工具、库和通信来处理基于树莓派的最复杂设备,包括摄像头的视频处理。

Python在PyBoard上的应用

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

PyBoard被认为是一种紧凑而功能强大的电子开发板。它使用MicroPython。 PyBoard通过USB连接到电脑,为我们提供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)编程语言的一整个重写,以适应并在微控制器上执行。它对效率进行了各种优化,内存消耗较少。

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

该板的尺寸令人印象深刻,约为两个25美分硬币的大小,33mm x 43mm,重量仅为6克。

使用MicroPython的ESP8266和ESP32

另一种选择是使用ESP8266和ESP32来运行Python。我们需要创建一个基于物联网的设备,具有低功耗、强大的功能和与无线WiFi网络的集成。更确切地说,我们可以使用MicroPython。

一旦我们在系统上安装了Python,我们就可以使用命令行中的pip安装程序来安装 esptool 模块。下面是该模块的用法示例:

语法:

$ pip install esptool

MicroPython的安装过程非常简单。我们可以从网站上下载固件,并在安装之前使用esptool的帮助格式化板子。

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

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

示例:

# importing the required modules
from machine import Pin
import time

# creating an object of Pin
ledPin = Pin(2, Pin.OUT)

# using some functions
while True:
    ledPin.on()
    time.sleep(1)
    ledPin.off()
    time.sleep(1)

说明:

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

与常规的Python相比,MicroPython有许多限制;然而,总体而言,我们可以在客户端上轻松编写必要的功能,并在ESP微控制器上有效地执行它。这种选项相对于购买PyBoard来说更具成本效益。

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

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

使用Python和MQTT协议

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

MQTT协议是一种面向机器(M2M)/物联网连接协议,旨在作为高度轻量级的发布/订阅消息传输载体。它用于连接到需要小代码占用空间和网络带宽有限的远程位置。

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

Paho 库的代码提供了一个客户端类,允许应用程序连接到MQTT代理以发布消息、订阅主题和接收已发布的消息。它还提供了一些辅助函数,以便在将一次性消息发布到MQTT服务器时简化操作。

此外,该库支持Python 2.7.9及以上版本或3.5及以上版本。将图像与较旧的Python 2.7版本集成非常简单。

使用Python中的Flask编写物联网后端

我们也可以使用Flask微框架来编写物联网系统的后端。Flask微框架是一个快速而无麻烦的工具,可以轻松设置服务器端I/O信息,并具有许多功能,使工作更高效。

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

在许多情况下,我们最好在处理物联网设备时专注于RESTful协议。这样可以简化系统组件之间的交换,并帮助我们扩展以后的信息交换系统。

让我们考虑一个所需任务:在网页上显示来自物联网设备的信息。Flask微框架将再次拯救我们,它具有核心模板机制,可以使用数据显示和图形显示设计所需的网页。

利用这种方法的缺点是可能没有从服务器到设备的数据传输的起始点。因此,物联网必须周期性地独立从服务器中提取。放心吧,有方法可以报告这个风险。我们可以利用WebSocket或者Python库推送Safer。PushSafer是一种轻松、安全的方式,可以实时地将推送通知发送和接收到Android、iOS和Windows设备(包括移动设备和台式机),包括Google Chrome、Mozilla Firefox、Opera等互联网浏览器。

Microsoft Azure IoT后端使用Python

微软发布了一个新的开源扩展,用于扩展Azure CLI 2.0的功能。Azure CLI 2.0包括与Azure资源管理器和管理端点交互的命令。

例如,我们可以利用Azure CLI 2.0构建Azure虚拟机或物联网中心。CLI的扩展允许Azure服务通过提供用户对其他特定于服务的功能的访问来补充Azure CLI。

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

Azure CLI 2.0允许即时管理Azure物联网中心的资源、设备预配服务实例和关联的中心。新的物联网扩展丰富了Azure CLI 2.0的功能,如设备管理和所有物联网Edge的能力:

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

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程