查看: 10921|回复: 43

创客的新玩物:简单易用的视觉传感器MU!

[复制链接]
  • TA的每日心情
    奋斗
    2019-6-20 09:44
  • 签到天数: 26 天

    [LV.4]偶尔看看III

    发表于 2016-12-9 18:23 | 显示全部楼层 |阅读模式
    MU的介绍
    小MU是一款小巧的嵌入式视觉传感器,内置了摄像头和处理器采集并处理图像信息。小MU能够识别人体、人脸、各种颜色的球、线等内容,并采用红外、USB等多种连接方式快速适配到各类玩具或机器人中,给开发者们提供足够的创造空间和个性化定制内容。
    IMG_8295.jpg
        现在就用MU配合arduino做一款独特的无人坦克,体会一下图像识别的魅力吧。

    所用材料:
    1.视觉传感器MU
    2.Arduino uno开发板
    3.电机驱动板L298P(或L298N等)
    4.履带车底盘(来自某宝)
    5.4节5号电池盒
    6.YL-46降压模块

    硬件搭建
        我购买了现成的坦克底盘套件,可以直接使用现成的铜柱连接亚克力板组成一个稳固的坦克底盘,其重量和霸气程度在各种底盘套件中数一数二。和当然用热门的香蕉电机底盘替代也可以。
        L298P电机驱动板是直接插在arduino板上,默认使用数字口4、5、6、7口作为两路电机的方向和PWM输出口。直接使用杜邦线连接电机驱动板和底盘电机。底盘电机带编码器,但由于我们采用视觉反馈来调整坦克的位置,暂时不用连编码器测速,只连红黑线供电即可。
    IMG_8293.jpg
    用6V电池盒同时对arduino板和电机驱动板供电,连arduino时要并接一块降压板将供电电压转成5V。此时注意L298P模块背后有两个焊点默认是连着的,需要用电烙铁断开使电机驱动板采用自身的VIN供电。在买电机驱动板时店家的页面就有说明。
    IMG_8296.jpg
    用铜柱和双面胶等方式将这些部件粘连在一起,坦克硬件搭建部分就基本完成了。
    IMG_8291.jpg

    软件调试
    下面是我的坦克用的程序,用ArduinoIDE调试小车很多人应该很熟悉了,这里具体来说一下MU和arduino的配合。MU检测到了物体会向外输出一段数据报文,为了方便arduino使用,MU的官网和github提供了现成的arduino库。将Vision_Sensor库放入arduino的libraries文件夹下即可。examples文件夹下有采集数据的示例。

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

    #include "VisionSensor.h"
    
    int E1=5;    //PWM1 pin
    int M1=4;    //motor1 pin
    int E2=6;    //motor2 pin
    int M2=7;    //PWM2 pin
    int Val=200;  //motor speed value
    
    VisionSensor MU(Serial, 115200);   // define the object detection
    
    void setup()
    {
      MU.begin();   //initialize
      pinMode(M1, OUTPUT);
      pinMode(M2, OUTPUT);
    }
    
    void loop()
    {
      MU.search();   
    
      if (MU.valid()>0)  
      {
        if (MU.detected() == true)
        {
          if (MU.getWidth()>32){
              car_back();
          }
          else if (MU.getWidth()<28){
              car_forward();
          }
    
          if (MU.getX()<40){
              car_right();
            }
          else if (MU.getX()>60){
              car_left();
            }
    
          delay(50);      
          car_stop();  
        }
    
        else
          Serial.println("No object detected");     
      }
      else
        Serial.println("No data or too many detected");
    
    }
    
    void car_forward()
    {
          digitalWrite(M1,HIGH);         
          analogWrite(E1, Val);   
          digitalWrite(M2,HIGH);
          analogWrite(E2, Val);   
    }
    
    void car_back()
    {
         digitalWrite(M1,LOW);     
         analogWrite(E1, Val);   
         digitalWrite(M2,LOW);
         analogWrite(E2, Val);   
    }
    
    void car_left()
    {
         digitalWrite(M1,HIGH);     
         analogWrite(E1, Val);
         digitalWrite(M2,LOW);
         analogWrite(E2, Val);  
    }
    
    void car_right()
    {
         digitalWrite(M1,LOW);     
         analogWrite(E1, Val);   
         digitalWrite(M2,HIGH);
         analogWrite(E2, Val);  
    }
    
    void car_stop()
    {
         digitalWrite(M1,LOW);     
         analogWrite(E1, 0);   
         digitalWrite(M2,LOW);
         analogWrite(E2, 0);
    }  
    

    MU自身带有USB转串口模块,可通过USB线连接电脑,采用CMD指令控制,类似于蓝牙模块的AT指令。Docs文件夹下有各种command的中英文说明。使用MU的模式切换键切换到setup mode,连接电脑,通过CMD切换识别模式。目前官方支持非特定的球、线、人体、人脸特征,未来还有跟多玩法加入。


    关于图像识别的数据
        手机自拍时的人脸识别会得到一个人脸的白色框。同样的原理,MU识别到物体时会返回当前物体的X、Y坐标和宽度、长度信息,范围为0~100之间。当然不会使用这些数据也没有关系,已经使用库将数据转换成get函数,详见example示例。

    图像检测数据报文格式:
    | 0xFF | 0xFE | Detected | Score H8 | Score L8 | X | Y | Width | Height |

    0xFF:报文头字节1
    0xFE:报文头字节2
    Detected:是否检测到目标物体,1:检测到,0:没有检测到
    Score H8:检测结果得分值的高8位
    Score L8:检测结果得分值的低8位
    X:目标中心X坐标系参考值,0~100范围内的整数
    Y:目标中心Y坐标系参考值,0~100范围内的整数
    Width:目标宽度参考值,0~100范围内的整数
    Height:目标高度参考值,0~100范围内的整数

    MU与arduino的连接
        MU向外串口传输有两种方式,一种是与电脑连接的USB转串口,在设置为vision sensor mode时打开;另一种是UART串口直接通过TX RX引脚传输。两种传输可通过command指令设置。具体可查看arduino库自带的文档。在电脑上设置成USART输出报文,就可以用引脚向arduino板发送数据了。为了使arduino还可以向电脑发送数据,只连两根线TX和GND就可以用MU来控制arduino了。
    VisionSensor_IO_shell.jpg
    IMG_8283_看图王.jpg

    试玩一下
        首先采用的是检测球模式,用网球做试验。根据图像检测到的球宽度大致判定距离,球的中心位置来确定坦克转动方向。这样就可以实现坦克一直跟着网球,并保持一定的距离。



        切换成人脸识别模式,同样处理,更改一下参数,上下调整摄像头的角度,就变成了一个跟人脸的坦克。当然MU还能够直连舵机成为一个跟踪云台,或者通过内置红外控制乐高玩具等。更多玩法请关注MU的官方微博、微信公众号MU4Toys和官网www.morpx.com


    更多MU的介绍和购买链接在此
    http://mai.morpx.com/

    最后来一张霸气的成品效果图!
    IMG_8284.jpg


    VisionSensor库和文档.zip (52.91 KB, 下载次数: 138)
  • TA的每日心情
    奋斗
    2019-1-2 20:26
  • 签到天数: 17 天

    [LV.4]偶尔看看III

    发表于 2016-12-9 18:24 | 显示全部楼层
    挺神奇的小东西,关注一下
  • TA的每日心情
    奋斗
    2016-12-1 20:35
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    发表于 2016-12-9 19:03 | 显示全部楼层
    表关注,用的什么处理器?
  • TA的每日心情
    无聊
    2018-11-20 18:28
  • 签到天数: 153 天

    [LV.7]常住居民III

    发表于 2016-12-9 19:07 | 显示全部楼层
    做的好棒,希望社区可以搞活动送一个
    打赏作者鼓励一下!
  • TA的每日心情
    奋斗
    2018-12-14 14:19
  • 签到天数: 30 天

    [LV.5]常住居民I

    发表于 2016-12-9 19:08 来自手机 | 显示全部楼层
    感觉很高级的样子0.0,多少钱?
  • TA的每日心情
    开心
    2019-6-6 16:09
  • 签到天数: 406 天

    [LV.9]以坛为家II

    发表于 2016-12-9 19:21 | 显示全部楼层
    对这个传感器比较感兴趣
    打赏,是超越赞的一种表达
  • TA的每日心情
    慵懒
    2018-8-31 10:36
  • 签到天数: 36 天

    [LV.5]常住居民I

    发表于 2016-12-9 20:45 | 显示全部楼层
    控制原理是啥
  • TA的每日心情
    奋斗
    2019-7-12 18:42
  • 签到天数: 48 天

    [LV.5]常住居民I

    发表于 2016-12-9 21:03 | 显示全部楼层
    期待更多应用
    如果你觉得以上内容帮到了你,你可以打赏支持作者
  • TA的每日心情
    开心
    2016-10-20 21:20
  • 签到天数: 8 天

    [LV.3]偶尔看看II

    发表于 2016-12-9 21:04 来自手机 | 显示全部楼层
    这个感觉好棒啊
    打赏作者鼓励一下!
  • TA的每日心情
    开心
    2019-9-16 10:36
  • 签到天数: 678 天

    [LV.9]以坛为家II

    发表于 2016-12-9 21:31 | 显示全部楼层
    看了说明书,好像只能在电脑上切换识别模式,请问一下能不能在Arduino程序中切换识别模式?
    打赏作者鼓励一下!
    您需要登录后才可以回帖 登录 | 立即注册  

    本版积分规则

    热门推荐

    同时读取两个传感器的数据,并上传至云端存储
    同时读取两个传感器的数据
    一个示例,仅供参考,可以自己更换传感器,或者连接更多传感器。 开发板: Wifiduin
    求助帖 新手
    求助帖 新手
    如图,第一个LED灯驱动失败,求原因… 板子是UNO R3,LED灯接在13与GND上面。
    【Arduino】108种传感器系列实验(93)---CSR8350蓝牙音乐模块
    【Arduino】108种传感器系
    37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是
    光线跟踪钛合金猫眼
    光线跟踪钛合金猫眼
    +视频 https://www.bilibili.com/video/av67732712/ +原理 ---光线跟踪 建立极
    "高精度"米家电子温湿度计Pro拆解
    "高精度"米家电子温湿度计
    为了了解哪种温湿度传感器更好,我搞了一个米家电子温湿度计Pro(阿蒙同志赠送) 价格
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   ( 蜀ICP备14017632号-3 )
    快速回复 返回顶部 返回列表