最新消息:

通过pyFirmata实现树莓派控制Arduino

Arduino 少儿编程 2876浏览 0评论

通过pyFirmata实现树莓派控制Arduino

作者:Rishabh Jain
编译:Tony

尽管就其应用程序和结构而言,Raspberry PiArduino是两种不同的硬件,但是它们都被认为是两个相互竞争的开源硬件平台。他们俩都有非常强大的社区和支持。今天,我们将稍作更改,并向您展示如何利用它们。如果您同时拥有ArduinoRaspberry 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操作系统的Raspberry Pi
  • Arduino Uno或任何其他Arduino开发板
  • Arduino USB线
  • 发光二极管

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

使用Raspberry Pi在Arduino中安装PyFirmata

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

  • 步骤1:将Raspberry Pi连接到互联网。打开命令终端并键入以下命令,然后按Enter 
1sudo apt-get -y install arduino python-serial mercurial

等待几分钟,这将需要一些时间。该命令将在您的Raspberry Pi中安装Arduino IDE。

  • 步骤2:现在,我们将使用指定的github安装pyFirmata文件: 
1git clone  https://github.com/tino/pyFirmata

然后运行以下命令:

1cd pyFirmata 
2sudo python setup.py install

 

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

现在,使用USB电缆将Arduino开发板与Raspberry Pi连接,然后在终端窗口中键入arduino启动Arduino IDE 。

通过pyFirmata实现树莓派控制Arduino
启动arduino
  • 步骤4:-然后键入lsusb命令以检查Arduino是否与树莓派连接。在Arduino IDE中,转到工具,然后选择板子和串行端口。

 

 

  • 步骤5:通过单击文件->示例->固件->标准固件,然后单击上载按钮,在Arduino上上传PyFirmata固件,如下所示。
通过pyFirmata实现树莓派控制Arduino
上传固件

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

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

代码说明

对于编码部分,您应该阅读pyFirmata的文档以更好地理解,我们将使用pyFirmata函数编写代码。

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

1import pyfirmata

在Arduino上定义引脚以连接LED

1led_pin = 9

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

1board = pyfirmata.Arduino("/dev/ttyACM0")
2print "Code is running”
3

在while循环中,使用board.digital[].write()函数将led引脚设置为高电平和低电平,并使用board.pass_time函数提供延迟。

1while True:
2    board.digital[led_pin].write(0)
3    board.pass_time(1)        
4    board.digital[led_pin].write(1)
5    board.pass_time(1)

我们的代码已经准备好,通过以.py为扩展名的文件来保存该代码。

打开命令终端,然后键入python blink.py以在Arduino板上运行代码。确保使用USB连接线将Arduino开发板与Raspberry Pi开发板连接。

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

使用pyFirmata在Arduino上使LED渐变

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

在此代码中,我们以不同的方式定义了引脚,例如led = board.get_pin(‘d:9:p’),其中d表示数字引脚。这是pyFirmata库的功能,部分代码如下:

1led = board.get_pin('d:9:p')            
2while True:
3# increase
4    for i in range(010):
5        brightness = brightness + 0.1
6        print "Setting brightness to %s" % brightness
7        led.write(brightness)
8        board.pass_time(delay)

现在,您可以在系统中添加更多传感器,尝试使用Raspberry pi和python脚本构建它们。

通过pyFirmata实现树莓派控制Arduino
现象

转自公众号:
TonyCode

您必须 登录 才能发表评论!