首先感谢arduino.cn社区提供的MU模块!能让我有机会见识到如此实用、功能强大的模块。 MU能够识别人体,线条,人脸,球等物体,并将识别到的数据转换为物体所在坐标,物体的长宽等数据,是个很实用的功能很强大的模块。由于识别的数据是一个9个字节的数据,不方便人眼直观查看。正是基于此,有了一个想法把识别到的数据转换为图像的想法,并为下一步继续创作其他功能奠定基础。 在收到MU模块后,进行了一些尝试,在经历了2次升级后,能够通过串口获得识别的数据。
图片为收到不完整的数据。 图片为升级固件 本次不对MU的命令设置做介绍,可以参考MU的文档。[attach]MU API[/attach] 首先材料准备 MU 测试模板 1块、UNO 板 1 块 、0.96 寸OLED 1块 SPI接口 、USB TTL 、圆球、数据线以及导线。
首先设置MU的参数,需要在进入MU的设置模式后,在串口输入CMD+SENSOR_SETUP进入设置模式,设置完成后使用CMD+SENSOR_EXIT退出设置。 本次使用的MU 的设置如下 【2017-02-28 19:08:08:746】Current Settings: CMD+VISION_STATUS=ENABLE CMD+VISION_TYPE=BALL CMD+USB_STATUS=ENABLE CMD+UART_STATUS=ENABLE CMD+UART_BAUD=115200 andData bits:8 Stop bits:1 Parity:NONE CMD+SERVOX_STATUS=ENABLE CMD+SERVOX_INITANGLE=90 CMD+SERVOX_STEP=10 CMD+SERVOX_REVERSE=ENABLE CMD+SERVOY_STATUS=ENABLE CMD+SERVOY_INITANGLE=90 【2017-02-28 19:08:08:746】 CMD+SERVOY_STEP=10 【2017-02-28 19:08:08:746】 CMD+SERVOY_REVERSE= 【2017-02-28 19:08:08:746】ENABLE 为减少参数设置过程,可以在设置好MU后,最好把串口接上USBTTL到电脑端查看下输出的数据是否有效。当MU闪烁蓝色指示灯时,说明检测到目标。接下来可以连接模块。 电路连接图 UNO与OLED连接 D8--------CS D9--------DC D10------RES D11-------D1 D12--------D0 UNO与MU连接 RX--------------TX VCC--------------+ GND-------------— 这里的电路连接中的UNO与MU连接只用到了一条线,由于MU只发送数据,不接收数据,由此只需要把UNO的RX与mU 的TX相连接就可以 。这里需要z注意的是,在向UNO 烧写数据时,需要断开与MU的连接,因为烧写程序使用的是同一个串口,不端口连接会烧写程序失败。 电路图连接好后,就可以编写代码,代码编写主要分为两个部分,第一部分是驱动OLED,可以直接引用库。第二部分是解析MU的串口数据。 解析MU的数据实际就是读取UNO的串口数据,然后把数据按照MU数据的格式进行解析。数据格式可以参考MU的文档。 [attach]MU-API[/attach] 为了方便本程序编写没有引入官方的数据解析库文件。 在获取到串口数据后,需要对串口的数据作一定的统计分析处理,不然得到的数据不稳定。还需要对显示的位置进行调整。在本程序中没有做着2点。 程序上传成功后,将圆球放在摄像头前大约30-40CM ,这是会在OLED屏幕上显示小方框,移动圆球,方框也会相应移动,基本实现了对MU串口数据的简单解析。 参考代码 https://github.com/vincen20/MU_TEST
本代码未对获取的数据进行处理,显示框会不稳定。 需要的库请到arduino ide 中更新。
|