一、环境介绍 编程软件: keil5
主控mcu: stm32f103zet6
射频卡读写器: rfid-rc522
步进电机: 28byj4 4相5线
蓝牙: atk-hc05
wifi: atk-esp8266
物联网云平台: 采用腾讯云物联网平台,直接支持微信小程序和手机独立app控制
完整项目源码下载地址: https://download.csdn.net/download/xiaolong1126626497/19101807
二、功能介绍 这是基于stm32设计的智能锁模型,支持多种开锁方式,详情如下:
1. 门禁卡刷卡开锁:使用rc522射频卡读卡器,读取ic卡卡号和内部数据,验证身份,开锁。
2. 蓝牙自动开锁: 业主的手机蓝牙在范围内,自动开锁(通过连接蓝牙地址确认业主身份),范围是通过蓝牙断开与连接上为准。
3. 微信小程序开锁、关锁:通过esp8266连接腾讯云物联网平台,业主可以通过微信小程序“腾讯连连” 进行远程开锁和关锁。
如果没有使用过腾讯云物联网平台的,可以看这里:stm32+esp8266+mqtt协议连接腾讯物联网开发平台_ds小龙哥的博客-csdn博客_esp8266mqtt协议
4. 按键开锁、关锁: 可以通过开发板上的按键进行开锁和关锁(模拟物理钥匙而已)
开锁和关锁使用步进电机正转一圈、反转一圈模拟。
编辑
编辑
三、使用的相关硬件介绍 3.1 stm32f103zet6系统板 编辑
3.2 hc05蓝牙模块 编辑
3.3 wifi模块 编辑
3.4 rfid-rc522模块 编辑
3.5 步进电机 编辑
四、腾讯物联网平台 没有使用过物联网云平台的参考这里: stm32+esp8266+mqtt协议连接腾讯物联网开发平台_ds小龙哥的博客-csdn博客_esp8266mqtt协议
编辑
编辑
编辑
编辑
五、设备核心源码#include stm32f10x.h#include led.h#include delay.h#include key.h#include usart.h#include #include timer.h#include esp8266.h#include mqtt.h#include hc05_bluetooth.h#include rfid_rc522.h#include motor.h/*硬件连接方式:atk-hc-05串口蓝牙模块与stm32的串口2相连接。pa1--led 配对状态输出; 配对成功输出高电平,未配对则输出低电平。pa4---key 用于进入 at 状态;高电平有效(悬空默认为低电平)。pa2--rxd 模块接收脚pa3--txd 模块发送脚gnd---gnd 地vcc---vcc 电源(3.3v~5.0v)atk-esp8266串口wifi模块与stm32的串口3相连接。pb10--rxd 模块接收脚pb11--txd 模块发送脚gnd---gnd 地vcc---vcc 电源(3.3v~5.0v)rc522射频模块外部的接口: *1--sda pb5--片选脚*2--sck pb4--时钟线*3--mosipa12--输出*4--misopa11--输入*5--悬空*6--gnd gnd*7--rst pa8--复位脚*8--vcc vcculn2003控制28byj-48步进电机接线:uln2003接线:in4: pc9 din3: pc8 cin2: pc7 bin1: pc6 a+ : 5v- : gnd*///腾讯物联网服务器的设备信息#define mqtt_clientid 3xm7fnog4llock#define mqtt_username 3xm7fnog4llock;12010126;w5wou;1624006004#define mqtt_password 209f8dfc3079a54540aeb4263e99be24c5b0212141d8067e6348036383535941;hmacsha256//订阅与发布的主题#define set_topic $thing/down/property/3xm7fnog4l/lock //订阅#define post_topic $thing/up/property/3xm7fnog4l/lock //发布#define connect_wifi cmcc-cqvn //将要连接的路由器名称 --不要出现中文、空格等特殊字符#define connect_pass 99pu58cb //将要连接的路由器密码#define connect_server_ip 106.55.124.154 //服务器ip地址#define connect_server_port 1883 //服务器端口号char mqtt_message[200];//上报数据缓存区unsigned char sn[4]; //存放读出的卡号unsigned char checksn[4]={71,151,114,179}; //用于验证的卡号--业主的卡号用于开锁char sendbuff[10];/*函数功能: 打印卡号*/void print_info(unsigned char *p,int cnt){ int i; for(i=0;i=50) { time_cnt=0; led2=!led2; } //微信小程序开锁方式: 接收wifi返回的数据 if(usart3_rx_flag) { usart3_rx_buffer[usart3_rx_cnt]='\0'; printf(uart3收到数据.....\r\n); //向串口打印微信小程序返回的数据 for(i=0;i5) { //使用字符串查找函数 //开锁 if(strstr((char*)&usart3_rx_buffer[5],\motor\:1)) { led1=0; //亮灯--表示开锁 //开锁 //执行开锁代码--电机正转 motorcw_ring(1,300); //电机正转1圈 motor=1; } //关锁 else if(strstr((char*)&usart3_rx_buffer[5],\motor\:0)) { led1=1; //灭灯--表示关锁 //关锁 //执行开锁代码--电机反转 motorccw_ring(1,300); //电机反转1圈 motor=0; } } usart3_rx_cnt=0; usart3_rx_flag=0; } //rc522开锁方式: 读取ic卡号 if(readcardnumber()) { sprintf(sendbuff,%x%x%x%x\r\n,sn[0],sn[1],sn[2],sn[3]); //比较卡号是否是业主的卡号,决定是否需要开锁 int i=0; for(i=0;i<4;i++) { if(checksn[i]!=sn[i])break; } //如果是业主,就开锁 if(i==4) { led1=0; //亮灯--表示开锁 //更新微信小程序 sprintf(mqtt_message,{\method\:\report\,\clienttoken\:\123\,\params\:{\motor\:%d}},motor); mqtt_publishdata(post_topic,mqtt_message,0); usart1_printf(更新门锁状态:开锁\r\n); motor=1; //执行开锁代码--电机正转 motorcw_ring(1,300); //电机正转1圈 } } if(usart2_rx_flag) { usart2_rx_buffer[usart2_rx_cnt]='\0'; usart1_printf(蓝牙:%s\r\n,usart2_rx_buffer); usart2_rx_cnt=0; usart2_rx_flag=0; } //蓝牙解锁方式: 离开范围就自动关锁 连接上就自动解锁 // 区分业主身份方式: 使用蓝牙的配对密码区分. if(hc05_led==1 && motor==0) //关锁状态才需要开始 { led1=0; //亮灯--表示开锁 ble_connect_flag=1; //表示蓝牙已经连接过 printf(蓝牙已经连接.\r\n); motor=1; //更新微信小程序 sprintf(mqtt_message,{\method\:\report\,\clienttoken\:\123\,\params\:{\motor\:%d}},motor); mqtt_publishdata(post_topic,mqtt_message,0); usart1_printf(更新门锁状态:开锁\r\n); //开锁 //执行开锁代码--电机正转 motorcw_ring(1,300); //电机正转1圈 } else { //之前蓝牙连接过 if(ble_connect_flag) { ble_connect_flag=0; //清除标记 led1=1; //关灯--表示上锁 printf(蓝牙已经断开.\r\n); motor=0; //关锁 //执行开锁代码--电机反转 motorccw_ring(1,300); //电机反转1圈 //更新微信小程序 sprintf(mqtt_message,{\method\:\report\,\clienttoken\:\123\,\params\:{\motor\:%d}},motor); mqtt_publishdata(post_topic,mqtt_message,0); usart1_printf(更新门锁状态:关锁\r\n); } } }}
Marvell与Aquantia签署最终协议 发展高速车载网络领域未来
网段隔离器(网络耦合器)有什么功能
CASAIM-IM智能检测系统自动化三维尺寸测量电视机背板及形位公差检测
中国RISC-V工委会成立,芯启源当选副会长单位
人工智能应用的场景哪一些可以加速
基于STM32F103设计的智能门锁(支持多种开锁解锁方式)
介绍晶硅太阳能光伏组件结构
电装携面向未来移动社会的创新技术亮相上海车展
使用ESP32-CAM构建人脸ID控制的数字门锁系统
聊聊布隆过滤器
TH系列新品16口ACC-5595反射内存交换机
移远卫星通信模组CC200A-LB通过CE、FCC、IC、RCM四项权威认证
E现场: iQOO Pro 5G正式发售,成为5G市场的领跑者
区块链和加密货币如何改善零工经济和社会运作方式
中国电信天翼1号5G云手机上市
xc2004四轴电子凸轮插补运动控制芯片引脚与应用电路图程序分享
联想YOGA S740 16GB内存版推出,搭载全新10nm i5和i7处理器
快120倍!韩国研发出快速充电锂电池
半导体行业眼中的工业4.0
使用于BMS电池管理系统中的电源模块