怎样使用Python编程和控制Arduino

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服务器上按播放并自动关闭灯光会多么酷!


物联网应用:智慧养老院防火解决方案
PCB布局布线设计的四个常见问题解答
低、高和连续模式安全功能
并行模数转换实验
CAN总线网络安装终端电阻的3个主要原因
怎样使用Python编程和控制Arduino
江苏鲲鹏·昇腾生态创新中心助推江苏数字化发展与转型
香港证监会已向7家加密货币交易所发出警告称其平台拥有可疑证券交易
可燃气体报警器的报警值该如何设置
可调稳压电源工作原理是什么 lm317可调稳压电源电路图
什么是串口通讯?串口通讯的通讯协议技术详解
2018年台湾液晶电视第一季度处于历史低位,Q2出货量增幅达5%
一个价值36.5万美元的机器学习模型打了水漂?
IBM研发的模拟芯片可使手机轻松识别语音
基于Altera ASI IP核的ASI发送卡实现
凌阳AI芯片接新案 Q3进入量产
大屏幕无缝拼接技术和应用领域
食品微生物检测仪器有哪些指标
特斯拉击败航空航天巨头波音 迎来了一个明显的胜利
除了公告和宣传之外,AI真的在发展吗?