基于树莓派的远程开锁器

背景:

自从小区物业撂挑子不干了以后,楼下的安保们密码锁失效,我又没有钥匙,每次回家运气不好的话就要去找门卫要钥匙,十分的不方便,所以干脆自己做个可以远程开锁的门禁系统,正好最近在捣鼓树莓派,干脆就先拿这个门开刀。

研究与技术方案:

【目标】

按下手机app中的按钮,大门的电磁锁打开。

【基本原理】

【Raspberry Pi 3b+】 一种基于Linux系统内核的与ARM的微型电脑主板,拥有个人电脑的所有基础功能,可以连接键鼠、摄像头、网络设备和显示器等外设。
◎ 1.4GHz 64位4核 ARM Cortex-A53 CPU
◎ 双频 802.11ac 无线网卡和蓝牙 4.2
◎ 支持百兆网以及千兆以太网 over USB 2.0
◎ 1G LPDDR2
◎ PoE 支持(Power-over-Ethernet,with PoE HAT)
◎ 改进 PXE 网络与 USB 大容量存储启动

【控制模块】
Pi4j是一种依赖于WiringPi的、开源的和小型研究专用的第三方Java库,它使用java封装了低层级的对硬件的操作。在实际使用调用GPIO时,Java的执行速度能够比肩Python。作为开源技术,Pi4j免费公开、方便易用,自带的文档能让初学者快速上手,使用java编程也是一大优势。

【远程控制】
使用Android Studio 加SSM框架加云服务器的组合开发安卓应用,使用手机远程控制门禁。
SSM框架详见
https://www.cnblogs.com/zyw-205520/p/4771253.html

【配置树莓派】

详见 树莓派3B+ 开箱安装系统及入门使用的基本设置 下面简单阐述一下即可
1 . 树莓派要运行首先要安装树莓派系统,下载系统镜像文件RASPBIAN ,下载地址:http://www.raspberrypi.org/downloads/

2、使用Win32 Disk Imager写入镜像文件
树莓派启动使用TF卡,建议使用16G的闪迪高速卡,使用前最好对其进行格式化,对于32G卡以上容量的卡windows无法格式化,建议使用SDFormatter软件格式化。

3、上电启动,使用串口命令行登陆

在tf卡中的根目录新建一个名为SSH的空白文件,再把TF卡插入树莓派的电路板上,使用micro USB线接上5V电源,供电电流2A,一般使用自己的手机充电器就可以。在电脑上打开Secure CRT软件,设置串口波特率115200, 输入用户名:pi, 密码:raspberry,或者直接使用显示器加键鼠连接即可。

【服务器交互】

当使用云端服务器时,树莓派充当执行端,需要在开机并接入网络后执行轮询脚本,每三秒发起一次请求查询,从服务器接收数据后在执行相应指令,若接受数据中没有指令则继续待机。

 //循环执行
while(True):
    url = "http://" + server + config.url
    connect= urllib.request.urlopen(url) //需要导入urllib.request包
Resource = connect.read().decode('utf-8')

//将返回数据格式化为json格式
    response= json.loads(Resource )
    key = list(response["data"].keys())
    value = list(response["data"].values())
    if key == ['open_mode']:
        data = value[0];
        Open(value)
    time.sleep(3)

使用SSM框架服务器,在eclipse上开发,树莓派每两秒向服务器请求一次状态,当服务器收到树莓派的请求时,查询数据库并返回状态码。

@ResponseBody
	@RequestMapping(value = "/open", method = RequestMethod.POST)
	public int open(@RequestBody Raspberry rasp) {
		
		int code = raspberryService.open(rasp.getAddr());
		return code;
		
	}

【硬件连接】

树莓派通过GPIO引脚控制其他硬件。
RPI的GPIO引脚的定义:http://elinux.org/RPi_Low-level_peripherals#General_Purpose_Input.2FOutput_.28GPIO.29
引脚的输出规格:http://elinux.org/RPi_BCM2835_GPIOs
RPI的GPIO教程:http://log.liminastudio.com/writing/tutorials/tutorial-how-to-use-your-raspberry-pi-like-an-arduino
请特别注意:老版本的树莓派由于GPIO的引脚是没有保护电路的,不当的硬件连接很可能会导致整块RPI板子烧掉,连接和操作时务必慎重。最好使用3B以上版本。

将树莓派与两路数字继电器连接,此模块就是电磁锁的通用控制模块,当树莓派输出低电平时便可控制继电器打开电磁锁,接下来只需要控制树莓派输出电平即可。
树莓派连接两路数字继电器

数字继电器
【Pi4j】
首先需要在树莓派上配置java环境,详见 https://blog.csdn.net/qigenhuochai/article/details/17661845
之后便可在JAVA路径下新建java文件

import com.pi4j.io.gpio.GpioController;
import com.pi4j.io.gpio.GpioFactory;
import com.pi4j.io.gpio.GpioPinDigitalOutput;
import com.pi4j.io.gpio.PinState;
import com.pi4j.io.gpio.RaspiPin;
 
public class Open {
    
    public static void main(String[] args) throws InterruptedException {
        // 创建一个GPIO控制器
       final GpioController gpio = GpioFactory.getInstance();
        // 获取1号GPIO针脚并设置高电平状态。
       final GpioPinDigitalOutput pin = gpio.provisionDigitalOutputPin(RaspiPin.GPIO_01, "LED", PinState.HIGH);
 		pin.high();
		System.out.println("打开继电器");
		Thread.sleep(10000);
    }
}

这样就大功告成了。

  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值