基于ESP32单片机的蓝牙环境检测手机APP设计
- 0、毕业设计选题原则说明(重点)
- 1、项目简介
- 1.1 系统构成
- 1.2 系统功能
- 1.3 演示视频
- 2、部分电路设计
- 2.1 esp32单片机核心板电路设计
- 2.2 DHT11温湿度检测电路设计
- 2.3光照检测电路设计
- 3、ESP32代码展示
- 3.1 系统初始化
- 3.2 ESP32与手机APP蓝牙通信
- 3.3 DHT11读取温湿度数据
- 4、Anrdoid Studio APP代码设计
- 4.1、创建网络服务器
- 4.2、手机APP与单片机通信
0、毕业设计选题原则说明(重点)
- 选题之前,同学们要弄明白一件事情,做毕业设计是干什么用的!
- 这里我告诉大家,毕业设计对于你来说,不是让你去搞研究,掌握运用所学知识的,也不是让你去比谁做的毕业设计多么牛逼,多么厉害。
- 说白点,它的作用就是一个,让你顺利毕业,能够拿到学位证,毕业证而已!!!
- 当你明白这一点后,作毕业设计的要求就是在满足老师的要求后,越简单越好,这样不但容易去做,而且你自己也容易去理解,掌握,同样也能花最少的钱!!!
- 满足老师的要求,这个没办法,毕竟他是决定你是否能通过答辩的人。
- 每年都有很多同学找到我的时候,后悔当初为什么要把功能写的那么复杂,后悔没有提前找我咨询一下!所以在这里提醒同学们,提交开题报告之前一定
1、项目简介
1.1 系统构成
- esp32单片机最小系统+dht11温湿度传感器+水位传感器+光照采集电路+继电器控制电路+电源电路构成。
1.2 系统功能
- 功能介绍:
- 1、采集温度、湿度、光照强度、降水量数据
- 2、使用手机app实时显示湿度、光照强度、降水量数据
- 3、可以设置温度,湿度,光照,降水量的报警阈值
- 4、数据超过阈值时,进行报警,比如温度超过报警阈值30,蜂鸣器报警
1.3 演示视频
2、部分电路设计
2.1 esp32单片机核心板电路设计
- ESP32单片机是一款基于改进的Tensilica LX6微架构的32位双核处理器 SoC,配备2.4 GHz Wi-Fi和蓝牙功能。由于其低功耗、高速度和广泛的应用适用性而被广泛应用。
- 处理器与内存:采用双核处理器设计,包括一个主频高达240MHz的主核和一个协处理器核心,通常配备约520KB到4MB的RAM,包括内部RAM和外部PSRAM,用于存储程序和数据。
无线通信:内置Wi-Fi和蓝牙功能,支持IEEE 802.11 b/g/n Wi-Fi标准(工作在2.4GHz频段)以及蓝牙4.2(包括BR/EDR和BLE),使得ESP32能够轻松连接到无线局域网络,进行Internet访问、局域网通信和远程控制,同时也能与各种蓝牙设备进行通信。
外设与接口:拥有丰富的外设和接口,包括最多34个可编程GPIO引脚、UART、SPI、I2C、I2S、PWM等多种通信协议支持,以及12位ADC(最多18通道)、8位DAC(2通道)、触摸传感器(最多10通道)等模拟和数字信号处理能力。
低功耗特性:支持深度睡眠模式,其中所有非必要的电路都被关闭,以最小化功耗。此外,Wi-Fi模块和蓝牙模块都支持功耗优化功能,可以在数据传输时限制功率消耗,从而延长电池寿命。ESP32还具有一个低功耗的RTC模块,可在芯片进入深度睡眠模式时继续运行,用于提供时间戳或执行时间相关的任务。
单片机最小系统原理图如下图所示:
实物图:
2.2 DHT11温湿度检测电路设计
- DHT11 数字温湿度传感器是一款含有已校准数字信号输出的温湿度复 合传感器。它包括一个电阻式感湿元件和一个 NTC 测温元件。每个 DHT11 传 感器都在极为精确的湿度校验室中进行校准。校准系数以程序的形式储存在 OTP 内存中,传感器内部在检测信号的处理过程中要调用这些校准系数,用户 无需重新校准。单线制串行接口,使系统集成变得简易快捷。超小的体积、 极低的功耗,信号传输距离可达 20 米以上。
其具体电路原理图如下图所示:
- 实物图:
2.3光照检测电路设计
- 光敏电阻为一种无结(PN结)器件,光敏特性主要利用了光导电体导电特性。 当光敏电阻在受到光的照射时,如果光子能量大于本征半导体材料的禁带宽度,则价带中的电子吸收一个光子后就足以跃迁到导带,并产生一个自由电子和一个自由空穴,从而使其导电性能增加,电阻值下降。光照停止,自由电子与空穴逐渐复合,电阻又恢复原值。光敏电阻的电阻值会随着入射光的强弱而发生改变;
- 即当入射光较强时,光敏电阻的阻值会明显减小;当入射光变弱时,光敏电阻的电阻会显著增大。
其具体电路原理图如下图所示:
实物图如下:
3、ESP32代码展示
3.1 系统初始化
/* 系统初始化 */
void setup() {
Serial.begin(115200);
BEEP_INIT; /* 蜂鸣器初始化 */
BEEP_ON /* 蜂鸣器打开 */
delay(1000); /* 延时 */
BEEP_OFF /* 蜂鸣器关闭 */
DHT11Init(); /* dht11 温湿度传感器初始化 */
WiFiAPPInit(); /* wifi模式初始化 */
}
3.2 ESP32与手机APP蓝牙通信
/* 处理与app通信数据 */
static void DealWithAppData(WiFiClient *p_client, DeviceData *p_data, uint8_t *rcv_data, uint8_t *send_data, uint8_t len)
{
if(rcv_data[0] == 0x85)
{
if(rcv_data[1] == 0x09)
{
p_data->yuzhi_temp = rcv_data[2]; //温度阈值
p_data->yuzhi_humi = rcv_data[3]; //湿度阈值
p_data->yuzhi_light = rcv_data[4]; //光照阈值
p_data->yuzhi_water = rcv_data[5]; //水位阈值
p_client->write(send_data, len); //向手机发送数据
}
}
}
3.3 DHT11读取温湿度数据
uint8_t DHT11_Read_Data(uint8_t *temp,uint8_t *humi)
{
uint8_t buf[5];
uint8_t i;
DHT11_Rst();
if(DHT11_Check()==0)
{
for(i=0;i<5;i++)//读取40位数据
{
buf[i]=DHT11_Read_Byte();
}
if((buf[0]+buf[1]+buf[2]+buf[3])==buf[4])
{
*humi=buf[0];
*temp=buf[2];
}
}else return 1;
return 0;
}
4、Anrdoid Studio APP代码设计
4.1、创建网络服务器
public void connect_server() {
public_info.buf_length = 8;
public_info.buf = new byte[public_info.buf_length];
public_info.need_send_cmd = false;
public_info.recv_thread_exit = false;
public_info.info_thread_exit = false;
public_info.temp_yuzhi = 10;
if (public_info.connect_cnt > 0)
public_info.info_thread_exit = true; //如果之前已经有连接了,需要断开后再连接
//创建网络线程,并在线程中连接服务器
client_info_thread = new clientInfoThread(netMessageHandle);
client_info_thread.start();
}
4.2、手机APP与单片机通信
public void send_buffer_to_network(byte []msg,byte length) {
while (true) {
if (public_info.need_send_cmd) { //如果正在发送数据,则要等待它完成再做操作
try {
Thread.sleep(100); //100ms延时
}catch (Exception ex) {}
continue;
}
break;
}
//设置要发送的数据和长度
public_info.buf_length = length;
public_info.buf = msg;
public_info.need_send_cmd = true;
}