0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

科技观察员 来源:circuitdigest 作者:里沙布·耆那教 2022-11-08 16:51 次阅读

虽然Raspberry PiArduino在应用和结构上是两个不同的硬件,但它们都被认为是两个相互竞争的开源硬件平台。他们都有非常强大的社区和支持。今天我们将稍微改变一下,并向您展示我们如何利用它们。如果你同时拥有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。

pYYBAGNqGJCALTxmAACBmzxZNQQ140.png

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

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

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

poYBAGNqGJGAcmsdAABcUuGswMU315.png

我们已经成功地在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)



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

    关注

    184

    文章

    6428

    浏览量

    184848
收藏 人收藏

    评论

    相关推荐

    黑科技!使用Raspberry PiPython GUI控制伺服电机(原理图、源码、项目教程)

    教程中,我们将介绍如何使用Raspberry PiPython TK GUI精确控制伺服。硬件组件:Raspberry
    发表于 10-16 16:49

    请问Raspberry pi如何用python控制脉冲驱动BLDC伺服电机?

    请问Raspberry pi如何用python控制脉冲驱动BLDC伺服电机?
    发表于 09-27 08:17

    Learn Raspberry Pi Programming with python

    使用pythonRaspberry pi上进行编程,好fashion的一件事!
    发表于 11-03 17:43 0次下载

    工业环境中的Raspberry PIArduino

    Raspberry PIArduino板是快速电子成型和家庭DIY应用中非常有名的设备,不过他们在工业环境中的功能性和灵活性在很大程度上还有待评估。Raspberry
    发表于 06-23 11:32 4202次阅读

    Raspberry PiArduino上的手写数字识别

    电子发烧友网站提供《Raspberry PiArduino上的手写数字识别.zip》资料免费下载
    发表于 10-19 09:23 0次下载
    <b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b>和<b class='flag-5'>Arduino</b>上的手写数字识别

    使用Raspberry PiArduino:DIY LED矩阵彩灯

    电子发烧友网站提供《使用Raspberry PiArduino:DIY LED矩阵彩灯.zip》资料免费下载
    发表于 11-04 14:55 2次下载
    使用<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b>或<b class='flag-5'>Arduino</b>:DIY LED矩阵彩灯

    使用Raspberry PiArduino进行花卉监测

    电子发烧友网站提供《使用Raspberry PiArduino进行花卉监测.zip》资料免费下载
    发表于 11-11 15:11 0次下载
    使用<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b>和<b class='flag-5'>Arduino</b>进行花卉监测

    Raspberry PiArduino Micro制作的虚拟窥视孔

    电子发烧友网站提供《用Raspberry PiArduino Micro制作的虚拟窥视孔.zip》资料免费下载
    发表于 11-11 11:23 0次下载
    用<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b>和<b class='flag-5'>Arduino</b> Micro制作的虚拟窥视孔

    Raspberry Pi上使用Arduino MKR ENV Shield

    电子发烧友网站提供《在Raspberry Pi上使用Arduino MKR ENV Shield.zip》资料免费下载
    发表于 12-14 10:19 0次下载
    在<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b>上使用<b class='flag-5'>Arduino</b> MKR ENV Shield

    Raspberry Pi Zero W和Python 3入门

    电子发烧友网站提供《Raspberry Pi Zero W和Python 3入门.zip》资料免费下载
    发表于 12-16 11:10 0次下载
    <b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> Zero W和<b class='flag-5'>Python</b> 3入门

    使用Raspberry PiArduino Uno构建波表合成器

    不久前,我们研究了如何使用Raspberry Pi的I2C总线来控制Arduino Uno,以及如何使用它来输出模拟电压。
    的头像 发表于 02-24 18:16 801次阅读
    使用<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b>和<b class='flag-5'>Arduino</b> Uno构建波表合成器

    使用PythonRaspberry Pi的实时图表

    电子发烧友网站提供《使用PythonRaspberry Pi的实时图表.zip》资料免费下载
    发表于 06-13 10:47 0次下载
    使用<b class='flag-5'>Python</b>和<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b>的实时图表

    Arduino库与Raspberry Pi Pico C/C++ SDK一起使用

    电子发烧友网站提供《将Arduino库与Raspberry Pi Pico C/C++ SDK一起使用.zip》资料免费下载
    发表于 06-15 14:43 0次下载
    将<b class='flag-5'>Arduino</b>库与<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> Pico C/C++ SDK一起使用

    ArduinoRaspberry Pi平台进行编码

    电子发烧友网站提供《ArduinoRaspberry Pi平台进行编码.zip》资料免费下载
    发表于 06-29 11:31 0次下载
    <b class='flag-5'>Arduino</b>和<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b>平台进行编码

    使用Raspberry PiArduino实现Web控制的LED动画

    电子发烧友网站提供《使用Raspberry PiArduino实现Web控制的LED动画.zip》资料免费下载
    发表于 07-03 14:52 0次下载
    使用<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b>和<b class='flag-5'>Arduino</b>实现Web<b class='flag-5'>控制</b>的LED动画