(SKU:DFR0604)I/O Expansion HAT for Pi zero V1.0

来自DFRobot Product Wiki
跳转至: 导航搜索
文件:DFR0604 1.jpg
I/O Expansion HAT

目录

简介


这个扩展板提供数字/模拟/I2C/PWM/UART/SPI端口,板载MCU(STM32),提供12位8通道ADC。 扩展板体积小巧,用在Zero上是最合适不过的了。但要注意,尺寸会比Zero大1mm,可能无法安装Zero外壳。

应用场景

机器人、无人机、智能小车、机械手臂

产品规格

  • 供电电压:5V
  • 舵机外接电源:6-12V
  • MCU:STM32
  • ADC:12位8通道
  • 扩展板接口:
    • 10组数字口
    • 4组模拟口
    • 2组IIC口
    • 4组PWM口
    • 1组UART口
    • 1组SPI口
  • 设备地址:0x10
  • 产品尺寸:60*30mm

接口说明

正面示意图
底面示意图
扩展板与树莓派的连接图(示例)


尺寸图
[DFR0604]IO Expansion HAT for Pi zero
丝印 标号 功能描述
+ + 3.3V电源正极
- - 电源负极
接线柱外接电源正极
接线柱外接电源负极
Digital 16-25 树莓派GPIO16-GPIO25
PWM 0-3 PWM信号输出引脚0-3
Analog 0-3 模拟信号输入引脚0-3
IIC C IIC接口时钟线
IIC D IIC接口数据线
UART T UART接口发送端
UART R UART接口接收端
SPI MISO SPI数据输出线
SPI SS SPI使能脚
SPI SCLK SPI串行时钟线
SPI MOSI SPI数据输入线
















  • PWM

扩展板的PWM信号由板载STM32的定时器产生。PWM0~PWM3是用的一个定时器的多个通道PWM输出,频率一样,占空比可以设置。PWM4采用另外的定时器PWM输出。 在不外接电源情况下,PWM由树莓派供电(5V)。外接电源时(6V~12V),由外接电源提供电压。

  • Analog

IO扩展板板载MCU STM32,提供12位的ADC,模拟传感器的电压输入12-bit ADC,在模拟数据转换成数字数据后,通过IIC通信将数据发送给树莓派。 因此,树莓派可以读取模拟传感器的值。

  • Digital

IO扩展板直接引出树莓派10个GPIO口(BCM编码),分别是GPIO16、GPIO17、GPIO18、GPIO19、GPIO20、GPIO21、GPIO22、GPIO23、GPIO24、GPIO25。

  • IIC

IO扩展包板有2个I2C接口,它们由树莓派的IIC直接引出,连接树莓派的GPIO2(SDA.1)和GPIO3(SCL.1)。

  • UART

zero扩展板提供一组UART接口,通过GPIO14(TXD)和GPIO15(RXD)引出。通过UART可以与Arduino/Esp8266等主板串口通信。

  • SPI

zero扩展板引出树莓派的一组SPI,连接到GPIO12(MOSI)和GPIO13(MISO)。

注意:此扩展板上的GPIO编号采用BCM编码方式。

使用教程

硬件连接

将zero扩展板直接插在树莓派的GPIO口中。 }

下载驱动库

如果需要使用zero扩展板上的模拟接口、PWM口,需要下载驱动库。在终端(Ctrl+Alt+T打开)中,输入下面命令,并回车:

 git clone https://github.com/DFRobot/DFRobot_RaspberryPi_Expansion_Board.git  

将库下载后,解压缩:

 tar -xvzf DFRobot_RaspberryPi_Expansion_Board

进入解压缩后的目录下:

 cd DFRobot_RaspberryPi_Expansion_Board/raspberry/


扩展接口使用

将DFRobot_RaspberryPi_Expansion_Board.py中,以下内容

 CHANNEL1 = 0x01
 CHANNEL2 = 0x02
 CHANNEL3 = 0x03
 CHANNEL4 = 0x04

替换成

 CHANNEL0 = 0x01
 CHANNEL1 = 0x02
 CHANNEL2 = 0x03
 CHANNEL3 = 0x04

PWM使用

例如将舵机接入PWM口的0引脚。 通过nano命令新建一个文件

 sudo nano servoTest.py

添加以下内容:

# -*- coding:utf-8 -*-
# servoTest.py

import time

from DFRobot_RaspberryPi_Expansion_Board import DFRobot_Expansion_Board_IIC as Board
from DFRobot_RaspberryPi_Expansion_Board import DFRobot_Expansion_Board_Servo as Servo

board = Board(1, 0x10)  # Select i2c bus 1, set address to 0x10
servo = Servo(board)

if __name__ == "__main__":
  servo.begin()         # servo control begin
  chan_list = [board.CHANNEL0]
  while True:
    for i in range(0, 181):
      servo.move(chan_list, i)
      time.sleep(0.008)
    time.sleep(0.002)
    for i in range(0, 181):
      i = 181 - i
      servo.move(chan_list, i)
      time.sleep(0.008)
    time.sleep(0.002)             

上面servo.move中的参数chan_list是PWM接口选择的列表,例如你使用PWM的1,2引脚,那么chan_list = [board.CHANNEL1, board.CHANNEL2]。具体的参数选择如下表:

Zero 扩展板WPM引脚 参数
0 board.CHANNEL0
1 board.CHANNEL1
2 board.CHANNEL2
3 board.CHANNEL3
PWM所有引脚 board.ALL



编辑完成后Ctrl+X,然后按Y保存退出nano编辑器。
输入sudo raspi-config命令打开IIC接口。
输入python servoTest.py命令运行servoTest.py文件

Analog使用

示例代码

# -*- coding:utf-8 -*-
# analogTest.py

import time

from DFRobot_RaspberryPi_Expansion_Board import DFRobot_Expansion_Board_IIC as Board

board = Board(1, 0x10)  # Select i2c bus 1, set address to 0x10

if __name__ == "__main__":
  board.begin()

  while True:
    val_list = board.get_adc_value(board.ALL)  # Part channels read
    for chan, val in zip(board.ALL, val_list):
      print("channel: %d, value: %d, valtage: %.2fV" %(chan, val, float(val)/4096.0*3.3))
    print("")

    time.sleep()          

Digital使用

Digital使用与直接在树莓派上使用GPIO口是一样的,先下载RPi.GPIO库。在树莓派终端输入命令:

 sudo apt-get install rpi.gpio

检查RPi.GPIO库是否安装成功,在终端输入命令:

 gpio.readall

如果在终端显示树莓派所有管脚,则库安装成功。

然后使用树莓派的GPIO口,以使用GPIO16为例,在Digital接口的16扩展接口上接一个LED灯。
然后nano编辑器中输入下面的示例代码,输入python命令运行。

# -*- coding:utf-8 -*-
# digitalTest.py

import RPi.GPIO as GPIO
import time

blinkPin = 16

GPIO.setmode(GPIO.BCM)

GPIO.setup(blinkPin, GPIO.OUT)  # set 16 channel is OUTPUT

for i in range(0, 10):
  GPIO.output(blinkPin, 1)
  time.sleep(1)
  GPIO.output(blinkPin, 0)
  time.sleep(1)
GPIO.cleanup()

       

IIC使用

使用IIC接口需要开启树莓派IIC外设,在树莓派终端输入命令:

 sudo raspi-config

选择【Interfacing Options】-【I2C】-【Yes】-【OK】-【Finish】,完后重启树莓派。
zero扩展板的IIC接口使用与直接使用树莓派上的IIC口是一样的,这里不赘述。

UART使用

zero扩展板的UART接口使用与直接使用树莓派上的UART是一样的,这里不赘述。

SPI使用

使用zero扩展板的SPI口,首先需要开启树莓派SPI外设,与开启IIC一样,在树莓派终端输入命令:

 sudo raspi-config

选择【Interfacing Options】-【I2C】-【Yes】-【OK】-【Finish】完成后重启树莓派。
zero扩展板的SPI接口使用与直接使用树莓派上的SPI接口是一样的,这里不赘述。

常见问题

问:使用IIC接口时报错怎么解决?

答:确定在使用IIC接口前,打开树莓派的IIC外设。如果没有打开,需要手动打开,然后重启树莓派生效。SPI接口也是如此。


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


更多


DFshopping car1.png DFRobot商城购买链接

简介

个人工具
名字空间

变换
操作
导航
工具箱