(SKU:DFR0327)Arduino Expansion Shield for Raspberry Pi B+ 树莓派B+扩展板

来自DFRobot Product Wiki
跳转至: 导航搜索
Arduino Expansion Shield for Raspberry Pi B+

目录

概述

Arduino Expansion Shield for Raspberry Pi B+ 扩展板 是一款具备Arduino 标准接口的 树梅派扩展板。他内部集成了 Arduino Leonardo主板,通过对这个Arduino Leonardo进行编程,可以实现一些树莓派不具备的功能,例如使用PWM来控制电机的速度、ADC来读取模拟量信号、外部中断口可以实时处理一些任务。 Arduino Expansion Shield for Raspberry Pi B+ 扩展板的USB口可以插在树莓派的USB HOST接口上这样我们就可以通过在树莓派系统里面安装Arduino IDE直接对扩展板进行编程。 然后通过USB接口,扩展板可以直接和树莓派进行通信协调工作。


技术规格

  • 微控制器:ATmega32u4
  • 引导装载程序:Arduino Leonardo
  • 工作电压:5V
  • Arduino Digital I/O(数字):20
  • Arduino Analog I/O(模拟):6
  • Raspberry Pi 引出 GPIO :16
  • Raspberry Pi 引出 I2C总线:1
  • Raspberry Pi 引出 ID_I2C总线:1
  • Raspberry Pi 引出 SPI总线:1
  • Raspberry Pi 引出 TTL UART串口:1
  • 体积:88x56x26mm


功能简述

  • 集成的Arduino Leonardo主板,可以实现一些树莓派不具备的功能,例如使用PWM来控制电机的速度、ADC来读取模拟量信号、外部中断口可以实时处理一些任务。
  • 通过USB电缆,树莓派可以对内部集成的Arduino Leonardo主板进行编程。同时可以通过串口协议将树莓派和Arduino Leonardo连接起来。
  • 将树莓派的所有IO通过电平转换芯片后全部引出,用户可根据外设的电平需求上拉到5V或者3.3V,并具备端口保护的功能。这意味着你不会因为接错线而烧毁树莓派主板。
  • 集成了RTC 实时时钟,这个时钟可以通过树莓派直接读取。作为系统的硬件时钟。
  • 设计了一个XBEE插槽直接和树莓派的串口相连。方便你将ZIGBEE、WiFi、蓝牙等无线模块直接连接到树莓派。
  • 具备一个拨码开关可以选择Arduino Shield 插槽上插入的串口Shield是通过树莓派串口还是通过Arduino Leonardo 来建立通信连接。当拨到A端时连接到树莓派的串口,当拨到B端时连接到Arduino自己的串口。
  • 在扩展板上所有的IO都有3PIN的接口可以直接连接DFRobot出品的各种传感器。非常方便搭建你的项目。
  • 支持Arduino Shiled 标准的扩展板直接插入使用。
  • 支持Xbee和XBee形式的WiFi,蓝牙和RF模块,可以通过树莓派直接建立通信。


引脚说明

Expansion Shield for Pi B+(V1.1).png


Arduino Expansion Shield for Raspberry Pi B+ 树莓派扩展板如何使用

Arduino IDE的使用:

Arduino IDE是Arduino产品的软件编辑环境。简单的说就是用来写代码,下载代码的地方。任何的Arduino产品都需要下载代码后才能运作。我们所搭建的硬件电路是辅助代码来完成的,两者是缺一不可的。如同人通过大脑来控制肢体活动是一个道理。如果代码就是大脑的话,外围硬件就是肢体,肢体的活动取决于大脑,所以硬件实现取决于代码。 Arduino Expansion Shield for Raspberry Pi B+ 内带一个Arduino Leonardo主板可以实现一些实时的功能,具备丰富的IO。USB口可以和树莓派建立通信协同工作。


Raspberry Pi的基础知识:

Raspberry Pi树莓派是一个具备高级功能的Linux主板。他可以实现一些高级功能,例如可以连接WiFi或者以太网实现网络应用。可以播放音视频文件、可以连接摄像头实现图像的采集和处理。 也具备基本的GPIO和通信接口和物理世界连接,例如用来读取传感器,或者控制继电器。 但是树莓派GPIO数量有限,也不具备ADC和PWM功能。Arduino Expansion Shield for Raspberry Pi B+ 让树莓派扩展出众多GPIO,实现了PWM和ADC功能。

树莓派的基础教程《边学边用树莓派》系列教程

  • 《边学边用树莓派-1》Raspberry Pi wifi无线网卡设置 点击查看
  • 《边学边用树莓派-2》PC的屏幕通过网络显示树莓派界面 点击查看
  • 《边学边用树莓派-3》搭建FTP 实现PC与树莓派之间传输文件 点击查看

上面这3个教程指导我们搭建出一个方便使用的树莓派系统。


  • 《边学边用树莓派-4》I2C总线的使用和DS1307 RTC设置 点击查看

教会我们如何使用 Arduino Expansion Shield for Raspberry Pi B+ 上的 RTC实时时钟。


  • 《边学边用树莓派-5》树莓派通过Shell脚本控制 GPIO 点击查看
  • 《边学边用树莓派-6》树莓派通过Python控制 GPIO 点击查看

让我们学习如何来进行 树莓派的GPIO控制。


  • 《边学边用树莓派-7》树莓派上安装Arduino IDE 点击查看

让我们实现在树莓派上安装Arduino IDE 并且实现了Arduino读取模拟量,然后发送数据给树莓派进行处理的过程。建立了之间的连接。

  • 《边学边用树莓派-8》使用Firmata协议和Arduino进行通信 点击查看

让我们在Arduino 上编写一个通用的串口协议控制协议。然后使用树莓派通过Firmata协议建立控制。

  • 《边学边用树莓派-9》树莓派 I2C 通信初探 点击查看

深一步的学习了树莓派的I2C,并且连接了两个I2C设备进行实验。

  • 《边学边用树莓派-10》Raspberry Pi 访问天气服务器实验 点击查看

完成了一些Web实验。

Arduino Expansion Shield for Raspberry Pi B+ 实现Arduino和树莓派通信的例子

树莓派 如果用作电子项目开发,它的GPIO接口欠缺ADC输入无法读取到模拟量,它也没有PWM接口可以用来控制电机的转速。 我们可以使用 DFRobot 出品的 Arduino Expansion Shield for Raspberry Pi B+ 扩展板 ,这个扩展板不仅将树莓派的所有GPIO和通信接口都引出来并做了电平转换和端口保护。 在 Arduino Expansion Shield for Raspberry Pi B+ 扩展板上还集成了Arduino leonardo 。通过Arduino Expansion Shield for Raspberry Pi B+ 扩展板 的USB口连接树莓派主板,即可实现通过安装在树莓派上的Arduino IDE 来对Arduino Expansion Shield for Raspberry Pi B+ 扩展板进行编程,同时通过USB口转出的串口进行通信。下面我们一步一步来实现 通过 Arduino Expansion Shield for Raspberry Pi B+ 扩展板的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

Blink.png
]

接下来我们安装Python-serial模块

    root@raspberrypi:/home/pi# apt-get install python-serial python3-serial

将LM35温度传感器连接到Arduino Expansion Shield for Raspberry Pi B+扩展板上的A1端口

Arduino Expansion Shield for Raspberry Pi B+ LM35(V1.1).PNG



我们在Arduino Expansion Shield for Raspberry Pi B+ 扩展板上编写一个读取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


Nextredirectltr.png如有更多疑问,可登陆我们的论坛与我们进行交流,您的宝贵意见将我们不断进步的阶梯! 点击进入论坛

Nextredirectltr.png点击获得一块 Raspberry Pi B+ Meet Arduino Shield 树莓派扩展板

个人工具
名字空间

变换
操作
导航
工具箱