Python风靡了编码界。随着这门新语言的兴起,DIY电子领域也蓬勃发展。来自Arduino和Raspberry Pi等公司的开发板和单板计算机改变了人们生产家用电子产品的方式。如果你能用Python编程一个Arduino,那不是很棒吗?
没有比把两件很酷的事情结合起来更好的感觉了。遗憾的是,用Python直接编写一个Arduino是不可能的,因为董事会没有选择在板上解释语言。但是,可以使用Python程序直接控制USB。
本文将向您展示如何使用Python程序从命令行设置一个Arduino UNO(尽管任何与Arduino兼容的板都可以在这里工作)。本教程是为Windows10编写的,但也适用于Mac和Linux。你甚至可以使用这个工作流程直接从树莓皮控制一个Arduino,获得最终的双重DIY体验。
在今天的项目中,我们将使用Arduino Uno以及Python的pyFirmata接口。您几乎可以使用任何与Arduino兼容的板来实现这一点,尽管在编写本文时,pyFfirmata接口仅支持Arduino Uno、Mega、Due和Nano。如果您已经是Python大师,您可以将自己的board支持添加到pyFirmata——如果您这样做,请确保更新他们的GitHub!
如果您还没有安装Arduino IDE。如果你对微控制器世界是完全陌生的,我们的初学者指南Arduino将帮助你把一切都做好。
连接Arduino板,打开IDE。确保在“工具”菜单中选择了正确的板和端口。加载StandardFirmata示例草图并将其上载到电路板。这将允许您直接控制Arduino,只要它通过USB连接到计算机。如果草图上传到你的董事会没有任何错误,你准备好继续。
我们将使用Python3.4来控制Arduino,因为您将要安装的模块将此指定为最新的兼容版本。在此之前的任何版本都应该可以正常工作,并且已报告更高版本可以工作。您可以从Python软件基金会网站下载python3.4forwindows10。如果您想运行多个版本的Python,我们的Python虚拟环境指南将能够帮助您。
一旦安装了Python,我们就要将它添加到系统的PATH变量中。这将允许我们直接从命令行运行Python代码,而不需要位于安装它的目录中。您可以通过打开控制面板,搜索环境并单击编辑系统环境变量来完成此操作。在窗口底部选择环境变量。这将打开此窗口:
如果已经在列表中看到路径,请单击编辑,然后添加Python和Python/Scripts目录。如果没有路径变量,请单击“新建”并添加它。请注意,Python是直接安装到C:\中的。如果你在别处安装了它,你需要修改它来反映这一点。单击OK返回windows链,您几乎可以用Python控制Arduino了!
你需要最后一个谜题,让Python和我们的Arduino好好交谈。这是Python接口pyFirmata的形式。这个由Tino de Bruijn创建的接口可以从github下载,不过您可以通过键入以下命令行直接安装它:
pip install pyfirmata
一切都很好,它应该安装并如下所示:
如果失败,请检查将Python添加到环境变量部分,并确保为Python目录指定了正确的路径。
现在一切都设置好了,您可以为您的Arduino创建一个Python程序来测试它。打开您选择的IDE。今天我们将使用Eclipse,但是您可以轻松地使用任何文本编辑器,甚至云中的IDE。
创建新脚本,并将其另存为闪烁.py. 打破传统的标准闪烁LED程序,您将创建一个程序,提示用户在执行LED之前,他们希望LED闪烁的次数。这是一个简短的程序,如果你想直接下载到这里,你可以下载,但让我们把它分解。
首先,您需要从pyFirmata模块以及标准Python时间模块导入所需的内容。
from pyfirmata import Arduino, util
import time
现在你要建立Arduino董事会。本文假设您使用的是Arduino Uno板,但支持其他几个Arduino板。有关板上支持的详细信息,请参阅pyFirmata github。
检查您在ArduinoIDE中使用的COM端口,并将其作为变量板输入到代码中。
board = Arduino("COM3")
现在您将设置用户提示。熟悉Python的人将在这里识别出所有的东西。您使用输入函数将问题打印到屏幕,并将答案存储为变量。一旦用户提供了一个数字,程序就会报告LED闪烁的次数。
loopTimes = input('How many times would you like the LED to blink: ')
print("Blinking " + loopTimes + " times.")
要使LED闪烁适当次数,请使用for循环。如果您是Python的新手,请注意缩进,与其他语言不同,空格是语法的一部分。注意,引脚13是ArduinoUno 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变量转换为整数,因为来自用户的输入将自动存储为字符串。在这个简单的演示中,我们假设用户将输入一个数值。任何其他条目(如“8”)都将抛出错误。
保存脚本,并打开命令提示符。
一切都准备就绪,您只需导航到脚本所在的位置并运行它。为此,请键入cd[path to the script's directory],然后键入python闪烁.py.
一切正常,您的程序将启动时略有延迟Arduino初始化,提示您输入一个数字,然后使用板载LED闪烁多次。
程序输出应如下所示:
在您选择的闪烁次数后,只要按回车键,Arduino就会执行您的命令。
这个项目是Python和Arduino板之间通信的一个基本开始。这种方法与通常将脚本上传到Arduino本身的工作流程非常不同,但是它为使用平台打开了一种全新的方式,特别是如果您喜欢Python编程语言的话。
如果你在家里使用Linux服务器,这种与Arduino板通信的方法可以将服务器扩展到一个成熟的DIY家庭自动化系统中。通过将控制微控制器的Python脚本与DIY自动化电路相结合,您的NAS存储盒可以承担一组全新的有用功能。
为了让它成为最终的DIY体验,为什么不建造你自己的NAS盒,并用它来控制你的设备呢?想象一下在你的Plex服务器上按play并让灯自动关闭是多么酷!
你已经在用Python控制Arduino了吗?有没有我们还不知道的解决办法?请在下面的评论部分告诉我们!
关键区别–arduino vs raspberry pi Arduino和Raspberry Pi的主要区别在于Arduino是一个微控制器开发板,而Raspberry Pi是基于Linux操作系统的通用计算机。 选择Arduino或Raspberry Pi取决于要开发的项目。本文讨论了最常见的Arduino Uno和Raspberry Pi...
Arduino板和类似的微控制器使创造力比以往任何时候都更容易获得。无论你是控制LED灯带,自动化你的家,甚至保护你的财产,这些小奇迹是大多数DIY电子产品的核心。 ...
...何工作的基础知识,并给出一些任何人都能做的简单DIY Arduino项目的例子。 ...
...流,偶尔会有一个Raspberry Pi关注点,比如这篇文章介绍了Arduino、Raspberry Pi、NodeMcu和MQTT。 ...
... Arduino是电子、编程和休闲的完美结合。它是一个开源的微控制器(即一个微型的单电路计算机),具有各种组件和可编程逻辑。把它想象成**使用的乐高,使用实际的线路...
Arduino和Raspberry Pi看起来非常相似——它们都是可爱的小电路板,上面有一些芯片和引脚——但实际上它们是非常不同的设备。 ...
Python是一种优秀的编程语言。语法可能看起来奇怪和不寻常,但它很容易学习和使用。它支持Minecraft Pi版,以及一系列网站和学术研究项目。 ...
你知道Arduino关闭后可以存储数据吗?不是存储在闪存中的草图。我说的是EEPROM中的可变数据。加入我,我向你展示如何读写它,以及它能为你的项目做些什么。 ...
...戏控制器与Unity游戏引擎一起使用。这个控制器将由一个Arduino Uno提供动力,不过你也可以在这个项目中使用许多替代品中的一个。我们还将创建一个基本的游戏,你将使用你的控制器,以避免下降的物体和减慢时间。 ...
... DC 5V Relay Module with Optocoupler Low Level Trigger Expansion Board for Arduino R3 MEGA 2560 1280 DSP ARM PIC AVR STM32 Raspberry Pi BUY NOW ON AMAZON ...