车身环境监控系统设计原理:
本系统采用FRDM-KL25Z作为主控芯片,通过添加温湿度、烟雾、超声波测距等传感器来采集汽车车身各项环境参数,同时通过汽车CAN总线采集车身等各种状态信息,通过串口传输给上位机进行显示,实现信息的智能化管理,也可通过蓝牙连接android手机,在手机客户端查看信息。同时,该系统能够在检测到车内温度过高,自动启动电扇给车内降温,在检测到烟雾时,发短信给司机提醒注意情况。
/ 输出管脚测试用,超声波测距,A3--PTB3触发信号,A4---PTC1
IO_FUN_SEL(MKL_PORTB,3,1);
GPIO_DDR_OUTPUT(MKL_PORTB,3);
GPIO_SET(MKL_PORTB,3);
IO_FUN_SEL(MKL_PORTC,2,1);
GPIO_DDR_INPUT(MKL_PORTC,2);
A5--PTC1,电机
IO_FUN_SEL(MKL_PORTC,1,1);
GPIO_DDR_OUTPUT(MKL_PORTC,1);
uart0Init(9600,0,0,8,1);
uart1Init(9600,0,0,8,1);
uart2Init(9600,0,0,8,1);
设置优先级
NVIC_EnableIRQ(USB0_IRQn);
NVIC_SetPriority(USB0_IRQn,5);
NVIC_EnableIRQ(USB1_IRQn);
NVIC_SetPriority(USB1_IRQn,2);
NVIC_EnableIRQ(USB2_IRQn);
NVIC_SetPriority(USB2_IRQn,4);
pitInit(); /* PIT 初始化 */
NVIC_EnableIRQ(PIT_IRQn); /* PIT中断使能 */
NVIC_SetPriority(PIT_IRQn,3); /* 设置PIT中断优先级 */
lptmrInit(); /* lptmr 初始化 */
NVIC_EnableIRQ(LPTimer_IRQn); /* lptmr开启中断 */
NVIC_SetPriority(LPTimer_IRQn,6); /* lptmr设置优先级 */
__enable_irq(); /* 使能总中断 */
printf("MCU start\r\n");
while(1)
{
/红外检测
detectred=GPIO_GET_VALUE(MKL_PORTB,1)&0x02;
/烟雾传感器
detectsmokepre=detectsmoke;
detectsmoke=GPIO_GET_VALUE(MKL_PORTB,2)&0x04;
if(detectsmoke==0x00)
{
/LED,蜂鸣器
GPIO_TOGGLE(MKL_PORTB,18);
GPIO_TOGGLE(MKL_PORTB,19);
GPIO_TOGGLE(MKL_PORTD,1);
/蜂鸣器
GPIO_SET(MKL_PORTC,9);
/
}
else
{
GPIO_SET(MKL_PORTB,18);
GPIO_SET(MKL_PORTB,19);
GPIO_SET(MKL_PORTD,1);
/蜂鸣器
GPIO_CLR(MKL_PORTC,9);
}
if((detectsmoke==0x00)&&(detectsmokepre==0x04))
{
UART1SEND();
detectsmoke=04;
GSMSend();
Delay_1ms(200);
}
//温湿度DHT11
RHread();
RH[0]=RH_H;
RH[1]=RH_L;
RH[2]=TPR_H;
RH[3]=TPR_L;
if(RH[2]>=25)
{
GPIO_SET(MKL_PORTC,1);
}
else
{
GPIO_CLR(MKL_PORTC,1);
}
if(control==0x55)
{
GPIO_SET(MKL_PORTC,1);
}
if(control==0x66)
{
GPIO_CLR(MKL_PORTC,1);
}
//超声波测距
distance();
if(discount0<500)
{
dis_H=discount0/256;
dis_L=discount0%256;
}
if(discount0<50)
{
GPIO_TOGGLE(MKL_PORTB,18);
GPIO_SET(MKL_PORTC,9);
}
else
{
GPIO_SET(MKL_PORTB,18);
GPIO_CLR(MKL_PORTC,9);
}
if(num1>=30) 30秒后没感应到人,减慢数据发送速率
{
num1=30;
UART1SEND();
UART2SEND();
Delay_1ms(5000);
}
if(num>=1) /平时1秒,发送一次数据
{
num=0;
UART1SEND();
UART2SEND();
}
资料下载地址