怎样使用Python编程和控制Arduino

电子说

1.2w人已加入

描述

Python席卷了编码世界。除了这种新语言的兴起之外,DIY电子产品领域也蓬勃发展。 Arduino和Raspberry Pi等公司的开发板和单板计算机已经改变了人们创建家用自酿电子产品的方式。如果可以用Python编程Arduino会很棒吗?

没有比结合两个很棒的东西更好的感觉了。可悲的是,不可能用Python直接对Arduino进行编程,因为开发板上没有用于语言解释的选项。但是,可以使用Python程序直接控制USB。

本文将向您展示如何设置Arduino UNO(尽管任何Arduino兼容板都可以在这里工作),以便通过该程序进行编程和控制使用Python程序的命令行。本教程是针对Windows 10编写的,但也适用于Mac和Linux。您甚至可以使用此工作流程直接从Raspberry Pi控制Arduino,以获得终极的双向DIY体验。

为Python设置Arduino

对于今天的项目,我们将使用Arduino Uno,以及适用于Python的pyFirmata接口。尽管在编写pyFfirmata接口仅支持Arduino Uno,Mega,Due和Nano时,您几乎可以使用任何与Arduino兼容的板。如果您已经是Python专家,则可以在pyFirmata中添加自己的主板支持-如果需要,请确保更新其GitHub!

尚未安装Arduino IDE。如果您不熟悉微控制器,那么我们的Arduino初学者指南将帮助您完成一切。

连接Arduino板并打开IDE。确保在工具菜单中选择了正确的板卡和端口。加载 StandardFirmata 示例草图并将其上传到电路板上。只要您通过USB将Arduino连接到计算机,就可以直接控制Arduino。只要将草图上传到板上没有任何错误,您就可以继续。

Python和命令行控制

我们将使用Python 3.4来控制Arduino,因为您将要安装的模块将其指定为最新的兼容版本。在此之前的任何版本都应该可以正常工作,并且据报导更高的版本可以工作。您可以从Python Software Foundation网站下载适用于Windows 10的Python 3.4。如果您想运行多个版本的Python,我们的Python虚拟环境指南将可以为您提供帮助。

一旦您安装了Python,我们希望将其添加到系统的PATH变量中。这样一来,我们就可以直接从命令行运行Python代码,而无需进入安装目录。您可以通过打开控制面板,搜索环境,然后点击编辑系统环境变量。在窗口底部,选择环境变量。这将打开此窗口:

如果您已经在列表中看到 PATH ,请单击“编辑”,然后添加您的 Python 和 Python/Scripts 目录。如果您没有PATH变量,请单击“新建”并添加它。请注意,此处将Python直接安装在 C: 中。如果您将其安装在其他位置,则需要对其进行修改以反映这一点。单击“确定”返回窗口链,您几乎已经准备好使用Python控制Arduino!

神奇的润滑脂

您将需要完成最后一个难题让Python与我们的Arduino很好地对话。这以称为 pyFirmata 的Python接口的形式出现。 Tino de Bruijn创建的该界面可以从github下载,尽管您可以直接在命令行中输入以下内容来安装它:

pip install pyfirmata

一切正常,它应该安装并如下所示:

如果失败,请继续将Python添加到环境变量部分,并确保您已经为您的Python目录提供了正确的路径。

使它发生

现在一切都已设置完毕,您可以为Arduino创建一个Python程序来对其进行测试。打开您选择的IDE。今天我们将使用Eclipse,但您可以轻松地使用任何文本编辑器,甚至是云中的IDE。

创建一个新脚本并将其保存为 blink.py 。打破传统的标准LED闪烁程序,您将要创建一个程序,该程序会提示用户在LED闪烁之前希望其闪烁的次数。这是一个简短的程序,如果您想直接使用它,可以在这里下载,但让我们对其进行分解。

首先,您需要从 pyFirmata 模块,以及标准的Python Time 模块。

from pyfirmata import Arduino, util

import time

现在,您将要设置Arduino开发板。本文假设您正在使用 Arduino Uno 板,尽管还支持其他几个Arduino板。请参阅pyFirmata github,以获取有关主板支持的详细信息。

检查Arduino IDE中使用的COM端口,并将其作为变量 board 输入到您的代码中。

p》 board = Arduino(“COM3”)

现在,您将设置用户提示。那些熟悉Python的人会在这里识别所有内容。使用 input 功能将问题打印到屏幕上,并将答案存储为变量。用户提供一个数字后,程序将报告LED闪烁多少次。

loopTimes = input(‘How many times would you like the LED to blink: ’)

print(“Blinking ” + loopTimes + “ times.”)

要使LED闪烁适当的次数,请使用 for循环。如果您是Python的新手,请注意缩进,因为与其他语言不同,空格是语法的一部分。请注意,插针13是Arduino Uno的板载LED,如果您的电路板不同,则需要对其进行修改。

for x in range(int(loopTimes)):

board.digital[13].write(1)

time.sleep(0.2)

board.digital[13].write(0)

time.sleep(0.2)

您将投射 loopTimes 变量为整数,因为来自用户的输入将自动存储为字符串。在这个简单的演示中,我们假设用户将输入一个数值。其他任何项(例如“八”)都将引发错误。

保存脚本,并打开命令提示符。

闪烁灯和其他启示

一切准备就绪,您需要做的就是导航到脚本所在的位置并运行它。通过键入 cd [脚本目录的路径] ,然后键入 python blink.py 。

一切正常,您的程序将以Arduino初始化时会稍有延迟,提示您输入一个数字,然后使用板载LED闪烁多次。

程序输出应如下所示:

在选定的眨眼次数后,一旦按Enter键,Arduino应该执行您的命令。

小开始

该项目是在Python和Arduino板之间进行通信的准系统。这种方法与通常的将脚本上传到Arduino本身的工作流程完全不同,但是它为使用该平台开辟了一种全新的方式,尤其是在您喜欢Python编程语言的情况下。

如果您使用在家中使用Linux服务器,这种与Arduino板通信的方法可以将该服务器扩展为成熟的DIY家庭自动化系统。通过将控制微控制器的Python脚本与DIY自动化电路相结合,您的NAS存储盒可以承担一套全新的有用功能。

要使其具有终极的DIY体验,为什么不建造自己的NAS盒并用它来控制您的电器吗?想象一下在Plex服务器上按播放并自动关闭灯光会多么酷!

责任编辑:wv

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

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分