查看: 690|回复: 5

[项目] 用TF03做一个越界报警装置

[复制链接]
随着我国社会经济的发展,人民生活水平不断提高,人们对区域治安以及安全防范越来越高。传统的安防主要由保安人员不断巡逻来完成,这样不但浪费物力财力还不可能做到全天候的防范。
最近刚好接触到DF的一款激光测距传感器。通过资料了解到TF03是一款工业级高速测量的激光雷达,测量距离更是达到了180M。TF03包含针对室外强光和雨雪雾环境的补偿算法,使其在强光和雨雾环境下依然可以正常工作。它还具有多种测量模式和参数供客户自主选择配置,以满足不同客户的测距需求。另外TF03的外壳采用铝合金加红外高透玻璃来提高机身整体强度,防护等级可达IP67,以满足各种室外恶劣环境下的应用。TF03接口为UART接口更好的适配市面上各种控制器。
制作思路:用Arduino作为控制器,利用TF03传感器进行距离监测,将TF03安装所要检测范围的边界处,探头方向与边界平行。当有人或者物体越过这个界线时TF03监测到的距离值会出现变化,通过分析这个距离值就可以判断出越界的具体位置并且通过屏幕显示出越界点到传感器的距离然后可以通过喇叭和LED灯进行警告或者通知保安。还设置了一个按钮,当警报触发后只有通过这个按钮才能停止警报。可以用在一些需要周界防范的地方,比如小区围墙、车站安全线、以及下班后的超市银行等。
202001196594..png

202001196160..png
TF03激光雷达传感器外观:
202001194199..png
接线图:
202001196557..png
准备材料:

202001194032..png
这里是3D打印的上下两个塑料外壳
202001199305..png

202001193118..png
安装主控板arduino,插上扩展版,固定好电池
202001195730..png
用另一个空间大的外壳安装显示屏
202001199110..png
接下来是安装两颗LED灯
202001193320..png
按钮和喇叭安装
202001197447..png

导线连接:
先连接屏幕接在扩展板的IIC接口
202001198595..png
两个LED模块连接的是模拟端口的0号端口和3号端口
202001193035..png
按钮连在数字端口的13号端口
202001198560..png
喇叭连在数字端口的8号端口
202001194448..png
接下来就是激光传感器了传感器的绿线和蓝线分别接在数字端口的3、4号端口并接好电源线
202001195738..png
最后整理好导线将两半壳子合在一起拧好外壳螺丝就完成了。
202001192035..png
完成后的效果:
2.png
然后下载好程序:
[C] 纯文本查看 复制代码
#include <DFRobot_RGBLCD.h>
#include <DFRobot_TFmini.h>
SoftwareSerial mySerial(3, 4); // RX, TX
DFRobot_TFmini  TFmini;
DFRobot_RGBLCD lcd(16,2);
uint16_t distance,strength,distance1;
int c=0,k=1;
void setup()
{
    Serial.begin(9600);
    TFmini.begin(mySerial);
    pinMode(14,OUTPUT);
    pinMode(8,OUTPUT);
    pinMode(17,OUTPUT);
    pinMode(13,INPUT);
    lcd.init();
    lcd.setRGB(255,255,255);
    lcd.setCursor(0,0);
    lcd.print("No abnormality");
}

void loop()
{
  while(1)
  {
    if(TFmini.measure()>0)
    {
       distance = TFmini.getDistance();
       if(distance<strength-5)
       {
         for(int i;i<50; )
         {
          if(TFmini.measure()>0)
          {
            distance1 = TFmini.getDistance();
            if(distance>distance1)
            {
              distance=distance1;
            }
            i++;
          }
         }
         c=1;
         Serial.print("Distance = ");
         Serial.print(distance);
         Serial.println("cm");
         lcd.setCursor(0,0);
         lcd.print("Distance=");
         lcd.print(distance);
         lcd.print("cm    ");
       }
       fengmingqi();
    }
  }  
}

void fengmingqi()
{
  unsigned long a=millis();
  while(c)
  {
    if(millis()-a>300)
    {
      digitalWrite(14, 0);
      digitalWrite(17, 0);
      digitalWrite(8, 1);
      delayMicroseconds(500);
      digitalWrite(8, 0);
      delayMicroseconds(500);
    }
    else
    {
      digitalWrite(14, 1);
      digitalWrite(17, 1);
      delay(1);
    }
    if(millis()-a>600)
    {
      a=millis();
    }
    if(TFmini.measure()>0)
    {
       distance = TFmini.getDistance();
    } 
    if (digitalRead(13) == 1) 
    {
      delay(20);
      if (digitalRead(13) == 1) 
      {
        k=1;
        c=0;
        digitalWrite(14, 0);
        digitalWrite(17, 0);
        lcd.setCursor(0,0);
        lcd.print("No abnormality");
        while(k)
        {
          if(TFmini.measure()>0)
          {
            strength= TFmini.getDistance();
            k=0;
          }
        }
        while(digitalRead(13) == 1);
      }  
    } 
  }
}

这里做了一个小模拟:
当有人穿过传感器探测范围时发出警报并且屏幕上显示人体到传感器的距离.

DFrJ5KYVQaH  初级技匠

发表于 2020-1-21 10:01:32

很实用的一个实例
回复

使用道具 举报

白吃白给  初级技师

发表于 2020-2-5 22:03:48

很棒啊,可以放在便利店门口
回复

使用道具 举报

且歌且行  中级技师

发表于 2020-2-17 15:36:49

我想到的怎么是读书时候的三八线~(✿◠‿◠)(✿◠‿◠)
回复

使用道具 举报

kylinpoet  初级技匠

发表于 2020-2-18 10:09:58

多谢分享,学习了。
回复

使用道具 举报

visionsl  初级技匠

发表于 2020-3-14 18:30:30

这是个土豪级别的传感器
回复

使用道具 举报

高级模式
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2020 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail