仓库保安机器人

2020-03-242.2万
精华项目
AI 快速预览详细 收起
这个项目是一个12岁少年制作的仓库保安机器人,结合了Arduino和乐高EV3。它通过火焰、毒气和湿度传感器检测仓库安全,并通过声光报警、喷水和风扇等措施保障仓库安全。该项目展示了Arduino与EV3之间的互联设计,Arduino负责检测及报警,EV3负责驱动和避障。通过舵机和颜色传感器实现两个系统之间的通信。此外,还提出了增加巡线功能、人工智能、人体感应和人脸识别等拓展设想。
我今年12岁,第一次发项目帖,只是自学了2个月,大佬们勿喷。2019年科技节,我做了我的第一个Arduino项目:仓库保安机器人设计初衷:天津“812”瑞海危险品仓库**事故,造成165人遇难,直接经济损失人民币68亿元。对此我一直深感痛心。在自学EV3和C语言后,我制作了“仓库安保机器人”,它采用了EV3和Arduino互联的设计,可以从多方面检测仓库的安全性,并做出相应措施。
仓库保安机器人图1仓库保安机器人图2
演示过程:首先,演示它的行走和避障功能。正常情况下,它沿直线行走。当遇到障碍物时,他会转弯。超声波传感器和触动传感器都有这个功能。接着,动态演示它的灭火功能。当他检测到火焰时,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的电机与传感器的。
仓库保安机器人图3
但某宝上要卖90元,而且仅控制两个电机就要占用一排数字口,用UNO的我就没有IO接口了。
但换个角度想想,arduino向EV3传输的只是“有紧急情况”或“没有紧急情况”,又看看EV3套装里,还剩下一个颜色传感器。
它可以检测反射光强度,于是我在舵机上绑了一个白色色块。
当没有紧急情况时,色块置于颜色传感器下面,反射度约为75%。
当有紧急情况时,舵机把色块转到旁边去,反射度约为20%。
仓库保安机器人图4

没有紧急情况
仓库保安机器人图5
紧急情况
(我的机子已经被我弟给拆了,这是截图来的,不太清晰)

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

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

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

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

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


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

[mw_shl_code=applescript,false]#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);
  }
}[/mw_shl_code]

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

Arduino 接收端的代码:
[mw_shl_code=applescript,false]void setup()
{
Serial.begin(38400);
}
void loop()
{
char val;
val=Serial.read();
if(val!=-1)
{
   Serial.print(val);
}
}[/mw_shl_code]
这块arduino要用USB接在电脑上,通过串口查看数据。

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


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

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

谢谢大家,请多多指正!
下载附件仓库保安机器人EV3程序.rar下载附件仓库保安机器人创作分享与简介.rar下载附件仓库安保机器人图片与程序.rar




创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(10)
DFS1w2cb8o8
DFS1w2cb8o8

交个朋友,我11了
DFS1w2cb8o8
DFS1w2cb8o8回复teu
对,我认识你
teu
teu回复DFS1w2cb8o8
真的?我好像认识你
20060606
20060606
图片有些不清晰。
王佩奇儿
王佩奇儿
作者
回复20060606
有几个图片是从视频里截图的,有一点模糊
(哈哈,你是盯上我评论了吗)
王佩奇儿
王佩奇儿
作者
仓库安保机器人
帅猫
帅猫
交个朋友,我13了
王佩奇儿
王佩奇儿
作者
回复帅猫
好呀,原来社区里这么多创客高手呀
DFrJ5KYVQaH
DFrJ5KYVQaH
真好,自叹不如啊
这个人很菜
这个人很菜
青少年都在社区里了

王佩奇儿
王佩奇儿
作者
回复这个人很菜
给社区注入新的活力
白吃白给
白吃白给
巧了,我也12岁,交个朋友
这个人很菜
这个人很菜回复白吃白给
真巧,我13岁
白吃白给
白吃白给
要不是我没钱,我也可以……
王佩奇儿
王佩奇儿
作者
回复白吃白给
总共花了300元
rzyzzxw
rzyzzxw
项目很棒啊,看到一句--还是要买大牌的呀!
王佩奇儿
王佩奇儿
作者
回复rzyzzxw
必须顶一下DFRobot的质量,杠杠滴
Forgotten
Forgotten
通讯方式结合很棒,简单又实用,给人一种新的思路
王佩奇儿
王佩奇儿
作者
回复Forgotten
谢谢,其实也是没办法的办法。
- 没有更多了 -