ARPI600-UserManual

来自丢石头百科

开启树莓派串口调试功能

1) 使用前需要先安装USB转串口驱动(cp2102驱动),安装后在设备管理器中查看电脑是否识别到USB转串口。

2) 把ARPI600插入到树莓派后,需要先把电源插入树莓派供电,再把PC机连接到ARPI600的USB处,不能只连接ARPI600的USB口供电或者先连接ARPI600的USB口后连接树莓派电源,因为电脑USB供电能力不强,可能会不能同时供起树莓派和ARPI600扩展板。

3) 树莓派的Raspbian系统默认为串口调试输出,用户需设置跳线开启串口调试功能:

  • CP_RX连接P_TX
  • CP_TX连接P_RX
ARPI600-UserManual-2.jpg
图 2. 开启串口调试功能

4) 打开software/putty.exe,对下图红框位置: 说明:

  • Serial line: 选择对应的串口。图中所示是COM3,但用户应按照实际设置。(通过设备管理器可以查看)
  • Speed: 设置波特率为115200。
  • Connection type: 设置为Serial。

点击Open。

ARPI600-UserManual-3.jpg
图 3. PuTTY设置

5) 打开后如下图(如打开后没有任何东西显示,按键盘回车可出现下图):

ARPI600-UserManual-4.jpg
图 4. PuTTY连接到树莓派

输入用户名:pi 密码:raspberry 即可进入串口终端:

树莓派串口控制外设

配置系统串口

树莓派的串口默认为串口终端调试使用,如要正常使用串口则需要修改树莓派设置。关闭串口终端调试功能后则不能再通过串口登陆访问树莓派,需开启后才能通过串口控制树莓派。

执行:

sudo raspi-config

选择Advanced Options -> Serial

选择 no 关闭串口终端调试功能,可以正常使用串口;选择 yes 启动串口终端调试功能.重启生效。

设置关闭串口终端调试功能后,重启树莓派之后,将无法从串口进入树莓派终端。此时用户如需进入终端,须采用SSH或是把树莓派外接显示器后进入LXterminal。(如果想要串口重新作为树莓派串口调试输出,则还原设置重启即可)

安装相应的库

运行我们提供的示例 API 代码,要安装相应的库,我们配置的系统中已经安装好库函数,不用再安装,如果你是自己下载的镜像,就要安装和配置库。详情请查看树莓派基础教程-库函数安装。

树莓派串口打印数据

1) 用户需设置跳线开启串口调试功能:

  • CP_RX连接P_TX
  • CP_TX连接P_RX

2) 打开PuTTY串口调试软件,进行设置:

  • Serial line: 选择对应的串口。
  • Speed: 设置波特率为9600。(注意这里Speed处改为9600,和图 3不同)
  • Connection type: 设置为Serial。

3) 把program/Xbee/send文件夹复制到树莓派系统,进入send文件夹,执行:

sudo make
sudo ./serialTest

串口终端打印出如下:

ARPI600-UserManual-5.jpg
图 5. 串口打印数据

组建2个XBee的无线传输网络

准备工作

1) 两个XBee模块。

2) 两个ARPI600模块。

3) 两个树莓派。

  • 为了便于阅读,将它们分为A、B两组。(XBee-A,ARPI600-A,XBee-B,ARPI600-B)

安装X-CTU工具

1) 电脑端打开software/X-CTU V5.2.8.6.exe进行安装,安装完打开如下图:

ARPI600-UserManual-6.jpg
图 6. X-CTU设置

2) 设置XBee模块,出厂里默认的设置为:

  • Baud: 9600
  • Data Bite: 8
  • Parity: NONE
  • Stop: 1

测试电脑是否连上XBee

1) 把XBee-A接入ARPI600-A。把XBee-B接入ARPI600-B。

2) 设置跳线开启XBee的串口调试功能,如下图所示:

  • XB_RX连接CP_RX
  • CP_TX连接XB_TX
ARPI600-UserManual-7.jpg
图 7.开启XBee的串口调试功能的跳线

3) 接通树莓派电源(供电参考1开启树莓派串口调试功能第 2点)。

4) 点击Test/Query按钮,测试是否能够正确地连接上XBee模块:

ARPI600-UserManual-8.jpg
图 8. 测试是否连接上XBee模块

5) 如果一切正常,我们将看到如下的对话框,则说明连接成功:

ARPI600-UserManual-9.jpg
图 9. 连接成功

对XBee-A模块进行配置

1) 点击Modem Configuration选项卡。点击Read按钮读出XBee模块中的当前参数:

ARPI600-UserManual-10.jpg
图 10. 读出当前参数

2) 在Function Set下拉列表中选择ZIBGEE ROUTER/END DEVICE AT:

ARPI600-UserManual-11.jpg
图 11. Function Set下拉列表中选择ZIBGEE ROUTER/END DEVICE AT

3) 在读出的Networking 中,进行设置:

  • ID: 234
  • DH: 0
  • DL: 0

4) 点击Write把设置好的参数下载到XBee-A模块中。

对XBee-B模块进行配置

1) 对XBee-B模块重复3.1和3.3的操作。但是在Function Set下拉列表中选择为ZIBGEE COORDINATOR AT:

ARPI600-UserManual-12.jpg
图 12. Function Set下拉列表中选择为ZIBGEE COORDINATOR AT

2) 在读出的Networking 中,进行设置:

  • ID: 234
  • DH: 0
  • DL: ffff

3) 点击Write把设置好的参数下载到XBee-B模块中。

4) 为了实现的是一个简单的点对点网络,请按照以上方式配置好XBee-A和XBee-B,运行两个X-CTU,并在PC Settings选项卡中选择不同的通信接口,分别对A组和B组进行控制。

5) 在XBee-A的X-CTU的Terminal中,输入需要XBee模块传输的数据,这些数据会被自动发送到XBee-B模块,并在另一个X-CTU的Terminal中显示出来。其中蓝色的表示发送的数据,红色的标志接受的数据。

ARPI600-UserManual-13.jpg
图 13. 收发数据示意

6) 如果运行状态如上图所示,则XBee模块能够正常的收发数据。

树莓派通过XBee无线传输数据

确保第3节组建2个XBee的无线传输网络正常之后,现在树莓派可以通XBee无线传输数据。

配置模块

1) 设置ARPI600跳线: 把收发的2个树莓派串口都接到XBee串口,ARPI600扩展板按照下图红框跳线。

  • XB_RX连接P_TX
  • XB_TX连接P_RX
ARPI600-UserManual-14.jpg
图 14. 设置ARPI600跳线

2) 测试树莓派串口: 复制program/Xbee/getdata 到接收数据端树莓派系统中,进入getdata文件夹。 执行:

sudo make
sudo ./serial

串口终端打印出如下

ARPI600-UserManual-15.jpg
图 15. 串口打印getdata

再运行发送端代码,复制program/Xbee/send 到发送端树莓派系统中,进入send文件夹,执行。

sudo make
sudo ./serial

这时接收端就会打印出接收到的数据:

ARPI600-UserManual-16.jpg
图 16. 接收端就会打印出接收到的数据

RTC时钟

1) 连接RTC JMP处的跳线。

2) 打开树莓派系统桌面的LXTerminal,在LXTerminal中输入 i2cdetect -y 1

3) 在LXTerminal会打印出PCF8563接入树莓派的地址,我这里显示的51,如下图,说明树莓派已经识别到PCF8563了。

ARPI600-UserManual-17.jpg
图 17. LXTerminal打印出PCF8563接入树莓派的地址

4) 在LXTerminal中执行:

modprobei2c-dev
echo pcf8563 0x51 > /sys/class/i2c-adapter/i2c-1/new_device
hwclock -r (读接入的I2C硬件RTC的时间)

LXTerminal会打印出PCF8563的时间, 与系统时间不同。

5) 在LXTerminal中执行:

hwclock -w(把树莓派系统的时间写入到PCF8563)
hwclock -r(树莓派系统的时间同步到PCF8563)
hwclock -s(设置系统的时间与硬件的RCT时钟同步)

AD转换(ARPI600板载TLC1543芯片)

配置A0管脚为AD管脚

1) 确保完成库的安装(参见2.2安装相应的库)。

2) 设置跳线,选择参考电压:

  • REF连接5V,则AD转换参考电压为5V。(默认跳线到5V)
  • REF连接3V3,则AD转换参考电压为3.3V。

注意REF同一时刻,只能连接上面的一种。


ARPI600-UserManual-18.jpg
图 18. 设置AD参考电压

3) 复制program/AD_TLC1543到树莓派系统中,进入AD_TLC1543文件夹内,在终端执行如下命令:

sudo make
sudo ./tlc1543

4) 终端会打印出AD转换值。程序默认是打印TLC1543芯片的AD0脚的转换值,即ARPI600上的T_A0转换值。

5) 将T_A0连接到A0后,Arduino接口上的A0即可当做AD转换脚使用。如下图红框所示:

ARPI600-UserManual-19.jpg
图 19. 连接T_A0和A0

配置为其他AD管脚

1) 如果想要打印TLC1543其他的AD管脚转换值,需终端编辑tlc1543.c文件:

sudo nano tlc1543.c

找到这行代码:

ADC_Read(0);

更改代码中的0为其他数字,即可更改为其他管脚。(改为1则测试AD1即T_A1转换值,改为2即可测试AD2即T_A2转换值,以此类推,一直可以测试到AD10即T_A10转换值) 更改完后,按下Ctrl+X,选择 Y 保存。

2) 继续在终端执行:

sudo make
sudo ./tlc1543

即可让更改生效。

接口说明

接口概述

1) 默认情况下,Arduino接口数字控制脚对应树莓派IO如下:

Arduino接口 树莓派IO口
D0 P_RX
D1 P_TX
D2 P0
D3 P1
D4 P2
D5 P3
D6 P4
D7 P5
D8 P6
D9 P7
D10 CE0
D11 MOSI
D12 MISO
D13 SCK

表 1. Arduino接口数字控制脚与树莓派IO的对应关系

2) 模块电路板上有配置APRI600的D11, D12, D13管脚的跳线。它们之间通过0Ω电阻短接。如下图所示:

ARPI600-UserManual-20.jpg
图 20. 配置D11, D12, D13管脚

出厂时跳线连接如下:

  • SCK连接D13
  • MISO连接D12
  • MOSI连接D11

如果连接:

  • D13连接P26
  • D12连接IO_SD
  • D11连接IO_SC

则相当于使D11, D12, D13管脚接到树莓派普通IO控制脚。 注意:用户可以根据需要更改这些跳线,但是此操作需要用到焊接器材。在没有我司工作人员指导下擅自更改,将视为放弃保修。

3) APRI600的A0-A5管脚可以配置为IO控制功能或者ADC功能。

ARPI600-UserManual-21.jpg
图 21. 配置A0-A5管脚

a) 当A0-A5连接到 1处时,则A0-A5作为IO控制管脚,和树莓派管脚对应关系参见下表:

Arduino接口 树莓派IO口
A0 CE1
A1 P21
A2 P22
A3 P23
A4 P24
A5 P25

表 2. A0-A5作为IO控制管脚时对应的树莓派管脚

b) 当A0-A5连接到 3处时,则A0-A5作为AD转换脚。

4) 用户可以连接A4和P_SCL,A5和P_SDA(如图 22.),以作为树莓派的I2C控制脚,默认断开。 注意:用户可以根据更改这些跳线,但是此操作需要用到焊接器材。在没有我司工作人员指导下擅自更改,将视为放弃保修。

ARPI600-UserManual-22.jpg
图 22. 设置A4,和A5作为I2C控制脚

5) ARPI600提供传感器接口,如图引出4P的传感器接口:

ARPI600-UserManual-23.jpg
图 23. 4P传感器接口

其中:

  • A处接TLC1543芯片的AD转换 A6-A10管脚。
  • D处接树莓派的P0-P4 IO控制脚。

方便用户接入多种传感器。

ARPI600连接传感器套件(需另外选购)

  • 以下操作都需把ARPI600插上树莓派使用。如果只有ARPI600和传感器套件,却没有树莓派的话,那么是无法使用的。
  • Sensors Pack

Color Sensor

  • 把ARPI600插入到树莓派。
  • 按照下表连接传感器和ARPI600的管脚:
Color Sensor管脚 ARPI600管脚
LED 3.3V
OUT P0
S3 P4
S2 P3
S1 P2
S0 P1
GND GND
VCC 3.3V
  • 把Color_Sensor文件夹复制到树莓派系统内,上电之后,终端执行:
    cd Color_Sensor
    chmod +x Color_Sensor //首次运行需赋予执行权限
    sudo ./Color_Sensor
  • 程序会对芯片的白平衡进行调整,时间大概为2s,调整结束以后即可把三原色的频率经过终端输出,对照RGB颜色对照表,即可知道所测得颜色。
  • 按Ctrl+C结束程序。

Flame Sensor

  • 把ARPI600插入到树莓派。
  • 按照下表连接传感器和ARPI600的管脚:
Flame Sensor管脚 ARPI600管脚
DOUT P0
AOUT T_A6
GND GND
VCC 3.3V
  • 把Flame_Sensor文件夹复制到树莓派系统内,上电之后,终端执行:
    cd Flame_Sensor
    chmod +x General_Sensor //首次运行需赋予执行权限
    sudo ./General_Sensor
  • 传感器靠近火焰时,模块上的信号指示灯点亮。传感器远离火焰时,模块上的信号指示灯熄灭。
  • 随着传感器与火焰距离的改变,终端输出的数据也会发生改变。
  • 按Ctrl+C结束程序

注意:该传感器主要用于感知火焰,但其自身并不防火。因此使用时请与火焰保持一定距离,以免烧坏传感器。

Hall Sensor

  • 把ARPI600插入到树莓派。
  • 按照下表连接传感器和ARPI600的管脚:
Hall Sensor管脚 ARPI600管脚
DOUT P0
AOUT T_A6
GND GND
VCC 3.3V
  • 把Hall Sensor文件夹复制到树莓派系统内,上电之后,终端执行:
    cd Hall_Sensor
    chmod +x General_Sensor //首次运行需赋予执行权限
    sudo ./General_Sensor
  • 传感器靠近磁铁时,模块上的信号指示灯点亮。传感器远离磁铁时,模块上的信号指示灯熄灭。
  • 随着传感器与金属接触与分离,终端输出的数据会发生相应改变。
  • 按Ctrl+C结束程序。

Infrared Reflective Sensor

  • 把ARPI600插入到树莓派。
  • 按照下表连接传感器和ARPI600的管脚:
Infrared Reflective Sensor管脚 ARPI600管脚
DOUT P0
AOUT T_A6
GND GND
VCC 3.3V
  • 把Infrared_Reflective_Sensor文件夹复制到树莓派系统内,上电之后,终端执行:
    cd Infrared_Reflective_Sensor
    chmod +x General_Sensor //首次运行需赋予执行权限
    sudo ./General_Sensor
  • 传感器靠近障碍物时,模块上的信号指示灯点亮。传感器远离障碍物时,模块上的信号指示灯熄灭。
  • 随着传感器与障碍物距离的变化,终端输出的数据也会发生改变。
  • 按Ctrl+C结束程序。

Laser Sensor

  • 把ARPI600插入到树莓派。
  • 按照下表连接传感器和ARPI600的管脚:
Laser Sensor管脚 ARPI600管脚
DOUT P0
GND GND
VCC 3.3V
  • 把Laser_Sensor文件夹复制到树莓派系统内,在终端运行程序
    cd Laser_Sensor
    chmod +x General_Sensor //首次运行需赋予执行权限
    sudo ./General_Sensor
  • 把障碍物置于激光传感器上方,此时模块上的信号指示灯会被点亮,把障碍物远离激光传感器上方,此时模块上的信号指示灯熄灭。由此可知激光传感器是否探测到障碍物。
  • 按Ctrl+C结束程序。

Moisture Sensor

  • 把ARPI600插入到树莓派。
  • 按照下表连接传感器和ARPI600的管脚:
Moisture Sensor管脚 ARPI600管脚
DOUT P0
AOUT T_A6
GND GND
VCC 3.3V
  • 把Moisture_Sensor文件夹复制到树莓派系统内,上电之后,终端执行:
    cd Moisture_Sensor
    chmod +x General_Sensor //首次运行需赋予执行权限
    sudo ./General_Sensor
  • 把传感器插入土壤中,然后逐渐往土壤中加水,终端输出数据变化。
  • 按Ctrl+C结束程序。

Rotation Sensor

  • 把ARPI600插入到树莓派。
  • 按照下表连接传感器和ARPI600的管脚:
Rotation Sensor管脚 ARPI600管脚
SIA P0
SIB P1
SW P2
GND GND
VCC 3.3V
  • 把Rotation_Sensor文件夹复制到树莓派系统内,上电之后,终端执行:
    cd Rotation_Sensor
    chmod +x Rotation_Sensor //首次运行需赋予执行权限
    sudo ./Rotation_Sensor
  • 分别顺时针旋转,逆时针旋转和按下编码器,端口分别输出数据:
    Turn right!
    Turn left!
    Turn down!
  • 把模块的SIA,SIB,SW端口分别连接逻辑分析仪(需另外选购)的CH0,CH1,CH2。
    顺时针旋转编码器,波行输出如下:

ARPI600-UserManual-24.jpg

  • 逆时针转编码器,波行输出如下:

ARPI600-UserManual-25.jpg

  • 按下编码器上的按键:

ARPI600-UserManual-26.jpg

  • 按Ctrl+C结束程序。

Sound Sensor

  • 把ARPI600插入到树莓派。
  • 按照下表连接传感器和ARPI600的管脚:
Sound Sensor管脚 ARPI600管脚
DOUT P0
AOUT T_A6
GND GND
VCC 3.3V
  • 把Sound_Sensor文件夹复制到树莓派系统内,上电之后,终端执行:
    cd Sound_Sensor
    chmod +x General_Sensor //首次运行需赋予执行权限
    sudo ./General_Sensor
  • 当模块的咪头靠近发声源时,模块上的信号指示灯点亮。当模块的咪头远离发声源时,模块上的信号指示灯熄灭。
  • 随着传感器与发声源距离的变化,终端输出数据有相应的变化。
  • 按Ctrl+C结束程序。

Temperature-Humidity Sensor

  • 把ARPI600插入到树莓派。
  • 按照下表连接传感器和ARPI600的管脚:
Temperature-Humidity Sensor管脚 ARPI600管脚
DOUT P0
GND GND
VCC 3.3V
  • 把Temperature-Humidity_Sensor文件夹复制到树莓派系统内,上电之后,终端执行:
    cd Temperature-Humidity_Sensor
    chmod +x DHT11 //首次运行需赋予执行权限
    sudo ./DHT11
  • 终端输出温度和湿度。例如:
    Humidity=33
    Temperature=28
  • 按Ctrl+C结束程序。

MQ-5 Gas Sensor

  • 把ARPI600插入到树莓派。
  • 按照下表连接传感器和ARPI600的管脚:
MQ-5 Gas Sensor管脚 ARPI600管脚
DOUT P0
AOUT T_A6
GND GND
VCC 3.3V
  • 把MQ-5_Gas_Sensor文件夹复制到树莓派系统内,上电之后,终端执行:
    cd MQ-5_Gas_Sensor
    chmod +x General_Sensor //首次运行需赋予执行权限
    sudo ./General_Sensor
  • 让传感器先预热一分钟。
  • 把传感器放入含有敏感气体(该气体传感器对液化气,天然气和煤气敏感)的装置中,模块上的信号指示灯点亮。把传感器从敏感气体装置中取出,模块上的信号指示灯熄灭。由此可判断敏感气体的浓度是否超标。
  • 按Ctrl+C结束程序。

Tilt Sensor

  • 把ARPI600插入到树莓派。
  • 按照下表连接传感器和ARPI600的管脚:
Tilt Sensor管脚 ARPI600管脚
DOUT T_A6
GND GND
VCC 3.3V
  • 把Tilt_Sensor文件夹复制到树莓派系统内,上电之后,终端执行:
    cd Tilt_Sensor
    chmod +x General_Sensor //首次运行需赋予执行权限
    sudo ./General_Sensor
  • 晃动模块或使模块倾斜时,模块上的信号指示灯点亮。模块平行放置时,模块上的信号指示灯熄灭。由此可判断模块的状态是否发生晃动或倾斜。
  • 按Ctrl+C结束程序。

UV Sensor

  • 把ARPI600插入到树莓派。
  • 按照下表连接传感器和ARPI600的管脚:
UV Sensor管脚 ARPI600管脚
AOUT T_A6
GND GND
VCC 3.3V
  • 把UV_Sensor文件夹复制到树莓派系统内,上电之后,终端执行:
    cd UV_Sensor
    chmod +x General_Sensor //首次运行需赋予执行权限
    sudo ./General_Sensor
  • 让传感器靠近阳光,终端输出的数据会发生改变。
  • 按Ctrl+C结束程序。

Liquid Level Sensor

  • 把ARPI600插入到树莓派。
  • 按照下表连接传感器和ARPI600的管脚:
Liquid Level Sensor管脚 ARPI600管脚
AOUT T_A6
GND GND
VCC 3.3V
  • 把Liquid_Level_Sensor文件夹复制到树莓派系统内,上电之后,终端执行:
    cd Liquid_Level_Sensor
    chmod +x General_Sensor //首次运行需赋予执行权限
    sudo ./General_Sensor
  • 把传感器插入一定深度的水中,终端输出的数据会发生改变。
  • 按Ctrl+C结束程序。

Jetson Nano使用

JetsonNano的IO脚输入阻抗不匹配的问题, 40Pin接口外接模块时的输入电平不能识别,且IO输出能力弱,一些引脚复用功能如SPI、I2S、PWM等并未开启,需重写设备树才能正常使用,nVidia官方目前正修复一系列BUG稍后推出R32.2更新包,使用微雪提供的镜像可使用硬件SPI或参考SPI详细设置过程

ARPI-UserManual-27.jpg
图 27. ARPI600接入Jetson Nano

PCF8563例程

PCF8563是I2C访问的RTC时钟芯片,将ARPI600接入Jetson Nano,实现实时时钟管理。

PCF8563 Jetson Nano
3.3V 3.3V
GND GND
SCL 5(Board编码)
SDA 3(Board编码)
  • 安装函数库,输入下面命令:
sudo apt-get install python-pip
sudo apt-get install python3-pip
sudo pip install smbus
sudo pip3 install smbus
  • 进入PCF8563/C目录,执行命令:
waveshare@waveshare-desktop:~/Documents/ARPI600/Jetson Nano/PCF8563/C$ make clean
waveshare@waveshare-desktop:~/Documents/ARPI600/Jetson Nano/PCF8563/C$ make
waveshare@waveshare-desktop:~/Documents/ARPI600/Jetson Nano/PCF8563/C$ sudo ./main
ARPI-UserManual-28.png
图 28. PCF8563时钟显示
  • 进入PCF8563/python目录,执行命令:
waveshare@waveshare-desktop:~/Documents/ARPI600/Jetson Nano/PCF8563/python2$ sudo python main.py

效果同C程序一样

UART例程

将ARPI600接入Jetson Nano,串口跳帽设置同图2一样,MicroUSB连接ARPI600至PC,打开串口助手,COM口值在设备管理器中查找,波特率选择115200。

CP2102 Jetson Nano
3.3V 3.3V
GND GND
RX 8(Board编码)
TX 10(Board编码)
  • 安装函数库
sudo apt-get install python-pip
sudo apt-get install python3-pip
sudo apt-get install python-serial
sudo pip3 install pyserial
  • 进入UART/C目录,执行命令,打开串口助手,发送内容将回显在接收区:
waveshare@waveshare-desktop:~/Documents/ARPI600/Jetson Nano/UART/C$ sudo make clean
waveshare@waveshare-desktop:~/Documents/ARPI600/Jetson Nano/UART/C$ sudo make
waveshare@waveshare-desktop:~/Documents/ARPI600/Jetson Nano/UART/C$ sudo ./main
ARPI UserManual-30.png
图 29. UART串口回显
  • 进入UART/python2或UART/python3目录,执行命令:
waveshare@waveshare-desktop:~/Documents/ARPI600/Jetson Nano/UART/python2$ sudo python main.py

python例程效果同C一样