为什么做这个东西?
上个月月末闲来无事上bilibili搜索物联网相关的设计,偶然间看到一个用C8T6 + RFID感应模块 + 舵机实现的小玩意,具体过程是IC卡或者手机NFC区(需复制IC卡后)贴近RFID感应区,C8T6检测到有卡靠近,控制舵机旋转,通过绳索拉动门把手,实现刷卡(手机)入室。觉得这小玩意挺有意思的,并且舍友有时会忘记带钥匙,再加上正好当复习STM32开发流程了,看看能否温故而知新。
需求分析:
-
由于该项目用到的外设并没有很多,芯片性能需求不大,所以主控选择的是STM32C8T6F103最小系统板;
-
项目需要能检测IC卡,感应模块选择网上随便都能买到的 RFID-RC522 ;
-
项目需要能开门,拉动门把手是最容易的开门方式,舵机拉动是不错的选择,常见的SG90即可。
-
一般来说,拥有以上三种物料即可简单实现。但是为了更加人性化和合理化,我另外添加了两种物料:
-
一个是蜂鸣器, 用于系统检测到IC卡开门时触发声响,方便用户知道当前系统是否成功检测到IC卡并开门,避免无效刷卡进门失败和错过有效进门时机;当检测到正确卡号,响鸣0.5s;当检测到错误卡号,则间隔响鸣0.01秒,直至移开IC卡响鸣停止。
-
一个是按键,用于触发中断,唤醒芯片。
-
为什么要唤醒?因为设计之初是打算用移动电源供电,考虑到系统需要长时间供电,如果让单片机长时间无休止地运行,耗电是必然的。(即使比起电脑电视等设备,单片机耗的这点电不算什么,但毕竟是嵌入式,低功耗是嵌入式的特点)
而用户有开门需求的时机并不是长期的,单片机运作