0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

怎样通过USB进行Arduino Python通信

454398 来源:wv 2019-10-24 11:52 次阅读

第1步:计算机环境

在计算机方面,我们将使用一个称为PySerial的Python模块。巧合的是,PySerial允许通过Python使用串行连接。在Windows上安装PySerial是一个非常简单的过程。 注意:此“假设”假设您已安装Python 2. *!如果您不这样做,PySerial仍然可以使用,但是您可能需要稍微更改代码以适应新标准。

要在Windows上安装,只需访问PySerial的下载页面,下载Windows二进制文件并运行它(在撰写本文时为pyserial-2.7.win32.exe)。然后,通过打开新的Python解释器实例并运行以下命令来测试安装:

import serial

步骤2:初始连接

要从Python启动与Arduino的连接,我们首先必须确定Arduino处于哪个 COM端口。幸运的是,Ardunio编程环境使此任务变得简单。

只需查看Arduino IDE的右下角,您将看到一些包含COM端口号的文本。我们将使用它来启动我们的Python串行连接,如下所示:

arduino = serial.Serial(‘COM1’, 115200, timeout=.1)

上面的代码将在“ COM1”上使用“ 115200”波特创建一个名为“ ardunio”的新串行对象,速率和.1秒超时。保持选定的波特率非常重要,因为它必须与Ardiuno端的波特率完全匹配。

第3步:Ardiuno与Python的通信

在Ardunio和Python之间进行通信比通过其他方式更容易。首先,我们需要一些代码来启动Ardunio的串行连接,并传递一条消息。我们可以使用Arduino的Serial.write()函数来做到这一点,就像这样:

void setup() {

Serial.begin(115200); // use the same baud-rate as the python side

}

void loop() {

Serial.println(“Hello world from Ardunio!”); // write a string

delay(1000);

}

这段代码将编写一个“来自Ardunio的Hello world!”。每秒一次连接到串行连接。现在,我们将构建一个Python脚本,该脚本能够接收这些消息,并根据需要对其进行处理。首先,我们必须像上一页一样启动连接,然后创建一个循环,该循环从流中获取当前信息,并将其打印到控制台。

import serial

arduino = serial.Serial(‘COM1’, 115200, timeout=.1)

while True:

data = arduino.readline()[:-2] #the last bit gets rid of the new-line chars

if data:

print data

请注意,在这种情况下,readline()处于阻塞状态,因此它将等待直到新行完全通过串行缓冲区为止。通常,readline()会占据空白行,因此我放入了if语句来检查数据是否实际包含任何内容。如果您想更精确地获取非阻塞数据,则可以在Arduino端使用read()并使用Serial.write()(用于字节)或Serial.print()(用于ASCII字符),但是您需要

第4步:Python与Arduino通讯

这一步有点难,因为这需要我们在事物的Arduino方面解析数据。为了帮助加快速度,我继续编写了一个简单的循环,该循环从Serial缓冲区中获取当前数据,并创建一个以Null结尾的字符串(C字符串),然后将其传递回Serial连接。您可以使用此技术来编写实际的解析器,方法是指定自己的数据包前缀和后缀,然后在串行缓冲区中扫描这些内容,并相应地创建字符串。

void setup() {

Serial.begin();

}

void loop() {

if(Serial.available() 》 0) {

char data = Serial.read();

char str[2];

str[0] = data;

str[1] = ‘’;

Serial.print(str);

}

}

现在我们可以编写一个简单的脚本,将数据从Python发送到Arduino,然后打印出返回的内容。

import serial, time

arduino = serial.Serial(‘COM1’, 115200, timeout=.1)

time.sleep(1) #give the connection a second to settle

arduino.write(“Hello from Python!”)

while True:

data = arduino.readline()

if data:

print data.rstrip(‘ ’) #strip out the new lines for now

# (better to do .read() in the long run for this reason

不难看出如何进一步扩展此方法以允许两个设备之间进行复杂的通信。我将在以后的“ ible”中介绍这种通信的一个示例,在该示例中,我将制作一种能够在任何PC游戏上工作的游戏手柄设备!

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • usb
    usb
    +关注

    关注

    60

    文章

    7887

    浏览量

    263837
  • python
    +关注

    关注

    55

    文章

    4777

    浏览量

    84411
  • Arduino
    +关注

    关注

    187

    文章

    6461

    浏览量

    186569
收藏 人收藏

    评论

    相关推荐

    如何使用Arduino实现CAN总线通信

    开源硬件平台,通过添加CAN总线模块,也可以实现CAN通信。 硬件准备 Arduino开发板 :可以选择Arduino Uno、Mega等型号。 CAN总线模块 :如MCP2515或M
    的头像 发表于 11-12 10:09 202次阅读

    USB2ANY控制lmx2595evm,是否可以通过python或者FPGA直接与evm通信来控制?

    USB2ANY控制lmx2595evm,写入寄存器值的常用方法是使用TICS Pro软件控制,请问我是否可以通过python或者FPGA直接与evm通信来控制
    发表于 11-08 16:26

    如何用python控制usb2any?

    我想用python控制usb2any,在网上搜索后得到的关于usb2any的资料很少,是否有官方的usb2any函数库?
    发表于 11-08 14:36

    使用Python进行图像处理

    下面是一个关于使用Python在几行代码中分析城市轮廓线的快速教程。
    的头像 发表于 11-07 10:14 122次阅读
    使用<b class='flag-5'>Python</b><b class='flag-5'>进行</b>图像处理

    如何用python控制usb2any?

    我想用python控制usb2any,在网上搜索后得到的关于usb2any的资料很少,是否有官方的usb2any函数库?
    发表于 09-27 06:44

    使用Python进行Ping测试

    )请求包,然后等待目标主机返回响应包,从而测量网络的延迟和丢包情况。随着Python编程语言的广泛应用,越来越多的网络工程师开始使用Python进行自动化网络测试和管理任务。本篇文章将详细介绍如何使用
    的头像 发表于 08-12 17:56 428次阅读
    使用<b class='flag-5'>Python</b><b class='flag-5'>进行</b>Ping测试

    用pycharm进行python爬虫的步骤

    以下是使用PyCharm进行Python爬虫的步骤: 安装PyCharm和Python 首先,您需要安装PyCharm和Python。PyCharm是一个流行的
    的头像 发表于 07-11 10:11 671次阅读

    使用Python进行自然语言处理

    在探讨使用Python进行自然语言处理(NLP)的广阔领域时,我们首先需要理解NLP的基本概念、其重要性、Python在NLP中的优势,以及如何通过
    的头像 发表于 07-04 14:40 385次阅读

    如何使用Python进行神经网络编程

    神经网络简介 神经网络是一种受人脑启发的机器学习模型,由大量的节点(或称为“神经元”)组成,这些节点在网络中相互连接。每个节点可以接收输入,对输入进行加权求和,然后通过一个激活函数产生输出
    的头像 发表于 07-02 09:58 346次阅读

    求助,在esp-idf中使用arduino作为组件后怎样使用arduino的库?

    在esp-idf中使用arduino作为组件后怎样使用arduino的库,例如我此时需要使用arduino的第三方库blinker,怎样使用
    发表于 06-12 07:21

    用STM32WB5MMG的设计的传感模块与USB dongle进行通信遇到的疑问求解

    通过用STM32WB5MMG的设计的传感模块与USB dongle进行通信(蓝牙通知 单次通知数据243Bytes) 1.我只有每次下载完程序才能正常与
    发表于 05-24 08:22

    通过Python脚本实现WIFI密码的自动猜解

    本文将记录学习下如何通过 Python 脚本实现 WIFI 密码的自动猜解。
    的头像 发表于 01-25 10:46 3273次阅读
    <b class='flag-5'>通过</b><b class='flag-5'>Python</b>脚本实现WIFI密码的自动猜解

    如何使用Python进行图像识别的自动学习自动训练?

    如何使用Python进行图像识别的自动学习自动训练? 使用Python进行图像识别的自动学习和自动训练需要掌握一些重要的概念和技术。在本文中,我们将介绍如何使用
    的头像 发表于 01-12 16:06 530次阅读

    Arduino的功能及其限制

    它在某些方面的限制。 精简而易用的编程环境:Arduino IDE提供了一个友好的编程环境,使得即使没有编程经验的人也可以轻松地开始编写代码。 强大的互联功能:Arduino可以通过各种通信
    的头像 发表于 12-21 14:15 1127次阅读

    python怎样运行代码

    Python是一种广泛使用的编程语言,用于开发各种类型的应用程序。它具有简单易学的语法和强大的功能,可以用于编写简单的脚本、开发桌面应用、构建Web应用、进行科学计算等多种用途。在本文中,我们将详细
    的头像 发表于 11-22 10:31 1138次阅读