【教程】基于Arduino+ESP32的带透明显示接入米家的智能门锁的详细图文教程

目录

说在前面

一. Arduino_ESP32环境搭建

二. 硬件选型

2.1系统整体接线图

三. 软件设计和关键代码

3.1 软件工作流程逻辑

3.2显示设计

3.2.1 TFT_eSPI库安装

3.2.2TFT库配置

3.2.3中文汉字显示

3.2.4 时间显示

3.2.5 天气显示

3.2.6 图片显示

3.3 指纹算法

3.3.1指纹录入

3.3.2 指纹验证

3.3.3指纹删除

3.4 接入米家,远程控制

3.5 密码验证,菜单按键

四. 完结补充

4.1 屏幕镜像效果设置

4.2 打印外壳

 4.3 结语


说在前面

本文大概3W字包含代码,预计阅读时间20分钟。

先上演示视频,感兴趣再往下看 视频地址:基于ESP32实现的带透明显示,接入米家,支持小爱开门的智能指纹门锁_哔哩哔哩_bilibili

基于ESP32实现的带透明显示,接入米家,支持小爱开门的智能指纹门锁

     大学四年一眨眼就过去了,大学期间好像也没搞出来什么,想着毕设是大学最后一次大作业了,我就想着自己做个什么出来也给大学画上一个句号,大学学的软件,课设基本上都是各种系统,前后端设计,各个机构来给我们培训的也是这种,就不太想做这个,最终在三月初决定做这个跟硬件模块相关的,自己也感兴趣,就从零开始学了一点arduino,我是跟着B站“太极创客”学的,感觉讲的很好。

   虽然学了一点,但是基本上还是门外汉,有说错的地方大佬们轻点喷【狗头保命】

一. Arduino_ESP32环境搭建

我是使用Arduino IDE 作为编译器,再搭建ESP32的开发环境,当然你也可以用VScode或者ESP32自己的开发软件。

  1. 下载Arduino ,官网下载1.X版本尽量不要下2.0以上的: 链接,我使用的是1.8.15版本;
  2. 安装ESP32开发环境 文件-> 首选项->附加开发板管理器 输入https://dl.espressif.com/dl/package_esp32_index.json
    这样就添加了ESP32开发板管理器的网址。【教程】基于Arduino+ESP32的带透明显示接入米家的智能门锁的详细图文教程_第1张图片
    重启arduino
  3. 打开 开发板管理器 ,工具-> 开发板->开发板管理器,搜索ESP32下载;
    【教程】基于Arduino+ESP32的带透明显示接入米家的智能门锁的详细图文教程_第2张图片
       搜索ESP32开发板下载,应该会很慢,需要科学。或者采用将文件夹下Espressif文件拷到Arduino安装目录/hardware下,可以直接完成ESP32的配置。
    至此,ESP32开发环境就配好了,接下来就要连接开发板,照着上图选择好开发板 频率和闪存大小,选择端口,一般esp32开发板都自带驱动,连上之后电脑会有提示音,打开电脑设备管理器查看端口号。然后在上图端口选择新增的这个开发板的端口。
    【教程】基于Arduino+ESP32的带透明显示接入米家的智能门锁的详细图文教程_第3张图片 
         OK,这样环境就配好了,为了验证是否成功配置好环境,可以点击文件->示例->BLINK,这是官方示例,打开烧录到开发板上,观察开发板上的内置LED灯是否闪烁,正常闪烁的话恭喜你,环境配置的没毛病。                                                                                                         
    【教程】基于Arduino+ESP32的带透明显示接入米家的智能门锁的详细图文教程_第4张图片

二. 硬件选型

  使用到的硬件模块有ESP-WROOM-32开发板(30引脚),DS166圆形七彩指纹模块,4X4软膜键盘模块,5V继电器,DHT11温湿度传感器,按键模块,TFT屏幕,分光棱镜

模块 用途
ESP32开发板 处理运算,通信
1.44寸TFT屏幕 显示
分光棱镜 折射显示(非必要)
4X4键盘模块 密码输入,功能选择
5V继电器 控制5V电磁锁
有源蜂鸣器 发出警报
DTH11温湿度传感器 测量室内实时温湿度(非必要)

商品链接和价格我就不放了,放一下我的购买截图,大家可以按需购买。

【教程】基于Arduino+ESP32的带透明显示接入米家的智能门锁的详细图文教程_第5张图片【教程】基于Arduino+ESP32的带透明显示接入米家的智能门锁的详细图文教程_第6张图片

【教程】基于Arduino+ESP32的带透明显示接入米家的智能门锁的详细图文教程_第7张图片【教程】基于Arduino+ESP32的带透明显示接入米家的智能门锁的详细图文教程_第8张图片

【教程】基于Arduino+ESP32的带透明显示接入米家的智能门锁的详细图文教程_第9张图片【教程】基于Arduino+ESP32的带透明显示接入米家的智能门锁的详细图文教程_第10张图片

【教程】基于Arduino+ESP32的带透明显示接入米家的智能门锁的详细图文教程_第11张图片


     其中有一些功能没加上,比如说红外线模块和RFID(NFC)刷卡模块原因就是开发板引脚不够了,我在网上找了很久如何扩展ESP32的引脚也问了我们学院其他专业精通这个的老师,最后找到一个但是价格非常美丽,加上已经花了很多钱所以就没继续扩展。缺少的就是连接RFID的SPI类型引脚,这个刷NFC的坑就留给下个人来实现吧。

   继续回到硬件选型上

  • ESP32
    本系统采用ESP32开发板作为核心组件,ESP32开发板是一款开源平台,相比于其他开发板其主要优势在于具有高性能、低功耗、易扩展、低成本等特点。主控芯片为双核处理器,包含一个主频高达240MHz的Xtensa® 32-bit LX6微处理器以及一个Ultra低功耗协处理器,可实现高性能计算和低功耗操作的平衡。ESP32开发板具有大量的I/O接口,包括数字口、模拟口、PWM口、SPI口、I2C口、UART口等,可方便地连接多种功能的传感器、显示屏幕和各种输入输出模块,满足不同应用场景的需求。此外,ESP32开发板还具有Wi-Fi和蓝牙功能,可实现无线通信和远程控制。本系统就是使用WIFI获取时间、天气等实时信息,利用Blinker平台进行远程控制。
    【教程】基于Arduino+ESP32的带透明显示接入米家的智能门锁的详细图文教程_第12张图片
  • DS166指纹模块
      DS166圆形指纹模块是一款基于AS608算法芯片的指纹识别模块,其外观呈圆形,直径约为25毫米。DS166模块采用了高清晰度光学指纹传感器技术,能够实现快速、精准的指纹识别。它支持多种接口和协议,如UART、SPI、I2C等,可以方便地与各种主控板进行通信,比如常用的Arduino开发板和本系统所使用的ESP32。
    DS166模块的工作原理是:当用户将手指放在圆形传感器上时,传感器会将指纹图像转化为电信号,DS166模块通过对电信号进行分析和处理,提取出指纹的特征值,再与存储在模块内的指纹特征库进行比对。本系统选择的是七彩系列,当指纹没有识别成功或者没有在指纹库中搜索到匹配指纹时,会发出红色错误提醒灯光,正确时则是绿色提示灯光,正常待机则是其他颜色的呼吸效果,从而实现指纹识别的功能。DS166模块通过串口与微控制器进行通信,可以方便地集成到各种电子产品和系统中。DS166圆形指纹模块的指纹库容量较大,最多可以存储3000个指纹信息,支持1:N或1:1指纹比对方式,识别速度快,准确率高。此外,该模块还具有指纹录入、删除、更新等功能,操作简单易用,符合本系统设计智能门锁的要求。

    【教程】基于Arduino+ESP32的带透明显示接入米家的智能门锁的详细图文教程_第13张图片


    按照下表将DS166和ESP32进行连接
DS166 ESP32
GND GND
RX RX2
TX TX2
VDD 3.3V
Touch 接空
Vsen 3.3V
  • 4X4软膜键盘模块
    按键解锁部分,为了保证既能进行密码输入,又能提供除了数字之外的按键信息,本系统使用的是4×4矩阵键盘。4×4矩阵键盘是一种常见的电子元器件,通常用于输入密码、控制器参数设定等场景。它由4行4列共16个按键组成,每个按键上面有一个导电膜,当按下按键时,导电膜接触到相应的行列导电线路,从而完成一个电路连接。在单片机中,通过对矩阵键盘按键位置的扫描,可以获取到按键的触发情况,从而进行相应的逻辑控制。而且只占用8个标准I/O接口,可实现按键模块与开发板之间的通信,完成密码解锁、密码修改、指纹添加等相关功能。

【教程】基于Arduino+ESP32的带透明显示接入米家的智能门锁的详细图文教程_第14张图片【教程】基于Arduino+ESP32的带透明显示接入米家的智能门锁的详细图文教程_第15张图片

薄膜键盘和ESP32按照下表进行正确连接,连接的引脚只要是正常I/O口均可。

矩阵键盘 ESP32
R1 D13
R2 D12
R3 D14
R4 D33
C1 D3
C2 D5
C3 D4
C4 D15
  • TFT屏幕

屏幕显示部分选用的是基于SPI模式的1.44寸TFT屏幕模块,该显示屏色彩鲜艳、分辨率较高、显示效果优秀。其通过SPI接口和主控板进行通信,支持多种驱动芯片,本设计选用的是驱动为ST7735的模块。通过调用TFT_eSPI库文件,可以非常方便地编写显示文字的大小、位置,也可以利用图形转码软件&#x

你可能感兴趣的:(ESP32,Arduino,物联网,c语言,单片机,嵌入式硬件,硬件工程)