6155
需用时 12:18
iPhone变身卖萌遥控小车
/gkimage/md/lk/jc/mdlkjc.png/gkimage/bc/r0/ef/bcr0ef.png
DIYer:iBode
制作时间:只用了周末和晚上的时间,小车2~3天,写程序10天
制作难度:★★★★☆
GEEK指数:★★★★☆

看图不过瘾,来看段视频介绍吧!



1   iRover的背景介绍

不知道很多年前的小鬼当家里的遥控车大家还有没有印象,反正我在那个时候就被这个车给萌住了,不过在那个年代,无论在技术上,还是在价格上,那种小车还是离普罗大众远了点。幸好到了21世纪,电子科技飞速发展,各类开源硬件平台也越来越多,那么是时候来完成这个孩提时代的梦想了。

iRover小车基于Arduino平台。但和通常的Arduino小车不同,Arduino系统在这里只是为了能让小车动起来。真正遥控小车,并透过小车来观察这个世界的,是安装在小车上的一台iPhone和作为遥控器的iPad。话说新款iPhone就要来了,旧款的就让它变身小车的脑袋吧。

首先上一组很有i产品范的宣传图片。

/gkimage/h0/6h/wq/h06hwq.png/gkimage/hv/xq/fl/hvxqfl.png/gkimage/0k/lt/1k/0klt1k.png/gkimage/16/ce/zv/16cezv.png

然后是写给希望也来做这么一个小车的同学的。

这篇教程是为让很多没有经验的同学也能上手而作的,因为牵扯到的流程比较复杂,不建议所有的零件都自己手工制作,毕竟,单独拿出一部分,比如Arduino小车也是可以让没有经验的DIYer琢磨十天半个月的话题了,教程里会直接使用一些现成模块来加速制作过程,防止因为工期过长导致的烂尾楼事件发生。

接着大家先站个队,对于不同的制作者我有不同的一些建议,毕竟,如果让个文艺青年去纠结单片机原理还是很过分的事。

  • 文艺青年

手工水平停留在小学的手工课上,中学物理课在睡觉的间隙听过那么几句,还记得电压、电流。知道9V,知道直流电有正负,有个已越狱的iphone和ipad的。请这些青年跟着我的教程走,根据材料单去准备材料,我会写得很详细的,跟着做能保证做出个和iRover差不多的小车出来。

  • 普通青年

知道单片机,会基本的电路知识,给个电池,电阻,LED,可以自己排线让LED亮起来,稍微有点程序概念,某个时候学过vb,c++的,对于这类青年应该有一定能力根据自己的想象,去做出一辆属于自己的遥控车了,你可以根据后面的蓝色清单来准备材料。

  • 科技青年

工科出身的青年,搞过单片机,知道PWM;说不定自己也是做过点电子玩具的,对于这类青年我想说的就是敬请自由发挥,我的小车驱动程序还是写得比较方便二次开发的,只要遵守里面用到行动命令,你把小车改成双足机器人都能用我的遥控器来控制。


2   材料和工具

2.1   材料

写给文艺青年的基础材料单:

  • 4WD小车底盘(必要配件是几块板,4个轮子,4个马达,一些连线),大约200元
  • 一块Arduino电路板,最基本的型号就可以,大约80元

写给普通、科技青年的基础材料单:

  • 小车底盘,买4个或者2个轮子的、履带的都可以,关键是左右的驱动马达必须要分开。这样小车才能转向。如果你有自信自己改一些程序的,买个带转向轮的就更灵活了。
  • 一块Arduino电路板,最基本的型号就可以,如果有条件,可以考虑买带wifi或者蓝牙模块的套件,这样以后扩展性会更好

后面大家都一样:

  • 电源开关,充电二合一的套件(我买的车里送了这个,如果没有的话,建议买一组,很方便)
  • 6节5号电池盒和6节充电电池,外加电池组智能充电器。(如果你愿意每次把电池拿出来充电的话,就免了充电器吧)总共150~200左右
  • 2自由度云台外加舵机2个,我买的180元
/gkimage/75/39/6y/75396y.png
  • L293D电机驱动板,必须是支持4路直流电机和2路舵机的,我买的是L293D芯片的,注意买的时候一定要买那种可堆砌设计的(就是电路板上方要预留了各个引脚插槽的,见下图的红框,Bode就是买了没有这个插槽了,结果只能在电路板上焊接,电路板上的焊接这个事情对业余选手来说实在是不是你想干,想干就能干的)这个30元。

/gkimage/vq/a8/on/vqa8on.png
  • 一块RS232的串口转TTL模块,我买的20元。
  • 一根Redpark Serial Cable线,就是把iPhone的接口转成串口的线,这个比较贵,在官网上要卖59美刀,国内的代理更贵,有条件的可以考虑代购。
  • 一块8×5厘米的面包板(根据小车的尺寸买)不超过10元
  • 一些面包板的连线,一些双头的杜邦线(各种长度最好都有,否则只能拿几根接起来用也可以)10块钱。
  • 470欧姆电阻2个
  • 1W的LED灯珠4~8个(装饰用,备点彩色二极管也可以用来装饰)最多1块钱1个
  • 这样总计成本不计运费大概是1000出头点(那根线国内买的话会贵300),但是某些人一直都说我是不会买东西的人,所以,我觉得如果多挑选挑选的话,成本还是有希望控制在1k以内的(谁做到1k以内了,记得告诉我都是哪里买的,我再做辆玩赛车了)

2.2   设备

/gkimage/vm/oo/sy/vmoosy.png

已越狱的iPhone、iPad各一台,后面我会提供2个IPA下载,因为没打算上App Store,所以要破解的机子才能装。

我用iPhone4和iPad2跑我的遥控程序,iPhone3GS不确定能不能用,个人觉得如果不开实时视频传输是可以的。另外4代的iPod touch应该也完全可以。iPad1我也不确定能不能用

因为这个程序是自己写着玩的,内存没做太多优化,如果有人用了有问题可以联系我,我再改改……


2.3   工具

  • 一根usb数据线,一般买Arduino的电路板会送的
  • 螺丝刀(最好是那种可以换头的,方便)
  • 电烙铁和焊丝(如果不想焊接,那么买驱动板的时候要挑可叠层的,然后其他地方自己多绑绑吧)
  • 万用表(如果没有,就多买几个发光二极管,串联了电阻也能看看电路情况,不过最好还是有个吧,尤其是想自己折腾点花样的)
  • 剪刀,美工刀,镊子,尺,双面胶

3   小车的制作

/gkimage/fd/fl/c7/fdflc7.png

如果你和我一样,直接用的是买来的小车底座,那么就好办了,直接安装组装说明,把小车先搭出来就好了。

小车搭完后,就要把4个电机都连接上,Bode在这里推荐使用一块面包板作为中间件,这样之后改线路会比较简单,如果焊死了之后发现了连线错误,会麻烦的多。

另外因为安装角度问题,通常装完的小车通上电后,轮子的滚动方向完全不可预计,所以要多试几次,保证在连上电池后,4个轮子是往一个方向转的。(正转、反转倒不要紧,这个可以在之后的程序里进行控制。)


3.1   动力部分

iRover作为一辆遥控车,最重要的功能就是可以灵活的在地上到处开动了,为了达到这个目的,我采用了4个电机来驱动轮子。

但是为了让小车可以转弯,我们必须要把左右的轮子的电路分开。这样,当我们需要向某个方向转弯时,只要让那一边的轮子减速,停止,甚至反转就可以了。


3.2   照明部分

作为一辆专业的遥控车,照明部分必不可少,除了可以提供在黑漆漆环境下的工作能力,装备了前后LED大灯的小车,还可以在外观上瞬间的拉风起来。

这里我使用了功率1W的大功率LED灯珠,晚上4个一排打开,绝对亮如日食时的白昼啊~

注意大功率LED散热。

/gkimage/si/kg/gv/sikggv.png

然后给每个LED小灯连上线,方便之后在车上安装。这里推荐把杜邦线中间剪开然后焊上小灯珠,这样以后改布线的时候,直接拔插就可以了。注意LED小灯的引脚是有正负的,连线的时候可以用颜色区分好。iRover使用了6个LED灯,前4后2。


/gkimage/7g/cp/if/7gcpif.png

先试一试灯光效果,免得装上去了不合适,注意输入电压要在5v以内。还有一点,灯珠的焊接速度一定要快,不然很容易把灯烧坏的。


3.3   底盘安装

/gkimage/ws/oi/i4/wsoii4.png

现在可以来完成iRover最重要底盘上的电路了,这里准备了一张浅显的电路图来解释下iRover的连线方法。

首先我们要知道,面包板一左一右刚好各有2条垂直方向的电路,所以只要吧左右电机的连线分别插入到这两条电路中,电机部分的连线就算ok了。

然后可以通上电,看看4个轮子的方向是不是一致。

然后,面包板中间的线都是左右分开,一个横排之间互相连接的,因为需要连上6个LED灯,所以我们分3组连接。前方外侧2个小灯的引线按正负分别各自连在一个横排上。后面两个小灯,和前面中间两个小灯也分别这样连接。

这样我们就有了3排控制小灯的电路,但是最后我们能引出的控制线只有2组,所以,我们需要把前后2排小灯的线,正负两路各自连接起来(一般的车,打开车灯,都是前后同时亮的吧,然后打开大光灯,才有剩余的灯加入,iRover完全模拟了这个过程)。

最后在图上位置连接上2个470欧姆电阻,我们就把2路小灯的线路做好了,稍后等控制板做好了,直接插上底板就能工作了。


3.4   云台部分

/gkimage/w8/xr/6u/w8xr6u.png

这是一个典型的2自由度云台,2自由度的意思就是可以同时上下和左右转动。

云台是支撑iRover那大脑袋的脖子。直接买来的云台都是一堆零件,我们可以根据说明书搭成上面的模样,然后再安装在车架的前方。

最后直接在云台上粘一个iPhone壳子作为支架。


/gkimage/ea/gd/n3/eagdn3.png

云台的每个舵机只能支持180度范围内的旋转,所以 在安装云台时,务必先让舵机移动到90度的范围再继续安装 ,这样才能保证最后造出来的小车始终向前看。(如果是不知道怎么让舵机移动到90度的文艺青年们,请安装云台的时候螺丝先稍微拧松点。等小车上电后,用遥控器控制视角到正前方,再调整下云台支架的角度就可以了)


3.5   电路连接

iRover的电路连接还是相对比较简单的,不过一定要细心,注意走线。如果接错的话,对于没有电路经验的同学来说,可能就找都找不出来错在哪里了。

iRover的电路大致可以分2个部分,一个是控制部分,另一个是动力部分。通俗的来说一个提供控制信号,一个根据信号提供小车行动需要的动力。

这两个部分的结合点,就是电机驱动板。电机驱动板会根据Arduino系统提供的信号,来放大输出到小车的各个运动部件上。


/gkimage/mg/jj/l1/mgjjl1.png

上图所示的两块电路板,下面的就是Arduino版,上面的就是电机驱动板,首先将他们紧紧的叠在一起。


/gkimage/ek/fe/v6/ekfev6.png

然后在电路控制板上引出我们需要的线路到底盘的面包板上。

在这里我都是使用了面包板的插线来快速的完成连线工作,不需要焊接(如果你没像我一样买错板的话)。


/gkimage/5h/e9/pq/5he9pq.png

连线后的效果图。

最后在电机驱动板的左上角连上舵机,注意橙色的连S端,咖啡色(有些舵机是黑色)的线在-端。

云台上的两个舵机都要连好。1号端口连上下移动的舵机。2号端口连左右移动的舵机(我一直觉得我买的电路板有bug,和说明书上的引脚说明正好反了,但是无所谓,如果后面试机器的时候发现上下左右不对,就交换一下这里的连线)。


/gkimage/lx/vb/ab/lxvbab.png/gkimage/nd/ns/05/ndns05.png

我在连线时,大量采用了下面这种搭配的方法,这样,当线路需要改变时候会很方便,特别是连接到串口转换板的TX,RX两根,一定要方便拔插的。因为每次需要通过usb写入程序的时候,都需要先断开这两根线。


/gkimage/kp/ok/ln/kpokln.png

最后说一下电池的安装。iRover把电池盒倒挂安装在了车架面板下方。这样的好处是露在下车外部的部件会比较少。缺点是更换电池会很不方便,所以iRover采用的是可充电的设计。


3.6   运动控制程序烧录

点击这里 下载iRover配套程序,把需要的程序烧录到Arduino芯片里。至于如何将代码烧录,这里就不唠叨了,不知道如何操作的文艺青年可以去Arduino相关的网站观摩下,基本上第一个范例就是。iRover使用了0022版本的编译环境,主要是为了适应驱动板的库。如果想使用其他版本的编译环境,可能需要修改一些配置。最后要注意的就是,烧录程序和通过串口调试程序的时候,都需要断开Arduino控制板和串口转换板之间的连线!

程序通过定义了两个类MotorTask和ServoTask分别来控制电机(包括LED灯)和舵机。每个类都有两个行为,一个是读到串口命令时,进行动作的预约;一个就是在执行期去执行预约的动作。如果你想为iRover添加更多的功能。只要按这个规则去添加新的类就可以了。

程序烧录后,我们可以打开Arduino编译器里的Serial Monitor。开始测试一下小车各个部分是否工作正常。


/gkimage/f0/97/s4/f097s4.png

输入GL 200$后点击Send。如果看到下面的提示框有返回Do para : GL200。那么恭喜你Arduino板上的程序已经烧录完成了。如果你的小车的左侧轮子开始转动(并且是让小车向前方行进的转动的)那么彻底恭喜你,你距离成功已经只剩下最后的10%了。

如果很不幸,输入命令后,没有任何反应,那么先要看是否连线正常,是否已经断开了串口的连接线,是否已经打开了电源(仅靠usb的电量是没法驱动小车的轮子的)然后进一步去排查电机驱动板到电机的连线。如果有万用表的,就开始一段段的检查。找到哪里出了问题。

如果你的车轮子转错了方向,或者是错误的车轮,或者是车灯开始闪亮的话。那么说明你点击驱动板导出的连线和代码里定义的不一样。这时候你可以修改连线,或者是更改程序里的定义。

如果一切顺利,你可以依次执行如下命令,并观察是否小车的行动如预期。

  • 左轮前进 GL 200$
  • 右轮前进 GR 200$
  • 左轮后退 GL -200$
  • 右轮后退 GR -200$
  • 两个轮子停止 GL 0$ GR 0$
  • 4个大灯微亮 LF 1$
  • 另2个大灯微亮 LB 1$
  • 所有的灯大亮 LF 35$ LB 35$
  • 关灯 LF 0$ LB 0$
  • 舵机支架向上抬头 CV 50$
  • 舵机支架向下低头 CV 150$
  • 舵机支架向左摇动 CH 170$
  • 舵机支架向右摇动 CH 10$

如果以上的操作每一步都能顺利通过的话,那么你的小车已经基本上完成了,只剩下最后的一些步骤了。


4   美化工程

/gkimage/w1/wn/6d/w1wn6d.png

不管我们是什么青年,如果开着个只有架子的火星车出门,那么就算是火星上几亿年前存在的微生物也会鄙视我们的。


/gkimage/2n/mq/ut/2nmqut.png

看看iRover,前后泡沫塑料的防撞结构,黑色记号笔上色,外加豪华鼠标垫变身前防撞梁蒙皮。轮毂还都上了金色的贴纸。正常车辆该有的LOGO、车牌、新手上路标志一个都不能少。瞬间使得外观个性不少。这里给个小提示,设计好的LOGO、车牌等标志,可以用高光的照相纸打印后剪裁,贴上后效果非常的好。


/gkimage/3z/06/5q/3z065q.png

附上各式标签一张,可以直接拿去打印了。


5   遥控程序

/gkimage/u5/yx/vu/u5yxvu.png

终于轮到酷酷的遥控程序上场了,我的本分工作其实就是搞iOS软件开发的,所以iRover在硬件上不敢自称是最好的遥控小车,但是在控制软件上,iRover绝对不比一些商业的遥控小车逊色。

首先你会下载到两个IPA文件,一个是安装在iPhone上的,一个是用在iPad上的。

iRoverServer装在iPhone上,iRoverController装在iPad上。

把程序先分别装入手机和平板之后(需要是已越狱的才行),然后看看能不能打开程序,如果你能在iPad上看到方向盘的画面,在iPhone上看到一张贱贱的笑脸,就说明程序可以运行。

接下去我们来看看如何通过遥控器来控制下车。遥控器的各个部分的功能已经在图中显示。

最简单的超控方式就是触摸式,Bode在视频里的控制就是用了触摸式,确认右侧的档位在T档,并且打开了方向盘右上角的动力开关。在方向盘的范围内拖动中间的Rover图标。往前拖就是前进,往后拖就是后退,拖得越远,速度也就越快。同样的,往两边拖就是转弯了。

如果选择其他档位,那么就可以采用拟真度更高的重力方式操控小车,在左侧拖动电门大小,控制前进速度;在垂直方向左右转动iPad,就可以控制小车行动方向了,因为iRover使用的是差速控制的转弯方式,所以转弯的反应不会很灵敏,需要一些时间去适应,有条件的同学可以想办法自己安装转向轮。


接下去介绍几个重要的图标的含义。

/gkimage/kb/1m/np/kb1mnp.png

这个图标点亮代表遥控器已经和iPhone上的程序建立了连接。不亮就去检查网络去吧。


/gkimage/qn/go/4m/qngo4m.png

这个图标点亮代表遥控器已经和小车的硬件建立了连接。不亮的就去看看iPhone有没有连上小车,小车的电源有没有打开。


/gkimage/am/wy/qn/amwyqn.png

这个是小车的动力开关,如果这个按钮是暗的,你的任何试图让iRover移动的尝试都不会得逞。


/gkimage/6o/x6/j1/6ox6j1.png

这个是开启iPhone实时画面的按钮,打开后,就可以通过iPhone观察世界了。需要注意两点:1,现在开启这个按钮后,iPhone会有不停的快门声,把iPhone静音就可以了。2,使用这个功能会让iPhone快速耗电,所以如果是在面前开的话,还是先关了这个吧。


/gkimage/p5/g4/u3/p5g4u3.png

拍照键,每次按下,会保存一张当前的画面。你可以在iTunes的应用程序文件共享里找到这些保存的图片。


/gkimage/g9/op/s9/g9ops9.png

灯光键,不停点击,会在关灯-示宽灯-近光灯-远光灯之间切换


/gkimage/rb/94/7s/rb947s.png

点击这个可以打开一个界面来远程控制小车上iPhone的表情(目前预设了6个,之后会开放自定义的功能)。另外可以控制iPhone摄像头看到的场景效果,现在有曝光控制,火星效果、夜视效果、骑兵效果(就是马赛克啦),圆盾骑兵(圆形马赛克)共五种效果,并且每个效果可调细节。但是这个功能现在有个bug,切换时可能会导致iPhone端程序异常退出。


6   试航上路

确保iPhone和iPad在同一个网络内(如果你想带出去玩,可以打开iPhone或者3G版iPad的个人热点),然后将iPhone连接上小车并打开小车电源。分别打开两边的程序,确认遥控板上两个连接图标都已经点亮,打开动力开关,拖动方向盘中间的LOGO,让你的小车也跨出它的一小步,你的一大步吧。

带着iPhone的小车身价不菲,请勿在脱离视线的情况下在公共场所使用,由此导致的拐卖事故,Bode概不负责噢。


7   问题解决

7.1   开机后,小车没有反应是什么原因?

正常情况下,接通电源后,小车的脖子有个优雅的上挥姿势。如果没有,请确认电池已经正确的给驱动板供电!注意,只给Arduino板供电,虽然通电后电路板上也会亮灯,但是脖子是转不动的,更不能前进后退的,这时需要赶紧关闭电源,检查线路,否则会有把电路板烧坏的风险。


7.2   遥控程序无法运行?

安装遥控程序需要是已经越狱的iPhone、iPod touch、iPad。并且要求系统版本在5.0以上。


7.3   遥控程序无法控制小车?

确认小车已开机,小车和iPhone之间的连线正常(特别是串口转换器和Arduino之间的连线正常),iPhone和iPad在同一个网络内,且各自打开了控制程序。如果某个设备进入程序后有过锁屏,请退出后重新打开。直到确认iPad上的连接指示图标和小车动力图标都点亮。方向盘的右上角有个行动开关,只有打开这个开关,小车才能移动,否则即使连接了,也只能转转脖子,闪闪大灯。


7.4   小车的脖子乱转,很难指挥?

在写入Arduino的程序中找到这两个地方

servoLR.attach(9,0,180);  // 绑定舵机到针脚,并且设定舵机的旋转范围.
 servoUD.attach(10);

//将舵机绑定到自己的舵机控制类上,需要设定座机的初始位置.
servoTask sTaskLR(&servoLR, 9, 90);
servoTask sTaskUD(&servoUD, 10, 135);

这里分别是控制两个舵机的转动范围,和初始位置的。你可能需要根据你安装的云台的实际角度去调整这里面的值。


7.5   重力感应模式下很难控制?

恩,的确有点难控制,有时间的话Bode可能会做一些优化。同时推荐触摸操控更适合iRover。


7.6   连接经常中断?

保持wifi信号在比较好的情况下。同时保持iPhone和iPad不要锁屏,锁屏会断线的,而且之后也会连不上;这个时候需要退出程序后重新进入。你可以认为这是一个bug,但是暂时不会被修改(因为种种原因)。

关于Arduino系统的其他问题可以参考Arduino相关网站。

关于iPhone、iPad越狱后安装软件的问题,也请参考相关网站,论坛。


8   写在后面的话

现在iRover还只是一个开始,接下去Bode会通过软件给小车增加更多的功能。如果你对这其中的任何一部分有兴趣,都可以加入对iRover后面发展方向的讨论。Bode在这里希望iRover是一辆可以让宅男,让孩子玩得开心的开放平台小车。

欢迎关注 我的微博


果壳DIY站QQ群:132647923, 2群:179240860,3群:155086317(加入时请报上你在果壳的个人主页地址,以防广告ID)

果壳DIY站微博: http://t.sina.com.cn/guokrdiy

The End

发布于2012-09-12, 本文版权属于果壳网(guokr.com),禁止转载。如有需要,请联系果壳

举报这篇文章

iBode

御前九品赐带键盘上殿之iOS程序猿──孟

pic