硬件资源如下:
软件资源如下:
下面简单介绍一下OLED操作相关的几个函数:
//初始化IIC
void IIC_Init(I2C_TypeDef* I2Cx);
//发送命令函数
static void Write_Command(unsigned char Command);
//发送数据显示在屏幕
static void Write_DataBuff(unsigned char *Data, unsigned char Len);
//OLED屏初始化
void OLED_Init(void);
//设置坐标
void OLED_SetPos(unsigned char x, unsigned char y);
//字符串显示
void OLED_DispStr(unsigned char x, unsigned char y, char *ch);
//显示logo
void OLED_DispLogo(void);
//清屏操作
void OLED_Clear(void);
下面简单介绍一下DHT11模块操作相关的几个函数:
// TIM3_CH2输入捕获初始化
void CaptureInit(void); //用TIM3_CH2 PB5 AF3
//启动捕获
void CaptureStart(void);
//停止捕获
void CaptureStop(void);
//蓝牙连接成功后协议在空闲的时候会调用本回调函数
void gatt_user_send_notify_data_callback(void){
static u8 notiCnt = 0;//回调次数计数器
u16 humiBat ,tempBpm = 0;
unsigned char DHTData[3]={0x00,0x00,0x01};
notiCnt++; //每进一次该函数回调次数计数器+1
if(CaptureDataMon(&humiBat, &tempBpm) == 0) return;//未成功采集到温湿度数据立即返回
tempBpm %= 512;//初步判断温度数据大小
humiBat /= 10;//初步判断湿度数据大小
if (notiCnt >= 20) {//每进入该回调函数20次才发送一次温度数据
notiCnt = 0;
cur_notifyhandle = 0x12;//温度数据回复句柄值
if (tempBpm < 0x100){
DHTData[0] = 0; //1Byte
DHTData[1] = tempBpm;
sconn_notifydata(DHTData,2);//换算处理好温度数据后通过蓝牙发出
}
else {
DHTData[0] = 1; //2Byte
DHTData[1] = tempBpm;
DHTData[2] = tempBpm>>8;
sconn_notifydata(DHTData,3);//换算处理好温度数据后通过蓝牙发出
}
}
else if (10 == notiCnt) {//每进入该回调函数10次才发送一次湿度数据
SimBatt = humiBat; //0~100
cur_notifyhandle = 0x18;//湿度数据回复句柄值
sconn_notifydata(&SimBatt,1);//换算处理好湿度数据后通过蓝牙发出
}
}
手机操作流程如下:
欢迎加入EEWorld参考设计群,也许能碰到搞同一个设计的小伙伴,群聊设计经验和难点。 入群方式:微信搜索“helloeeworld”或者扫描二维码,备注:参考设计,即可被拉入群。 另外,如您在下载此设计遇到问题,也可以微信添加“helloeeworld”及时沟通。
EEWorld Datasheet 技术支持