红外遥控门锁【1】—— 项目介绍及材料准备

前言

这个专栏我会分享我所做的STM32项目(软件设计),从接到项目要求到最后调试成品都会有写出来,教你从零开始做简单的STM32项目

教程步骤:

(1)项目要求分析及修改
(2)模块选购
(3)资源分配(IO口的使用分配列出,提交给硬件设计设计pcb板)
(4)各模块驱动代码编写及测试
(5)模块整合
(6)最后调试

我猜大部分刚开始接触STM32的朋友都会觉得第四步很难吧?我刚开始的时候也是不知道怎么修改外设的驱动,感觉驱动一个IO口点亮一个LED都吃力,比51麻烦老多了。

现在看来其实就是不熟悉、不会方法,懂方法、熟悉之后,各种外设模块都可以很快配置好(当然没玩过的一些模块还是需要花点时间弄一弄的)。外设和模块的驱动是这个专栏的教学重点,然后就是分享一下调试的一些经验。有兴趣的可以订阅专栏哦!

项目介绍

项目要求

下面是我接到的原要求:

单片机+最小系统+LCD1602液晶显示模块+蜂鸣器模块+LED指示灯模块+继电器驱动模块+矩阵键盘模块+AT24C02芯片模块+红外遥控模块+时间模块。
1.采用AT24C02芯片可以实现存储的密码掉电保存。密码为6位,可以随意更改,更改时要输入两遍确认。
2.采用矩阵按键输入、1602液晶显示、继电器模拟开锁,有开锁指示灯。继电器有常开常闭触点可外接电磁锁等负载。
3.有管理员密码,即使望记密码也不怕哈,可以找回。
4.密码输入错误3次,蜂鸣器响,报警锁死。
5.液晶背光采用的是光敏自动识别,白天不亮黑天亮,这样可以节约电能,随时都可以看的清楚屏幕。
6.有红外遥控功能,遥控器和按键功能一样。
7.要有年月日时钟的显示在1602上。
8.1602上要有开关锁状态的显示。

项目分析及修改

一、先看硬件需要用到什么?

1、看有没有不熟悉的东西?
我首先注意到的是AT24C02芯片模块。我没用过、见过这模块。看下面第一点,清楚是用来存储数据作掉电保护的。STM32本身就可以使用内部的Flash作为存储数据作掉电保护,要使用这个模块可能是要求芯片是51。
询问老板,项目书没有要求一定要用51最小系统板。那行,改。老板爽快。
.

芯片:STM32F103RCT6

2、看需要用到的外设模块:

LCD1602液晶显示模块:
哇!哪有stm32驱动1602的?换OLED。OLED美观还可以显示中文。
.
显示屏:OLED
.
蜂鸣器、LED指示灯、继电器、矩阵键盘、红外遥控
这些都没啥好说的,很常见的模块啦!不过红外遥控我没用过,之前研究过,没搞明白,有点小怕。

二、看软件需要搭建什么驱动?

1、数据掉电保护:
这个是使用是stm32内部的flash实现的,flash的读写我之前用过,要理解小麻烦。幸好我用过,不然不敢接。
.
2、蜂鸣器、LED指示灯、继电器:
这三个都一样,和点亮一个LED没啥区别,使用IO口作为输出。
.
3、矩阵键盘:
4x4矩阵按键,要使用外部中断资源。4x4最少也要4个外部中断资源,幸好stm32的外部中断资源多,随便用。
.
4、红外遥控
红外遥控我没用过,不清楚是怎么驱动的呀!看看例程。
单模块例程的东西随便都能找得到。正点、野火。
运行例程,红外使用一个IO口:PB9。知道这些就行了,它要不要用到定时器、中断啥的我都不用理它,到时直接用例程就行了。

模块选购

芯片

MCU:STM32F103RCT6
在这里插入图片描述

显示模块

OLED模块:
选IIC通讯接口的,不需要高刷新率,IIC通讯方式就够了。引脚少,有现成的驱动。
在这里插入图片描述

红外遥控模块

红外遥控器及接收模块:
在这里插入图片描述

动作模块

继电器:
在这里插入图片描述

指示灯

LED指示灯:
一绿一红。
在这里插入图片描述

警报模块

蜂鸣器:
5V有源,买有源的,不需要PWM驱动,和点亮一个LED一样简单。
在这里插入图片描述

按键

按键:
能用就行。
在这里插入图片描述

IO分配

这个是要确定每一个模块使用哪个IO口,确定后是不能再更改的(硬件设计好的PCB板打出来后,想再改可是要重新设计的,打PCB板可不便宜)。所以我们 软件设计一定要确定好IO口。

在这里插入图片描述
红外遥控器的按键是十七个,我们的按键矩阵少了一个,问题不大。

因为这个项目的IO口除了红外用固定用一个定时器的IO口,其他都是随便的,所以这个项目的IO口分配没什么好说的。

如果我们需要用到定时器的资源通道时,我们都是要用到固定的IO口,这是就需要我们查看手册。比如我需要使用四个IO输入PWM驱动电机的时候,那我们要用一个定时器(四个通道TIM_CH1、TIM_CH2、TIM_CH3、TIM_CH4)。

下图来自STM32芯片的数据手册。这个手册比较重要,查看IO资源需要用到。
在这里插入图片描述
可以看到定时器二TIM2的四个通道分别是PA0~PA3。

一般需要固定用到的是定时器的通道、串口,需要用到这些资源的时候就需要我们查看手册了。而其他的资源比如普通的IO;IIC通讯的SDA、SCL;SPI通讯接口(stm32是有硬件IIC、SPI接口的。如果使用程序模拟时序通讯慢,可以转为使用固定的硬件IO口通讯)这些都是可以随便设置的。

总结

做项目的前期工作就都完成啦!
等PCB板打出来后就可以开始调试工作了。
后续的工作主要分为两个:

1、各模块的驱动编写(主要是找例程修改la)
2、整合调试(这部分好麻烦,不知道用怎么一个方式写文章,可能是教几个调试的小经验,或者写遇到调试比较麻烦的地方)

这个项目比较容易复现,外设模块不多,有兴趣的朋友可以买材料跟着来哦!

硬件设计都是来自这位大佬:硬件菜菜

下面是硬件设计,不需要也行,面包板杜邦线线上就可以了(按键只是多一种控制外设,按键的功能和红外遥控器是一样的,所以不想打PCB的朋友,直接面包板、杜邦线就行)。
在这里插入图片描述
在这里插入图片描述

软件资源分享

stm32工程源码

硬件资源分享

红外遥控门锁项目PCB板Altium Designer设计文档
红外遥控门锁原理图.pdf


版权声明:本文为weixin_45915259原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。