当前位置:首页 > 工业控制 > 电路设计项目集锦
[导读]在本节中,您将学习如何通过Python应用程序,使用UART串行通信协议,将独立的微控制器(如8051(AT89S51或W78E052DDG)、MSP430或PIC16F系列)与PC连接并进行数据交换。

在本教程中,您将学习如何在电脑上安装 pySerial,并使用 pySerial 的功能与 Arduino 或微控制器(ATmega328P)进行通信。

在这里,我将教一位初出茅庐的工程师或爱好者如何使用 pySerial 库,通过串口(虚拟 COM 端口)将他的嵌入式系统项目连接到 Windows 11 电脑上。

使用 pySerial 进行 Python 串口编程(适合初学者)

源代码

本教程中使用的全部源代码(Python 和 Arduino)均可从我们的网站下载。

•使用 pySerial 和 Arduino 的 Python 串口编程教程

•GitHub 代码仓库

在 Windows 11 上安装 Python 和 pySerial

首先,通过在命令提示符中输入 Python 来检查系统上是否已安装 Python。

如果 shell 报错找不到 python,或 python 未被识别为内部/外部命令。

现在你可以前往 Python 官方下载页面进行安装。

你可以安装 Python 解释器。

现在你可以通过进入命令提示符并输入以下命令来安装 pySerial 库。

PIP 是一个用于下载和管理 Python 语言软件库的工具,它自带解释器。

这是截图

你可以使用 pip list 命令检查系统上是否安装了 pyserial

使用 Thonny IDE 进行 Python 串口编程

如果之前安装Python觉得比较复杂,你可以选择另一个简单的开源IDE——Thonny。

使用 Thonny 非常简单,

Thonny 内置了 Python 解释器,并已预装 pySerial。

无需安装 Python 解释器或 PySerial,您可以轻松跳过上述步骤。

使用 PySerial 和 Python 打开串口

现在我们将使用 pySerial 打开串口连接。你可以使用 Thonny IDE 或命令行中的 Python。

首先将您的Arduino连接到电脑,并通过设备管理器查看COM端口号。

COM端口编号在您的系统上可能不同。

现在我们将创建一个简单的脚本。

这段代码不会有任何作用,

我们接下来将使用“COM24”端口号打开连接。

然后可以使用 SerialObj 这个对象/变量来配置串行参数,例如波特率、奇偶校验以及发送和接收数据。

然后我们使用.close()方法关闭端口。

如果你运行这段代码没有出现错误,那就说明你的设置已正确配置。

在 Thonny 中,你可以通过按 F5 键来创建文件并运行它。

在 Windows 命令行中,将代码保存为 serial_open.py 或任意你喜欢的名称,然后运行它。

配置串口波特率及其他参数

以下代码将教你如何操作:

我们正在配置波特率参数为9600,您可以使用任何已定义的波特率值,例如4800、9600、19200等。

接下来你定义了字节大小 = 8,这意味着8位表示一个比特

现在我们设置 parity = 'N',表示无奇偶校验,这是通用设置。

其他奇偶校验设置为

现在我们定义停止位的数量

因此,你可以使用1.5和2的停止位,但这些并不常用。

大多数情况下,您将使用8N1配置进行串行通信

•8 位数据

•无奇偶性

•1 停止位

您也可以通过以下方式创建一个序列对象。

这种延迟通常用于为连接的设备(例如Arduino)提供足够的时间,在串口打开后进行复位并准备好。

串口通信期间处理 pySerial 异常

在某些情况下,打开串行端口可能会失败,原因包括端口不可用、已被其他应用程序占用,或系统中不存在该端口。

pySerial 库提供了 serial.SerialException 异常来处理此类错误。

通过捕获此异常,Python 程序可以检测到失败的原因,显示适当的错误信息,并优雅地恢复,而不是崩溃。

以下是一段用于处理 pySerial 异常的代码片段

从电脑向Arduino传输数据

在本节中,我们将使用 Python 向 PC 的串口写入一个字节,该字节将被 Arduino 接收。

运行在电脑上的Python脚本通过虚拟COM端口将ASCII字符顺序发送到Arduino Uno。

如上图所示,当Arduino接收到ASCII字符'A'时,会通过连接到数字引脚12的LED进行闪烁来响应。

请注意,当通过串行端口发送数据时,需要使用字节数组类型而不是字符串类型。

在Arduino端

Arduino端的程序持续通过串口等待接收字符“A”。

当接收到字符时,连接到数字引脚12的LED会亮起2秒钟。使用switch语句来识别接收到的字符,并执行相应的操作,如下所示。

使用 Python 和 pySerial 从 Arduino 接收串行数据

在这里,Arduino 通过串行端口将文本字符串“Hello from Arduino”发送到 Windows 或 Linux 电脑。

运行在电脑上的Python脚本使用pySerial库提供的readline()函数接收传输的数据,并将接收到的文本显示在控制台。

pySerial 库提供了以下用于从串行端口读取数据的功能:

•readline()

•读取()

readline() 函数会读取输入数据,直到遇到换行符(\n)。然后返回包括换行符在内的所有已读字节。

如果未收到换行符,函数将等待直到收到换行符或指定的读取超时时间到期。如果未配置超时,则 readline() 将无限期等待。

PC侧代码

Arduino 侧

在Arduino端,文本字符串存储在一个字符数组(char数组)中,如下所示。Arduino会以大约每秒一次的间隔,通过串口持续向PC传输该字符串。

一旦字符串被PC接收,数据就会以命令行形式显示如下所示。

将独立微控制器连接到电脑

在本节中,您将学习如何通过Python应用程序,使用UART串行通信协议,将独立的微控制器(如8051(AT89S51或W78E052DDG)、MSP430或PIC16F系列)与PC连接并进行数据交换。

由于独立的微控制器通过UART级别的串行信号进行通信,因此需要使用USB转串口转换器才能与电脑建立通信。

USB转串口转换器通过将微控制器的UART信号转换为USB数据,作为微控制器与计算机之间的桥梁,使操作系统能够识别该数据为虚拟COM端口。

连接后,Python应用程序可通过该虚拟COM端口传输和接收串行数据,从而实现与微控制器的通信,如下图所示。

这是一个连接到电脑的ATmega328P。

本文编译自hackster.io

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读

你是否好奇过微控制器如何同时处理多个任务?本项目展示了STM32F407ZGT6 RT-Spark开发板上定时器中断和任务调度的工作原理。两个定时器以不同的频率闪烁LED,而按钮中断则在按下时立即响应——所有这些功能都通...

关键字: 微控制器 开发板 LED STM32CubeMX

该项目是一个简单的人体反应计时器,使用RT-Spark开发板和STM32F407ZGT6微控制器构建而成。它用于测量当RGB LED亮起时,人能多快做出反应。

关键字: 微控制器 开发板 LED STM32F407ZGT6

引言:微控制器广泛应用于嵌入式系统中,用于控制输入和输出设备。GPIO引脚使微控制器能够与所使用的外部硬件进行通信,例如开关按钮、LED灯和显示屏(LCD)。

关键字: 微控制器 嵌入式系统 LED

该项目是一个基于微控制器的C语言编写的音频生成器,配备三个按钮,用户可通过按钮播放声音或调节音高。它作为基本GPIO控制和按钮逻辑的实际演示。

关键字: 微控制器 C语言 音频生成器 STM32F407ZGT6

驱动高密度可寻址LED阵列(如WS2812、WS2811、WS2813和WS2815)通常需要32位ARM微控制器或系统级芯片。然而,8位AVR微控制器在嵌入式应用中依然具有极高的性价比、易获取性和可靠性。

关键字: LED阵列 微控制器 ATmega128

Arduino UNO R4 WiFi 是 Arduino UNO 系列的重大升级,集成了瑞萨(Renesas)RA4M1 32位 ARM Cortex-M4 微控制器,并内置 ESP32-S3 Wi-Fi 和蓝牙连接功...

关键字: LED 矩阵 微控制器 Wi-Fi Arduino UNO R4

在这次实验活动中,我学习了如何在STM32F407ZGT6微控制器上使用定时器、中断和任务调度。主要目标是理解中断的工作原理、多个任务如何在系统中运行,以及不同的调度方法对任务性能的影响。

关键字: 定时器 中断 微控制器 STM32F407ZGT6

开发者现可通过 nRF Connect SDK 3.4.0,使用全新进阶的健康状态 (State-of-Health) 监测功能与全域设备电池可视化能力

关键字: 微控制器 SoC 电池

小型机房内装有电子设备,运行过程中会持续产生热量。如果房间温度超过安全限值,将会影响设备的性能和使用寿命。因此,需要配备自动通风系统,以维持稳定的温度并确保设备可靠运行。

关键字: LM35 PWM风扇 ATmega328P
关闭