智能安全防盗探测小车
2016-11-15向浩维
向浩维
摘 要 本项目以树莓派与89C52RC单片机为基础,设计一个智能安全防盗探测小车,可以通过安装的红外传感器对已设定的轨迹进行循迹,通过超声波模块进行避障行驶,通过树莓派上的wifi模块将小车搭载摄像头获取的图像传到搭建的服务器上,手机或平板登陆网址获取图像并对小车进行模式切换,手动控制和摄像头角度控制。
关键词 智能小车 安全探测 wifi 树莓派 单片机 传感器
中图分类号:TN702 文献标识码:A DOI:10.16400/j.cnki.kjdkx.2016.09.075
Abstract The project is based on raspberry pie and 89c52rc microcontroller, aiming to design a Artificial Intelligent Car for Unsafety Detection. It can use its infrared sensors to track the given orbit, ultrasonic module to avoid obstacles and the WIFI module from raspberry pie to transfer the camera signal from the camera installed on the device to the website we built where the video can be viewed and the working conditions, motions of the car can be modified as well as the angle of the camera.
Key words intelligent car; unsafety detection; wifi; raspberry pie; microcontroller, sensor
1 项目背景
近来由于经常发生寝室盗窃的事件,大家非常没有安全感。所以安全性成为大家日益增长的需求。当今社会提高安全性有两种,一种是增加人力,另一种是利用现代科技设计一个安全智能的设备代替人力。考虑到寝室巡查的限制,不可能在巡查方面采用过多的人员,这样成本也增加过高,而且人员巡逻时难免会出现一些不仔细不全面的缺陷。而对寝室安装定点摄像头,由于隐私等问题以及巡查范围有限,导致会出现学生的反对以及出现成本巨大,此外,定点摄像头也可以被有经验的犯罪分子事先侦察并躲避,这样摄像头也形同虚设,可以说并不是一个适合的方案。于是,根据智能化发展的趋向,我们决定开发设计一种自动安全巡查小车来对宿舍安全环境进行改善。用小车的避障,循迹来按照固定轨迹进行巡逻,手控方便进行突击检查或疑犯追踪,摄像头实时传输图像功能完成对宿舍乃至校园内的安全巡逻。人只需要坐在终端看实时传回来的图像进行判断即可确保当前区域有无安全隐患。此外,此处的摄像头也可连接到公安部门的摄像头网络上,如果以后根据摄像头识别人脸进行疑犯追踪,那么小车上的摄像头也可作为一个分支参与其中。
2 项目目标分析
首先作为智能小车,其必须对安全有着较明显的提高作用。巡查人员必须能通过小车发现周围的情况,最好有实时并可以存储的影像记录,方便及时作出处理同时留到日后作为证据。其必须具有一定的示警作用,对潜在的犯罪起到制止的作用。在面对罪犯时,也要有一定的防卫手段。其次在于其低成本,作为安全巡查小车,其本身不能具有太大的价值,要避免自身被作为窃取对象。最后,要考虑智能安全小车巡查的轨迹,要有一定的随机性,也能有一定的可控性,同时在关键时刻要能实现完全可控,控制距离要远,确保信号准确到达小车。
综上所述,我们设计的小车初步预想将具有下列特性:
(1)运用树莓派接usb摄像头的方式进行图像采集。树莓派作为服务器通过其wifi模块向外部发送视频流文件,所有共享局域网的用户只要登录相应的网址均能接收到视频,并对小车进行控制。选用wifi的目的在于校园网的覆盖,校园网覆盖的地方均能进行控制并看到图像。
(2)运用51单片机控制LN298电机驱动模块,用超声波模块实现距离测量和避障功能,用红外对管模块实现黑线循迹功能。
(3)手机或电脑(平板)通过wifi连接上树莓派,登录写好的网页给树莓派发送信号,树莓派向51单片机对应的引脚发送高电平进行模式切换、手动方向控制。同时,小车上搭载的摄像头也可以通过手机平板等发射的信号来进行摄像角度的调整。
3 开发环境
3.1 操作系统
Windows7
3.2 软件开发环境
Keil uVision4 程序开发,APACHE,PHP,Python,STC-ISP 烧录软件
4 模式切换
用两个信号MODE1和MODE2将树莓派和单片机相连,当其为00时,小车停止运动,当其为01时,切换至红外循迹模式,当其为10时,切换为超声波避障模式,当其为11时,切换为手动控制模式。
5 红外模块
具体实现如下:
(1)定时器中断产生pwm波。程序见附录1,con_left和con_right为自增变量,当变量小于控制值speed_l和speed_r时自增,使输出为1,大于这一值时也自增,使输出为零,当自增变量大于100时使其清零,通过产生这样的方波控制输出的有效电压,从而控制电机的速度。
(2)差速调节小车的方向。将4路循迹的红外对管接收情况分为8种,第一类为1111,表示红外对管在黑线正中央,直行。第二类为1000,1100,0100三种情况,在这种情况下小车进行左转矫正轨迹,运用不同的差速50-0,70-0,100-(-100)来进行角度调整。第三类为0001,0011,0010,这三种情况类似第二种,将小车进行右转校正。第四类为其他情况,在这种情况下,下车慢速前行,以避免撞上障碍物。
(3)两个反馈调节角度的转动。在0001或1000这种情况下,由于这种情况偏差属于最极端情况,为了使小车不偏出轨道,对小车进行了最极端的角度调整,但是这类调整会使小车的行驶出现卡顿,因此这种情况的调节时间应该适中,不能太多或太少。
因此在程序中将实时情况与0010和0100相比较,直到回到想要的状态时,再进入下一个循环。同时为了避免出现一直处于这个状态的情况,设立了一个自增变量flag,当flag大于某一值时跳出循坏。避免出现由于小车突然冲出跑道或发生意外,导致陷入这个死循环之中。
第二个反馈:当没有模式切换的时候,能够实时对红外对管进行判断,使其能够对黑线的位置能够实时判断。
6 供电解决方案
由于我们需要给单片机,树莓派,舵机,摄像头,L298N,红外对管模块,超声波模块供电,我们采用的是6节ENELOOP充电电池供电,输出至L298N模块。
由于树莓派无法用干电池供电,因此用一个5V输出的移动电源给树莓派供电,将其余模块用L298N的5V输出供电,经过实验,这种方案是可行的。
7 中断冲突解决方案
因为同伴编写的超声波避障程序和我的程序架构不一样,改起来比较麻烦。特别是由于超声波避障以及红外循迹均用到了PWM波,因此可以用一个中断来产生PWM波,但是后来由于这样出了bug,因此我们将超声波避障的中断与红外循迹的中断分开来,分别用timer0和timer1来产生不同的PWM波。在模式切换的时候开启要用的那个定时器,关闭不用的那个定时器,就可以达到预期的效果。
8 项目总结与建议
本次智能防盗小车设计,是将一些简单的模电,数电知识应用到实际的成果。
这个设计更像是一门将不同模块组合到一起的实验,在淘宝或是其他的网站上大多有一些现成的模块,如红外,超声波,蓝牙等模块,甚至也有很多成品。但是自己动手可以得到更多的锻炼。这次设计更重要的是锻炼我们的组合能力。很多51单片机编程的知识,包括各种模块都是将现成的I/O口加以调用即可,但是却并没有涉及到自己设计电路,焊板子之类的工作,这既节省了我们的时间,也减少了我们的成本。
由于我们小组走的方向是比较明确而清晰的,没有花太多时间在物理建模上。我负责了红外模块的编写,程序的整合以及最后加入了手动控制这一选项。由于模块的功能比较清晰,我们并没有遇到诸如此类的棘手的物理问题:要用什么方式夹起东西?在什么条件下做什么?现在回头看来,功能不是很强大,但也遇到了一些包括供电冲突,程序整合,中断冲突,怎么引入反馈之类的一些问题。因此也感到有了很多收获。
其实很多DIY的东西在网上都已经被人做过了,想再找出一些有创意的东西是十分困难的。包括我们做的各种模块,在网上大多有现成的代码。但是我们坚持自己编写这些代码,希望能够在编写代码的过程中能够收获一些基本的知识,锻炼一些调整bug的基本能力。虽然最后做出来的成果和一开始设想的还是有比较大的差距,但还是很欣慰自己能够做出来一个能够基本实现功能的小车。
参考文献
[1] 郭天祥.51单片机C语言教程——入门、提高、开发、拓展全攻略.电子工业出版社,2009.