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

分享到:

项目说明:
       本项目基于PIC32MM Curiosity开发板开发智能家居温湿度计,并加上若干额外模块,如日历芯片模块,雨滴检测模块,气压模块,串口蓝牙透传模块等等,用于扩展该系统的日历计时,检测雨量密度,检测气压,与PC机进行串口蓝牙通信功能,PC机端使用QT5.9开发上位机程序,显示从开发板发过来的温度,湿度,气压,雨量数据,并可控制开发板的RGB灯的状态。
 
硬件介绍:
1.日历芯片模块DS3231,采用温度补偿晶振,比一般的DS1302芯片精度高得多,多用于电脑主板的日历芯片,I2C总线通信;
 
3
 
2.气压模块BMP280,常用的检测大气压的模块,I2C总线通信;
 
4
 
3.雨滴检测模块,ADC;
 
5
 
4.蓝牙无线串口HC05两个;
 
6
 
7
 
5.SPILCD彩屏,用于显示欢迎界面及各数据;
 
8
 
9
 
6.开发板使用充电宝的5V供电,与电脑没有任何物理连接。
10
 
7.DHT12模块:
 
11
 
硬件连接:
1.开发板使用模拟I2C总线与DS3231,BMP280连接,两个器件接的总线为同一组;
2.开发板使用ADC引脚连接雨滴传感器;
3.开发板使用模拟SPI引脚连接SPILCD彩屏;
4.开发板使用硬件串口连接HC05模块;
5.开发板使用一根GPIO连接DHT12模块;
6.蓝牙无线串口HC05两个,一个接到开发板的串口1,一个接到CH340模块,CH340模块接到电脑的USB接口上;
 
11
 
串口协议详细说明及代码:
串口协议类似于常见的TCP MODBUS协议,发送端和接收端以字节为单位,协议的格式可以完全由自己定义。要注意的是,DIY创客使用自己的协议给自己的板子使用协议是可以自由定义的,包括起始字节,数据字节,命令字节,结束字节等等,但是,如果是工业用的通信,则协议由各方协商好,必须遵守某种规则,个人或单位不得随意修改。
 
 
开发板端 - >电脑端串口数据协议格式:
 
12
 
开发板端(发送端):
 
<blockquote>        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();
}
 
电脑端 - >开发板端串口数据协议格式:
 
13
 
电脑端(发送端):
 
void MainWindow::on_HS2_valueChanged(int value)
{
    qDebug()<<value;
    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程序截图(注:界面的日期和时间是开发板的日期和时间,并非电脑的系统日期时间):
 
 
14
 
详细代码与演示效果

 

继续阅读
2018年智能硬件市场预测:大头仍是智能家居

智能硬件是一个科技概念,指通过将硬件和软件相结合对传统设备进行智能化改造。而智能硬件移动应用则是软件,通过应用连接智能硬件,操作简单,开发简便,各式应用层出不穷,也是企业获取用户的重要入口。

Microchip Curiosity PIC32MZEF学习教程之:使用Harmony的动态驱动和状态机编写程序

上一篇中介绍了UART的收发数据操作,那些操作都是基于外设库的,而不是采用Harmony的动态驱动,也没有采用状态机的机制。本篇就来介绍一下如何使用Harmony的动态驱动和状态机来编写程序。其实状态机是挺简单的,就是事先定义好可能发生的哪些状态,然后主循环里根据不同的状态进行不同的处理,这个在项目中也是比较常用的方法。

简述Microchip PIC16F87XA与PIC16F88X的五点不同之处

除了配备中文版数据手册以外,PIC16F88X系列单片机较之前的PIC16F87XA系列有了不少的改进,以PIC16F877A与PIC16F887粗略对比发现有以下几点不同

基于Microchip Curiosity PIC32MX470的温湿度计+RTOS+GUI:第一步,点灯

首先下载官方的开发工具,包括MPLAB、XC32、Harmony,但是要想在MPLAB中创建Harmony的工程,得按照help_harmony_vol_I.pdf中的说明,先在MPLAB中安装harmony的plug-in

基于Microchip Curiosity PIC32MX470的温湿度计+RTOS+GUI:第二步,Harmony

uCOS-III跑起来了,但是温湿度计和OLED还没到,打算用这段空窗期把串口调出来,顺便熟悉一下这块板卡的外设。

©2019 Microchip Corporation
facebook google plus twitter linkedin youku weibo rss