虽然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)
探讨下一代战斗机雷达隐身技术的研究和发展
魅蓝Note5和红米4买哪个好
荣耀V40、MagicBook系列正式上架京东开售
汽车为什么易发负载突降?如何用TVS器件防止汽车负载突降
隐匿于比特币背后的区块链技术逐渐走到市场前端
如何使用Raspberry pi和Python来控制Arduino
PCB全自动激光打标机VIPin-U05V-P200介绍
RISC-V将作为下一代高性能航天计算提供核心CPU
10kv高压开关柜在线监测系统实现过热预警、实时监测
应用于液压伺服系统中的模糊PID自整定控制器的设计和仿真研究
avr单片机工作经验总结
5G定位助化工行业提升效率和安全指数,进入到新的数字化时代
无线传输怎样在电力测温系统大展拳脚
英特尔或与台积电合作开发2nm工艺
进口机械配件之流量控制阀
华为5g芯片最新消息:华为自己的5g芯片研究出来了吗
一种简单电池充电时间计算方法
超强固化检测点光源Superlite系列
电脑录制不了在线音频,有没有电脑内录软件?
10种方法用X射线识别假冒元器件