一、序言

话不多说,先上图

在写自己的整个心路历程之前,想先说明几点,以防大家喷:

1.我只是做着玩,怎么方便怎么来,电路乱但我看着爽,懒得整理。
2.我一点也不懂电路,用的都是某宝买的模块,真的不会什么放大电路,电源也不会做,求说我浪费的大大绕个路,模块都是我用奖学金买的,我自己觉得开心就好。
3.做这个的目的是,舍友一直忘记带钥匙,可以增加一种开门的选择,纯属好玩。我们寝室平时都不断电,只有在半夜11点才断电。假如有哪一天,四个人都忘了带钥匙,并且寝室碰巧断电,那我也认了,只能硬着头皮去找宿管大爷了QAQ
4.说我乱拉电线、损坏公物什么什么的,我们寝室已经很破了,如果学校真让我们赔钱换个新门,我一点也不介意,就当是造福下一代了。什么通告批评、处分之类的我不怕的。。。

二、我用了一些什么东西

以前用旧的单片机开发板、指纹模块、电磁铁、继电器、声音录放模块、开关电源、排插、螺丝、螺丝刀、电线、电钻(只能钻门了=。=)。

三、模块分析

想了想,我这个东西可以大概分为三个模块: 声音模块、指纹模块、开锁模块,中控用的是51单片机开发板,我知道用一整个板子很浪费,用一个最小系统就好了,但是我平常几乎不用单片机,所以放那里也是浪费,这点大家就不用喷我啦。

A.声音模块

这个模块使用起来很简单,在自己调试的时候不用接单片机,电源VCC端接在单片机开发板的5V,GND接单片机开发板的GND,然后按住REC说话,可以将自己的声音录进去,播放用其他两个键就可以啦。我用这个模块的目的是进门的时候,如果有软萌软萌的声音跟你说“欢迎光临”的话。。咳咳,想想就很心动。
如果调试成功的话,将左边的P-L端,接在单片机的IO口,输出高电平就可以播放欢迎语啦。

B.指纹模块

先看一下实物图

我买的这个指纹模块有6个接口,从左到右分别是:
探测手指电路电源、模块电源正输入端、TXD、RXD、GND、手指探测信号输出
解释一下:手指探测电路,也就是接口1和接口6是为了减小指纹模块的损耗,在实际使用中不用也行,编程时候只要循环获取手指图像就好了,但这么好的功能怎么能不用呢!有一点需要注意一下,接口6在探测到手指时,会开漏输出低,需要接上拉电阻,然后接到单片机的外部中断0处就好了。

C.开锁模块

这个是我当时有做指纹开门想法的时候,最纠结的一块了。声音和指纹都很好想,但是开门要怎么开?要用什么开?于是我就百度,看到了一张图给了我灵感,那就是用电磁铁,可以利用电磁铁通电瞬间的吸力,将门锁拉开。那如何控制电磁铁呢?大概的想法就是利用继电器控制电磁铁的电源,如果指纹比对通过的话,单片机输出信号给继电器,然后继电器的常断端闭合,电磁铁把锁拉开。

三、So Easy的编程
单片机的编程很简单,会编写串口通信那部分就好了,指纹模块购买之后,卖家会给你它的使用文档,里面有通信协议。什么是通信协议呢,就是你的指纹模块收到什么指令会进行采集图像,收到什么指令会进行指纹比对等等。那指令只能靠单片的TXD发啦。我们来整理一下编程思路:

四、下面贴出主要源码

  • fingerPrint.c
#include <reg52.h>
#include "qxmcs51_config.h"
#include    "delay.h"
#include    "uart.h"
#include <stdio.h>
#include <intrins.h>unsigned char FP_Pack_Head[6] = {0xEF,0x01,0xFF,0xFF,0xFF,0xFF}; //协议包头
unsigned char FP_Get_Img[6] = {0x01,0x00,0x03,0x01,0x0,0x05};   //获得指纹图像
unsigned char FP_Img_To_Buffer1[7]={0x01,0x0,0x04,0x02,0x01,0x0,0x08};
//将图像放入到BUFFER1
unsigned char FP_Img_To_Buffer2[7]={0x01,0x0,0x04,0x02,0x02,0x0,0x09};
//将图像放入到BUFFER2
unsigned char FP_Search[11]={0x01,0x0,0x08,0x04,0x01,0x0,0x0,0x03,0xA1,0x0,0xB2};//搜索指纹搜索范围0 - 929//以上可以根据通信协议写出extern unsigned char RECEVICE_BUFFER[24];sbit beep = P2^3;
sbit door = P1^2;
sbit voice = P1^3;void GetImage()                 //获取指纹图像
{ unsigned char i;for(i=0;i<6;i++) //发送包头Send_uart(FP_Pack_Head[i]);for(i=0;i<6;i++) //发送命令Send_uart(FP_Get_Img[i]);Recevice_Data(0x0C);
}void GenChar()                   //提取指纹特征
{ unsigned char i;for(i=0;i<6;i++) //发送包头Send_uart(FP_Pack_Head[i]);for(i=0;i<7;i++) //发送命令Send_uart(FP_Img_To_Buffer1[i]);Recevice_Data(0x0C);}void Search()                   //在指纹库中进行比对
{unsigned char i;for(i=0;i<6;i++) //发送包头Send_uart(FP_Pack_Head[i]);for(i=0;i<11;i++) //发送命令Send_uart(FP_Search[i]);Recevice_Data(0x10);if(RECEVICE_BUFFER[9]==0x00){door = 0;voice = 1;Delay_Ms(2000);door = 1;}else{door = 1;voice =0;} }
  • uart.c
#include <reg52.h>
#include <stdio.h>
#include    "delay.h"
#define uchar unsigned char
#define uint  unsigned intvolatile unsigned char RECEVICE_BUFFER[24];void UART_init()
{   SCON = 0x50;TMOD = 0x21;TCON = 0x40;    TH1 = 0xFF;TL1 = 0xFF;PCON = 0x80;RI = 0;        TI = 0;         TR1 = 1;            EA  = 1;        //开总中断ES  = 1;        //串口中断打开EX0 = 1;IT0 = 0;}void Send_uart(unsigned char c)
{SBUF = c;while(!TI);TI = 0;}unsigned char Receive_uart()
{   unsigned char dat;while(!RI);RI = 0;dat = SBUF;return (dat);}void Recevice_Data(unsigned char length)
{unsigned char i;for (i=0;i<length;i++)RECEVICE_BUFFER[i] = Receive_uart();}
  • main.c
#include "qxmcs51_config.h"
#include    "delay.h"
#include    "uart.h"
#include   "GetImage.h"
#include <reg52.h>
#include <stdio.h>
#include <intrins.h>extern voice;void main()
{      Delay_Ms(100);UART_init();voice = 0;while(1);
}void int0() interrupt 0
{       GetImage();GenChar();Search();}

五、总结一下下

学校附近很坑,各种材料都没有地方能买,只能从某宝买,我觉得我等快递的时间比我真正做东西的时间还长QAQ。其实还有很多小细节没有写,比如电磁铁的要求电压是24V,电流6A,那我怎么得到这样的电压电流呢。。因为我真的不懂电路,所以只能买了一个24V,10A的开关电源。还有电磁铁的拉力至关重要,第一次买的电磁铁拉力太小拉不开,只好又买了一个拉力大的。甚至螺丝的大小都要量一下,不然东西固定不到门上。然后还有单片机怎么供电?开关电源怎么供电等等,这些都是需要考虑的问题啦。
所以做完这个东西虽然花了不少钱,但还是蛮开心的,学到的东西还算是有点用?
大家有什么问题可以评论里问啦。
再加一句,大神不要来嘲笑我!!!我只是一个渣渣。。。。

over。。。

如何将宿舍门变成指纹开锁?相关推荐

  1. STM32智能门禁连接阿里云(指纹开锁、密码开锁、刷卡开锁、手机开锁)

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 本文主要介绍如何使用STM32连接阿里云,如何通过各种输入设备(四种开锁方式)设置门禁打开方式,并且介绍阿里云上部的详 ...

  2. 练习动画最好的方式(二):屏幕指纹开锁动画效果

    这部分时间比较忙,正是我所在行业中的旺季,也没有时间更新,这篇文章我会用SCSS+GSAP实现一个屏幕指纹的登录效果,让我们先来看看效果图 开始创作 第一步:将指纹绘制转为SVG, 我用 Adob​​ ...

  3. 51单片机ESP8266WIFI远程门禁密码锁可修改密码APP开锁查看密码

    实践制作DIY- GC003-WIFI远程门禁密码 一.功能说明:   基于51单片机设计-WIFI远程门禁密码锁 二.功能介绍:  1.基于STC89C52RC,有一个LCD1602显示器显示信息, ...

  4. 智能锁方案PCBA原理图PCB单片机开发板源码wifi远程开锁。 提供全套技术资料,包括原理图,PCB图,程序源码,bom清单,说明书等

    智能锁方案PCBA原理图PCB单片机开发板源码wifi远程开锁. 提供全套技术资料,包括原理图,PCB图,程序源码,bom清单,说明书等. 该指纹密码锁具有如下功能: 一.指纹开门 二.触摸密码开门 ...

  5. php做宿舍门禁管理系统项目首选公司,一种校园宿舍门禁管理系统的制作方法

    本发明涉及校园管理系统,具体而言涉及一种校园宿舍门禁管理系统. 背景技术: 目前,随着学校学生人数的增加,校园内部的人员监管工作及校园内部的安全防护工作难度相对较大.例如,在部分全寄宿的初中和高中学校 ...

  6. 生物识别产业指纹识别锁在门禁锁的战略性前景

    防盗门以进入了千家万户,而防盗门上的锁却是千姿态百态.从早期的机械锁,到现代的电子锁和智能锁.再到近些年来发展势头强劲的以指纹识别为代表的新生智能锁即指纹锁,科学技术的发展及其产业化渗透也触发了锁业的 ...

  7. 工具箱锁打不开了怎么办_锁芯坏了门打不开怎么办?锁芯拆开的方法是什么?...

    门锁是我们生活中离不开的一部分,如果门锁出现问题,那么大家一定要及时对门锁进行更换.那么接下来的时间,就和大家详细说一说门锁的锁芯坏了需要怎么样进行操作吧,具体的更换锁芯的步骤和方法到底有哪些呢? 锁 ...

  8. 基于Arduino的无接触式智能门锁(RFID和蓝牙开锁)

    一.简单介绍 本项目基于Arduino开发,支持刷卡(复旦卡)和蓝牙串口密码发送两种方式,支持舵机和继电器(可接电磁锁等)两种开锁方式.详情见代码,代码注释很全的. 文章末尾附源程序.库文件.3D打印 ...

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

    esp8266+RC522模块+DFPlay Mini Mp3模块实现宿舍智能门锁//NFC//物联网 提示: 提示: 文章目录 esp8266+RC522模块+DFPlay Mini Mp3模块实现 ...

  10. 实训9——蓝牙修改开锁密码

    实训九 : 蓝牙修改开锁密码 一.实验目的 通过ESP32,按键模块和SG90舵机,实现蓝牙发送相应的命令修改按键密码 二.实验内容 1.连接ESP32和按键模块的引脚,以及ESP32和SG90舵机的 ...

最新文章

  1. Angular应用中tsconfig.json文件配置说明及配置全局路径映射
  2. 如何生成动态matlibplot动图?
  3. [Oracle] oracle统计信息
  4. 初学者学python看什么书-python初学者看什么书
  5. Andoird --- 安卓 failed to connect to /192.168.0.135 (port 8080) after 1000ms
  6. html怎么做半圆形按钮,css3做出半圆弧线
  7. linux ip head check sun,linux panic 问题定位
  8. SpringBoot2.1.9 多数据源Mybatis—JDBC配置
  9. 创建一个简单的WCF程序
  10. 内核终端判断,微信?QQ?ipad?IE?移动?Google?opera……
  11. Sqlite 数据库出现database disk image is malformed报错的解决方法
  12. OpenCV3.4.2+VS2015开发环境搭建
  13. 百度文库复制内容,留作笔记
  14. 大漠插件7.2127
  15. spring框架特点
  16. 机器学习(十)——支持向量机
  17. 找茬小游戏微信小程序源码自带流量主功能+前端+后端+教程
  18. delphi 注册表
  19. html自动定时弹窗,html网页弹窗代码 setinterval 定时任务啊
  20. wlh机器人_恐怖谷理论,人类对仿真机器人的天生恐惧

热门文章

  1. 【PyQt5】教你一招,用timer计时器做个打地鼠的小游戏
  2. Pygame实战:这种“欢乐打地鼠”小游戏让几亿人“上瘾“
  3. Contrastive Adaptation Network for Unsupervised Domain Adaptation
  4. 【Kaggle 教程】Data Visualization 数据可视化-画图-各种图
  5. 读书:在别人的盯梢儿和嚼舌根中茁壮成长 | 杂谈
  6. 网格布局---grid
  7. 360免费wifi设置位置服务器,win10系统使用360免费wifi的操作方法
  8. Lecture 008-Heuristic algorithms
  9. 公司内部搭建DHCP和DNS服务器
  10. CSMA/CD协议最小帧长的思考