Arduino 树莓派扩展板

概述

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接口,扩展板可以直接和树莓派进行通信协调工作。

技术规格

功能简述

引脚说明

新版本烧录教程

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功能。

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

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

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

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

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

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

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

完成了一些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# sudo apt-get update
root@raspberrypi:/home/pi# sudo apt-get install arduino

安装完成,在打开Arduino IDE 之前 你需要确认 pi 用户拥有权限操作串口,我们将pi用户添加到tty和dialout:

root@raspberrypi:/home/pi# sudo usermod -a -G tty pi
root@raspberrypi:/home/pi# sudo 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温度传感器连接到Arduino Expansion Shield for Raspberry Pi B+扩展板上的A1端口

我们在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

疑难解答

更多问题及有趣的应用,可以访问论坛进行查阅或发帖!

更多