Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
RT-Thread学习营
星火1号_spark_星火一号_开发板
[RT-Thread x 大学生夏令营]Smart Lock(简单密码锁)
发布于 2023-07-25 23:44:11 浏览:730
订阅该版
[tocm] ## 项目背景 在物联网时代,随着智能家居、智能安防的发展,智能门锁在近几年快速普及。作为智慧家庭入口,让人们的生活方式从繁到简,在保障人身及财产安全之外,也为用户带来更加舒适的智慧家居体验。 在5天的线上学习之后,我们小组基本上了解了星火1号,在全组的一致肯定之后,我们决定利用星火1号,完成硬件搭建及测试,编写程序,实现智能密码锁功能,如按键模式等等。 ## 方案理念 通过RT-Thread的软件系统的示例工程,让我们更方便、更快捷的开发代码,节省开发时间。我们购买了薄膜按键,通过对产品的认知,编写了代码在RT-Thread上来将薄膜按键和星火1号板连接起来。 我们重点实现了密码锁的按键模式。实现了4位密码的输入,当密码输入正确,星火1号的显示屏上将显示“welcome”,当密码输入错误的时候,你可以重新输入,连续五次密码输入错误,密码锁将锁定一段时间,不能再次输入密码,使得密码锁的安全性得到提升。 我们小组已经基本实现上述功能。 项目框架图: ![screenshot_cc6d1b4caf80203c8ffffd0b3660272.png](https://oss-club.rt-thread.org/uploads/20230725/2c7d0a2ef3085d481e2dd48393dbe232.png.webp) ## 过程论述 ### 硬件结构图: ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230725/d192f894a8222be58d3b9f84ad0a5d86.png.webp) 图1:键盘电路图 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230725/9727f08ddfbc93db257544f50e673105.png.webp) 图2:连接实物图 ### 设计过程 1. 通过杜邦线将薄膜键盘与星火1号板连接起来,通过RT-Tread软件编写程序。通过对输入线的高、低电位的判断,在用if语句来排列出0到9,和确定按键。 2. 在主体程序中输入密码锁的4位密码,再通过数组记录按键输入的4位数字,与密码锁内部存储的静态数组的密码相比对,再按压“#”符号,确认输入的数字,如果输入4个数字与密码锁的密码的相同,则显示屏上显示“welcome”;如果不相同,则可以重新输入。 3. 在输入的五次循环且输入错误之后,程序将关闭,人员将不能再通过按键输入数字。等待10秒之后(时间可以通过软件系统调节),才能重新通过按键输入数字,再重新对比。 ### 程序编写 项目主要通过两个数组的不断比对实现密码的识别功能。 ```c int stored[4]={2,5,8,0}; int temp[4]={0}; ``` 密码比对: ```c if(Sub==4) { if(temp[0] == stored[0] && temp[1] == stored[1] && temp[2] == stored[2] && temp[3] == stored[3] && Sub==4)// { lcd_clear(WHITE); /* show RT-Thread logo */ lcd_show_image(0, 0, 240, 69, image_rttlogo); lcd_set_color(WHITE, BLACK); lcd_show_string(65, 110, 32, "Welcome!"); } } ``` 额外功能: 当每次按下案件的时候都能够发出蜂鸣声,这是通过添加一个蜂鸣器的线程来实现的。 ```c static void Beep(void) { while(1) { if(Bflag == 1 && flag == 0) { rt_pin_write(PIN_BEEP,PIN_HIGH); //Delay(250); rt_thread_mdelay(100);//Beep rt_pin_write(PIN_BEEP,PIN_LOW); flag = 1; } rt_thread_mdelay(10); } } ``` 当输入五次错误密码以后通过添加一个线程实现一次10s的延迟以达到锁定密码锁的目的,同时也确保每输入五次错误密码后都会进行一次上述操作。 ```c else if (errornum >= 5) { lcd_clear(WHITE); /* show RT-Thread logo */ lcd_show_image(0, 0, 240, 69, image_rttlogo); lcd_set_color(WHITE, BLACK); lcd_show_string(65, 110, 32, "Locked!"); lockflag = 1; } void thread_entry(void *parameter) { while (1) { if (lockflag == 1) { rt_thread_mdelay(10000); init(); } } } ``` ## 实现效果 ### 密码输入 未输入状态: ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230725/1beb4ee092df4d26e003ecdb5b09721b.png.webp) 输入状态: ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230725/449a061ba10c169dc71590349baea5b5.png.webp) 成功进入: ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230725/86eea094c19a224ef6d09b471513be85.png.webp) 报告密码错误: ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230725/5c8403f5b2f46d676886c9952efdb8b5.png.webp) 密码锁因输入多次错误密码而被锁定: ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230725/11eac802bd8b92c690204156801c28d9.png.webp) ## 未来发展方向 1. 添加云平台修改密码功能; 2. 添加语音播报功能; 3. 添加报警功能。 ## 参考文献 [4x4薄膜键盘的使用方法](https://www.bilibili.com/video/BV1464y1k7MR/?buvid=Y041B30D29BE4849485B8A03AA1C773944CA&is_story_h5=false&mid=0n%2Bgf2t%2Fzk0E2Otl46r8pw%3D%3D&p=1&plat_id=114&share_from=ugc&share_medium=iphone&share_plat=ios&share_session_id=6F902DC0-F95A-4BA2-B2AF-FC0843DA2AEF&share_source=WEIXIN&share_tag=s_i×tamp=1690183220&unique_k=eG56ugx&up_id=285767116 "4x4薄膜键盘的使用方法")
1
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
Aoh_oxygen
这家伙很懒,什么也没写!
文章
1
回答
0
被采纳
0
关注TA
发私信
相关文章
1
stm32f407+lan8720 lwip2.0 作业提交
2
玩溜GD32303E-EVAL BSP系列(五)----设备连接网络
3
onenet应用连不上云端
4
【文件系统】晴天文件匹配
5
rtt semc sdram 基于操作系统怎么初始化驱动设备
6
RT-Thread移植笔记
7
RT-Thread内核移植+LoIIs+STM32F103C8+StdLib
8
EVN编译报错,求助大神
9
【内核和外设学习营】十里 简单LED闪亮测试
10
【内核和外设学习营】 十里 串口指令控制RGB灯点亮的颜色
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
I2C_IIC
ESP8266
UART
WIZnet_W5500
ota在线升级
cubemx
PWM
flash
freemodbus
BSP
packages_软件包
潘多拉开发板_Pandora
定时器
ADC
flashDB
GD32
socket
编译报错
中断
Debug
rt_mq_消息队列_msg_queue
SFUD
msh
keil_MDK
ulog
C++_cpp
MicroPython
本月问答贡献
出出啊
1518
个答案
343
次被采纳
小小李sunny
1444
个答案
290
次被采纳
张世争
813
个答案
177
次被采纳
crystal266
547
个答案
161
次被采纳
whj467467222
1222
个答案
149
次被采纳
本月文章贡献
出出啊
1
篇文章
5
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
3
次点赞
crystal266
2
篇文章
2
次点赞
whj467467222
2
篇文章
2
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部