树莓派智能家居:树莓派安装pi4j

作者: lushitao 分类: 智能家居 发布时间: 2017-09-12 20:43

经过上周末两天的焊接,终于完成了433MHZ的发射模块连接,但是接收模块却始终无法正确接收信号。本周末再看如何重新连接电路了。

那么我们再讲一下如何使用树莓派pi4j来控制树莓派GPIO引脚。

因为pi4j需要依赖java环境和wiringPi库,Java环境我们可以直接通过sudo apt-get install oracle-java8-jdk命令来安装,wiring Pi安装命令如下:

点击链接:https://git.drogon.net/?p=wiringPi;a=summary,在这里我们选择一个最新版的wiringPi,点击SNAPSHOT,便可下载,假设我们下载的包是wiringPi-98bcb20.tar.gz。实际中这个包会可能不同。

下载完毕后导入到树莓派中,执行下面命令:

$ tar xfz wiringPi-98bcb20.tar.gz

$ cd wiringPi-98bcb20

$ ./build

等待build完毕。

下面安装pi4j,执行下面命令:

sudo curl -s get.pi4j.com | sudo bash

等待pi4j安装完毕即可。

库函数安装好了,那我们需要在eclipse中导入pi4j-core的jar包,maven结构如下:

<dependency>

<groupId>com.pi4j</groupId>

<artifactId>pi4j-core</artifactId>

<version>1.1</version>

</dependency>

但是最新版的树莓派系统如果使用1.1版本会报一个错误:

Unable to determine hardware version. I see: Hardware : BCM2835- expecting BCM2708 or BCM2709.

这是因为1.1版本不支持最新版的树莓派系统,我们这时候需要使用1.2-SNAPSHOT版本。这个版本在很多maven库里还没有收录,所以将其分享出来,链接如下:

http://lst.wting.me/wp-content/uploads/2017/09/pi4j-core-1.2-SNAPSHOT.zip

好了,现在我们集成了jar包,就能直接开发应用了。新建一个APP类,写入下面的方法:

public class App {

public static void main( String[] args ){

String get=args[0];

final GpioController gpio = GpioFactory.getInstance();

final GpioPinDigitalOutput pin = gpio.provisionDigitalOutputPin(RaspiPin.GPIO_00, “LED”, PinState.HIGH);

if(get.equals(“h”))

pin.high();

else

pin.low();

}

}

在这里附一个图:

根据这张图我们这个例子就很好理解了,找到GPIO_00,即11号引脚,设置默认值高电平,然后根据传入参数设置高电平和低电平。

其实到这里我们就可以控制继电器控制灯光了,但是很遗憾,如果这样做我们只能使用很长很长的线连接到我们的开关处,对智能家居来讲很不友好,所以我们需要使用无线把这个引脚的信号发射出去。

那么我们介绍一下当前的设计:

树莓派控制引脚输出高电平,高电平激活EV1527芯片进行编码,编码后的数据传送给433MHZ的H34B无线发射模块将数据发送出去。接收端是一个LR43B的无线接收模块,接收到的数据使用RFE273解码芯片进行解码,解码后的引脚一定会有一个高电平,但是我们不能让发射模块和接收模块一直处于发射状态,所以此时需要一个锁存器锁存当前的状态,经过锁存器后的数据接一个负载,即220V的固态继电器,控制灯光的开关。

我们先介绍一下EV1527的连接电路吧。

EV1527 是一片由 CMOS 设计制造的可预烧内码的学习码编码芯片,由软件解码,内码共有 20 位元可预烧 100 万组内码组合,大大降低了使用编码上重复的机率。更重要的是其不可复制性,并且由于可以自学习,当发射模块丢了,只要对接收模块进行自学习就可以使原先的发射模块失效,大大提高了安全性。

电路图如下图所示。图中 ev1527 的第 5 脚至第 8 脚是按键输入脚 ,内含接地电阻 ,外接一个4. 7 kΩ的电阻 ,再通过按键连到电源上。当 S1~S4 有键按下时 , EV1527 的对应脚上就有了一个高电平,于是触发 EV1527 芯片 ,第 4 脚就输出相应的数据串,实际使用中 4 脚接无线发射模块 DAT 脚。

为了能够更好的集成这些芯片,我们需要购置PCB双面镀锡板和一定的电阻,篇幅有限,接下来慢慢讲解关于发射模块的基本内容。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注