5521| 5
|
[项目] 用TF03做一个越界报警装置 |
随着我国社会经济的发展,人民生活水平不断提高,人们对区域治安以及安全防范越来越高。传统的安防主要由保安人员不断巡逻来完成,这样不但浪费物力财力还不可能做到全天候的防范。 最近刚好接触到DF的一款激光测距传感器。通过资料了解到TF03是一款工业级高速测量的激光雷达,测量距离更是达到了180M。TF03包含针对室外强光和雨雪雾环境的补偿算法,使其在强光和雨雾环境下依然可以正常工作。它还具有多种测量模式和参数供客户自主选择配置,以满足不同客户的测距需求。另外TF03的外壳采用铝合金加红外高透玻璃来提高机身整体强度,防护等级可达IP67,以满足各种室外恶劣环境下的应用。TF03接口为UART接口更好的适配市面上各种控制器。 制作思路:用Arduino作为控制器,利用TF03传感器进行距离监测,将TF03安装所要检测范围的边界处,探头方向与边界平行。当有人或者物体越过这个界线时TF03监测到的距离值会出现变化,通过分析这个距离值就可以判断出越界的具体位置并且通过屏幕显示出越界点到传感器的距离然后可以通过喇叭和LED灯进行警告或者通知保安。还设置了一个按钮,当警报触发后只有通过这个按钮才能停止警报。可以用在一些需要周界防范的地方,比如小区围墙、车站安全线、以及下班后的超市银行等。 TF03激光雷达传感器外观: 接线图: 准备材料: 这里是3D打印的上下两个塑料外壳 安装主控板arduino,插上扩展版,固定好电池 用另一个空间大的外壳安装显示屏 接下来是安装两颗LED灯 按钮和喇叭安装 导线连接: 先连接屏幕接在扩展板的IIC接口 两个LED模块连接的是模拟端口的0号端口和3号端口 按钮连在数字端口的13号端口 喇叭连在数字端口的8号端口 接下来就是激光传感器了传感器的绿线和蓝线分别接在数字端口的3、4号端口并接好电源线 最后整理好导线将两半壳子合在一起拧好外壳螺丝就完成了。 完成后的效果: 然后下载好程序: [mw_shl_code=c,false]#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); } } } }[/mw_shl_code] 这里做了一个小模拟: 当有人穿过传感器探测范围时发出警报并且屏幕上显示人体到传感器的距离. |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed