用Microchip PIC32MM开发板打造多模块智能家居温湿度计

应用案例

3人已加入

描述

项目说明:

本项目基于PIC32MM Curiosity开发板开发智能家居温湿度计,并加上若干额外模块,如日历芯片模块,雨滴检测模块,气压模块,串口蓝牙透传模块等等,用于扩展该系统的日历计时,检测雨量密度,检测气压,与PC机进行串口蓝牙通信功能,PC机端使用QT5.9开发上位机程序,显示从开发板发过来的温度,湿度,气压,雨量数据,并可控制开发板的RGB灯的状态。

硬件介绍:

1.日历芯片模块DS3231,采用温度补偿晶振,比一般的DS1302芯片精度高得多,多用于电脑主板的日历芯片,I2C总线通信;

PIC32MM

2.气压模块BMP280,常用的检测大气压的模块,I2C总线通信;

PIC32MM

3.雨滴检测模块,ADC;

PIC32MM

4.蓝牙无线串口HC05两个;

PIC32MM

PIC32MM

5.SPILCD彩屏,用于显示欢迎界面及各数据;

PIC32MM

6.开发板使用充电宝的5V供电,与电脑没有任何物理连接。

7.DHT12模块:

硬件连接:

1.开发板使用模拟I2C总线与DS3231,BMP280连接,两个器件接的总线为同一组;

2.开发板使用ADC引脚连接雨滴传感器;

3.开发板使用模拟SPI引脚连接SPILCD彩屏;

4.开发板使用硬件串口连接HC05模块;

5.开发板使用一根GPIO连接DHT12模块;

6.蓝牙无线串口HC05两个,一个接到开发板的串口1,一个接到CH340模块,CH340模块接到电脑的USB接口上;

PIC32MM

串口协议详细说明及代码:

串口协议类似于常见的TCP MODBUS协议,发送端和接收端以字节为单位,协议的格式可以完全由自己定义。要注意的是,DIY创客使用自己的协议给自己的板子使用协议是可以自由定义的,包括起始字节,数据字节,命令字节,结束字节等等,但是,如果是工业用的通信,则协议由各方协商好,必须遵守某种规则,个人或单位不得随意修改。

开发板端 - >电脑端串口数据协议格式:

PIC32MM

开发板端(发送端):

buf2[0]=1,buf2[1]=temp,buf2[2]=humi;

电脑端(接收端):

void MainWindow::Timer_Update()

{

readComString=serial->readAll();

if(readComString!=0&&readComString.data()[13]==0x0d)

{

ui->PGB1->setValue(readComString.data()[1]);

ui->PGB2->setValue(readComString.data()[2]);

qs1.sprintf("%02d-%02d-%02d",readComString.data()[3],

readComString.data()[4],readComString.data()[5]);

qs2.sprintf("%02d:%02d:%02d",readComString.data()[6],

readComString.data()[7],readComString.data()[8]);

pres_int=readComString.data()[9]<<8|readComString.data()[10];

pres_flo=readComString.data()[11];

qs3.sprintf("%d.%2d帕",pres_int,pres_flo);

rain=readComString.data()[12];

qs4.sprintf("密度%04d",rain);

ui->LCDN1->display(qs1);

ui->LCDN2->display(qs2);

ui->TL7->setText(qs3);

ui->TL9->setText(qs4);

}

serial->flush();

}

电脑端 - >开发板端串口数据协议格式:

PIC32MM

电脑端(发送端):

void MainWindow::on_HS2_valueChanged(int value)

{

qDebug()<

green=value;

qba1[0]=2;

qba1[1]=red*2;

qba1[2]=green*2;

qba1[3]=blue*2;

qba1[4]=0x0d;

serial->write(qba1.data());

}

开发板端(接收端):

UART1_ReadBuffer(buf1,10);

LED_RGB_Set(LED_RGB_LD3,buf1[1]*5,buf1[2]*5,buf1[3]*5);

QT程序截图(注:界面的日期和时间是开发板的日期和时间,并非电脑的系统日期时间):

PIC32MM

详细代码与演示效果

请移步:基于PIC32MM Curiosity开发板开发智能家居温湿度计

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分