如何使用Raspberry pi和Python来控制Arduino

描述

虽然Raspberry Pi和Arduino在应用和结构上是两个不同的硬件,但它们都被认为是两个相互竞争的开源硬件平台。他们都有非常强大的社区和支持。今天我们将稍微改变一下,并向您展示我们如何利用它们。如果你同时拥有Arduino和Raspberry pi板,本文将向您展示如何使用Raspberry pi和Python来控制Arduino。

我们将使用PyFirmata 固件使用 Raspberry Pi python 脚本向 Arduino 发出命令。PyFirmata基本上是一个预构建的python程序库包,可以安装在Arduino中,以允许任何计算机上的python脚本与Arduino之间进行串行通信。这个python包可以访问在Arduino上读取和写入任何引脚。所以在这里我们将使用 Raspberry pi 在 Arduino 上运行 python 程序。

因此,在本教程中,我们将利用这个库,并将在我们的Arduino 板中使用它来使用 Raspberry Pi 控制 Arduino。

要求

安装了Raspbian OS的Raspberry Pi

Arduino Uno 或任何其他 Arduino 板

Arduino USB 电缆

发光二极管

在本教程中,我使用外部显示器使用HDMI电缆与树莓派连接。如果您没有显示器,则可以使用SSH客户端(Putty)或VNC服务器通过笔记本电脑或计算机连接到Raspberry Pi。

使用 Raspberry Pi 在 Arduino 中安装 PyFirmata

要在Arduino中上传PyFirmata固件,我们必须在Raspberry Pi中安装Arduino IDE。请按照以下步骤进行安装:

第 1 步:-将树莓派连接到互联网。打开命令终端并键入以下命令并按回车键

sudo apt-get

-y

install arduino python-serial mercurial

等待几分钟,这需要时间。此命令将在Raspberry Pi中安装Arduino IDE。

第 2 步:-现在,我们将使用给定的 github 安装 pyFirmata 文件:

git clone

https://github.com/tino/pyFirmata

然后运行以下命令:

cd pyFirmata

sudo python setup.py install

第 3 步:-我们已经安装了所有必需的文件和设置。

现在,使用USB电缆将Arduino板与Raspberry Pi连接,并通过在终端窗口中键入arduino来启动ArduinoIDE。

Arduino

第 4 步:-然后键入lsusb命令以检查 Arduino 是否与您的树莓派连接。

在Arduino IDE中,转到工具并选择您的主板和串行端口。

第 5 步:-在Arduino上上传PyFirmata固件,方法是单击文件->示例->Firmata->标准Firmata,然后单击上传按钮。如下图所示。

Arduino

我们已经成功地在Arduino板中安装了pyFirmata固件。现在,我们可以使用Raspberry Pi控制Arduino。

为了演示,我们将通过在Raspberry Pi中编写python代码来闪烁和淡化Arduino上的LED。

代码说明

对于编码部分,您应该阅读pyFirmata的文档以更好地理解。我们将使用 pyFirmata 函数来编写我们的代码。您可以通过以下链接找到pyFirmata文档。

因此,让我们开始编写代码

在Raspberry Pi上打开您喜欢的文本编辑器并导入pyFirmata库。

import pyfirmata

定义 Arduino 上的引脚以连接 LED

led_pin = 9

现在,我们必须使用 pyfirmata 编写连接 Arduino 板的串行端口名称。Arduino()函数,然后通过在板变量中分配端口来创建一个实例。

board = pyfirmata.Arduino("/dev/ttyACM0")

print "Code is running”

在 while 循环中,使用board.digital[].write() 函数使 LED 引脚高电平和低电平,并使用board.pass_time()函数给出延迟。

while True:

board.digital[led_pin].write(0)

board.pass_time(1)        

board.digital[led_pin].write(1)

board.pass_time(1)

我们的代码已准备就绪,通过将扩展名放入文件名.py来保存此代码。

打开命令终端并键入pythonblink.py以在Arduino板上运行代码。确保您的Arduino板使用USB电缆与Raspberry Pi板连接。

现在,您可以在Arduino板上看到闪烁的LED。

最后给出了使用 pyFirmata 闪烁 LED 的完整代码。

使用 pyFirmata 的 Arduino 上的衰落 LED

现在,我们将编写用于淡入 LED 淡入淡出的代码,以使您更熟悉 pyFirmata 函数。此代码与上一个代码一样简单。您必须使用两个用于循环,一个用于增加亮度,另一个用于降低亮度。

Python code for LED blink:


import pyfirmata


led_pin = 9


board = pyfirmata.Arduino("/dev/ttyACM0")



while True:

board.digital[led_pin].write(0)

board.pass_time(1)

board.digital[led_pin].write(1)

board.pass_time(1)





Python code for Fading LED:


import time

import pyfirmata


delay = 0.3

brightness = 0


board = pyfirmata.Arduino("/dev/ttyACM0")


led = board.get_pin('d:9:p') 

while True:

# increase

for i in range(0, 10):

brightness = brightness + 0.1

print "Setting brightness to %s" % brightness

led.write(brightness)

board.pass_time(delay)


# decrease

for i in range(0, 10):

print "Setting brightness to %s" % brightness

led.write(brightness) 

brightness = brightness - 0.1 

board.pass_time(delay)


 


 

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

全部0条评论

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

×
20
完善资料,
赚取积分