Bootstrap

51.基于单片机的北斗定位无人机救火系统(实物)

51.基于单片机的北斗定位无人机救火系统(实物)

51.基于单片机的北斗定位无人机救火系统(实物)

要求:

本次设计是一个基于北斗定位的无人机灭火系统,本次设计主要通过北斗系统定位,能够将获取到的位置信息通过无线通讯技术传输到无人机上,进行火灾救援。本次设计需求主要为一下几点:

1) 北斗定位获取火灾位置信息;

2) 烟雾传感器,火焰传感器监测火情;

3) 火灾位置信息可视化;

4) 无线通讯传递火灾位置信息。

研究方法:

本次设计主要通过北斗定位模块获取火灾位置,并通过火焰传感器和烟雾传感器进行火情监测,通过OLED显示器将火灾信息进行可视化显示,并通过无线传输技术将信息传递给无人机模拟模块。

资料包括:

image.png

原理图:

image.png

视频讲解:

image.png

程序运行图:

image.png

#include"ds18b20.h"
/*******************************************************************************
* 函 数 名         : delay_18B20
* 函数功能		   : 延时函数
* 输    入         : 无
* 输    出         : 无
*******************************************************************************/

void delay_18B20(unsigned int i)//延时1微秒
{
   while(i--);
}
/*******************************************************************************
* 函 数 名         : Ds18b20Init
* 函数功能		   : 初始化
* 输    入         : 无
* 输    出         : 初始化成功返回1,失败返回0
*******************************************************************************/

void Ds18b20Init()/*ds1820复位*/
{   
	unsigned char x=0;
	DS18B20 = 1;          //DQ复位
	delay_18B20(4); //延时
	DS18B20 = 0;          //DQ拉低
	delay_18B20(100); //精确延时大于480us
	DS18B20 = 1;          //拉高
	delay_18B20(40); 
}


/*******************************************************************************
* 函 数 名         : Ds18b20WriteByte
* 函数功能		   : 向18B20写入一个字节
* 输    入         : com
* 输    出         : 无
*******************************************************************************/

void Ds18b20WriteByte(unsigned char dat)/*写数据*/
{        
	unsigned char i=0;
	for (i=0; i<8; i++)
	{
		DS18B20 = 0;
		DS18B20 = dat&0x01;
		delay_18B20(10);
		DS18B20 = 1;
		dat>>=1;
	}
}
/*******************************************************************************
* 函 数 名         : Ds18b20ReadByte
* 函数功能		   : 读取一个字节
* 输    入         : com
* 输    出         : 无
*******************************************************************************/


unsigned char Ds18b20ReadByte()/*读数据*/
{ 
	unsigned char i=0;
	unsigned char dat = 0;
	for (i=0;i<8;i++)
	{   
		DS18B20 = 0; //给脉冲信号
		dat>>=1;
		DS18B20 = 1; //给脉冲信号
		if(DS18B20)
		dat|=0x80;
		delay_18B20(10);
	}
	return(dat);
}
/*******************************************************************************
* 函 数 名         : Ds18b20ReadTemp
* 函数功能		   : 读取温度
* 输    入         : com
* 输    出         : 无
*******************************************************************************/

int get_DS18B20()
{
	int temp = 0;
	unsigned char tmh, tml;
	Ds18b20Init();
	delay_18B20(1);
	Ds18b20WriteByte(0xcc);		//跳过ROM操作命令		 
	Ds18b20WriteByte(0x44);	    //温度转换命令

	Ds18b20Init();
	delay_18B20(1);
	Ds18b20WriteByte(0xcc);	 //跳过ROM操作命令
	Ds18b20WriteByte(0xbe);	 //发送读取温度命令

	tml = Ds18b20ReadByte();		//读取温度值共16位,先读低字节
	tmh = Ds18b20ReadByte();		//再读高字节
	temp = tmh;
	temp <<= 8;
	temp |= tml;
	temp = temp*0.0625*100 + 0.5;
	return temp;
}


;