视觉恐怕是人类效率最高的传感器了,古语有云“一画胜千言”。 对于 Arduino 虽然有着广泛的传感器支持,但是美中不足的是因为处理能力和自身空间的限制,Arduino没有办法直接用于图像处理。目前市面有售的相关配件有openMV 和Pixy CMUcam5,价格较高资料也少。 现在,又多了一个选择,杭州的一家公司推出了视觉传感器模块,可以用来进行物体的识别。 尺寸上来说非常小巧,不到2个硬币的大小,在正面是摄像头部件,背面是处理芯片(SMT32)。
模块本身有 USB(USB转串口)/I2C/SPI/UART,四种接口,目前能够工作的只有 USB和 UART。其余接口有待于后面进一步开发。此外,还提供了控制舵机的接口,但是对于Arduino玩家来说应该用处不大。
从功能上来说,能够实现自动检测:球、线、人体和人脸,将检测到的结果从串口输出。输出的结果会给出检测到的物体中心坐标,长度和宽度。 通过USB线连接到电脑上之后,点按一下模块的Mode按钮,此时指示灯转变为紫色。电脑端会自动检测到新硬件,并安装驱动,特别注意,只有正确安装驱动之后才会出现这个设备的串口【参考1】,起初我安装错了驱动,串口始终无法出现。
然后使用串口工具即可进行配置,默认波特率为 115200, 同时需要注意每一个命令后面要跟着回车和换行。下面是连接之后输入 HELP 反馈的例子:
再测试两个command : CMD+SENSOR_SETUP 和CMD+SENSOR_HELP
测试CMD+SENSOR_STATUS ,可以看到当前的检测模式是:检测有无人体 为了简单起见,我们设置让他进行球体的检测: 发送命令CMD+VISION_TYPE=BALL 另外,为了方便调试,建议打开使用 USB 输出图像检测结果报文的功能。意思是说,这个模块默认检测结果是输出到板子上的UART排针上(使用额外的串口转USB设备是可以看到的),如果不打开USB输出功能,你是无法通过模块上的USB接口看到数据的。你可以使用CMD+USB_STATUS=? 检查当前是否打开这个功能,默认是关闭的。再使用CMD+USB_STATUS=ENABLE 即可打开。 退出配置模式之后,再次上电,同样的串口工具可以看到有数据源源不断的输出。
以我目前的实验来看,这个传感器似乎有些“近视”,还无法识别出来10cm以上的物体(当识别出来的时候,摄像头旁边的LED会变成蓝色)。对于新产品来说,有一些机能上的限制还是可以让人理解的,比方说哈勃望远镜刚上天的时候就是“近视”。对于这个问题俄国人一直很担心是美国人故意这样做的,以便随时监视他们广袤的国土。当然我们也可以脑补下面场景: 90年代的某一天,美国总统先生在白宫的办公室百无聊赖,放在手边的雪茄已经被玩弄了很久。忽然他突发奇想抓起电话打给NASA的值班人员,要求把哈勃对准列宁格勒看看对手叶利钦在干什么。很快NASA 调试好了望远镜,他们发现叶利钦正在参加聚会野餐。画面需要一段时间才能传送到白宫的办公室。总统先生直接问值班人员,他们吃的什么。稍微停顿了一下,值班人员就开始报菜名“蒸羊羔,蒸熊掌,蒸鹿尾儿, 烧花鸭,烧雏鸡儿,烧子鹅 ,卤煮咸鸭,酱鸡,腊肉,松花,小肚儿 ,晾肉,香肠,什锦苏盘, 熏鸡,白肚儿,清蒸八宝猪,江米酿鸭子, 罐儿野鸡,罐儿鹌鹑, 卤什锦,卤子鹅,卤虾,烩虾,山鸡,兔脯,菜蟒,银鱼, 清蒸哈什蚂,烩鸭腰儿,烩鸭条儿,清拌鸭丝儿,黄心管儿, 焖白鳝,焖黄鳝,豆鼓鲇鱼,锅烧鲇鱼,烀皮甲鱼,锅烧鲤鱼,抓炒鲤鱼, 软炸里脊,软炸鸡,什锦套肠,麻酥油卷儿, 熘鲜蘑,熘鱼脯儿,熘鱼片儿,熘鱼肚儿,醋熘肉片儿,熘白蘑.......”听了前面总统先生就有些馋了,心中暗自思量“撑死这个孙子”。很快,视频传了过来。叶大爷正在大吃大喝。聚会人员不多。总统注意到了旁边一个短发持木仓的年轻人。叶大爷他们边吃边喝,谈兴正浓的时候,也许是被食物的香味吸引,一头野猪正在慢慢靠近这群人。忽然有人发现了这只野猪。叶大爷一激动眼镜掉在地上,十个随从人员都钻到桌子底下找眼镜,情况危急。只见持木仓的小伙不知什么时候,已经举起猎木仓,几下干掉了野猪……看到这里,美国总统对这个小伙子非常感兴趣。命令情报部门尽快查到他的情报……等到了晚上,总统先生还在想着白天的事情,打电话问了情报部门是否有了结果,然后就去了办公室,在门口他碰见了一位女实习生。终于,总统先生第一次听到了“普京”的名字。在后面的岁月中,他们都以各种方式走上了历史舞台…….
继续讲实验,这里我设计一个自动解锁电脑的设备。当摄像头发现了设定好的图形出现在视野范围内后,自动发送 ctrl+alt+del 进行解锁,然后输出系统密码。 [kenrobot_code]#include <Keyboard.h>
#include "VisionSensor.h"
#define PASSWORD "mypassword"
VisionSensor MU(Serial1, 115200);
void setup()
{
pinMode(2, INPUT_PULLUP);
Keyboard.begin();
MU.begin();
}
void loop()
{
MU.search();
if (MU.valid() > 0)
{
if(MU.detected() == true)
{
if (LOW == digitalRead(2))
{
// CTRL-ALT-DEL:
Keyboard.press(KEY_LEFT_CTRL);
Keyboard.press(KEY_LEFT_ALT);
Keyboard.press(KEY_DELETE);
delay(100);
Keyboard.releaseAll();
delay(500);
Keyboard.println(PASSWORD);
delay(200);
Keyboard.write('\n');
}
}
else
Serial.println("No object detected");
}
delay(100);
}[/kenrobot_code] 关于视力,再多说一点。在二战中的太平洋战场上,“日本海军的存在着另一类人才——被尼米茨称为“猫眼”(CAT EYES LOOKOUT)的那些瞭望员们。这个猫眼瞭望员是仅在旧日本海军中存在过的一类特殊人员,日本海军专门选拔一批眼力特别好的人员,再加以特殊训练,配合服用特制的维他命A药剂,专门在暗夜里观察周围情况。当天在鸟海巡洋舰上有一位作为报道员的作家叫丹羽文雄,他写的报告文学《海战》是那时候最畅销书。书中是这样描写这些猫眼瞭望员的: “周围伸手不见五指,就只有手持望远镜的瞭望员的呼喊‘左41度,发现一艘舰影’,‘左30度,敌舰,敌舰向我而来’,‘六战队无异常,全部可见’” 六战队是指后继的9,000吨级的青叶,加古,衣笠和古鹰这四艘重型巡洋舰,舰距为1,300米,就是说瞭望员在黑夜里能够准确无误地看清5,200米前后的军舰。 这些瞭望员就是人穷钱少的日本海军敢于和大个子英美抗一下的最可信的秘密武器。也不知道是骗人还是骗己,反正日本海军里有一种传说就是这些绿眼睛的英美鬼畜们在晚上看不见东西,但英美海军中确实没有一个这样的变态岗位。如果没有雷达的出现,单单是水面舰艇之间的较量,要预测谁输谁赢还真不好说,起码这次的海战说明在原教旨海上夜战中美国海军还真不是日本海军的对手。“ 当然,最终这样的类似于超能力的方法最终还是败给了以雷达为代表的工业科技。 借用梁启超先生少年中国说提到的一句话,在未来的时代:“科技强则中国强,科技智则中国智”, 参考:
|