Difference between revisions of "Matrix - Ball Rolling Switch/zh"

From FriendlyELEC WiKi
Jump to: navigation, search
Line 94: Line 94:
 
</syntaxhighlight>
 
</syntaxhighlight>
 
运行效果如下:<br>
 
运行效果如下:<br>
[[File:matrix-BAll_Rolling_Switch_result.png|frameless|600px|matrix-BAll_Rolling_Switch_result]] <br>
+
[[File:matrix-ball_switch_result.png|frameless|600px|matrix-BAll_Rolling_Switch_result]] <br>
 
利用开关中的小珠的滚动,制造与金属端子的触碰或改变光线行进的路线,就能产生导通或不导通的效果。
 
利用开关中的小珠的滚动,制造与金属端子的触碰或改变光线行进的路线,就能产生导通或不导通的效果。
  

Revision as of 02:56, 25 December 2015

English

1 介绍

BAll Rolling Switch
  • Matrix-Ball Rolling Switch是一个滚珠开关模块,电气特性与水银开关近似,解决了水银开关易破损、氧化、漏气、寿命短、污染环境等弊端。
  • 开关本身无方向,360°任何一个方向倾斜到一定的角度(15°-45°)时,就会产生一个开关信号,信号传入施密特触发器反向后输出。

2 特性

  • GPIO
  • 体积小巧
  • 2.54mm排针接口
  • PCB尺寸(mm):16x16

BAll Rolling Switch-01.PCB

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

3 工作原理

3-Pin 2.54mm排针,V接电源,G接地,S为模块数字信号输出,当开关倾斜,开关内的金属球珠滚动到开关一侧,导通触点时,开关输出高电平到施密特触发器,再通过触发器内部的逆变器反向,模块输出低电平;当开关内的金属球珠滚动到开关的另一侧,断开触点时,滚珠开关输出低电平到施密特触发器,触发器内部的逆变器反向,此时,模块输出高电平。

4 下载Matrix源码

Matrix配件相关的代码是完全开源的,统一由一个仓库进行管理:git://github.com/friendlyarm/matrix.git
该仓库里不同的分支代表着Matrix配件所支持的不同开发板。

  • nanopi分支用于支持NanoPi;
  • nanopi2分支用于支持NanoPi 2;
  • tiny4412分支用于支持Tiny4412;
  • raspberrypi分支用于支持RaspberryPi;

在主机PC上安装git,以Ubuntu14.04为例

$ sudo apt-get install git

克隆Matrix配件代码仓库

$ git clone git://github.com/friendlyarm/matrix.git

克隆完成后会得到一个名为matrix的目录,里面存放着所有Matrix配件的代码。

5 与NanoPi 2连接使用

5.1 硬件连接

参考下图连接模块Matrix-Ball Rolling Switch和NanoPi2:
matrix-BAll Rolling Switch_nanopi2

连接说明:

Matrix-Ball Rolling Switch NanoPi2
S Pin7
V Pin4
G Pin6

5.2 编译测试程序

进入Matrix代码仓库,切换到nanopi2分支

$ cd matrix
$ git checkout nanopi2

编译Matrix配件代码

$ make CROSS_COMPILE=arm-linux- clean
$ make CROSS_COMPILE=arm-linux-
$ make CROSS_COMPILE=arm-linux- install

注意:请确保你的主机PC当前使用的交叉编译器为NanoPi 2配套的arm-linux-gcc-4.9.3。
编译成功后库文件位于install/lib目录下,而测试程序则位于install/usr/bin目录下,模块Matrix-Ball_Rolling_Switch对应的测试程序为matrix-ball_switch。

5.3 运行测试程序

将带有Debian系统的SD卡插入一台运行Linux的电脑,可以挂载SD卡上的boot和rootfs分区。
假设rootfs分区的挂载路径为/media/rootfs,执行以下命令将Matrix的硬件驱动、库文件和测试程序拷贝到NanoPi 2的文件系统上。

$ cp modules /media/rootfs/ -r
$ cp install/lib/* /media/rootfs/lib/ -d
$ cp install/usr/bin/* /media/rootfs/usr/bin/

将SD卡重新插入NanoPi 2,上电启动,在Debian的shell终端中执行以下命令运行模块Matrix-Ball Rolling Switch的测试程序。

$ matrix-ball_switch

运行效果如下:
matrix-BAll_Rolling_Switch_result
利用开关中的小珠的滚动,制造与金属端子的触碰或改变光线行进的路线,就能产生导通或不导通的效果。

5.4 代码展示

static struct sensor switch[] = {
        {
                GPIO_PIN(7),
                IRQ_TYPE_EDGE_FALLING,
        }
};
int main(int argc, char ** argv)
{
    int i;
    int retSize = -1;
    char value[ARRAY_SIZE(switch)];
    int devFD = -1;
 
    if (argc == 2) {
        switch[0].pin = atoi(argv[1]);
    }
 
    printf("Using GPIO_PIN(%d)\n", switch[0].pin);
    if ((devFD =sensorInit(switch, ARRAY_SIZE(switch))) == -1) {
        printf("Fail to init sensor\n");
        return -1;
    }
    printf(" the switch...\n");
    if ((retSize = sensorRead(devFD, value, ARRAY_SIZE(switch))) == -1) {
        printf("Fail to read sensors\n");
    }
    if (retSize > 0) {
        i = 0;
        for (i=0; i<retSize; i++) {
            printf("switch[%d]:%d\n", i, value[i]);
        }
    }
    sensorDeinit(devFD);
    return 0;
}