查看: 2742|回复: 7

MU视觉传感器试用—踢球小车

[复制链接]
  • TA的每日心情
    开心
    2019-7-22 09:19
  • 签到天数: 663 天

    [LV.9]以坛为家II

    发表于 2017-3-4 09:52 | 显示全部楼层 |阅读模式
    本帖最后由 vickywong 于 2017-3-10 18:47 编辑

      过年的时候收到MU视觉传感器,先调试了一下,在等固件更新耽误了一些时间,开学前做好了踢球小车,开学后作业巨多,到现在才发帖子。
    一、MU的调试
    MU可以直接从USB接收和发送数据,传出一行行报文,通过指令来更改不同识别模式(如球、线、人体)或开关一些功能(如舵机、串口输出报文)。具体功能就另行参考说明书吧。
    但是,由于报文不能直观地显示MU所看到的东西,我做了一个Processing程序来显示出MU具体所看到的东西。
    MU和Processing实在是太相配了!一个擅长看图形发串口数据,一个擅长收串口数据显示图形。
    MU-Processing.jpg
    MU和Processing的连接很简单,用MU自带的USB线插到电脑上就可以。Processing程序如下:

    kittenblock中小学创客名师推荐的图形化编程软件

    //MU视觉传感器互动
    import processing.serial.*;
    Serial port;
    
    short head;
    short detected;
    short scoreh8;
    short scorel8;
    short x;
    short y;
    short Width;
    short Height;
    
    
    void setup()
    {
      size(1000,1000);
      String Port = Serial.list()[0];
      port = new Serial(this,Port,115200);
      background(255);
      fill(0);
    }
    void draw()
    {
      head = (short)port.read();
      head = (short)port.read();
      detected = (short)port.read();
      scoreh8 = (short)port.read();
      scorel8 = (short)port.read();
      x = (short)port.read();
      y = (short)port.read();
      Width = (short)port.read();
      Height = (short)port.read();
    //  print(scoreh8);  print("  ");  println(scorel8);
      
    //  if(scoreh8 <=3)
    //    detected = 0;
      
      if(detected == 1)
        ellipse(x*10,y*10,Width*10,Height*10);
      else// if(detected == 0)
        background(255);
    }

    这样,就能更好的根据识别到的物体的位置和大小了来写程序了。

    二、踢球小车    踢球小车本来想用Altar小车改装的,但发现Altar小车底板太低,击球的电磁阀装不上,就用原来一个巡线小车的底板改装一下,只留下主控板、L298N,然后加上MU和电磁阀击球器就好了,小车前边用铁丝弯一下为了能笼住乒乓球的。
    最费工夫的是把MU固定到小车上,MU要垂直放才行,没有弯曲件跟小车底盘固定,找到了能用的东西MU的螺丝孔又太小。最后找了一小块亚克力板在炉子上烤了一下弯过来,再打孔,跟MU固定。
    IMG_20170304_084314.jpg
    电磁阀击球器就是下面这货,是去北师大参观自动化实验室时老师送我的,据说他们用Arduino控制一排这货,敲出了《大河之舞》!这个接线要用三极管,电压是12V的,3个电池就能带起来,这个电压UNO板也能用。(开始三极管接反了,电磁阀就是不动,以为电压不够,加到4个电池,UNO板就烧了,第一次烧板子L)

    IMG_20170304_083621.jpg
    电磁阀接线.jpg
    下面是小车的程序,视频忘记录了。

    kittenblock中小学创客名师推荐的图形化编程软件

    //MU Car
    #include <VisionSensor.h>
    VisionSensor MU(Serial, 115200);
    short leftA = 3;
    short leftB = 4;
    short enA = 9;
    short rightA = 8;
    short rightB = 7;
    short enB = 5;
    short hitpin = 10;
    
    int detected;
    int x;
    int y;
    int width;
    
    void getmessag();
    void moving(int left, int right);
    void gostop();
    void hitball();
    
    void setup() {
      MU.begin();
    
      pinMode(leftA,OUTPUT);
      pinMode(leftB,OUTPUT);
      pinMode(enA,OUTPUT);
      pinMode(rightA,OUTPUT);
      pinMode(rightB,OUTPUT);
      pinMode(hitpin,OUTPUT);
    
    }
    
    void loop() {
      getmessag();
      if(MU.valid() > 0){
        if(detected >= 1){
          if(x >= 40 && x <= 60){
            moving(70,70);
          }
          else if(x < 40 && x >= 1){
           moving(50,70);
          }
          else if(x > 60 && x <= 99){
            moving(70,50);
          }
        
          if(y >= 70 && width > 40){
          delay(800);
          gostop();
          hitball();
          delay(800);
         }
       }
        else
          gostop();
        }
    }
    void getmessag(){
      MU.search();
      detected = MU.detected();
      if(detected == 1){
        x = MU.getX();
        y = MU.getY();
        width = MU.getWidth();
      }
    }
    
    void moving(int left, int right){
      analogWrite(enA,left);
      analogWrite(enB,right);
      digitalWrite(leftA,HIGH);
      digitalWrite(leftB,LOW);
      digitalWrite(rightA,HIGH);
      digitalWrite(rightB,LOW);
    }
    void gostop(){
      analogWrite(enA,0);
      analogWrite(enB,0);
      digitalWrite(leftA,LOW);
      digitalWrite(leftB,LOW);
      digitalWrite(rightA,LOW);
      digitalWrite(rightB,LOW);
    }
    void hitball(){
      digitalWrite(hitpin,HIGH);
      delay(50);
      digitalWrite(hitpin,LOW);
    }
    三、问题
    这个MU有点近视眼,小球远了就看不见了,只有把球放到它眼前才会挪过去踢。想让它追着球跑的想法没实现。
    打赏作者鼓励一下!

    1人打赏

  • TA的每日心情
    开心
    2017-1-25 08:32
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    发表于 2017-3-14 14:54 | 显示全部楼层
    Processing配MU大赞!那个直流电磁铁的用法也值得学习!
  • TA的每日心情
    难过
    2017-3-4 19:22
  • 签到天数: 8 天

    [LV.3]偶尔看看II

    发表于 2017-3-4 18:34 | 显示全部楼层
    processing代码怎么运行,需要连接mu吗?
  • TA的每日心情
    开心
    2019-7-22 09:19
  • 签到天数: 663 天

    [LV.9]以坛为家II

     楼主| 发表于 2017-3-5 17:49 | 显示全部楼层
    楼上大神 发表于 2017-3-4 18:34
    processing代码怎么运行,需要连接mu吗?

    是的,直接把USB接上就行
    打赏作者鼓励一下!

    该用户从未签到

    发表于 2017-3-14 21:53 | 显示全部楼层
    打赏作者鼓励一下!
  • TA的每日心情
    开心
    2016-12-12 14:51
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2017-3-14 23:02 | 显示全部楼层
    老哥,,那个MU哪里可以买到啊?有没有网址
  • TA的每日心情
    开心
    2016-12-12 14:51
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2017-3-14 23:03 | 显示全部楼层
    老哥,,那个MU哪里可以买到啊?有没有网址?

  • TA的每日心情
    开心
    2019-7-22 09:19
  • 签到天数: 663 天

    [LV.9]以坛为家II

     楼主| 发表于 2017-3-15 16:37 | 显示全部楼层
    本帖最后由 vickywong 于 2017-3-15 16:41 编辑
    曦yyh 发表于 2017-3-14 23:03
    老哥,,那个MU哪里可以买到啊?有没有网址?

    http://mai.morpx.com/goods.php?id=149
    http://www.morpx.com/
    打赏作者鼓励一下!
    您需要登录后才可以回帖 登录 | 立即注册  

    本版积分规则

    热门推荐

    [Arduino物联网开发实战2]数据反馈
    [Arduino物联网开发实战2]
    [md]上一篇:(https://www.arduino.cn/thread-83177-1-1.html) 除了控制设备外,blin
    OLED 128*64自制可达10000000个选项的菜单(已更新)
    OLED 128*64自制可达10000
    OLED 128*64自制可达10000000个选项的菜单 温馨提示: 建议占个楼再食用本帖子
    新手求帮助,别人给的一个工程,打开编译报错
    新手求帮助,别人给的一个
    别人给的一个esp8266的工程,编译时候显示缺失很多.h文件,我从github和管理库里面下
    RPG游戏 无人世界
    RPG游戏 无人世界
    操作:方向键移动,a键确认 b键打开符文菜单 游戏流程大约半小时 视频攻略:ht
    求求求你 救救孩子吧
    求求求你 救救孩子吧
    这个bug是什么问题
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   ( 蜀ICP备14017632号-3 )
    快速回复 返回顶部 返回列表