基于小MU视觉的桌面电子宠物-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 4813|回复: 1

[报名] 基于小MU视觉的桌面电子宠物

[复制链接]
发表于 2018-11-20 20:50 | 显示全部楼层 |阅读模式
本帖最后由 yanghaoxin314 于 2019-5-14 18:14 编辑

基于小MU视觉的桌面电子宠物
这次有幸参加了第六届开源硬件开发大赛,看了一下可以申请的免费硬件,临时起意决定做一个简单的桌面电子小宠物的雏形,用上小MU传感器模块进行视觉识别,与主人进行互动。

申请硬件成功,获得硬件值加成。
001.jpg

小MU视觉模块包含模块主体,转接线一条,识别卡片一套。

然后就跑去官网下来资料进行测试。链接在此 http://mai.morpx.com/page.php?a=sensor-support
002.jpg
003.jpg
官网上资料不少,全部下载再看。

004.jpg


005.jpg

查看技术规格书发现小MU模块支持两种通讯模式,UART和IIC。

006.jpg
先用常用的UART模式连上电脑测试一下,把小mu模块上的拨码拨到正确位置。

规格书上虽然写了支持UART模式,但是没有说明具体测试方法。在论坛上搜索一下,发现网友的一个使用帖子。链接  https://www.arduino.cn/forum.php ... id=44598&highlight=

007.jpg

遂及到官网去下载MU模块串口开发教程的资料包。链接 http://mai.morpx.com/article.php?id=71
008.jpg



试了一下串口调参,发现9600和115200下发送调参指令都没有数据返回。
010.jpg 009.jpg

后来跟官网技术联系,发现模块找错资料了,小MU视觉模块的链接是这里:http://mai.morpx.com/page.php?a= ... cetag=s_pcqq_aiomsg
011.jpg 012.jpg
把附件的资料下载完成后发现arduino库函数的例程都是IIC的,先用IIC模式调通例程先。

014.jpg
先用ball例程测试

015.jpg

因为改用IIC接口,直接把MU模块接入到小六足的主控板上的A4,A5接口然后烧写ball的例程
016.jpg
017.jpg
烧写例程成功后,MU模块开始工作,上面的两颗大LED持续闪烁红色,当识别到面前的球体时,变成蓝色。

018.jpg
019.jpg

例程调通,接下来就直接在例程上加入小六跟着小球行走的代码。
020.jpg





[pre]#include <Wire.h>

#define MU_ADDRESS    0x60
#define PROTOCOL_VER  0x03
#define VISION_ID     0x03      // ball

// register define
#define REG_PROTOCOL_VER  0x01
#define REG_LED1_CONF     0x06
#define REG_LED2_CONF     0x07
#define REG_LED_LEVEL     0x08
#define REG_CAMERA_CONF1  0x10
#define REG_FRAME_CNT     0x1F
#define REG_VISION_ID     0x20
#define REG_VISION_CONF1  0x21
#define REG_PARAM_VALUE5  0x29
#define RESULT_NUM        0x34
#define RESULT_DATA1      0x40
#define RESULT_DATA2      0x41
#define RESULT_DATA3      0x42
#define RESULT_DATA4      0x43
#define RESULT_DATA5      0x44
// color
#define MU_COLOR_BLACK                0x01U
#define MU_COLOR_WHITE                0x02U
#define MU_COLOR_RED                  0x03U
#define MU_COLOR_YELLOW               0x04U
#define MU_COLOR_GREEN                0x05U
#define MU_COLOR_CYAN                 0x06U
#define MU_COLOR_BLUE                 0x07U
#define MU_COLOR_PURPLE               0x08U



int i2c_read8(uint8_t reg) {
  Wire.beginTransmission(MU_ADDRESS);
  Wire.write(reg);
  Wire.endTransmission();

  Wire.requestFrom(MU_ADDRESS, 1);
  return Wire.read();
}
void i2c_write8(const uint8_t reg, const uint8_t value) {
  Wire.beginTransmission(MU_ADDRESS);
  Wire.write(reg);
  Wire.write(value);
  Wire.endTransmission();
}

uint8_t reg[][2] = {
    { REG_VISION_ID,      VISION_ID }, // set vision type = vision_detect
    { REG_VISION_CONF1,   0x21 }, // vision begin
};
uint8_t frame_count_last = 0;

void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);
  delay(2000);
    Serial.println("Line#1P412T500");
delay(500);
  Serial.println("Line#1P612T500");
  delay(500);
    Serial.println("Line#1P512T500");
  delay(500);
  Wire.begin();
  delay(500);

  if (i2c_read8(REG_PROTOCOL_VER) == PROTOCOL_VER) {
   // Serial.println("device initialized.");
  } else {
    //Serial.println("fail to initialize device! Please check protocol version.");
  }
  for (uint32_t i = 0; i < sizeof(reg)/2; ++i) {
    i2c_write8(reg[0], reg[1]);
  }
}

void loop() {
  // put your main code here, to run repeatedly:
  long time_start = millis();
  int frame_count = 0;
  // waiting for update
  do {
    frame_count = i2c_read8(REG_FRAME_CNT);
  } while(frame_count == frame_count_last);
  frame_count_last = frame_count;

  i2c_write8(REG_VISION_ID, VISION_ID);
  // read result


if (i2c_read8(RESULT_NUM) > 0) {
  
  if (i2c_read8(RESULT_DATA1) < 40) {
  Serial.println("RUN005C01S50");
  }
  
  if (i2c_read8(RESULT_DATA1) > 60) {
  Serial.println("RUN006C01S50");
  }
   
  if (i2c_read8(RESULT_DATA1) > 40&i2c_read8(RESULT_DATA1) < 60) {
  Serial.println("RUN003C01S50");
  }
     
}
  }[/pre]

演示效果:
002.gif 001.gif 003 (2).gif

发表于 2018-11-21 17:56 来自手机 | 显示全部楼层
申请通过,硬件周末寄出~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 01:34 , Processed in 0.078782 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表