[项目]仓库保安机器人 精华

查看: 443|回复: 17

[项目] 仓库保安机器人

[复制链接]
我今年12岁,第一次发项目帖,只是自学了2个月,大佬们勿喷。2019年科技节,我做了我的第一个Arduino项目:仓库保安机器人设计初衷:天津“812”瑞海危险品仓库**事故,造成165人遇难,直接经济损失人民币68亿元。对此我一直深感痛心。在自学EV3和C语言后,我制作了“仓库安保机器人”,它采用了EV3和Arduino互联的设计,可以从多方面检测仓库的安全性,并做出相应措施。
仓库安保机器人(旧).jpg 《仓库安保机器人》新1.jpg
演示过程:首先,演示它的行走和避障功能。正常情况下,它沿直线行走。当遇到障碍物时,他会转弯。超声波传感器和触动传感器都有这个功能。接着,动态演示它的灭火功能。当他检测到火焰时,Arduino和VE3联动,驱动声光报警,并且喷水,直至警报解除。然后,静态演示它的防毒气功能。我用可燃气体对准传感器。他就会驱动声光报警,开启风扇,降低毒气浓度。最后,演示它的防潮功能。我们用水滴到传感器板上,代表仓库里的湿度升高。它驱动声光报警,开启风扇,提高增发速率。有警报时,还会通过蓝牙模块传输出去。

主要部件:它由EV3和Arduino搭建而成,EV3方面用了一个EV3程序块,2个大型电机,1个超声波传感器,1个颜色传感器,2个触动传感器。Arduino方面用了2个主板,1个舵机,1个火焰传感器,1个一氧化碳传感器,1个雨滴传感器,2个蓝牙模块和数个配件组成。

工作原理:
它采用了EV3和Arduino互联的设计,EV3负责驱动和避障,Arduino负责检测及报警,它会收集分析火焰、毒气和水滴传感器回传的数据,通过声光报警、扇风或喷水,第一时间保证仓库的安全。

严格来说,它是一个arduino与乐高EV3合成的项目。我以前做了两个乐高项目,感觉乐高的传感器太少,于是买了一套Arduino套件。Arduino产品线弥补了乐高产品电子模块的不足,并且成本低廉易于获取。但Arduino再强大,也只是一块控制板,虽可快速实现逻辑编程及设备控制,却无法实现机械传动及结构搭建,无法做出完整的产品,而这正是乐高的长处。
大家可以看到,机器人的移动基座用的是EV3,而检测报警系统用的是Arduino。
那,这两个系统怎么互联呢?
搜了一下,Bricktronics是可以以arduino为主控,控制EV3的电机与传感器的。
Bricktronics.jpeg
但某宝上要卖90元,而且仅控制两个电机就要占用一排数字口,用UNO的我就没有IO接口了。
但换个角度想想,arduino向EV3传输的只是“有紧急情况”或“没有紧急情况”,又看看EV3套装里,还剩下一个颜色传感器。
它可以检测反射光强度,于是我在舵机上绑了一个白色色块。
当没有紧急情况时,色块置于颜色传感器下面,反射度约为75%。
当有紧急情况时,舵机把色块转到旁边去,反射度约为20%。
交互部件(正常).png

没有紧急情况
交互部件(事故).png
紧急情况
(我的机子已经被我弟给拆了,这是截图来的,不太清晰)

所以,剩下的计算都可以在EV3中完成。

创新要点:结合EV3和Arduino的优点,探索两个体系间的功能对接,实现工作转换;自学语言编写程序,实现机器人的多功能。

特需说明:仓库需求一般为防潮,但防潮功能不便演示,所以本作品用水滴传感器代替湿度传感器。
要注意的是,两块蓝牙模块还要进行AT配置,将移动机器人上的作为主机,连接电脑的是从机。

制作过程因为我制作中没有拍照,只能文字表达了。
1、用EV3机器人45544套装搭建出,增加超声波模块;
超声波车体.JPG
2、用梁加高,放置Arduino主板;
3、在超声波传感器上方安装火焰传感器;
4、在主板右边安装MQ-2气敏传感器;
5、在气敏传感器下面安装舵机和颜色传感器;
6、在车体左右两边安装触碰传感器;
7、在车体左边安装水分传感器;
8、在主板前方用2个长方形梁加长;
9、在第一块梁上安装红绿LED灯和RGB灯;
10、在第二块梁上安装风扇和蜂鸣器;
11、在主板后方安装电池仓;
12、在水分传感器后方安装水箱;
13、在第二块梁左边连接水管;
14、在主板旁边装上L298N微型驱动板;
15、整理线路,加固各个连接点。 仓库安保机器人编辑.jpg

制作注意点
1、水箱我用的是一个塑料罐,里面装上水泵在上面打孔,连接出水管,容量320ml,但使用时不能装满,不然车体会侧翻还要打一个小进气孔,保持内外压平衡。
水箱水泵.JPG
2、我起先的雨滴传感器是这样的,有检测板和转接板2块:
雨滴传感器.jpg
买了3个,但用不久都进水了,估计是检测板质地比较疏松,水渗进去了。
然后又买了DF的水分传感器,非常好用,只是要注意,水不能滴到PH2.0接口上。
水分传感器.jpg
所以,还是要买大牌的呀!
3、因为我没有3D打印机,和一些铜柱尼龙柱等固定件,所以这个项目中的所有连接点我都用热熔胶。这样会使稳定性有所下降。
花了我30根胶棒啊.......


程序部分
这个机器人的代码有3部分。Arduino发射基础车体部分:

[AppleScript] 纯文本查看 复制代码
#include <Servo.h>
Servo myservo;
#define co A1
#define rain A2
#define fire A0
#define servo 3
#define r A3
#define g A4
#define b A5
#define buzzer 2
#define fan1 6
#define fan2 7
#define bump1 8
#define bump2 9
#define rl 5
#define gl 4
void setup() 
{
    Serial.begin(9600);
    pinMode(co,INPUT);
    pinMode(rain,INPUT);
    pinMode(fire,INPUT);
    myservo.attach(servo);
    pinMode(r,OUTPUT);
    pinMode(g,OUTPUT);
    pinMode(b,OUTPUT);
    pinMode(5,OUTPUT);
    pinMode(4,OUTPUT);
    pinMode(buzzer,OUTPUT);
    pinMode(fan1,OUTPUT);
    pinMode(fan2,OUTPUT);
    pinMode(bump1,OUTPUT);
    pinMode(bump2,OUTPUT);
}
    int i,m,s=0,v;
    void soundbuzzer()
    {
        digitalWrite(buzzer,HIGH);
        delay(2000);
        digitalWrite(buzzer,LOW);
    }
    void blinkyellow()
    {
         analogWrite(r,255);
         analogWrite(g,191);
         delay(500);
         analogWrite(r,0);
         analogWrite(g,0);
    }
    void blinkgreen()
    {
         analogWrite(g,255);
         delay(500);
         analogWrite(g,0);
    }
    void blinkpurpul()
    {
         analogWrite(r,191);
         analogWrite(b,255);
         delay(500);
         analogWrite(r,0);
         analogWrite(b,0);
         
    }
    void Error()
    {
        digitalWrite(rl,HIGH);
        delay(2500);
        digitalWrite(rl,LOW);
    }
    void safe()
    {
        digitalWrite(gl,HIGH);
        delay(500);
        digitalWrite(gl,LOW);
        delay(500);
        digitalWrite(gl,HIGH);
        delay(1500);
        digitalWrite(gl,LOW);
    }
    void wind()
    {
        digitalWrite(fan1,HIGH);
        digitalWrite(fan2,LOW);
        delay(3750);
        digitalWrite(fan1,LOW);
        digitalWrite(fan2,LOW);
    }
    void water()
    {
        digitalWrite(bump1,HIGH);
        digitalWrite(bump2,LOW);
        delay(4000);
        digitalWrite(bump1,LOW);
        digitalWrite(bump2,LOW);
    }
void loop()
{
  if(analogRead(fire)<45)
  {
    Serial.print("Error:Fire/");
    Serial.println(analogRead(fire));
    myservo.write(-90);
    water();
    blinkyellow();
    Error();
    soundbuzzer();
    m=1;
    s+=1;
  }
  if(m=1&&analogRead(fire)>=50)
  {
      m=0;
      myservo.write(90);
  } 
  if(analogRead(co)>600)
  {
    Serial.print("Error:Co/");
    Serial.println(analogRead(co));
    myservo.write(-90);
    wind();
    blinkpurpul();
    Error();
    soundbuzzer();
    m=1;
    s+=1;
  }
  if(m=1&&analogRead(co)<350)
  {
      m=0;
      myservo.write(90);
  }
    if(analogRead(rain)>=870)
  {
    Serial.print("Error:Rain/");
    Serial.println(analogRead(rain));
    myservo.write(-90);
    wind();
    blinkgreen();
    Error();
    soundbuzzer();
    m=1;
    s+=1;
  }
  if(m=1&&analogRead(rain)<200)
  {
      m=0;
      myservo.write(90);
  }
  v=Serial.read();
  if (v!=-1)
  {
    if(v=='?')
    {
      if(m==1) Serial.println("Error;");  
      else
      {
          Serial.println("Safe;");
          safe();
      }
    }
    if(v=='x'||v=='X') Serial.println(s);
  }
}


里面需要注意的是,我的传感器都连接到模拟端口,敏感阈值还是我自己测出来的,可能有偏差
因为我手上没有LCD,只能用RGB灯来代替:黄色是着火,紫色是一氧化碳或丁烷,绿色是漏水。
水泵和风扇接的是L298N,如果转向反了,调换一下两根线的位置。

Arduino 接收端的代码:
[AppleScript] 纯文本查看 复制代码
void setup()
{
 Serial.begin(38400);
}
void loop()
{
 char val;
 val=Serial.read();
 if(val!=-1)
 {
   Serial.print(val);
 }
}

这块arduino要用USB接在电脑上,通过串口查看数据。

EV3程序,我用的是官方的图形化编程,上附件。


拓展设想:增加巡线功能,设计一条固定的线路,最短又能够探测到所有的隐患点,机器人沿这条路线巡查最经济又最高效。还可以结合人工智能,在机器人第一次全面探测完仓库地形后自动生成前面描述的路线。另外增加人体感应乃至人脸识别,可以增加防盗功能。加上I2C LCD屏幕,使观察数据更加简便。加上Micro SD模块,实时记录事故情况。还可以加上物联网而不是简单的蓝牙传输,这样更直观。用miniQ小车车体代替EV3,实现Arduino的全控制。

最后是获得了温州市创客大赛一等奖。
最后还有几个资料。

谢谢大家,请多多指正!
仓库保安机器人EV3程序.rar (6.84 KB, 下载次数: 13)

Forgotten  版主

发表于 2020-3-24 09:17:22

通讯方式结合很棒,简单又实用,给人一种新的思路
回复

使用道具 举报

wangyirun  初级技匠
 楼主|

发表于 2020-3-24 09:47:09

Forgotten 发表于 2020-3-24 09:17
通讯方式结合很棒,简单又实用,给人一种新的思路

谢谢,其实也是没办法的办法。
回复

使用道具 举报

rzyzzxw  版主

发表于 2020-3-24 10:03:25

项目很棒啊,看到一句--还是要买大牌的呀!
回复

使用道具 举报

白吃白给  初级技师 来自手机

发表于 2020-3-24 10:07:05

wangyirun 发表于 2020-3-24 09:02
我今年12岁,第一次发项目帖,只是自学了2个月,大佬们勿喷。2019年科技节,我做了我的第一个Arduino项目: ...

要不是我没钱,我也可以……
回复

使用道具 举报

wangyirun  初级技匠
 楼主|

发表于 2020-3-24 10:13:53

白吃白给 发表于 2020-3-24 10:07
要不是我没钱,我也可以……

总共花了300元
回复

使用道具 举报

白吃白给  初级技师 来自手机

发表于 2020-3-24 10:14:36

wangyirun 发表于 2020-3-24 09:02
我今年12岁,第一次发项目帖,只是自学了2个月,大佬们勿喷。2019年科技节,我做了我的第一个Arduino项目: ...

巧了,我也12岁,交个朋友
回复

使用道具 举报

Vibranium  高级技师

发表于 2020-3-24 10:16:31

白吃白给 发表于 2020-3-24 02:14
巧了,我也12岁,交个朋友

真巧,我13岁
回复

使用道具 举报

Vibranium  高级技师

发表于 2020-3-24 10:19:49

青少年都在社区里了 7A55D2E0-78B7-41AC-AFDB-34DF6B1C259D.png
回复

使用道具 举报

wangyirun  初级技匠
 楼主|

发表于 2020-3-24 10:44:10

rzyzzxw 发表于 2020-3-24 10:03
项目很棒啊,看到一句--还是要买大牌的呀!

必须顶一下DFRobot的质量,杠杠滴
回复

使用道具 举报

wangyirun  初级技匠
 楼主|

发表于 2020-3-24 10:47:17

Vibranium 发表于 2020-3-24 10:19
青少年都在社区里了

给社区注入新的活力
回复

使用道具 举报

DFrJ5KYVQaH  中级技匠

发表于 2020-3-24 15:46:14

真好,自叹不如啊
回复

使用道具 举报

帅猫  中级技师

发表于 2020-3-24 16:10:35

交个朋友,我13了
回复

使用道具 举报

wangyirun  初级技匠
 楼主|

发表于 2020-3-24 16:40:26

帅猫 发表于 2020-3-24 16:10
交个朋友,我13了

好呀,原来社区里这么多创客高手呀
回复

使用道具 举报

wangyirun  初级技匠
 楼主|

发表于 2020-4-30 20:23:47

仓库安保机器人
回复

使用道具 举报

20060606  高级技匠

发表于 2020-8-4 08:54:57

图片有些不清晰。
回复

使用道具 举报

wangyirun  初级技匠
 楼主|

发表于 2020-8-6 14:03:28

20060606 发表于 2020-8-4 08:54
图片有些不清晰。

有几个图片是从视频里截图的,有一点模糊
(哈哈,你是盯上我评论了吗)
回复

使用道具 举报

DFS1w2cb8o8  中级技师

发表于 2020-8-6 21:16:24


交个朋友,我11了
回复

使用道具 举报

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

本版积分规则

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

硬件清单

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

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

mail