友情提示:380元/半年,儿童学编程,就上码丁实验室。
作者:Rishabh Jain
编译:Tony
尽管就其应用程序和结构而言,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操作系统的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 。
- 步骤4:-然后键入lsusb命令以检查Arduino是否与树莓派连接。在Arduino IDE中,转到工具,然后选择板子和串行端口。
- 步骤5:通过单击文件->示例->固件->标准固件,然后单击上载按钮,在Arduino上上传PyFirmata固件,如下所示。
我们已经在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(0, 10):
5 brightness = brightness + 0.1
6 print "Setting brightness to %s" % brightness
7 led.write(brightness)
8 board.pass_time(delay)
现在,您可以在系统中添加更多传感器,尝试使用Raspberry pi和python脚本构建它们。
转自公众号:
TonyCode