用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年智能硬件市场预测:大头仍是智能家居

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

51单片机、AVR单片机和PIC单片机IO口的操作

51单片机、AVR单片机和PIC单片机IO口结构的均不同,导致了IO口操作也不同。操作单片机IO口的目的是让单片机的管脚输出逻辑电平和读取单片机管脚的逻辑电平。下面我们来看看51单片机、AVR单片机和PIC单片机IO口的操作的方法。

Microchip Curiosity PIC32MX470+简单测试 +点亮LED灯

我这次拿到的板子是PIC32MX470 Curiosity开发板,第一次使用,就先来点个LED灯吧。使用定时器中断来实现,亮灭时间各一秒。

用Microchip Curiosity PIC32MX470驱动OLED12864显示屏

这次要测试的是驱动OLED12864显示屏。OLED12864模块使用的是IIC接口,SDA接RF4引脚,SCL接RF5引脚,电源为3.3V。IIC时序使用软件模拟,采用强制读写模式。

Microchip PIC单片机12864汉字液晶模块显示文字

本文是用PIC单片机12864汉字液晶模块来显示文字

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