Posts Tagged ‘小爱’

蓝牙手机变身小车遥控器 (1)

上篇博客提到我企图把手机改造成小爱的遥控器,这几天终于有点眉目了。这个小车刚组装好的时候,我就接上电池试运行了一下,结果它在屋里一溜小跑,紧赶慢赶才没让它撞到东西。这就是决定做一个遥控器的原因。本着“变废为宝,物尽其能”的DIY精神,我打算利用现有的手机来改造。

说起变废为宝,老婆大人一定心情很惆怅。因为大多数情况下,我喜欢拆东西,在家里干的都是些“变宝为废”的事情。但这次绝对是废物利用。我的手机是HTC钻石2,这款手机的系统是Windows Mobile;优点是CPU强大,屏幕细腻;缺点是经常丢短信,漏电话。也就是说,这款手机作为一个手机,基本可以认为是废物点心。好,接下来开始我们的变废为宝之旅吧。

第一次做手机上的开发,这段时间真是颇费周折。下面是我尝试的几个方案,供大家参考:

最初我想用类似控制萝卜头的办法,使用蓝牙串口向PC发送数据,结果发现并不是所有蓝牙连接都具有虚拟端口的功能。可以查看蓝牙支持的功能,那个Serial Port就是乐高机器人用来通讯的。

HTC手机的蓝牙,不支持Serial Port通信

HTC手机的蓝牙,不支持Serial Port通信

第二个方案是改用手机的WIFI功能,在PC上搭建一个网页,通过URL Request的方式向PC发送数据,非常杯具的是WIFI可以向公网IP发数据,但是不能向局域网内的笔记本发数据。经验证,我放在博客主机上的测试页面可以收到数据,虽然最终也没有成功,不过也算是进了一步。

第三次尝试又用回蓝牙,发现在ActiveSync连接模式下,手机共享的是笔记本的网络资源,这样就可以向自身发送URL Request了。经测试,数据流可以走通。正在欢欣鼓舞的时候,发现一件更杯具的事情:不知道为什么,每发送五六条数据之后,手机就像死机了一样,必须休息几分钟之后才能继续发送。这要是用来当遥控器,小爱怕早就把电视撞烂了。

接下来的几天没有什么进展,非常郁闷,以至于我经常萌生一些邪念(例如把手机扔进马桶)。事实证明最痛苦的时候往往已经接近成功了。有一天我把URL Request换成Web Service做了一次尝试,神奇的发现手机调用Web Service居然又快又不会死机。接下来的事情只能用峰回路转来形容,Web Service再通过TCP/IP协议把数据转发到一个Socket端口,一个端口监听程序再把数据通过USB发给Arduino开发板。经过这么多热心的同志,终于把鸡毛信从手机送到电机了,看看数据流图(其中WebService服务器和笔记本逻辑上是独立的,物理上是同一台电脑):

手机遥控器的数据流图

手机遥控器的数据流图

不知道会不会被手机开发的业内人士们鄙视,不过我至少摸索了一条没人走过的曲折道路,整个流程一共需要写四个程序:
1,在手机上运行的小程序,我画了一个方向盘,用手指触摸的时候,会换算成电机速度发送给Web Service。
   开发环境是Windows Mobile 6.5,使用的语言是C#
2,Web Service程序,接受指令之后,通过TCP/IP的方式转发。使用的语言还是C#,服务器是IIS。
3,端口监听以及Arduino开发板通信的程序。一边通过监听Socket端口接受2发来的指令,一边把指令通过模拟的串口发送给Arduino开发板。使用的开发语言还是C#。
4,Aruino开发板程序,这部分是通过模拟的串口接受指令,转换成电机对应的占空比电流脉冲,从而控制小车的两个直流电机。开发环境是Arduino 0017,开发的语言怀疑是类Java(软件上面有一个咖啡杯的图标)

回头一看,发现自己真够啰嗦的,写了半天还没见到代码,赶紧给标题后面加了个“1”。先贴两个程序的截图吧,改天再把代码发上来。

手机上的程序截图

手机上的程序截图

端口监听及转发程序截图

端口监听及转发程序截图

底盘小车 – 框架

春节期间给小爱做了一个测试版的底盘小车,这两周工作太忙,没有什么进展。今天先补上记录。

话说上个月有个网友,问能不能参观一下我的工作室。其实我是一个标准IT宅男,俗称闭家锁,一般不参加网友活动,更别说请人回家参观了。不过我在网上就非常好客,比如可以参观一下我的豪华工作台:

打孔的地方

打孔的地方

下面那个脏兮兮的玻璃台子曾经是个鱼缸,小金鱼们已经被放生到昆玉河,目前下落不明。观察力敏锐的同学会发现工作环境光线很好。没错,其实我的工作室不仅光线好,还视野宽阔,空气清新,唯一的缺点是冬天有点冷:

工作室就是我家的阳台

工作室就是我家的阳台

不说废话了,首先看看之前做好的轮子,预留了一个方便安装的直线轴承。

轮子和轴承

轮子和轴承

量好尺寸,根据小爱将来的宽度做一点计算,然后用铅笔在铝条上划线。

划线

划线

现在需要在铝条上折出两个直角。没想到3mm厚的铝条居然这么硬,如果直接用钳子掰的话,只能弯成一个大圆弧形。不过不要紧,工程师是不会被工具难倒的。想起之前拆的那个鞋架子。用两个木条做成夹棍,把铝条用螺丝固定在中间,最后垫在那块万能菜板上使劲敲,这样就弯出了比较完美的直角:

木条制作的“老虎钳”

木条制作的“老虎钳”

接下来就是在我的豪华工作台上打孔了。那个手持的小电钻真是不太好用,钻头晃的很厉害。这里给大家介绍一个小经验,用钉子在划线的地方敲一个小坑,然后用钻头顶住小坑再开始打孔,这样位置就精确了,而且打孔速度会快很多。看看打好孔的铝条:

打孔后的铝条

打孔后的铝条

临时装上轮子看看装配的尺寸是否合适

检查打孔的尺寸

检查打孔的尺寸

好了,既然尺寸还凑合,拆下轮子继续划线打孔,把整个底盘的架子装好。

底盘架子

底盘架子

接下来是安装轮子和直流电机:

轮子和直流电机

轮子和直流电机

驱动小车用两个直流电机就够了,另外一端使用的是两个万向轮:

万向轮

万向轮

最终的成果是这样的:

大功告成

大功告成

这个小车做好以后,我把Arduino实验板,直流电机控制板,电源,笔记本都架在小车上做了一个实验。可以顺利完成前进后退和转弯的动作。不过电机控制使用的是笔记本+USB线,所以暂时还不能实现遥控。这几天正在试验把我的手机作成遥控器,如果能搞定的话发上来跟大家分享。另外萝卜头的攻略还差几篇,接下来这段时间争取把它们写完。

底盘小车的制作 – 轮子

春节期间老丈人和丈母娘来北京了。本来我还非常担心,如果老人们发现我每天捣腾这些东西,一方面可能觉得我不务正业,一方面也可能会觉得自己的闺女生活在水深火热之中。

老丈人曾经做过十多年的铣工,知道我这点小爱好以后,非常有兴趣,这几天一直跟我一起探讨和制作机械部分,还说回家以后要送我一套什锦锉。哈哈,也许男人就是天生的机器人爱好者 :D
废话不多说了,先看看最近几天的进展。

首先是订制的几根45#钢的小轴,春节前终于送到了。下面是我手绘的加工图和送到的小轴:

小车的轴

小车的轴

非常杯具的事情:我只标注了Φ8的直径,没有标注公差,所以寄来的小轴比轴承粗了0.2毫米。用磨刀石磨了半天,发现45#钢真是太硬了,这样下去胳膊磨细了轴也细不了。用砂轮打的话,又担心打不圆。经过和老丈人的讨论,决定制作一个小型“车床”,用来打磨这根轴。正好可以用小车的电机来驱动。这是从百宝箱里搜刮出来的各种杂物:

各种车床配件

各种车床配件

家里最可怜的菜板,一直被我用来做各种实验,这次它会变成一个车床。

百变菜板

百变菜板

直流电机需要一块角铁做支架,百宝箱里找不到合适的配件,我在家里寻摸了半天,终于发现电脑桌下面有几块合适的角铁,趁着老婆去午睡的机会把它拆了。作为补偿,让电脑桌也上个镜头:

电脑桌下面的角铁

电脑桌下面的角铁

看,和直流电机简直就是天生的一对

直流电机的支架

直流电机的支架

再用一块不知道从那里捡来的T型铁皮做成支架,一个简易的小车床就制作完成了:

小型车床

小型车床

接下来就是用砂轮打磨了,老丈人亲自操刀上阵,看看战斗现场:

打磨短轴

打磨短轴

经过打磨的短轴终于可以安装到轴承里了,事先套上一个直线轴承,然后装上传说中的无敌风火轮:

安装轮子

安装轮子

在轮子的另一面,用一个锥型齿轮,把动配合变成静配合,再用螺丝拧紧固定:

锥齿轮固定

锥齿轮固定

最后把打磨用的直流电机拆下来,用联轴器连上。把上面的工序一式两份,底盘小车的两个驱动轮就完成了。明天的计划用铝条和角铝把两个轮子连上,然后再添加两个万向轮制作成底盘。两个直流电机的功率还没有试过,希望能带的动二十公斤的重量。

做好的轮子

做好的轮子

疯狂大采购

最近一直没上来发攻略,主要的时间都在淘宝上逛街了。现在的小爱已经有一个大概的框架图,具体的搭建还需要不断的买材料,调整,再买材料,再调整。

发一些最近买的东西,留个纪念:

无敌风火轮,这是滑板车的轮子,准备做小爱的驱动轮

无敌风火轮,这是滑板车的轮子,准备做小爱的驱动轮

这是万向轮,一般用来做柜子,这个准备做小爱的辅助转向轮

这是万向轮,一般用来做柜子,这个准备做小爱的辅助转向轮

这个是锥齿轮,可以用于轴的转向,其实这是麻将桌的配件,每个5毛钱

这个是锥齿轮,可以用于轴的转向,其实这是麻将桌的配件,每个5毛钱

五金店买的一些金属材料,还没想好怎么用

五金店买的一些金属材料,还没想好怎么用

另外一些舵机专用的支架,和上一个图有些重复

另外一些舵机专用的支架,和上一个图有些重复

各种电机和舵机,一共十多个,刚拆包了几个做了测试

各种电机和舵机,一共十多个,刚拆包了几个做了测试

各种轴承

各种轴承

无数默默无闻的螺丝钉

无数默默无闻的螺丝钉

另外还有一些开发板和传感器还没拍照,等下回做实验的时候发。希望明天几根定制的轴能送到,周末就可以组装点东西了。

关于机器人小爱,占坑贴

话说萝卜头完工以后,我经常想一个问题:接下来做点啥?

其实这期间有过很多想法,例如乐高打印机,写毛笔字,下五子棋以及等等等等。
面临的问题是,萝卜头就像是家庭的一个成员,实在不忍心拆掉。但是横不能每做一样东西就买一套NXT吧,毕竟咱的钱也不是大风刮来的。

有一天我家娘子说:“我给你出道题吧,给咱们家圈圈做一个小摇篮,如果半夜圈圈哭闹的话,就自动的摇啊摇,这样咱们就不用起来哄了。。”
看,这世界还真是由懒人推动的。我飞快的想了一下,可以用一个亮度传感器判断是白天还是晚上,再用一个声音传感器判断有没有哭闹,最后带动电机来摇动小摇篮,用LabelView就可以实现了。

想到这里,我又回到了那个老问题,有没有必要为这样特定的功能单独用一套NXT,能不能做一个通用的机械结构,既可以下棋,还可以照顾小孩呢?毫无疑问,这就需要一个真正的机器人了。所以我们决定做一个跟大孩子差不多高的小机器人,如果能够制作成功的话,就可以通过软件的更新来实现各种不同的功能。这个小家伙看来是不能用乐高实现了,我准备向那位俄罗斯的手工狂人学习。

这个小家伙的名字叫“小爱”,来源于AI的意思,顺便也沾点爱迪生,爱因斯坦等同学的光。小爱还没诞生,我们就给她安排了很多工作,比如端茶倒水,揉肩捶背,铲冰除雪,溜门撬锁等等(简直就是无良父母啊 :)

YY了半天,赶紧回到现实。我暂时还是电子技术的门外汉,甚至还没有设计过一块电路板。可能有些高手看到这个帖子,会带着鄙夷的酱油飘过“俺们这些专业人士也不见得能做好啊”。嗯,对于困难我早有心理准备,小爱的诞生也许是一个非常漫长的过程,但是年轻啥都不怕,我们都充满信心!

孔子曰:三人行必有我师,n人行必有我n师。希望有更多的朋友光临小站和论坛,分享经验,互相学习,共同进步。