> **本作品为本人某课程设计作业,因此在此分享给大家参考~**
>
\> 改自本人的:基于ESP12S的最小门禁系统板
>
> [https://oshwhub.com/Aknice/esp12-zui-xiao-ji-tong-ban](https://oshwhub.com/Aknice/esp12-zui-xiao-ji-tong-ban)
>
> **注意!板厚建议1.0以下**
### 1.简介
- - -
以ESP12-S物联网MCU为控制核心,采用DHT11温湿度传感器,OLED液晶显示器,以及Blinker手机客户端,实现温湿度参数的实时采集、显示和超限报警功能。~~系统的优点为单总线串口通信,使系统结构简化,节约了单片机资源,模块化设计易于系统的功能扩展。~~
特点:
1. PCB仅有一节18650电池大小,十分小巧
2. 安装一节18650电池(1800毫安时)即可在无电源供给情况下续航18小时
3. 模块化设计,OLED和DHT11模块可拆卸
4. OLED显示当前设定的上下限,当前温湿度状态,电池剩余电量,电池充电状态,WIFI连接状态
5. 整合CH340下载电路
6. 通过点灯APP可以在线远程查看当前的温湿度状态,设定温湿度上下限,以及查看温湿度历史曲线
7. 复位和下载按钮
### ~~2.研究背景和意义~~
- - -
~~随着计算机技术的不断发展和计算机系统的广泛使用,机房环境必须满足计算机设备对温湿度等技术要求。机房的温度和湿度作为计算机设备正常运行的必要条件,我们必须在机房的合理位置安装温湿度传感器,以实现对温度、湿度进行24小时实时监测。系统在特定的温度下存储药品,器官,血液袋,疫苗等,为病人在医院的环境和医院的病人护理质量起到很重要的作用。监管机构已经为一些储存在医院易腐蚀物品发出温湿度监控政策。温湿度监控解决方案通过监测当前的温湿度和历史的温度的完全可见性来提高病人环境。~~~~当前各行业越来越重视产品生产、物品管理和仓库存储环节,很多仓库存储非常重要的物质,如:烟叶、纺丝、药材、食品等。为了维护仓储商品的质量完好,创造适宜于商品储存的环境,当库内温湿度适宜商品储存时,就要设法防止库外气候对库内的不利影响;当监控到库内温湿度不适宜商品储存时,就要及时采取有效措施调节库内的温湿度。因此,建立实时的温湿度监控系统,保存完整的历史温度数据都已经进入了行业规范。 本文将介绍一种空气~~~~温湿度检测报警系统,它所使用的传感器,是采用DHT11温湿度传感器来采集温湿度的信号,将采集的数字信号所获得的数据直接送入esp12-s单片机中,单片机再对数字信号处理,经过单片机处理的信号再次通过OLED液晶显示器将温湿度值显示出来,若通过温湿度传感器所采集的数据过高,则会通过报警电路发出警报,提醒人们空气中的温湿度对人的身体不利。~~
上面全是瞎吹(笑)
### 3.原理
- - -
#### **3.1 复位电路以及上下拉设计**
配置是根据ESP12-S中的启动模式配置的
![2.png](//image.lceda.cn/pullimage/0H1sdI4P9U1dDPKTpT7QEPGOt3PI13HCJ0yNpUod.png)
根据上表,我们需要默认是运行模式,因此我们把EN, RST,GPIO0,GPIO2上拉,GPIO15下拉即可。
如下原理图所示:
![3.png](//image.lceda.cn/pullimage/8jqLXTQ5IHnNmMjCBEhmZttw0lPgLIMy4HkjsvdW.png)
#### **3.2 CH340下载电路**
本设计采用CH340C下载电路,因为芯片内自带晶振,就不用在7,8脚外接晶振了,如果使用CH340G就要外接一个12MHz的晶振,占用PCB布局。
另外设计了下载模式配置和复位电路,即下载代码时,会把GPIO0拉低进入下载模式(见**复位电路以及上下拉设计**中的启动模式说明),下载完毕后自动复位运行。
![1.png](//image.lceda.cn/pullimage/do2Gl1eRS2XdIKislEQveJATS78plLetMXgCyT0H.png)
可以看出其实就是完成信号和开始信号接了两个三极管到EN和GPIO0上,通过逻辑变换即可切换下载模式和运行模式了,芯片一端是连接USB插座,一端是连接ESP12-S的串口。
另外还设计了指示灯电路,当有信号的时候(低电平)指示灯就会亮
![2.png](//image.lceda.cn/pullimage/R9uMp74pGzOCRRLWspvZN6ISIfHZMeNewWCHbsBo.png)
#### **3.3 TP4056锂电池充电和SX1306升压模块**
![3.png](//image.lceda.cn/pullimage/6ZcU6r4vaO2KhA9PF0oTC8DIull8M8VUyxUWAm3D.png)
U4-TP4056X是一款单节锂电池5V线性充电芯片,这里是根据芯片数据手册中的典型应用图设计的,它最大可支持1A的充电电流,它可以通过R16的限流电阻来调节充电的电流,这里我用的是0欧的电阻,也就是让他满载1A充电。R17与芯片的恒流充电电流设置和充电电流检测端相连,根据数据手册提供的公式,我们只需要在这里接一个1.2k的电阻到地即可。
芯片7脚是充电状态指示,充电时7为低,6脚则是充电充满指示灯,因此LED4时红色LED,LED5是绿色LED。
5脚时和电池相连的,不过我们要在靠近芯片侧设置C5
22uf的滤波电容。
当然在芯片选型的时候我们还要考虑到防呆设计。我们之前选用的是TP4056A芯片,但是这款芯片有一个问题,就是电池的极性装反了,就会烧芯片,因此我们选了更加好的TP4056X芯片,这款芯片和A芯片比起来功能和性能方面没有什么区别,但是它多了一个反接防烧设计,就算电池装反了也不会烧掉芯片,因此经过讨论,我们还是决定用好点的TP4056X芯片。
U5-SX1306(B628)是一个可以动态调节的升压芯片,它是根据boost升压电路改造而来的,芯片充当的就是boost电路中的开关V,因为我们采用的是一节18650锂电池进行驱动,但是18650电池电压只有3.7V(典型),而有些模块需要5V来驱动,因此需要设计这个升压电路。
1脚就是开关脚
3脚是电压反馈脚,他根据R20和R21两个反馈电阻来设置升压,公式:
**
Vout=Vref*(1+R20/R21)**
,其中**
Vref**
为参考电压**
=0.6V**
,则***
Vout=5.1V(理论值**
)
实际测试:
![4.jpg](//image.lceda.cn/pullimage/lyDQ4jM4F1vmyEPR3W1dwZ5uM2gohroQYaY8IF2S.jpeg)
可以看到升压芯片的误差还在可接受范围内,理论5.1V,实际上5.08V
我们采用Multisim进行仿真
实际上也不算仿真了,算是一个验证
![5.jpg](//image.lceda.cn/pullimage/Ad0KlsF8bsYVOYRVcTbopHvkORaDZDMWAI79qhNp.jpeg)
当前电池电压,约为4.1V
![6.jpg](//image.lceda.cn/pullimage/Zq0HWCpVpIEjut8seDBbfLixsioZsG4BBJmYhb7R.jpeg)
我们用示波器测量B628的1脚开关脚,图片比较小,我这里把一些重要参数写一下:
频率:1.064MHz
正占空比:74.5%
于是我们可以搭一个boost电路
信号发生器和Q1就相当于B628
参数设置和波形如下
电路和结果都在上面了
可以看到升压结果时5.122V
和理想的5.1V误差不大,和实际5.08V相差也不大,因为这里设置的频率是1MHz和75%占空比,所以有点误差是正常的。因此这个仿真也验证升压是可行的。
然后在升压输出端我设计了一个保险丝FU1防止意外发生,保险丝参数6V/1A即会动作。
后端是一个AMS1117线性稳压芯片,从5V稳压到3.3V为芯片供电,使用线性的原因是节省成本和省PCB布局,如果使用开关稳压,虽然效率高,但是成本也高,一个开关稳压就要2块多,而且还要有外围的额外元器件,而开关稳压几毛钱一个还不占PCB布局,缺点只是效率低了点,但是没关系。
#### **3.4 ADC电池电量测量模块**
![10.png](//image.lceda.cn/pullimage/kBvrB0F4w8s0HmtieUxLrQrMhopJex9MkgbKHYSm.png)
其实比较简单,就是利用两个连接到电池电阻,通过不同电阻阻值配比来改变分到的电压,利用这个电压反馈到MCU的ADC模块上测量电压,通过算法算出电池当前的电量。
因为18650电池满电的时候是4.2V的电压,典型3.7V,没电跌到3.0V甚至更低。因此利用压差来测量电量。因为MCU的ADC输入有范围,因此需要进行分压。
####
3.5 **电池充电状态检测**
**![11.png](//image.lceda.cn/pullimage/1gOcNfBsV3kFtfMCEFIblEDVMNN1aasGp9NjWnQ6.png)**
我们采用的不是直接把输入的电压直接接到MCU上,这样MCU会烧掉的,因此我们采用PC817光耦隔离来作为中介,充电电压给到光耦,输出信号是3.3V的信号,这样就不会对ESP12-S 的GPIO造成较大的冲击。另外还要设计下拉电阻在信号输入口,因为不充电的时候我们要他稳定为低电平状态。
### **4.PCB展示**
- - -
我们采用模块化设计,传感器和OLED屏幕都可以拆装,另外OLED屏幕作为选配配件,因为我们操作警报设定值是在手机客户端上设置的,因此屏幕可有可无,而屏幕又作为最耗电和最昂贵的配件,因此做成可拆模块化设计。
下图为有屏幕和DHT11传感器
OLED屏幕中可以显示:
1. WIFI连接状态
2. 电池电量显示
3. 电池充电状态显示
4. 当前设定的温湿度报警上下限
5. 当前的温湿状态
![12.jpg](//image.lceda.cn/pullimage/TjMcZIqyGfdmnI70MqgvIwlv4CPr6WXjQy3LLc2j.jpeg)
下图为只有DHT11传感器
![13.jpg](//image.lceda.cn/pullimage/8Hsq54IylyNJhOpoouz810cj4qJhWI8Rd2t24Ank.jpeg)
下图为裸板
![14.jpg](//image.lceda.cn/pullimage/8Ng11omgfA91f4rrCI4jZzvPbDvVFla7O14CaTEz.jpeg)
另外根据ESP12-S数据手册,在发射天线上最后不要有布线,否则影响WIFI性能,因此我把WIFI天线突出设计,如上裸板状态图。
![15.png](//image.lceda.cn/pullimage/ZJF45aAu6fiE1Mev4898TnfEqnFAWkonPAhHMzlZ.png)
天线摆放说明如上图所示,我们根据#1的来摆。
### **5.软件设计**
- - -
手机端使用了点灯科技(blinker)的客户端
![16.jpg](//image.lceda.cn/pullimage/Rc5mUjUsDxJfP9heFV0vKiIBfTwi1gk7ZTW7A8Tl.jpeg)
我们使用的第三方库函数有:
Adafruit_Sensor ,它包含了DHT11传感器
U8g2lib,它包含了驱动我们OLED的函数
具体配制方法可以看
[手机端\(Blinker\)配置方法.docx](%E6%89%8B%E6%9C%BA%E7%AB%AF(Blinker)%E9%85%8D%E7%BD%AE%E6%96%B9%E6%B3%95.docx)的文档
客户端具有调节温度湿度上下限(重启无记忆!)、当前温湿度显示、历史温湿度曲线显示、以及控制台中显示电量、充电状态等功能。