最新日志

发表于:2008-7-8 13:47:44
标签:滤波算法  

1

[转]10种软件滤波方法的示例程序

种软件滤波方法的示例程序
假定从8位AD中读取数据(如果是更高位的AD可定义数据类型为int),子程序为get_ad();

1、限副滤波
/*  A值可根据实际情况调整
    value为有效值,new_value为当前采样值  
    滤波程序返回有效的实际值  */
#define A 10

char value;

char filter()
{
   char  new_value;
   new_value = get_ad();
   if ( ( new_value - value > A ) || ( value - new_value > A )
      return value;
   return new_value;
         
}

2、中位值滤波法
/*  N值可根据实际情况调整
    排序采用冒泡法*/
#define N  11

char filter()
{
   char value_buf[N];
   char count,i,j,temp;
   for ( count="0";count<N;count++)
   {
      value_buf[count] = get_ad();
      delay();
   }
   for (j=0;j<N-1;j++)
   {
      for (i=0;i<N-j;i++)
      {
         if ( value_buf[i]>value_buf[i+1] )
         {
            temp = value_buf[i];
            value_buf[i] = value_buf[i+1];
             value_buf[i+1] = temp;
         }
      }
   }
   return value_buf[(N-1)/2];
}     

3、算术平均滤波法
/*
*/

#define N 12

char filter()
{
   int  sum = 0;
   for ( count="0";count<N;count++)
   {
      sum + = get_ad();
      delay();
   }
   return (char)(sum/N);
}

4、递推平均滤波法(又称滑动平均滤波法)
/*
*/
#define N 12

char value_buf[N];
char i="0";

char filter()
{
   char count;
   int  sum=0;
   value_buf[i++] = get_ad();
   if ( i == N )   i = 0;
   for ( count="0";count<N,count++)
      sum = value_buf[count];
   return (char)(sum/N);
}

5、中位值平均滤波法(又称防脉冲干扰平均滤波法)
/*
*/
#define N 12

char filter()
{
   char count,i,j;
   char value_buf[N];
   int  sum=0;
   for  (count=0;count<N;count++)
   {
      value_buf[count] = get_ad();
      delay();
   }
   for (j=0;j<N-1;j++)
   {
      for (i=0;i<N-j;i++)
      {
         if ( value_buf[i]>value_buf[i+1] )
         {
            temp = value_buf[i];
            value_buf[i] = value_buf[i+1];
             value_buf[i+1] = temp;
         }
      }
   }
   for(count=1;count<N-1;count++)
      sum += value[count];
   return (char)(sum/(N-2));
}

6、限幅平均滤波法
/*
*/  
略 参考子程序1、3

7、一阶滞后滤波法
/* 为加快程序处理速度假定基数为100,a=0~100 */

#define a 50

char value;

char filter()
{
   char  new_value;
   new_value = get_ad();
   return (100-a)*value + a*new_value;
}

8、加权递推平均滤波法
/* coe数组为加权系数表,存在程序存储区。*/

#define N 12

char code coe[N] = {1,2,3,4,5,6,7,8,9,10,11,12};
char code sum_coe = 1+2+3+4+5+6+7+8+9+10+11+12;

char filter()
{
   char count;
   char value_buf[N];
   int  sum=0;
   for (count=0,count<N;count++)
   {
      value_buf[count] = get_ad();
      delay();
   }
   for (count=0,count<N;count++)
      sum += value_buf[count]*coe[count];
   return (char)(sum/sum_coe);
}

9、消抖滤波法

#define N 12

char filter()
{
   char count="0";
   char new_value;
   new_value = get_ad();
   while (value !=new_value);
   {
      count++;
      if (count>=N)   return new_value;
       delay();
      new_value = get_ad();
   }
   return value;    
}

10、限幅消抖滤波法
/*
*/
略 参考子程序1、9
[转自]http://blog.21ic.com/user1/3074/archives/2008/48943.html

点击此处查看原文 >>

系统分类: 软件开发   |    用户分类:    |    来源: 转贴

评论(0) | 阅读(270)
发表于:2008-7-3 21:51:46
标签:CC2510  DS18B20  延时  

5

谈CC2510与B20

最近很多人在讨论CC2510挂DS18B20温度传感器这事,我也凑上两句吧。

记得我第一次用B20的时候也着实用了不少时间,大概有1周的时间,才把别人为S51写的程序在自己的电路跑出一个结果,当时觉得这个单总线真的不好用,不过跑能之后也兴奋了一把。现在在网上能找到很多18B20的写温程序,《路上》也有。可是这些程序除了是基C51这类单片机的之外,就只剩下AVR的和PIC的程序了。

做完那次课题设计就再没有碰过DS18B20,只是关于它的记忆有点深刻,记得在操作B20的时候,每读、写一位中间有个延时,不能长过某个时间,也不能短过某个时间,当时我在读B20的时候还来了个EA=0,把中断关完了。但倒底是不是一定要把中断关了才能读出温度,我也不知道。这就是我对B20的了解。

对于CC2510,我在无线龙上班,所以电脑桌上总会有几个放着,呵呵。2510其实也是51内核,不过指令周期比前面提到的51要短很多,我想这也是很多人在操作B20的时候不好写软件延时程序的最终原因吧。所以我在这里就想跟各位用2510的朋友说下2510的系统时钟设定。2510一共有4个时钟源,把括内部集成的高、低速RC振荡器,外部高、低频率晶振,它们的频率分别是13M,32K,26M,32.768K,4个时钟源分成高低两组,高速一组可以都打开或者打开一个时钟源,PM1及更低功能下两都关闭。而低速一组只能有一个时钟源可以打开,仅在电源模式PM3下两者都关闭。在接有外部晶振时,2510会对RC振荡器进行校准。为了延时可靠,在使用B20的时候选用高速晶振吧。《CC1110/CC2510无线单片机和无线自组织网络入门与实战》这本书上有讲2510/1110的时钟,可以参考。

现在在来说2510系统时钟的分步,2510的系统时钟可以用CLKCON.SPKCLK(D2-D0位)来分频,一共8种分频倍数。分频结果为:
000   26M(高速RC只能在13M)
001   13M
010    6.5M
011    3.25M
100    1.625M
101    812.5K
110    406.25K
111    203.125K
在这里我们选010 -6.5M这个组合。也就每执行13条指命耗时2us。如果我们要延时50us的话,就需要325个指令周期。

再说说延时吧,一般在C里面我们都是用for(;;)或者while(i--)这样的语句来延时,这里应该也可以用,试着多改几下入参,应该是可以用的。以前看过些精确延时的帖子,现在都不记得的方法了。汇编我又不懂,不过刚好前几天在21IC上看到一个很有意思的宏,搬来这里给大家看看,也许用得上,我写的延时代码用的也是这个。

#define __NOP1__ asm("nop");
#define __NOP2__ __NOP1__ __NOP1__
#define __NOP4__ __NOP2__ __NOP2__
#define __NOP8__ __NOP4__ __NOP4__
#define __NOP16__ __NOP8__ __NOP8__
#define __NOP32__ __NOP16__ __NOP16__
#define __NOP64__ __NOP32__ __NOP32__
#define __NOP128__ __NOP64__ __NOP64__

#define __NOPX__(a)             \
    if ((a)&(0x01))    {__NOP1__}                    \
    if ((a)&(0x02))    {__NOP2__}                    \
    if ((a)&(0x04))    {__NOP4__}                    \
    if ((a)&(0x08))    {__NOP8__}                    \
    if ((a)&(0x10))    {__NOP16__}                    \
    if ((a)&(0x20))    {__NOP32__}                    \
    if ((a)&(0x40))    {__NOP64__}                    \
    if ((a)&(0x80))    {__NOP128__}

好了,就说这些吧,把代码帖上,希望大家能尽快的用2510将B20的数据准确地读出来。rar

!!!~~~~关注2510和B20的调试结果。~~~~~~!!!!!!

点击此处查看原文 >>

系统分类: 单片机   |    用户分类:    |    来源: 原创

评论(4) | 阅读(484)
发表于:2008-6-4 14:41:02
标签:CC1110  PWM  

3

CC1110 PWM控制小灯亮度

点击下载

在这里就不介绍PWM控制小灯亮度的原理了,CC1110/2510内部有4个定时器。
除了T2外都可以可以产生PWM波。这里用CC1110的T4来实现产生PWM控制小
灯的亮度,可以使用键盘来控制小灯的亮度,调节分5级。程序中用了TI给
的HAL.H文件,里面已经写好了很多驱动,可以直接用。

 

                                                                                              2008年6月4日

点击此处查看原文 >>

系统分类: 单片机   |    用户分类:    |    来源: 原创

评论(0) | 阅读(483)
发表于:2008-5-21 16:32:27
标签:2430  sleep  timer  

4

CC2430睡眠定时器实现唤醒


CC2430的睡眠定时器(SLEEP TIMER)是一个24位的计数器,可以用来作为唤醒中断(仅PM0-2)下面有效,ST的计数时钟是32.768K,向上计数,可以和一个24数比较以产生中断,在PM2仍然工作,可以产生中断和触发DMA。
这里只讲如何设置进入低功耗模式后的唤醒时间,ST0,ST1,ST2可读可写,但是我觉得这3个寄存器类似于串口的BUFFER,实际上是两个寄存器。因此就计数来说,ST(指ST0,ST1,ST2 下同)是不可写的,我这里把它称为STa,对于设置比较数来说,ST是不可读的,我把它称为STb。这样的话相实现定时唤醒就要利用STb和STa的数差,相差32768,就表示1秒唤醒一次,相差n*32768表示n秒唤醒一次,这里的n可以是小数。下面是实现唤醒的代码:

void Set_ST_Period(UINT16 sec)
{
   UINT32 sleepTimer = 0;

   sleepTimer |= ST0;
   sleepTimer |= (UINT32)ST1 <<  8;
   sleepTimer |= (UINT32)ST2 << 16;

   sleepTimer += ((UINT32)sec * (UINT32)32768);

   ST2 = (UINT8)(sleepTimer >> 16);
   ST1 = (UINT8)(sleepTimer >> 8);
   ST0 = (UINT8) sleepTimer;
}

void main(void)
{
 OPEN_ST_INT() ;//开中断
 while(1)
 {
   Set_ST_Period(10);//10sec 一次唤醒
   SET_POWER_MODE(PM2);//进入低功耗模式
 }

}

点击此处查看原文 >>

系统分类: 单片机   |    用户分类:    |    来源: 原创

评论(3) | 阅读(482)
发表于:2008-4-22 11:18:47
标签:CC2510  学习资料  

5

CC2510学习资料

点击下载

这几个工程里有I/O控制,定时器使用,睡眠定时器的使用,看门狗等学习资料,已经是做好的IAR(7.20H)工程,可以直接打开使用。觉得有用的话顶一下。这段时间有点忙,不能写更多的例子了。目录:

CC2510-1  自动闪烁

CC2510-4 T1的使用

CC2510-8 定时器中断

CC2510-10 片内温度

CC2510-20 睡眠定时器的使用

CC2510-21 看门狗模式
CC2510-22 喂狗

 

 

我建了一个小组,里面可以讨论IAR,ZIGBEE和一些无线调频芯片的使用等等。欢迎大家加入。

 

                                                                            emot

                                                                            2008年4月22日

 

点击此处查看原文 >>

系统分类: 单片机   |    用户分类:    |    来源: 原创

评论(8) | 阅读(721)
发表于:2008-3-29 13:29:35
标签:单片机常用外围器件  

3

单片机常用外围器件(珍藏)

/*====================================
刚学单片机的时候,把这个存在手机当电子书来看.
一直保留到现在.哈哈
====================================*/

单片机常用外围器件

************************************
一、74系列常用器件
1.常用与非门及与非门器件
 MM54HC08/MM74HC08
 MM54HC11/MM74HC11
 MM54HC00/MM74HC00
2.常用或门有或非门器件
 MM54HC32/MM74HC32
 MM54HC02/MM74HC02
3常用与或门及与或非门器件
 MM54HC58/MM74HC58
 MM5(7)4HC51
4.常用总线驱动及收发器件
 54LS244/DM74LS244
 DM54LS235/DM74LS245
 74HC595
5.常用计数器
 DM74LS90/DM74LS93
 DM54LS193/DM74LS193
6.常用编码译码器件
 MM5(7)4HC148
 MM5(7)4HC138
 MM5(7)4HC154

************************************
二、存储器件
1.SRAM-IS61C256AH
2.EPRAM-M2764A
3.EEPRAM
 24LC256
 X2816C
4.FLASH存储器 AT29C256
5.双口RAM-IDT70V05S
6.FIFO存储器-IDT72V36100

***********************************
三、A/D
1.逐次比较型A/D
 ADC0809/0804
 AD7810
2.并行比较型AD
 AD9048
3.半闪烁型高速A/D
 TLC5510
 MAX113
4.Σ-△型高精度A/D
 AD7710
 ADS1100

***********************************
四、输出及显示
1.LED驱动芯片
 ICM7218
 MAX7219
 MCI14489
 MCI14499
2.LCD器件
 FYD12864
3.D/A
 DAC0832


************************************
五、传感器
1.温度
 LM35
 DS18B20
2.语音芯片
 ISD2500
3.时钟芯片
 DS1302
 PCF8583
4.其他
 热线型半导体气敏元件 MR513
 酒精传感器 MQ-303A
 可燃性气体传感器 M007

*************************************
六、常用可编程器件
1.可编程并行接口芯片 8255A
2.可编程中断控制器 82C59A
3.可编程计数器
 MSM82C53-2
 MSM82C54-2
4.可编程键盘、显示控制器件
 TMP82C79

*****************************************
七、常用通信器件
1.RS-232总线接口芯片  MAX232
2.RS-422总线接口芯片  MAX491
3.RS-485总线接口芯片  MAX485
4.异步收发器   MAX3100
5.USB控制器件   ISP1518
6.以太网接口器件  RTL8019AS
7.I*IC接口芯片   PCF8574
8.CAN总线控制器   SJA1000
9.无线传输模块   PTR2000

*****************************************
八、电源相关器件
1.DC-DC电压变换器
 MAX1676
 MAX682
2.电源监控器件
 MAX791
 MAX705
3.电流传感器
 MAX471/472

 

 

 

 

 

 

 

 

 

 


 

点击此处查看原文 >>

系统分类: 单片机   |    用户分类:    |    来源: 原创

评论(0) | 阅读(1096)
发表于:2008-3-25 10:39:26
标签:2430  ADC初始化  

4

2430的A/D程序

有朋友问2430的AD初始化及数据处理.重复回答很辛苦,就在这里贴出来吧.
如果对你有帮助,请记得顶一下.

/****************************************************************
*函数功能 :初始化ADC      *
*入口参数 :无                      *
*返 回 值 :无                      *
*说    明 :参考电压AVDD,转换对象是1/3AVDD                                        *
****************************************************************/
void InitialAD(void)
{
 ADCH &= 0X00;  //清EOC标志 
 ADCCON3=0xbf;  //单次转换,参考电压为电源电压,对1/3 AVDD进行A/D转换
      //14位分辨率
 ADCCON1 = 0X30;  //停止A/D

 ADCCON1 |= 0X40; //启动A/D

//因没有取外部电压作为A/D输入,所在没有配置ADCCFG

}

数据处理

INT16U readadc(void){

   temp[1] = ADCL;         //取AD值
   temp[0] = ADCH;
   ADCCON1 |= 0x40;    //开始下一转换

   temp[1] = temp[1]>>2;
   temp[1] |= temp[0]<<6;

   temp[0] = temp[0]>>2; //数据处理
   //temp[0] &= 0x3f;       //排错时写的,没有用

   result = (temp[0]*256+temp[1])*3.3/8192;  //有一位符号位,取2^13;

}

点击此处查看原文 >>

系统分类: 单片机   |    用户分类:    |    来源: 原创

评论(16) | 阅读(891)
发表于:2008-3-24 22:59:20
标签:无聊  

0

第一次 才好笑

打开它,觉得 好笑 ^^

rar

 

点击此处查看原文 >>

系统分类: 自由话题   |    用户分类:    |    来源: 原创

评论(0) | 阅读(354)
发表于:2008-3-20 22:23:57
标签:DS18B20程序  proteus  

3

DS18B20程序+proteus仿真

/*====================================
这个程序是临时帮一个朋友写的
也是用以前的程序改的,注释了的句子就不必
细究了,用了几个全局变量,风格不是太好。

适合作单片机初学者和proteus入门参考
觉得好的话就顶一下。

作者:  emot
http://blog.ednchina.com/emot

 QQ : 908323461
淘宝:emotacer
邮件:emotacer@163.com
====================================*/


#include  #reg52.h#  //将#换为<>号
#include  #intrins.h#

#define uchar unsigned char
/*端口定义*/
#define LED P0     /*实际温度值输出端口定义*/ 

#define NOP _nop_()


sbit  tem_in=P3^0;    /*温度读取端口*/


uchar temp_h,temp_l;   /*温度值变量*/
uchar flag1;     /*正负标志位*/
uchar code ledcode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};/*数码显示数据:0,1,2,3,4,5,6,7,8,9*/
uchar code ledbit[]={0xfe,0xfd,0xfb};//共阴led
uchar dispbuf[2]={0,0};

/*====================================
函数功能:延时 
入口参数:
 说  明 :送1迟202us
=====================================*/

void delay(unsigned int count)
{
 unsigned int i;
 while(count)
 {
  i=200;
  while(i>0)i--;
  count--;
 }
}

/*====================================
函数功能:延时 us
入口参数:
 说  明 :
=====================================*/

void Delay_us(uchar n)
{
 uchar i;
 i=0;
 while(i {i++;}
 return;
}

/*====================================
函数功能:DS18B20重设
入口参数:无
 说  明 :
=====================================*/

void dsreset(void)
{
 unsigned int i;
 tem_in=0;
 i=103;
 while(i>0)i--;
 tem_in=1;
 i=4;
 while(i>0)i--;
}

/*====================================
函数功能:直接读一字节程序
入口参数:无
 说  明 :返回结果
=====================================*/

uchar ReadByte(void){
 uchar i,k;
 i=8;
 k=0;
 while(i--)
 { 
  tem_in=1;
  Delay_us(1);
  tem_in=0;
  k=k>>1;
  tem_in=1;
  NOP;
  if(tem_in)k |= 0x80;
  Delay_us(4);
 }
 return(k);
}

/*====================================
函数功能:向B20写一字节
入口参数:待写数据
 说  明 :
=====================================*/

void tmpwrite(unsigned char dat)
{ unsigned int i;
 unsigned char j;
 bit testb;
 for(j=1;j<=8;j++)
 { testb=dat&0x01;
  dat=dat>>1;
  if(testb)
  { tem_in=0;i++;i++;
   tem_in=1;
   i=8;while(i>0)i--;
  }
  else
  {
   tem_in=0;
   i=8;while(i>0)i--;
   tem_in=1;i++;i++;
  }
 }
}

//////////////////////////////////////////////////////////////
void tmpchange(void)   
{
 dsreset();      /*复位*/
 delay(1);
 tmpwrite(0xcc);     //跳过序列号命令
 tmpwrite(0x44);     //转换命令
}

/////////////////////////////////////////////////////////

/*====================================
函数功能:将温度值读出来并转化为显示数组
入口参数:
 说  明 :调用 ReadByte();
=====================================*/

void tmp(void)

 float dis;
// uchar tempbuf;
 dsreset();
 delay(1);
 tmpwrite(0xcc);
 tmpwrite(0xbe);
 temp_l=ReadByte();    //低位在前
 temp_h=ReadByte();    //高位在后
 
 flag1=temp_h&0xf8;
 if(flag1)
 {
  temp_h=~temp_h;
  if(temp_l==0)temp_h++;  //若低8位全为0且温度为负,取补时就要向高位进1
  temp_l=~temp_l+1; 
 }
 dis=(temp_h*256+temp_l)/16;

// dis=25.34;      //调试用

 if(dis<10)
 {
  dispbuf[0]=0;
  dispbuf[1]=(uchar)dis;
 }
 else
 {
  dispbuf[0]=(uchar)dis/10;
  dispbuf[1]=(uchar)dis%10;
 }
// dispbuf[2]=(uchar)(dis*10)%10;
// dispbuf[3]=(uchar)dis*100%10;
}


/*====================================
函数功能:将显示数组里的数显示
入口参数:无
 说  明 :本例中只显示一片DS18B20中的温度
=====================================*/

void dis(void)
{
 uchar i;
  for(i=0;i<2;i++)                  /*输送显示数据*/    
  { 
   LED=0xff;        //去段码
   P2 = ledbit[i];       //LED位选能
   delay(3);

//   if((i==0)&&(dispbuf[0]==0))
//    LED=0x00;       /*去掉最前面的0,更符合阅读习惯*/
             /*保证有效数可靠显示,使其符合习惯*/ 
//
       LED=ledcode[dispbuf[i]];    //送段码
  }  
  delay(5);
}

/*====================================
函数功能:主函数 将温度从DS18B20读出来并且显示
入口参数:
 说  明 :
=====================================*/

main()
{
 LED=0xff;
 P2=0x00;
 do{
  tmpchange();     /*启动温度转换*/
  delay(10);      /*等待转换结束,可不用,会对显示产生影响*/
  tmp();       /*读取温度转换结果*/
                 
  dis();       /*温度显示和报警*/ 
 }while(1);
}

//*******************程序完***********************************//

keil工程文件:

rar

Proteus仿真文件:

rar

点击此处查看原文 >>

系统分类: 单片机   |    用户分类:    |    来源: 原创

评论(7) | 阅读(1599)
发表于:2008-3-17 17:41:03
标签:zigbee  news  

0

芝加哥消防署应用基于ZigBee无线技术的RFID定位系统

芝加哥消防署应用基于ZigBee无线技术的RFID定位系统 
    
芝加哥消防署对一套基于ZigBee无线技术的RFID定位系统进行了测试
   该系统能够使指挥官明确并实时掌握营救人员在着火大楼中的确切位置。该传感器采用2。4GHZ有源RFID标签,读取范围达 100英尺。作为试验计划的一部分,芝加哥消防署在某些建筑设施中已经安装了这些传感器。  Wright称FIRE系统也被安装到伯克利的一些大楼内,其他城市也正在调试使用。人员由于使用的是不兼容双通道无线电装置而无法相互联络。加利福利亚大学,伯克利分校承担了开发此系统的任务。
    由机械工程系和信息科技中心联合开发的火灾信息与救护设备系统(FIRE)能够为消防员和指挥官提供营救人员在大楼中的位置细节信息。而目前大多数消防署用的双通道无线电装置在这方面有很大的局限,因为它们要消防员自己提供所在位置信息。
  芝加哥消防署
  早在春季,FIRE系统就开始了测试,它有两部分组成:SmokeNet和FireEye。SmokeNet是一套无线网络,利用Motei的Tmote Sky 无线感应平台和传感设备,以及相应的Boomerang软件。该软件使得无线传感设备能将获取环境变化信息并传给消防员。据Paul Wright,一家专为社会、环境、医疗健康问题提供信息技术解决方案公司的首席科学家,宣称该传感器仅用两节AA电池,能够安装在商业大楼中的烟尘探测器,房顶或门道等处。
  火场要充分保证消防人员人身安全
  该传感器采用2。4GHZ有源RFID标签,读取范围达100英尺。作为试验计划的一部分,芝加哥消防署在某些建筑设施中已经安装了这些传感器。Wright称FIRE系统也被安装到伯克利的一些大楼内,其他城市也正在调试使用。
  安装在大楼内的传感器每隔两秒发送射频信号,搜寻消防队员,他们氧气管上装有能接受来自楼内传感器发出的信号、 也能将反馈信息的无线传感器。每位消防员氧气管上的传感器都有唯一的编号。当消防员楼内传感器经过时,氧气瓶上的传感器就能将它的编号传递给楼内传感器,从而确定消防员的位置。这些位置信息通过无线ZigBee网络传送到总指挥或现场指挥的电脑。这些电脑能够查看有市政部门提供的建筑物AutoCAD图纸,消防员的位置就以电的形式出现在屏幕上。即使准确的掌握消防员的位置能极大地帮助指挥官做出决策,例如什么时候撤离消防员。
  楼内传感器也能监测烟雾浓度、温度,提醒消防员注意他们周围的环境状况。据Andrew Redfern,一位无线传感网络的研发工程师讲,任何时候楼内的数十个传感器都能与消防员上的相应的传感器相互通信。
伯克利大学的一名学生Joel Wilson开发出一套叫做FireEye的系统,它由一个附在消防员头盔中护鼻上的显示屏组成。FireEye能在邮票大小的液晶显示屏上实时显示标有消防员或公司员工当前位置的楼层地图,该屏幕正好在消防员的右眼下方。
  Moteiv的CEO Joe Polastre说:“这项技术是在侦测器的安全性、有效性和效率方面的一项重大的突破”。该系统的试验项目得到了芝加哥消防署,还有CITRIS的合作伙伴福特汽车公司的资助。FireEye 原型在福特快速成型试验研制成功,该实验室位于伯克利大学机械工程系面积2000平方英尺。
  芝加哥消防署和伯克利大学希望能将该系统应用到芝加哥,但是具体时间还不确定。同时他们希望继续对该技术进行测试,验证FIRE系统工作的有效性。市政府必须作出计划获取所有写字楼各楼层布局图并在各幢建筑内都安装上FIRE传感器。

点击此处查看原文 >>

系统分类: 通信网络   |    用户分类:    |    来源: 转贴

评论(1) | 阅读(477)
2345下一页总共 , 当前 /