Python席卷了编码世界。除了这种新语言的兴起之外,DIY电子产品领域也蓬勃发展。像Arduino这样的公司的开发板和单板计算机已经改变了人们创造家庭酿造电子产品的方式。如果可以用Python编程Arduino会很棒吗?
没有比结合两个很棒的东西更好的感觉了。可悲的是,不可能用Python直接对Arduino进行编程,因为开发板上没有用于语言解释的选项。但是,可以使用Python程序直接控制USB。
本文将向您展示如何设置Arduino UNO(尽管任何与Arduino兼容的板都可以提供最终的双向DIY体验)。
为Python设置Arduino
对于今天的项目,我们将使用Arduino Uno以及python的pyFirmata接口,您可以为此使用几乎任何Arduino兼容板,尽管在编写pyFfirmata接口时仅支持Arduino Uno,Mega,Due和Nano。如果您已经是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。
创建一个新脚本,并将其另存为 blink.py 。打破传统的标准LED闪烁程序,您将要创建一个程序,该程序会提示用户在LED闪烁之前希望其闪烁的次数。这是一个简短的程序,如果您想直接使用它,可以在这里下载,但让我们对其进行分解。
首先,您需要从 pyFirmata 模块,以及标准的Python Time 模块。
from pyfirmata import Arduino, utilimport time
现在,您需要设置Arduino开发板。本文假设您正在使用 Arduino Uno 板,尽管还支持其他几个Arduino板。请参阅pyFirmata github,以获取有关主板支持的详细信息。
检查Arduino IDE中使用的COM端口,并将其作为变量 board 输入到您的代码中。
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 变量转换为整数此处,来自用户的输入将自动存储为字符串。在这个简单的演示中,我们假设用户将输入一个数值。其他任何条目,例如“ eight",都会引发错误。
保存脚本,并打开命令提示符。
指示灯闪烁和其他启示
一切准备就绪,您所需要做的就是导航到脚本所在的位置并运行它。通过键入 cd [脚本目录的路径] ,然后键入 python blink.py 。
一切正常,您的程序将以Arduino初始化时会稍有延迟,提示您输入一个数字,然后使用板载LED进行多次闪烁。
程序输出应如下所示:
尽快在选定的眨眼次数后按回车键,Arduino应该执行您的命令。
小开始
该项目已经成为在Python和Arduino之间进行通信的准系统板。这种方法与通常的将脚本上传到Arduino本身的工作流程完全不同,但是它为使用该平台开辟了一种全新的方式,尤其是在您喜欢Python编程语言的情况下。
如果您使用Linux服务器,您的NAS存储盒可以具有一套全新的有用功能。
要使其具有终极的DIY体验,为什么不建造自己的NAS盒服务器并自动关闭灯!
您是否已经使用Python控制Arduino?有我们只是不知道的惊人解决方法吗?在下面的评论部分中让我们知道!