在Arduino的网站总结起来作为
Arduino是一个基于灵活,易于使用的硬件和软件的开源电子原型平台。它适用于艺术家,设计师,业余爱好者以及对创建交互式对象或环境感兴趣的任何人。
它可以是一个不错的界面,用于控制伺服器并提供其许多可选屏蔽罩提供的其他连接性。
如何将一个连接到Raspberry Pi?如何设置通讯?
在Arduino的网站总结起来作为
Arduino是一个基于灵活,易于使用的硬件和软件的开源电子原型平台。它适用于艺术家,设计师,业余爱好者以及对创建交互式对象或环境感兴趣的任何人。
它可以是一个不错的界面,用于控制伺服器并提供其许多可选屏蔽罩提供的其他连接性。
如何将一个连接到Raspberry Pi?如何设置通讯?
Answers:
Arduino通常显示为USB串行设备。当前的板使用内置在主微处理器中的USB串行驱动程序,但是较早的Arduino(和克隆)使用单独的第三方USB串行芯片。
为了简单地Serial.print
从Arduino 接收Raspberry Pi上的数据,我使用GNU Screen程序作为基本终端:(screen [serial-port] [baud-rate]
例如screen /dev/ttyACM0 9600
)。
我测试了三种不同的Arduino,以及一种完全不同的克隆。较新的变体都作为/dev/ttyACM0
端口出现,较旧的变体/dev/ttyUSB0
。这是我在Raspbian下找到的:
/dev/ttyUSB0
/dev/ttyACM0
/dev/ttyACM0
/dev/ttyUSB0
。Raspberry Pi可能无法提供足够的电源来驱动Arduino,因此您可能需要外部电源。为了完整起见,我还测试了Prolific PL2303,即使它不在我所知的任何Arduino上。它看起来很幸福/dev/ttyUSB0
。
对于与传感器的更复杂的通信,您可以考虑使用Firmata,“用于从主机计算机上的软件与微控制器通信的通用协议”。它具有Arduino的实现,以及可在Raspberry Pi端运行的Python库。
这是一个使用pyFirmata读取LM35并更改LED亮度的小示例:
#!/usr/bin/python
# -*- coding: utf-8 -*-
# simple test of pyfirmata and Arduino; read from an LM35 on A0,
# brighten an LED on D3 using PWM
# scruss, 2012-08-14 - tested on Arduino Uno & Raspberry Pi (Raspbian)
import pyfirmata
# Create a new board, specifying serial port
board = pyfirmata.Arduino('/dev/ttyACM0')
# start an iterator thread so that serial buffer doesn't overflow
it = pyfirmata.util.Iterator(board)
it.start()
# set up pins
pin0=board.get_pin('a:0:i') # A0 Input (LM35)
pin3=board.get_pin('d:3:p') # D3 PWM Output (LED)
# IMPORTANT! discard first reads until A0 gets something valid
while pin0.read() is None:
pass
for i in range(10):
pin3.write(i/10.0) # set D3 to 0, 10%, 20%, ... brightness
print "PWM: %d %% Temperature %.1f °C" % (i * 10, pin0.read() * 5 * 100)
board.pass_time(1) # pause 1 second
pin3.write(0) # turn LED back off
board.exit()
使用pyFirmata时有一些警告:
None
值。如果不清楚,可以使用Raspbian Wheezy运行Arduino IDE,并在连接到Raspberry Pi的USB端口时将草图上传到Arduino。要在Raspbian上安装,只需键入shell(又名命令行):
sudo apt-get install arduino
它将下载并安装所有需要的软件包。我在Raspbian中有几张Arduino IDE的照片:
http://www.element14.com/community/groups/raspberry-pi/blog/2012/07/03/review-of-raspberry-pi-images
(如上文其他人所述,Raspberry Pi也可以通过GPIO接头上的串行端口(UART)引脚对Arduino进行编程。在这种情况下,您不必“浪费” USB端口,但是需要其他配置)。
干杯,德鲁
模式被Hack A Day 称为将Arduino放入Raspberry Pi的正确方法,单模模式是Wyolum.com OSHW合作组织的Anool Mahidharia,Justin Shaw和Kevin Osborn设计的可堆叠Arduino克隆。Hack A Day描述如下
马上,AlaMode直接插入Raspberry Pi的GPIO引脚。从那里开始,与Arduino的ATMega进行通信,使您可以像使用Arduino一样发送和接收数据。有一个实时时钟,伺服接头,多种为电路板供电的方法,甚至还有一个[a] GPS模块的接口。
AlaMode消除了许多不必要的麻烦;没有USB端口,但是可以直接在Raspberry Pi的GPIO引脚上进行编程。非常简洁,我们迫不及待想要为我们的[Raspberry Pi]抢一台。
凯文在他的博客上提供了更多细节:
这些功能包括一些其他优点:
- 灵活的力量。可以直接从Pi供电,也可以通过电池或壁式电源适配器或USB电源独立供电。如果您的屏蔽罩所消耗的功率超出了Pi所能提供的功率,或者您想取消屏蔽以进行独立操作,则这一点很重要。可通过GPIO引脚上的Pi的UART或FTDI USB串行适配器或ISP进行编程。
- 用于连接Fastrax UP501 GPS的接头。DS3234实时时钟。Pi本身没有电池支持的RTC。您可以在AlaMode中设置程序以通过串行或I2C向Pi报告时间
- Micro SD卡插槽。对于数据记录很有用,对于Arduino应用程序来说是大内存
- 一排伺服接头连接到PWM引脚,具有可配置的电源和接地轨
董事会目前处于限量Beta版,但值得一提的是经过深思熟虑的克隆版本,该版本已由一个小组以以前的形式宣布。
有一个RaspberryPi HAT,其行为类似于Arduino,可以从任何浏览器通过其Web UI进行编程。名为CoPiino的项目。它完全随软件一起运行。只需在浏览器用户界面中输入Arduino Sketch,然后点击“编译并运行”即可。