0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于STM32设计的门禁照相机

DS小龙哥-嵌入式技术 来源:DS小龙哥-嵌入式技术 作者:DS小龙哥-嵌入式技 2023-06-22 10:34 次阅读

一、项目介绍

当前文章介绍基于STM32设计的门禁照相机,本项目提供了一种更加智能、安全、便捷的门禁解决方案。门禁照相机采用STM32F103ZET6 MCU作为主控芯片,配合2.8寸LCD显示屏、OV7725数字摄像头、SD卡和模拟门铃按键等外设模块,实现了摄像头画面实时显示、门铃触发拍照、图片存储等功能。

在使用该门禁照相机时,来访客人只需按下门铃按键,摄像头即可自动拍摄照片并保存到SD卡中。同时,用户也可以通过LCD屏幕进行时间调整和本地图片浏览等操作,提高了门禁系统的可操作性和用户体验。

门禁照相机的设计为了提高门禁系统的安全性和智能化程度,解决传统门禁系统存在的诸多问题。通过采用数字摄像头替代传统猫眼,并实现照片自动拍摄和存储功能,有效提高了门禁系统的安全性。同时,通过LCD屏幕进行时间调整和本地图片浏览等操作,实现了门禁系统的智能化,提高了用户的使用体验。

image-20230615205237018

二、硬件设计

本照相机的主要硬件包括 STM32F103ZET6 MCU、3.5寸 LCD 显示屏、OV7725 数字摄像头、SD 卡和一个模拟门铃的按键。

(1)STM32F103ZET6 MCU

STM32F103ZET6 MCU 是本照相机的主控芯片,它可以通过 GPIO 口驱动其他外设模块。

(2)3.5寸 LCD 显示屏

3.5寸 LCD 显示屏可以实时显示摄像头捕捉的画面,并且支持多个页面的切换。

(3)OV7725 数字摄像头

OV7725 数字摄像头可以采集来访客人的画面,并将其实时显示在 LCD 显示屏上。

(4)SD 卡

SD 卡用于存储照相机拍摄的照片,照片的名称由当前时间日期命名。

(5)模拟门铃的按键

模拟门铃的按键用于触发照相机拍摄照片。

三、软件设计

3.1 技术要求

(1)实时显示画面

本照相机通过 OV7725 数字摄像头捕捉来访客人的画面,并通过3.5寸 LCD 显示屏实时显示。

(2)拍照并保存到 SD 卡

当有来访者按下模拟门铃按键时,照相机会拍摄照片并保存到 SD 卡中,照片名称以当前时间日期命名。

3.2 软件流程

(1) 初始化STM32F103ZET6 MCU及外部设备; (2) 启动OV7725 数字摄像头; (3) 开启LCD; (4) 进入主循环: a. 读取按键状态是否是门铃被按下; b. 若发现门铃按下,则照相机开始拍照并将照片保存到 SD 卡; c. 更新屏幕上的内容。

3.3 代码实现

代码实现过程:

(1) 初始化STM32F103ZET6 MCU及外部设备;

(2) 启动OV7725 数字摄像头,并设置其采集参数

(3) 初始化 SD 卡,并在 SD 卡上创建一个文件夹用于存储照片;

(4) 开启LCD,并设置其显示参数;

(5) 进入主循环,读取按键状态并更新屏幕上的内容;

(6) 当发现门铃被按下时,开始拍照并将照片保存到 SD 卡中。

四、代码实现

4.1 整体代码框架

#include "stm32f10x.h"
 #include "sdio_sdcard.h"
 #include "ff.h"/* 定义一些宏和变量 */int main(void) {
     /* 初始化系统时钟(例如使用 HSE 8MHz 作为系统时钟) */
     /* 初始化 GPIO 端口、SDIO、LCD、OV7725 等外设模块 */
     /* 初始化 SD 卡,并在其上创建用于存储照片的文件夹 */while(1) {
         /* 读取门铃按键状态 */
         if(/* 检测到门铃被按下 */) {
             /* 拍摄照片并保存到 SD 卡中,照片名以当前时间日期命名 */
         }
 ​
         /* 更新屏幕显示内容,包括实时摄像头画面、时间日期、照片预览等 */
     }
 }

4.2 拍照存储

下面是采用 STM32 的HAL 库设计的代码,控制OV7725 拍照保存为 BMP 图片到 SD 卡中。

#include "stm32f1xx_hal.h"
 #include "sdio_sdcard.h"
 #include "ff.h"
 #include "ov7725.h"extern SD_HandleTypeDef hsd;
 extern DCMI_HandleTypeDef hdcmi;
 extern DMA_HandleTypeDef hdma_dcmi;
 ​
 FATFS fs;
 FIL file;
 UINT bw;
 ​
 /* 定义一些宏和变量 */int main(void) {
     /* 初始化系统时钟(例如使用 HSE 8MHz 作为系统时钟) */
     /* 初始化 GPIO 端口、SDIO、LCD、OV7725 等外设模块 */
     /* 初始化 SD 卡,并在其上创建用于存储照片的文件夹 */while(1) {
         /* 读取门铃按键状态 */
         if(/* 检测到门铃被按下 */) {
             /* 拍摄照片并保存到 SD 卡中,照片名以当前时间日期命名 */
             HAL_GPIO_WritePin(OV7725_RESET_GPIO_Port, OV7725_RESET_Pin, GPIO_PIN_SET); // 复位 OV7725
             HAL_Delay(50);
             HAL_GPIO_WritePin(OV7725_RESET_GPIO_Port, OV7725_RESET_Pin, GPIO_PIN_RESET);
 ​
             ov7725_init(); // 初始化 OV7725HAL_DCMI_Start_DMA(&hdcmi, DCMI_MODE_SNAPSHOT, (uint32_t)RGB565_buffer, (uint32_t)(CAMERA_RWIDTH * CAMERA_RHEIGH), 1); // 开始采集HAL_DMA_PollForTransfer(&hdma_dcmi, HAL_DMA_FULL_TRANSFER, 1000); // 等待采集完成/* 将 RGB565 数据转换成 BMP 格式 */
             uint16_t bmp_header[54/2] = {0x4D42, 54+CAMERA_RWIDTH*CAMERA_RHEIGH*3, 0, 0, 54,
                                           40, CAMERA_RWIDTH, CAMERA_RHEIGH, 1, 24, 0, CAMERA_RWIDTH*CAMERA_RHEIGH*3, 0, 0, 0, 0};
             uint8_t bmp_data[CAMERA_RWIDTH*CAMERA_RHEIGH*3];
             uint16_t i = 0, j = 0;
             for(i = 0; i < 54/2; i++) {
                 bmp_data[i*2] = bmp_header[i]; // 拷贝 BMP 文件头
                 bmp_data[i*2+1] = bmp_header[i] > >8;
             }
             for(i = 0; i < CAMERA_RWIDTH*CAMERA_RHEIGH; i++) {
                 bmp_data[54+i*3+0] = RGB565_buffer[i] > >8; // RGB565 转换为 BMP 格式的 RGB 24位色
                 bmp_data[54+i*3+1] = RGB565_buffer[i] > >3;
                 bmp_data[54+i*3+2] = RGB565_buffer[i]< < 3;
             }
 ​
             /* 保存 BMP 图片到 SD 卡中 */
             if(f_mount(&fs, SD_Path, 1) == FR_OK) { // 挂载 SD 卡
                 char filename[20];
                 /* 将文件名设置为当前时间日期,例如"202206151243.bmp" */
                 sprintf(filename, "%04d%02d%02d%02d%02d%02d.bmp", year, month, day, hour, minute, second);
 ​
                 if(f_open(&file, filename, FA_CREATE_ALWAYS | FA_WRITE) == FR_OK) { // 创建文件并写入数据
                     f_write(&file, bmp_data, sizeof(bmp_data), &bw);
                     f_close(&file);
                 }
             }
 ​
             HAL_Delay(1000); // 防止连续拍照
         }
 ​
         /* 更新屏幕显示内容,包括实时摄像头画面、时间日期、照片预览等 */
     }
 }
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • mcu
    mcu
    +关注

    关注

    146

    文章

    16017

    浏览量

    343631
  • STM32
    +关注

    关注

    2239

    文章

    10671

    浏览量

    348755
  • 照相机
    +关注

    关注

    0

    文章

    67

    浏览量

    26689
  • 门禁
    +关注

    关注

    1

    文章

    159

    浏览量

    29415
  • STM32F103ZET6
    +关注

    关注

    9

    文章

    67

    浏览量

    20771
收藏 人收藏

    评论

    相关推荐

    STM32照相机

    嵌入式相机照相机摄影摄像
    爱转的光凌
    发布于 :2021年11月10日 23:07:36

    迷你STM32照相机(OV7670)设计(转:原理图+源代码)

    迷你STM32照相机(OV7670)设计(转:原理图+源代码),对学习stm32的发烧友们有福了,可以学习借鉴!
    发表于 07-26 09:53

    迷你STM32照相机OV7670

    迷你STM32照相机OV7670
    发表于 04-01 12:21

    LDO能提高小型照相机的照片质量吗

    数字照相电子设备变得越来越便携,集成了高质量的解决方案。照相机应用的高性能与小型尺寸常常受到照相机中为互补金属氧化物半导体(CMOS)图像传感器供电的低压差(LDO)稳压器的影响。
    发表于 05-13 07:15

    迷你STM32照相机(OV7670

    迷你STM32照相机(OV7670
    发表于 06-10 11:22

    求一种基于STM32F4开发板的简易照相机项目方案

    怎样去设计一种基于STM32F4开发板的简易照相机?对基于STM32F4开发板的简易照相机设计有哪些要求?
    发表于 07-26 09:53

    照相机用简易闪光灯电路

    照相机用简易闪光灯电路
    发表于 04-13 12:03 1131次阅读
    <b class='flag-5'>照相机</b>用简易闪光灯电路

    怎样识照相机闪光灯电路

    怎样识照相机闪光灯电路
    发表于 08-28 15:04 1064次阅读
    怎样识<b class='flag-5'>照相机</b>闪光灯电路

    快修照相机电子闪光灯技巧

    快修照相机电子闪光灯技巧
    发表于 08-28 15:58 1122次阅读
    快修<b class='flag-5'>照相机</b>电子闪光灯技巧

    照相机应如何选择电池?

    照相机应如何选择电池?        普通的傻瓜照相机可用一般的碱性电池,其效果较好;数码相机等高科技产品由于对电流强度等要求较高
    发表于 10-28 15:33 815次阅读

    照相机

    照相机 教学所需要的照片、幻灯片和投影片多数是通过摄影获得的,因此,照相机及其使用是制作投影软件的基础。
    发表于 11-18 15:32 3881次阅读
    <b class='flag-5'>照相机</b>

    照相机测光电路图

    照相机测光电路图 B为测光元件,前面装有由粗到密的山栅。
    发表于 11-19 16:18 1080次阅读
    <b class='flag-5'>照相机</b>测光电路图

    照相机镜头遮光罩

    照相机镜头遮光罩           
    发表于 12-23 11:43 1175次阅读

    一次成像照相机

    一次成像照相机的英文名称是Polaroid,我国常译为“波拉”、“拉立得”或“宝丽来”。波拉胶片有多种成像原理,我国销售的主要是采用扩散转印法成像的胶片。
    的头像 发表于 11-04 11:18 7021次阅读

    “无人机”到底是“会飞的照相机”还是“带照相机的飞行器”?

    深圳海关关税处介绍,“无人机”如果按照“带照相机的飞行器”归类,就必须按“飞行器”进行监管,这样一来各国的贸易管制条件会比较严格,容易形成非关税贸易壁垒;但是如果按照“会飞的照相机”归类,就可以按“照相机”来进行监管,各国对
    的头像 发表于 11-06 11:19 7397次阅读