虽然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。
第 4 步:-然后键入lsusb命令以检查 Arduino 是否与您的树莓派连接。
在Arduino IDE中,转到工具并选择您的主板和串行端口。
第 5 步:-在Arduino上上传PyFirmata固件,方法是单击文件->示例->Firmata->标准Firmata,然后单击上传按钮。如下图所示。
我们已经成功地在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)
全部0条评论
快来发表一下你的评论吧 !