【单片机毕业设计选题24053】-基于单片机的WiFi控制门禁系统设计

系统功能:

系统上电后OLED显示智能门禁系统 Door:xxxxxx

初始化ESP8266完成后显示 Door:Closed

短按按键SW4可打开电磁锁OLED显示Door:Open,约五秒后电磁锁自动关闭OLED

显示Door:Closed

根据“TCP调试助手使用说明”操作, 在调试助手界面发送Open后电磁锁

打开OLED显示Door:Open,约五秒后电磁锁自动关闭电磁锁显示Door:Closed

主要功能模块原理图:

电源时钟烧录接口:

单片机和按键输入电路:

系统控制电路:

资料获取地址

系统主要功能模块代码

初始化代码:

  /* USER CODE BEGIN 1 *//* USER CODE END 1 *//* MCU Configuration--------------------------------------------------------*//* Reset of all peripherals, Initializes the Flash interface and the Systick. */HAL_Init();/* USER CODE BEGIN Init */InitVar();/* USER CODE END Init *//* Configure the system clock */SystemClock_Config();/* USER CODE BEGIN SysInit *//* USER CODE END SysInit *//* Initialize all configured peripherals */MX_GPIO_Init();MX_USART1_UART_Init();MX_USART2_UART_Init();/* USER CODE BEGIN 2 *///uart2打开接收中断HAL_UART_Receive_IT(&huart2, (uint8_t*)&uart2RecBuff, 1);InitOled();InitOledDisp();//初始化ESP8266ESP8266_Init();    /* USER CODE END 2 */

系统控制代码:
 

//系统信息更新void SystemControl(void){static uint8_t doorOpenCnt = 0;if(doorState==false){return;}//门锁开时间   doorOpenCnt++;if(doorOpenCnt>=5){doorOpenCnt = 0;doorState = false;RELAY_OFF();}}

OLED显示处理:

//处理OLED显示内容void SystemDisplay(void){char textBuf[20];if(doorState==false){sprintf(textBuf,"Door:Closed");}else{sprintf(textBuf,"Door:Open  ");}OledShowString(0, 3, (uint8_t*)textBuf, OLED_FONT_8X16);}

ESP8266命令处理:
 

//======================================================================//     函数名称:    ESP8266_GetCMD//     函数功能:    获取并处理ESP8266返回的命令//=======================================================================void ESP8266_GetCMD(void){char textBuf[20];//如果接收完成if(ESP8266_WaitRecive()==REV_OK)                                  {if(strstr((const char*)esp8266_buf, "0,CLOSED")){sysConnnect = false;}else if(strstr((const char*)esp8266_buf, "0,CONNECT")){sysConnnect = true;}       else if(strstr((const char*)esp8266_buf, "+IPD,0,5:LedON")){LED_ON();sprintf(textBuf,"LedON OK"); ESP8266_SendData((unsigned char*)textBuf, strlen(textBuf));}else if(strstr((const char*)esp8266_buf, "+IPD,0,6:LedOFF")){LED_OFF();           sprintf(textBuf,"LedOFF OK"); ESP8266_SendData((unsigned char*)textBuf, strlen(textBuf));} else if(strstr((const char*)esp8266_buf, "+IPD,0,4:Open")){doorState = true;RELAY_ON();sprintf(textBuf,"relayOn"); ESP8266_SendData((unsigned char*)textBuf, strlen(textBuf));}        ESP8266_Clear();    //清空缓存 }}

此设计提供的资料包含原理图PCB(包含PDF,AD,立创EDA三个版本),源代码,系统框图,主程序流程图,物料清单(包含使用到的器件手册),功能操作说明等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3226243.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

Backend - C# 操作PostgreSQL DB

目录 一、安装 Npgsql 插件 (一)作用 (二)操作 (三)注意 二、操作类 (一)操作类 1.NpgsqlConnection类 (1)作用 (2)引入 &a…

gltf模型旋转

const loader new GLTFloader()loader.load(cars.gltf,(gltf) > {scene.add(gltf.scene)let angle 0function animate() {requestAnimateFrame(animate)angle 0.01//0.01是旋转速度gltf.scene.rotation.y anglerenderer.render(scene, camera)}animate()} ) 效果如下&a…

【centos 7.6 进入单用户模式】

1、重启服务器,按e进入编辑模式 将“RO”改成 rw ,删除 rhgb quiet,添加 init/bin/bash 2、Ctrl X 进入单用户模式 防止乱码,修改语言为英语 3、修改完密码建议输入:touch /.autorelabel 更新系统信息((此命令在/下…

完全可以媲美Navicat的DBeaver介绍!!

DBeaver 最新激活应用,亲测可用!!快来试试!!简介DBeaver是一种通用数据库管理工具,适用于需要以专业方式使用数据的每个人;适用于开发人员,数据库管理员https://mp.weixin.qq.com/s/…

Jetson-AGX-Orin多网卡绑定网卡名

Jetson-AGX-Orin多网卡绑定网卡名 ​ Jetson-AGX-Orin当通过USB接口或者Type-C口插入网卡设备后,重新上电Orin设备后,网卡设备的网卡名与Orin本身的以太网网卡名会发生交换。导致两个网卡设备配置发生错乱,两个网卡都将不通。 可以通过将网…

【Unity2D 2022:NPC】制作NPC

一、创建NPC角色 1. 创建JambiNPC并同时创建Jambi站立动画 (1)点击第一张图片,按住shift不松,再选中后两张图片,拖到层级面板中 (2)将动画资源文件保存到Animation Clips文件夹中 (…

JVM垃圾回收器详解

垃圾回收器 JDK 默认垃圾收集器(使用 java -XX:PrintCommandLineFlags -version 命令查看): JDK 8:Parallel Scavenge(新生代) Parallel Old(老年代) JDK 9 ~ JDK20: G1 堆内存中…

如何将HEVC格式的视频转换为无损、未压缩的MP4格式视频?

在和大家分享视频格式转换之前,先跟大家分享一下HEVC格式的视频到底是什么文件?压缩原理是什么?了解了它的本质之后,我们就可以知道如何保证视频高清无损了。 如何将HEVC格式的视频转换为无损、未压缩的MP4格式视频? …

Sora模型:释放创意产业文本到视频AI的潜力

Sora,这个由OpenAI在2024年推出的文本到视频生成模型,不仅能够将文字描述转化为生动的视频内容,而且还能保持视频一分钟之久的连贯性和高质量,这在之前是难以想象的。 尽管AI在图像和文本理解上已取得巨大进步,但将这…

捷配PCB 6个PCB板材关键参数解读技巧

PCB板材是指覆铜基板,是制造电路板的最主要材料。 板材的一些关键性能参数对电路板的生产加工、元器件贴装焊接、电子产品的功能实现以及产品的使用环境或寿命等都将产生一定程度的影响,所以掌握板材的关键参数在实际应用中非常有必要。 PCB板材的关键性…

【Linux】进程7——查看进程

1.为什么进程管理这么重要呢? 这是因为: 首先,我们在操作系统时的各项任务其实都是经过某个PID来完成的(包括你的bash环境),因此,能不能执行某项任务,就与该进程的权限有关了。再来…

PMON的解读和开发

提示:龙芯2K1000PMON相关记录 文章目录 1 PMON的发展和编译环境PMONPMON2000 2 PMON2000的目录结构3 Targets目录的组成4 PMON编译环境的建立5 PMON2000的框架6 异常向量表7 Pmon的空间分配8 PMON的汇编部分(starto.S或sbdreset.S)的解读Start.SC代码部分dbginit 9 …

20个实验数据创造AI蛋白质里程碑!上海交大联合上海AI Lab发布FSFP,有效优化蛋白质预训练模型

蛋白质,这些微小而强大的生物分子,是生命活动的基础,在生物体内扮演着多种角色。然而,要精确地调整和优化蛋白质功能,以适应特定的工业或医疗需求,却是一项极具挑战性的任务。传统上,科学家们依…

MSI打包后门成安装包

目录 浏览器下载地址 启动>next 选择后门所在路径,和生成安装包后存放路径 next>Hidden 配置变量 Look up随便找个伪装,然后点击一下Creat New ​注册表Registry导入 ​点击否,不购买专业版 ​安装包生成成功​编辑 浏览器下…

【昇思25天学习打卡营打卡指南-第二十二天】GAN图像生成

GAN图像生成 模型简介 生成式对抗网络(Generative Adversarial Networks,GAN)是一种生成式机器学习模型,是近年来复杂分布上无监督学习最具前景的方法之一。 最初,GAN由Ian J. Goodfellow于2014年发明,并在论文Generative Adve…

交叉熵损失函数的使用目的(很肤浅的理解)

第一种使用方法 import torch from torch import nn # Example of target with class indices loss nn.CrossEntropyLoss() input torch.randn(3, 5, requires_gradTrue) target torch.empty(3, dtypetorch.long).random_(5) output loss(input, target) output.backward(…

[Python自动化办公]--从网页登录网易邮箱进行邮件搜索并下载邮件附件

[Python自动化办公]–从网页登录网易邮箱进行邮件搜索并下载邮件附件 使用说明 ​ 本文使用Python的selenium库进行操作邮箱登录、固定名称搜索邮件并下载附件,Python版本:3.9.16, selenium版本:4.19.0,EdgeBrowser版本:126.0.2…

无线网的ip地址固定吗

在数字化日益普及的今天,无线网络已成为我们生活与工作中不可或缺的一部分。然而,对于许多非专业用户来说,无线网络背后的技术细节仍然充满了神秘感。其中,一个常见的问题是:无线网的IP地址是固定的吗?本文…

使用“nvm use 版本号“命令无效

使用"nvm use 版本号"命令无效 为什么无效?解决 为什么无效? 解决 将这个nodejs文件夹删除,然后在运行nvm use 版本号,则 node生效.

QT开发积累——qt中的注释和多行注释的几种方式,函数方法注释生成

目录 引出qt中的注释和多行注释方法的注释生成 总结日积月累,开发集锦方法参数加const和不加const的区别方法加static和不加static的区别Qt遍历list提高效率显示函数的调用使用&与不使用&qt方法的参数中使用&与不使用&除法的一个坑 项目创建相关新建…