_SKU_DFR0311_Raspberry_Pi_Meet_Arduino_Shield_树莓派扩展板 - jimaobian/DFRobotWikiCn GitHub Wiki
概述
Raspberry Pi Meet Arduino扩展板 是一款具备Arduino 标准接口的 树梅派扩展板。他内部集成了 Arduino Leonardo主板,通过对这个Arduino Leonardo进行编程,可以实现一些树莓派不具备的功能,例如使用PWM来控制电机的速度、ADC来读取模拟量信号、外部中断口可以实时处理一些任务。 Raspberry Pi Meet Arduino 扩展板的USB口可以插在树莓派的USB HOST接口上这样我们就可以通过在树莓派系统里面安装Arduino IDE直接对扩展板进行编程。 然后通过USB接口,扩展板可以直接和树莓派进行通信协调工作。
技术规格
- 微控制器:ATmega32u4
- 引导装载程序:Arduino Leonardo
- 工作电压:5V
- Arduino Digital I/O(数字):23
- Arduino Analog I/O(模拟):12
- Raspberry Pi 引出 GPIO :8
- Raspberry Pi 引出 I2C总线:1
- Raspberry Pi 引出 SPI总线:1
- Raspberry Pi 引出 TTL UART串口:1
- 体积:88x56x17mm
功能简述
- 集成的Arduino Leonardo主板,可以实现一些树莓派不具备的功能,例如使用PWM来控制电机的速度、ADC来读取模拟量信号、外部中断口可以实时处理一些任务。
- 通过USB电缆,树莓派可以对内部集成的Arduino Leonardo主板进行编程。同时可以通过串口协议将树莓派和Arduino Leonardo连接起来。
- 将树莓派的所有IO全部引出,并且将它们转换成5V,并具备端口保护的功能。这意味着你不会因为接错线而烧毁树莓派主板。
- 集成了RTC 实时时钟,这个时钟可以通过树莓派直接读取。作为系统的硬件时钟。
- 设计了一个XBEE插槽直接和树莓派的串口相连。方便你将ZIGBEE、WiFi、蓝牙等无线模块直接连接到树莓派。
- 具备一个拨码开关可以选择Arduino Shield 插槽上插入的串口Shield是通过树莓派串口还是通过Arduino Leonardo 来建立通信连接。当拨到A端时连接到树莓派的串口,当拨到B端时连接到Arduino自己的串口。
- 在扩展板上所有的IO都有3PIN的接口可以直接连接DFRobot出品的各种传感器。非常方便搭建你的项目。
- 支持Arduino Shiled 标准的扩展板直接插入使用。
- 支持Xbee和XBee形式的WiFi,蓝牙和RF模块,可以通过树莓派直接建立通信。
引脚说明
Raspberry Pi Meet Arduino Shield 树莓派扩展板如何使用
Arduino IDE的使用:
Arduino IDE是Arduino产品的软件编辑环境。简单的说就是用来写代码,下载代码的地方。任何的Arduino产品都需要下载代码后才能运作。我们所搭建的硬件电路是辅助代码来完成的,两者是缺一不可的。如同人通过大脑来控制肢体活动是一个道理。如果代码就是大脑的话,外围硬件就是肢体,肢体的活动取决于大脑,所以硬件实现取决于代码。 Raspberry Pi Meet Arduino Shield 内带一个Arduino Leonardo主板可以实现一些实时的功能,具备丰富的IO。USB口可以和树莓派建立通信协同工作。
Raspberry Pi的基础知识:
Raspberry Pi树莓派是一个具备高级功能的Linux主板。他可以实现一些高级功能,例如可以连接WiFi或者以太网实现网络应用。可以播放音视频文件、可以连接摄像头实现图像的采集和处理。 也具备基本的GPIO和通信接口和物理世界连接,例如用来读取传感器,或者控制继电器。 但是树莓派GPIO数量有限,也不具备ADC和PWM功能。Raspberry Pi Meet Arduino Shield 让树莓派扩展出众多GPIO,实现了PWM和ADC功能。
树莓派的基础教程《边学边用树莓派》系列教程
- 《边学边用树莓派-1》Raspberry Pi wifi无线网卡设置 点击查看
- 《边学边用树莓派-2》PC的屏幕通过网络显示树莓派界面 点击查看
- 《边学边用树莓派-3》搭建FTP 实现PC与树莓派之间传输文件 点击查看
上面这3个教程指导我们搭建出一个方便使用的树莓派系统。
- 《边学边用树莓派-4》I2C总线的使用和DS1307 RTC设置 点击查看
教会我们如何使用 Raspberry Pi Meet Arduino Shield 上的 RTC实时时钟。
让我们学习如何来进行 树莓派的GPIO控制。
- 《边学边用树莓派-7》树莓派上安装Arduino IDE 点击查看
让我们实现在树莓派上安装Arduino IDE 并且实现了Arduino读取模拟量,然后发送数据给树莓派进行处理的过程。建立了之间的连接。
- 《边学边用树莓派-8》使用Firmata协议和Arduino进行通信 点击查看
让我们在Arduino 上编写一个通用的串口协议控制协议。然后使用树莓派通过Firmata协议建立控制。
- 《边学边用树莓派-9》树莓派 I2C 通信初探 点击查看
深一步的学习了树莓派的I2C,并且连接了两个I2C设备进行实验。
- 《边学边用树莓派-10》Raspberry Pi 访问天气服务器实验 点击查看
完成了一些Web实验。
Raspberry Pi Meet Arduino Shield 实现Arduino和树莓派通信的例子
树莓派 如果用作电子项目开发,它的GPIO接口欠缺ADC输入无法读取到模拟量,它也没有PWM接口可以用来控制电机的转速。 我们可以使用 DFRobot 出品的 Raspberry Pi Meet Arduino 扩展板 ,这个扩展板不仅将树莓派的所有GPIO和通信接口都引出来并做了电平转换和端口保护。 在 Raspberry Pi Meet Arduino 扩展板上还集成了Arduino leonardo 。通过Raspberry Pi Meet Arduino 扩展板 的USB口连接树莓派主板,即可实现通过安装在树莓派上的Arduino IDE 来对Raspberry Pi Meet Arduino 扩展板进行编程,同时通过USB口转出的串口进行通信。下面我们一步一步来实现 通过 Raspberry Pi Meet Arduino 扩展板的ADC接口读取一个LM35温度传感器,并将温度显示到树莓派终端的功能。
首先在树莓派上安装 Arduino
root@raspberrypi:/home/pi# ap-get update
root@raspberrypi:/home/pi# ap-get install arduino
安装完成,在打开Arduino IDE 之前 你需要确认 pi 用户拥有权限操作串口,我们将pi用户添加到tty和dialout:
root@raspberrypi:/home/pi# usermod -a -G tty pi
root@raspberrypi:/home/pi# usermod -a -G dialout pi
通过VNC 登录树莓派界面,打开Arduino IDE (此时启动IDE可能要10多秒,需要等等,不要重复点击IDE图标),选择 Arduino Leonardo 板,此时看到串口为 /dev/ttyACM0 我们下载一个Blink测试一下是否可以下载程序到Arduino ]
接下来我们安装Python-serial模块
root@raspberrypi:/home/pi# apt-get install python-serial python3-serial
将LM35温度传感器连接到Raspberry Pi Meet Arduino 扩展板上的A1端口 ]
我们在Raspberry Pi Meet Arduino 扩展板上编写一个读取LM35模拟电压输出的温度值,然后通过USB串口发到树莓派上面
// to the pins used:
const int analogInPin = A1; // Analog input pin that the potentiometer is attached to
int sensorValue = 0; // value read from the pot
void setup()
{
// initialize serial communications at 9600 bps:
Serial.begin(9600);
}
void loop()
{
sensorValue = analogRead(analogInPin);
Serial.println(sensorValue,DEC);
delay(200);
}
在树莓派建立一个 LM35Print.py 的文件 Arduino 采集板10比特的ADC参考电压是5V,LM35温度传感器输出电压每0.01V代表1摄氏度,那么温度计算公式为: (ADC采集数值*5/1024) /0.01
import serial
import time
port = "/dev/ttyACM0"
serialFromArduino = serial.Serial(port,9600)
serialFromArduino.flushInput()
while True:
if(serialFromArduino.inWaiting() > 0):
input = serialFromArduino.readline()
inputAsInterger = int(input)
print("Temperature: " + str(inputAsInterger*5/10.24))
time.sleep(0.01)
运行 LM35Print.py 得到温度数据
root@raspberrypi:/home/pi# python LM35Print.py
Temperature: 28.3203125
Temperature: 28.3203125
Temperature: 28.3203125
Temperature: 28.80859375
原理图
如有更多疑问,可登陆我们的论坛与我们进行交流,您的宝贵意见将我们不断进步的阶梯! 点击进入论坛