Difference between revisions of "Matrix - Relay/zh"

From FriendlyELEC WiKi
Jump to: navigation, search
(Introduction)
(连接NanoPC-T2)
 
(41 intermediate revisions by 3 users not shown)
Line 1: Line 1:
 
[[Matrix - Relay|English]]
 
[[Matrix - Relay|English]]
  
==Introduction==
+
==介绍==
 
[[File:relay01.png|thumb|Relay]]
 
[[File:relay01.png|thumb|Relay]]
This is an SPDT relay. Its coil voltage is 5V. The contact current can be up to 10A. It can drive AC or DC high power loads. NO is Normally Open. NC is Normally Closed. COM is Common. When write high to pin S NO will be open and NC will be closed.
+
*模块Matrix-Relay这是一个单刀双掷继电器,通常应用于自动控制电路中,它实际上是用较小的电流去控制较大电流的一种“自动开关”。故在电路中起着自动调节、安全保护、转换电路等作用。
  
==Features==
+
==特性==
 
* 1 Form C
 
* 1 Form C
* 5V coil voltage, 3.3/5V control signal
+
* 5V线圈电压,控制信号为3.3/5V
* Contact current up to 10A
+
* 触点电流可达10A
* LED indicator
+
* LED指示
* 2.54mm spacing pin
+
* 2.54mm排针接口,接线方便,通用性强
 +
* PCB尺寸(mm):24x48
 +
[[File:relaypcb.png|frameless|400px|继电器PCB]]
  
==How To==
+
* 引脚说明:
===Connection===
+
{| class="wikitable"
*Connect to Tiny4412 SDK (1506)
+
|-
::Connect the module's pin S to GPIO PIN1, V to 5V and G grounded
+
|名称 || 描述
 +
|-
 +
|S   || GPIO
 +
|-
 +
|V   || 电源5V
 +
|-
 +
|G   || 地
 +
|}
  
===Code Sample in C Under Linux===
+
==工作原理==
<syntaxhighlight lang="c">
+
这是一个单刀双掷继电器,线圈电压为直流5V,触点电流可达10A,适合驱动直流或交流大功率负载。NO为常开触点,NC为常闭触点,COM为公共触点。当向S引脚施加高电平,继电器线圈导通,此时NO触点断开,NC触点闭合。
#include <stdio.h>
+
#include <string.h>
+
#include "libfahw.h"
+
  
int main(int argc, char ** argv)
+
==硬件连接==
{
+
===连接NanoPi NEO/NanoPi NEO Air===
    char *status = "off";
+
NanoPi M1和NanoPi NEO以及NanoPi NEO Air的前24Pin引脚定义是一模一样的,所以它们操作Matrix配件的步骤是一样的,并且使用同一份代码。<br>
    if (argc != 2) {
+
        printf("Set relay on\n");
+
    } else {
+
        status = argv[1];
+
        printf("Set relay %s\n", argv[1]);
+
    }
+
  
     int pin = TINY4412_GPIO_PIN1;
+
参考下图连接模块:<br>
 +
[[File:Matrix-Relay_nanopi_NEO.jpg|frameless|600px|Matrix-Relay_nanopi_NEO]]
 +
 
 +
连接说明:
 +
{| class="wikitable"
 +
|-
 +
|Matrix-Relay || NanoPi NEO
 +
|-
 +
|S    || Pin7
 +
|-
 +
|V    || Pin4
 +
|-
 +
|G    || Pin6
 +
|}
 +
 
 +
===连接NanoPi M1===
 +
参考下图连接模块:<br>
 +
[[File:Matrix-Relay_nanopi_m1.jpg|frameless|600px|Matrix-Relay_nanopi_m1]]
 +
 
 +
连接说明:
 +
{| class="wikitable"
 +
|-
 +
|Matrix-Relay || NanoPi M1
 +
|-
 +
|S    || Pin7
 +
|-
 +
|V    || Pin4
 +
|-
 +
|G    || Pin6
 +
|}
 +
 
 +
===连接NanoPi 2===
 +
参考下图连接模块:<br>
 +
[[File:Matrix-Relay_nanopi_2.jpg|frameless|600px|Matrix-Relay_nanopi_2]]
 +
 
 +
连接说明:
 +
{| class="wikitable"
 +
|-
 +
|Matrix-Relay || NanoPi 2
 +
|-
 +
|S    || Pin7
 +
|-
 +
|V    || Pin4
 +
|-
 +
|G    || Pin6
 +
|}
 +
 
 +
===连接NanoPi M2 / NanoPi 2 Fire===
 +
NanoPi M2和NanoPi 2 Fire的40 Pin引脚定义是一模一样的,所以它们操作Matrix配件的步骤是一样的,这里仅以NanoPi M2为例。<br>
 +
参考下图连接模块:<br>
 +
[[File:Matrix-Relay_nanopi_m2.jpg|frameless|600px|Matrix-Relay_nanopi_m2]]
 +
 
 +
连接说明:
 +
{| class="wikitable"
 +
|-
 +
|Matrix-Relay || NanoPi M2
 +
|-
 +
|S    || Pin7
 +
|-
 +
|V    || Pin4
 +
|-
 +
|G    || Pin6
 +
|}
 +
 
 +
===连接NanoPi M3===
 +
参考下图连接模块:<br>
 +
[[File:Matrix-Relay_nanopi_m3.jpg|frameless|600px|Matrix-Relay_nanopi_m3]]
 +
 
 +
连接说明:
 +
{| class="wikitable"
 +
|-
 +
|Matrix-Relay || NanoPi M3
 +
|-
 +
|S    || Pin7
 +
|-
 +
|V    || Pin4
 +
|-
 +
|G    || Pin6
 +
|}
 +
 
 +
===连接NanoPC-T2/NanoPC-T3===
 +
由于NanoPC-T2跟NanoPC-T3的引脚是一样的,所以连接方式是一样的,这里仅以T2为例,参考下图连接模块:<br>
 +
[[File:Matrix-Relay_NanoPC-T2.jpg|frameless|600px|Matrix-Relay_NanoPC-T2]]
 +
 
 +
连接说明:
 +
{| class="wikitable"
 +
|-
 +
|Matrix-Relay || NanoPC-T2
 +
|-
 +
|S    || Pin15
 +
|-
 +
|V    || Pin29
 +
|-
 +
|G    || Pin30
 +
|}
 +
 
 +
==编译运行测试程序==
 +
启动开发板并运行Debian系统,进入系统后克隆Matrix代码仓库:
 +
<syntaxhighlight lang="bash">
 +
$ apt-get update && apt-get install git
 +
$ git clone https://github.com/friendlyarm/matrix.git
 +
</syntaxhighlight>
 +
克隆完成后会得到一个名为matrix的目录。
 +
 
 +
编译并安装Matrix:
 +
<syntaxhighlight lang="bash">
 +
$ cd matrix
 +
$ make && make install
 +
</syntaxhighlight>
 +
 
 +
运行测试程序:
 +
<syntaxhighlight lang="bash">
 +
$ matrix-gpio_out
 +
</syntaxhighlight>
 +
注意:此模块并不支持热插拔,启动系统前需要确保硬件连接正确。<br>
 +
运行效果如下:<br>
 +
<syntaxhighlight lang="bash">
 +
1: gpio status change
 +
2: gpio status change
 +
3: gpio status change
 +
4: gpio status change
 +
5: gpio status change
 +
</syntaxhighlight>
 +
 
 +
==代码说明==
 +
所有的开发板都共用一套Matrix代码,本模块的测试示例代码为matrix-gpio_out,内容如下:
 +
<syntaxhighlight lang="c">
 +
int main(int argc, char ** argv)
 +
{
 +
     int pin = GPIO_PIN(7);
 +
    int i, value, board;
 
     int ret = -1;
 
     int ret = -1;
     if ((ret = exportGPIOPin(pin)) != 0) {
+
   
         printf("exportGPIOPin(%d) failed!", pin);
+
     if ((board = boardInit()) < 0) {
 +
         printf("Fail to init board\n");
 +
        return -1;
 
     }
 
     }
     if ((ret = setGPIODirection(pin, GPIO_OUT)) != 0) {
+
    if (board == BOARD_NANOPI_T2)
         printf("setGPIODirection(%d) failed", pin);
+
        pin = GPIO_PIN(15);
 +
   
 +
    if (argc == 2)
 +
        pin = GPIO_PIN(atoi(argv[1]));
 +
     if ((ret = exportGPIOPin(pin)) == -1) {  
 +
         printf("exportGPIOPin(%d) failed\n", pin);
 
     }
 
     }
 
+
     if ((ret = setGPIODirection(pin, GPIO_OUT)) == -1) {
     if (strcmp(status, "on") == 0) {
+
         printf("setGPIODirection(%d) failed\n", pin);
         ret = setGPIOValue(pin, GPIO_LOW);
+
    } else {
+
        ret = setGPIOValue(pin, GPIO_HIGH);
+
 
     }
 
     }
     return ret;
+
     for (i = 0; i < STATUS_CHANGE_TIMES; i++) {
 +
        if (i % 2) {
 +
            value = GPIO_HIGH;
 +
        } else {
 +
            value = GPIO_LOW;
 +
        }
 +
        if ((ret = setGPIOValue(pin, value)) > 0) {
 +
            printf("%d: GPIO_PIN(%d) value is %d\n", i+1, pin, value);
 +
        } else {
 +
            printf("setGPIOValue(%d) failed\n", pin);
 +
        }
 +
        sleep(1);
 +
    }
 +
    unexportGPIOPin(pin);
 +
    return 0;
 
}
 
}
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
API说明参考维基:[[Matrix API reference manual/zh|Matrix API reference manual]] <br>
  
===Compile and Run===
+
==相关资料==
<syntaxhighlight lang="bash">
+
git clone http://github.com/friendlyarm/fa-hardware.git
+
cd fa-hardware
+
cd demo
+
cd matrix-relay
+
make
+
</syntaxhighlight>
+
Copy your compiled bin to your board and you are ready to go.
+
 
+
==Resources==
+

Latest revision as of 08:56, 10 November 2016

English

1 介绍

Relay
  • 模块Matrix-Relay这是一个单刀双掷继电器,通常应用于自动控制电路中,它实际上是用较小的电流去控制较大电流的一种“自动开关”。故在电路中起着自动调节、安全保护、转换电路等作用。

2 特性

  • 1 Form C
  • 5V线圈电压,控制信号为3.3/5V
  • 触点电流可达10A
  • LED指示
  • 2.54mm排针接口,接线方便,通用性强
  • PCB尺寸(mm):24x48

继电器PCB

  • 引脚说明:
名称 描述
S GPIO
V 电源5V
G

3 工作原理

这是一个单刀双掷继电器,线圈电压为直流5V,触点电流可达10A,适合驱动直流或交流大功率负载。NO为常开触点,NC为常闭触点,COM为公共触点。当向S引脚施加高电平,继电器线圈导通,此时NO触点断开,NC触点闭合。

4 硬件连接

4.1 连接NanoPi NEO/NanoPi NEO Air

NanoPi M1和NanoPi NEO以及NanoPi NEO Air的前24Pin引脚定义是一模一样的,所以它们操作Matrix配件的步骤是一样的,并且使用同一份代码。

参考下图连接模块:
Matrix-Relay_nanopi_NEO

连接说明:

Matrix-Relay NanoPi NEO
S Pin7
V Pin4
G Pin6

4.2 连接NanoPi M1

参考下图连接模块:
Matrix-Relay_nanopi_m1

连接说明:

Matrix-Relay NanoPi M1
S Pin7
V Pin4
G Pin6

4.3 连接NanoPi 2

参考下图连接模块:
Matrix-Relay_nanopi_2

连接说明:

Matrix-Relay NanoPi 2
S Pin7
V Pin4
G Pin6

4.4 连接NanoPi M2 / NanoPi 2 Fire

NanoPi M2和NanoPi 2 Fire的40 Pin引脚定义是一模一样的,所以它们操作Matrix配件的步骤是一样的,这里仅以NanoPi M2为例。
参考下图连接模块:
Matrix-Relay_nanopi_m2

连接说明:

Matrix-Relay NanoPi M2
S Pin7
V Pin4
G Pin6

4.5 连接NanoPi M3

参考下图连接模块:
Matrix-Relay_nanopi_m3

连接说明:

Matrix-Relay NanoPi M3
S Pin7
V Pin4
G Pin6

4.6 连接NanoPC-T2/NanoPC-T3

由于NanoPC-T2跟NanoPC-T3的引脚是一样的,所以连接方式是一样的,这里仅以T2为例,参考下图连接模块:
Matrix-Relay_NanoPC-T2

连接说明:

Matrix-Relay NanoPC-T2
S Pin15
V Pin29
G Pin30

5 编译运行测试程序

启动开发板并运行Debian系统,进入系统后克隆Matrix代码仓库:

$ apt-get update && apt-get install git
$ git clone https://github.com/friendlyarm/matrix.git

克隆完成后会得到一个名为matrix的目录。

编译并安装Matrix:

$ cd matrix
$ make && make install

运行测试程序:

$ matrix-gpio_out

注意:此模块并不支持热插拔,启动系统前需要确保硬件连接正确。
运行效果如下:

1: gpio status change
2: gpio status change
3: gpio status change
4: gpio status change
5: gpio status change

6 代码说明

所有的开发板都共用一套Matrix代码,本模块的测试示例代码为matrix-gpio_out,内容如下:

int main(int argc, char ** argv) 
{
    int pin = GPIO_PIN(7); 
    int i, value, board;
    int ret = -1;
 
    if ((board = boardInit()) < 0) {
        printf("Fail to init board\n");
        return -1;
    }
    if (board == BOARD_NANOPI_T2)
        pin = GPIO_PIN(15);
 
    if (argc == 2)
        pin = GPIO_PIN(atoi(argv[1]));
    if ((ret = exportGPIOPin(pin)) == -1) {   
        printf("exportGPIOPin(%d) failed\n", pin);
    }
    if ((ret = setGPIODirection(pin, GPIO_OUT)) == -1) {
        printf("setGPIODirection(%d) failed\n", pin);
    }
    for (i = 0; i < STATUS_CHANGE_TIMES; i++) {
        if (i % 2) {
            value = GPIO_HIGH;
        } else {
            value = GPIO_LOW;
        }
        if ((ret = setGPIOValue(pin, value)) > 0) {
            printf("%d: GPIO_PIN(%d) value is %d\n", i+1, pin, value);
        } else {
            printf("setGPIOValue(%d) failed\n", pin);
        }
        sleep(1);
    }
    unexportGPIOPin(pin);
    return 0;
}

API说明参考维基:Matrix API reference manual

7 相关资料