STM32 RC522智能门锁

STM32 RC522智能门锁

为宿舍的老旧门锁添加一个自动开锁装置,实现用手机刷NFC即可实现自动开锁(夏天就只需要一个手机就可以食堂、宿舍走了)
需求:智能、低功耗

一、方案

1. 硬件选择

1) 测试:测试阶段使用arduino + rc522,测试了rc522虽然叫RFID读卡器,但是也也可以对手机的NFC卡进行读取。(实际上,NFC是RFID的一个子集,主要用于近场高速通信)。
2)功耗:由于RC522的功耗比较高,有几十mA,对于2000mAh电池用不了多久。需要低功耗处理,采用人体感应模块从门地下突出,检测到人则打开模块一段时间,无人则关闭全部进行休眠。
3)方案:stm32开发板、人体感应模块、RC522、电机、电机驱动、一个PMOS(用于控制RC522的VCC引脚是否供电),锂电池供电(锂电池可长期接一个充电模块,反向无多少损耗)

2. 接线

stm32的spi接RC522、PA0(待机模式外部唤醒引脚)接人体感应模块,4个引脚通过电机驱动连接电机,一个引脚通过pmos的B极控制RC522的VCC。

二、开发

1)使用stm32cubemx+ide进行开发,在mx中进行图形化配置,并在时钟设置中设计一个比较低的频率。
2)代码逻辑:唤醒或开机后,初始化成功后,每隔500ms启动RC522进行读取和卡号匹配,最后运行到人体感应模块高电平消失后的10s。这段时间内有匹配到卡号,则驱动电机进行开门,最后关闭rc522电源并进入低功耗。
3)功率测试:启动后电流在10mA,RC522测试过程中功耗20mA(每次读取的时候打开天线,读取完成后关闭天线),待机模式50uA(其中人体感应模块使用40uA)。预计可以使用一个月。

三、辛酸历程

这个我才是想说的,一个这么简单的东西,不画板子就用现有的开发板和模块,岂不是一个下午就可以完成。然而,4个模块遇到6个问题,我想我所有的问题都遇到了。

  1. 人体感应模块:最开始是人体感应模块总是输出高电平,但是并没有人在前面。【人体感应模块离前面太近,比如桌面、盒子挡在前面就会出现问题,导致一直以为有人输出高电平,对准空的地方即可】
  2. 人体感应模块:使用外部烧录器供电就会出现关机后出现上升沿唤醒。【外部3.3V供电,在待机的时候电流突变导致电压不稳。使用5V供电解决】
  3. rc522:RC522本来是想用现成的ULN2003控制其gnd引脚的,但是有时候发现无法正常启动,RC522的GNS引脚电压为0.7V。【ULN2003的达林顿管,不像mos管那样,其导通后还是会有压降。后面改用pmos(也可以nmos,但是手上只有pmos),加一个电阻在BE即可】
  4. stm32:最开始使用的stm32,无法使用ide进行烧录,显示GDB服务器错误啥的。【换了一个开发板解决,大概率是因为stm32cubeide会对stm32芯片进行监测,发现盗版就会报错。开始以为是烧录器问题,还是不行。不过烧录器是jlink复刻的盗版也是会警告说非法,但是不影响使用】
  5. 移植到门上就无法正常工作。【最闹心的,在测试过程中就发现有时候RC522读取不到,有时候正常工作,可以工作的时候移植到门上,就无法工作。修改时钟、将SPI引脚的miso上拉、取消RC522的休眠等都是有时候可以有时候不行,以为是导线问题但是万用表测试没问题,最后最后,原来是stm32最小板的引脚焊接有问题,其gnd并没有焊接上去(看起来圆润饱满,但是之前温度不够导致并没有焊接在上卖弄)】

四、后续优化方案

  1. 由于开门几乎没有声音,可以加一个led引出门外,表示开门成功,否则过了时间就无法开门了。
  2. 电机的驱动能力有限。

相关推荐

  1. STM32 RC522智能门锁

    2024-03-27 09:26:02       43 阅读
  2. STM32——智能小车

    2024-03-27 09:26:02       41 阅读
  3. RC522 读卡

    2024-03-27 09:26:02       35 阅读
  4. arduino rc522

    2024-03-27 09:26:02       34 阅读
  5. hal_stm32_RTC函数

    2024-03-27 09:26:02       24 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-27 09:26:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-27 09:26:02       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-27 09:26:02       87 阅读
  4. Python语言-面向对象

    2024-03-27 09:26:02       96 阅读

热门阅读

  1. ref 解包细节

    2024-03-27 09:26:02       41 阅读
  2. VUE3——Proxy API 与VUE2——defineProperty API区别

    2024-03-27 09:26:02       39 阅读
  3. ubuntu开启ssh服务

    2024-03-27 09:26:02       40 阅读
  4. leetcode66-Plus One

    2024-03-27 09:26:02       34 阅读
  5. Docker in Docker(DinD)浅析

    2024-03-27 09:26:02       39 阅读
  6. STM32 库函数 3*4矩阵键盘

    2024-03-27 09:26:02       40 阅读
  7. Hive安装配置

    2024-03-27 09:26:02       34 阅读
  8. php获取文件列表(所有子目录文件)

    2024-03-27 09:26:02       44 阅读
  9. Docker搭建Etcd集群

    2024-03-27 09:26:02       45 阅读
  10. Spring Boot设置io临时目录

    2024-03-27 09:26:02       36 阅读
  11. go实现链表

    2024-03-27 09:26:02       38 阅读
  12. 计算机网络——网络基础1

    2024-03-27 09:26:02       40 阅读
  13. vue3 之 Pinia

    2024-03-27 09:26:02       35 阅读
  14. 第三十三章 配置服务器访问 - SSL TLS 参数

    2024-03-27 09:26:02       37 阅读