基于树莓派的门禁系统

news/2024/11/9 0:49:59/

这几天黑客松比赛, 在大神的带领下稳稳地落幕了, 虽然是第二次参加这个活动了, 但是这一次才是我尽全力的去做自己的东西, 这里也感谢xx大牛的指导 。

也不废话了, 直接上图吧




大致的一个流程就是以树莓派作为中间人, 利用各个模块的特性去实现开门。 这里其实还是有很多坑的。 比如一开始的nfc模块, 我把所有的库都装完了,但是不管怎么样都报错, 然后就在这里花了很长的时间, 后来发现, nfc模块后面有一个i2c 和spi 的开关,而我们一直开的是spi模块的,然后拨了下开关就好了。 

另外就是树莓派的源了吧, 好慢的说。其他的摄像头模块,还有灯都没有什么难度,之前就有接触过。总的来说这次还是准备不充分吧, 有好多东西其实可以在前一天就准备好的, 不然也不用那么手忙脚乱了,好好吸取教训 。 另外,这次买模块是在是让大牛破费了,不过还好可以报销的。 其他的也没有说明好说的的啦

上代码吧,对了,我们还有一个是web app模块, 但是代码什么我就不放上来了。

#!/usr/bin/env python 
#coding=utf-8import web 
from datetime import * 
from os import * 
import httplib urls=('/(.*)','index') 
app=web.application(urls,globals()) def take_photo():dt=datetime.now() s= dt.strftime('%Y%m%d%H%M%S') mypath=s+'.jpg'system('raspistill -o '+mypath+' -t 100')    system('mv '+mypath+' /usr/share/nginx/www/'+mypath)return mypathclass index:def GET(self,path):web.header('Access-Control-Allow-Origin', '*')web.header('Access-Control-Allow-Credentials', 'true')mypath=take_photo() return  mypathif __name__=="__main__":app.run()

#!/usr/bin/env python 
#coding=utf-8import RPi.GPIO as GPIO 
import subprocess
from time import sleep 
import re 
import threading 
from os import popen,system 
from datetime import *
import httplib 
import urlliburl='http://192.168.100.127:8080/open'
url2='http://192.168.100.127:8080/close'
url3='http://192.168.100.127:8080/uid'
pins=25def check_user(usrid):fp=open('user.txt','r')d=fp.readlines() 		               i=0 for user in d: if  usrid == user[:-2]:i=1img=take_photo() open_door()sendMessage(usrid,img) print 'take photo ok and open door ok' if i==0 :print 'you have no permission' def open_door():GPIO.output(pins,GPIO.HIGH) sleep(3) GPIO.output(pins , GPIO.LOW)def sendMessage(usrid,img):urlt=url3 params = urllib.urlencode({'uid': usrid,'img':img})headers = {"Content-type": "application/x-www-form-urlencoded", "Accept": "text/plain"}conn= httplib.HTTPConnection('192.168.100.127',8080) conn.request('POST', urlt,params,headers) conn.close()  print 'send user ok'  def check_data(data):if not data:return else:mystr='NFCID'dizhi=data.find(mystr) newstr=data[dizhi+8:dizhi+24]d=re.split(r' ',newstr) s=''.join(d[0:8])check_user(s) def take_photo():dt=datetime.now() s= dt.strftime('%Y%m%d%H%M%S') mypath=s+'.jpg'system('raspistill -o '+mypath+' -t 100')    system('mv '+mypath+' /usr/share/nginx/www/'+mypath)return mypath
def read_nfc():while True:		data=subprocess.Popen('nfc-poll' ,shell=True,stdout=subprocess.PIPE)(stdoutput,errout)=data.communicate() check_data(stdoutput) 
def read_server():while True:conn= httplib.HTTPConnection('192.168.100.127',8080) conn.request(method='GET', url=url) reponse = conn.getresponse() res = reponse.read()if res[0]=='1':print 'door open' conn.request(method='GET' ,url=url2)conn.close()  sleep(1) def read_finger():print ' this is your finger' sleep(20) 
def nfc_start():system('nfc-list')sleep(1) 
def main():global url,url2,url3,pinsGPIO.setmode(GPIO.BCM)  GPIO.setup(pins,GPIO.OUT)nfc_start()  sleep(1) t1=threading.Thread(target=read_nfc).start()t2=threading.Thread(target=read_server).start()#t3=threading.Thread(target=read_finger).start() if __name__ == '__main__':main()

对了,还有一个指纹识别模块的,但是大牛说要搞什么调试, 时间会来不及,于是就没做了。 然后,还有一个大坑是我们比赛的时候, 大牛忘记开另外一个模块, 导致我们后来的演示不是很成功,我也是醉了,不过看到自己努力的成果,还是挺开心的。




http://www.ppmy.cn/news/242790.html

相关文章

#智能宿舍门禁 esp8266+RC522模块+DFPlay Mini Mp3模块实现宿舍智能门锁//NFC//物联网

esp8266RC522模块DFPlay Mini Mp3模块实现宿舍智能门锁//NFC//物联网 提示: 提示: 文章目录 esp8266RC522模块DFPlay Mini Mp3模块实现宿舍智能门锁//NFC//物联网前言一、实现的具体功能二、硬件材料1、材料清单2、线路连接 三、软件代码1、arduino安装…

小区安防门禁系统

(一)技术指标 每个门区最多可以设定30 个时间段,编号为00 至31,每个时间段包括开 始时间和结束时间。 (系统出厂原始设置为24 小时通行,不予管制。如有特殊应 用,需进行时间管制时,此…

DP1332E刷卡芯片支持NFC内置mcu智能楼宇/终端poss机/智能门锁

特点: 1.高度集成的解调器和解码器 2.缓冲输出驱动器,以连接天线与最少数量的外部组件 3.集成射频电平探测器 4.综合数据模式检波器 5.支持 iso/iec 14443a/mifare 6.支持s ISO/IEC 14443B(只有读/写的模式) 7.阅读器/写入器模式下…

Tcl快速学习-最实用的语法-列表

Tcl脚本中用于操作列表的命令有很多。以下是一些常用的列表操作命令及其详细说明: 1)list 介绍:Tcl中的list命令用于创建和操作列表。列表是Tcl中非常常用的数据结构之一,用于存储一组有序的元素。 语法:list ?arg…

数字孪生与物流园区:优化布局规划的关键

随着全球贸易的增长和物流行业的发展,物流园区作为重要的物流枢纽和供应链管理中心,扮演着至关重要的角色。而数字孪生技术的出现为物流园区的运营和管理带来了革命性的变化。数字孪生技术是一种将实体物体与其数字化模型相结合的创新技术,通…

MATLAB安装配置MinGW-w64 C++编译器

文章目录 前言一、Mingw安装1、安装教程2、验证 二、MATLAB安装配置MinGW总结 #pic_center 前言 只是为方便学习,不做其他用途 一、Mingw安装 在网上找到的安装一直报错:The file has been downloaded incorrectly 1、安装教程 建议参考博客Mingw快捷安…

软件测试银行项目到底“香”到哪里?

为什么做金融类软件测试? 做金融类软件测试的原因有以下几个: 保障客户资产安全:金融类软件通常涉及大量的客户财产和敏感信息,因此软件测试可以帮助发现潜在的漏洞和风险,从而确保客户的资产和信息得到充分的保护。 …

前后端分离项目SpringBoot-Shiro-jwt处理401响应码的方案

问题现象: 现在大多数项目已经实现前后端分离,当采用shiro作为安全框架时,如果请求的token已过期或未认证请求,会得到401的HTTP STATUS。此时在前端还会因为401的错误弹出一个登录认证的弹框。效果如下: 经分析&#…