内容介绍
内容介绍
选择了FastBond主题三:环境监测
简介:
本项目的主要功能是监测空气中的温度和湿度,并在数码管中显示出来。项目功能简洁,工作稳定,可长时间工作。
硬件介绍:
1、主控芯片:ESP-12F
厂家:安信可
用途:主控模块,用于读取温湿度数据以及显示
2、LDO芯片:LT1963AEST-3.3
厂家:ADI
用途:将5V输入电压转换为3.3V
3、温湿度传感器:DHT11
厂家:ASAIR
用途:测量空气中温度和湿度
4、数码管驱动:MAX7219
厂家:MAXIM
用途:驱动2X4位数码管
5、四位数码管:3641AS7-3
厂家:ReliaPro
用途:显示空气中的温度和湿度
6、下载芯片:CH340C
厂家:WCH
用途:用于将程序代码下载到ESP-12F中
软件介绍:
Arduino IDE:Arduino IDE是一款专业的Arduino开发工具,主要用于Arduino程序的编写和开发,拥有开放源代码的电路图设计、支持ISP在线烧,同时支持Flash、Max/Msp、VVVV、PD、C、Processing等多种程序兼容的特点。
Altium Designer:是一个设计原理图和PCB的专业软件,功能十分强大,且使用方便,比较容易上手。
原理图简介:
1、供电:采用TYPE-C供电,输入电压为5v。采用ADI的LT1963AEST-3.3芯片将电压降压为3.3v输出。LT1963AEST-3.3是一款低压差稳压器,针对快速瞬态响应进行了优化。该器件能够提供1.5A的输出电流,其压差为340mV。运行静态电流为1mA,关断时降至<1µA。静态电流得到很好的控制,相对于压差的变化并不会上升。除快速瞬态响应外,LT1963A还具有非常低的输出噪声,因此非常适合敏感型射频应用。输出电压范围从1.21V到20V。LT1963A可使用低至10µF输出电容保持稳定。内部保护电路包括反向电池保护,限流,热限制与反向电流保护。
2、程序下载:CH340C 是一个 USB 总线的转接芯片,实现 USB 转串口功能。其实物封装为标准的 16 脚贴片,CH340C内置时钟,无需外部晶振。设计中主要关注UD-、UD+、TXD、RXD、DTR#、RTS#。CH340C的TXD、RXD分别接到ESP-12F的RX与TX上。UD+、UD-分别对应USB的D+、D-。采用一对数字三极管,通过对DTR#、RTS#的控制,实现对芯片的复位与程序下载(IO0为低电平有效)的控制。
3、温湿度传感器:DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。单线制串行接口,使系统集成变得简易快捷。信号传输距离可达20米以上。产品为 4 针单排引脚封装。 连接方便。
DHT11的供电电压为 3~5.5V。传感器上电后,要等待 1s 以越过不稳定状态在此期间无需发送任何指令。
4、四位数码管:4位一体,共阴红色,0.36英寸。
5、数码管驱动芯片:MAX7219是一种集成化的串行输入/输出共阴极显示驱动器,它连接微处理器与8位数字的7段数字LED显示。其上包括一个片上的B型BCD编码器、多路扫描回路,段字驱动器,而且还有一个8*8的静态RAM用来存储每一个数据。一个外部寄存器用来设置各个LED的段电流。
关键性代码及说明:
1、LedControl库:用于驱动MAX7219控制8位数码管显示数据。
2、SimpleDHT库:用于读取DHT11中的温湿度数据。
3、硬件接口
DHT11 ESP-12FDATA <------> IO10GND <------> GNDVCC <------> VCCMAX7219 ESP-12FDIN <------> IO12CLK <------> IO13CS <------> IO16GND <------> GNDVCC <------> VCC
4、源码
#include <LedControl.h> // MAX7219 Driver
#include <SimpleDHT.h> // DHT11 Driver
// MAX7219 Pin
int DIN = 12;
int CLK = 13;
int CS = 16;
// DHT11 Pin
int pinDHT11 = 10;
LedControl lc = LedControl(DIN, CLK, CS, 1);
SimpleDHT11 dht11(pinDHT11);
void setup() {
Serial.begin(115200);
for(int index=0;index<lc.getDeviceCount();index++) {
lc.shutdown(index, false); // 启动时,MAX72XX处于省电模式
lc.setIntensity(index, 2); // 将亮度设置为 9(0~15)
lc.clearDisplay(index); // 清除显示
}
}
void loop() {
byte temperature = 0;
byte humidity = 0;
int err = SimpleDHTErrSuccess;
// 读取温湿度数据
if ((err = dht11.read(&temperature, &humidity, NULL)) != SimpleDHTErrSuccess) {
Serial.print("Read DHT11 failed, err=");
Serial.println(err);
delay(1000);
return;
}
// 显示温湿度数据
lc.setDigit(0, 7, temperature%100/10, false); // 温度 十位
lc.setDigit(0, 6, temperature%10, false); // 温度 个位
lc.setChar(0, 5, 'c', false);
lc.setDigit(0, 3, humidity%100/10, false); // 湿度 十位
lc.setDigit(0, 2, humidity%10, false); // 湿度 个位
lc.setChar(0, 1, 'H', false);
Serial.print((int)temperature); Serial.print(" *C, ");
Serial.print((int)humidity); Serial.println(" H");
delay(1000);
}
功能演示结果:
使用杜邦线将MAX7219数码管模块和DHT11温湿度模块与ESP-12F连接起来。可以看到MAX7219上左边显示为当前的温度值,右边显示为当前的湿度值。
总结:
这次参加FastBond的活动,收货满满的。拿出了好久没用过得Arduino了。得益于Arduino中丰富的库函数,总体来说源码方面的开发还是比较轻松的。项目主要是元器件的选型不好选,由于最初选择的元器件难度有点大,后面参考了提供的案例,选择了合适的元器件,最终也顺利的完成了项目。
软硬件
附件下载
TemperatureAndHumiditySensor.rar
源码
原理图.pdf
原理图
团队介绍
评论
0 / 100
查看更多