在“当圆梦小车遇上 Arduino ……”一文中,就提出了设计一款 Arduino 小车控制器的想法,如今兑现了!
在设计过程中,随着对 Arduino 了解的深入,又发现了一个基于PC机的开源平台:
Processing!
基于这个编程感觉又回到了 DOS 时代的 Basic,环境十分简洁,不像目前基于 Windows 的开发环境,光环境设置就足以让初学者却步。
Processing 虽说延续了 Basic 的那种简洁,但对 windows 带来的资源优势却丝毫没有忽略,可以十分方便的操控屏幕画图,获取鼠标信息,乃至方便的视觉处理……,并未因简单而“无能”,摒弃了繁琐的环境设置后,可以让你将思维集中于控制逻辑的构思以及算法和数据结构的尝试。
最美好的是,Processing 和 Arduino 有着密切的关联,它们同出一门。
为了让它们之间能够“亲密无间”,小车设计了一个无线通道,对应的在PC侧设计了无线适配器,使之通过无线可以畅快的交流。
小车由以下两部分组成:
控制板核心是 Arduino 控制器,使用Mega328P:
从图中可以看出,用无线通道代替了Arduino标准的USB转UART接口,使通讯和程序下载均变为无线方式。
PC侧的无线适配器细节如下:
可以看出,相当于将原来的UART连线断开,两侧各插入了一个无线模块,是有线方式的UART连接变成无线方式。这对小车很重要,因为小车需要移动,拖着尾巴会大大降低使用体验。
注意:小车控制板元件是安装在背面的,表面很“平整”,为何?
是为了这个:
看了后面的内容就知道了^_^ 小车使用 4节 7号 NiH 电池供电,因为 4 节充电电池电压不足 5V,为保证 Arduino 控制器可靠工作,配置了电源管理电路,内含升压稳压,保证 5V 供应。同时为方便使用,内置了充电电路,可以方便的直接在小车上充电。 之所以没有选择锂电池,主要是从安全角度考虑,尤其是自带充电。 未来是软件的世界,硬件设计已由少数人所完成,多数人只是基于现成的硬件编写软件,使其具有不同的功能。PC 时代已见端倪,而 iPhone、iPad 则将此推向极致。 从就业角度,未来软件外包将成趋势,国人在软件上就业的机会将大于其它任何形式。 而编程学习通常很枯燥,无工作需求时少有人问津,导致编程水平难以提高。 期望小车能使编程变得有趣,让你在娱乐中不断提高自己。 其次: 如今娱乐东西很多,有PK反应的,PK智力的,PK手眼协调的,还有一些完全满足身体需求的…… 小车主要“娱乐”模式 一、全局视觉定位 典型的项目就是“机器人足球”: 二、局部视觉导航 利用与 Arduino 同门的 PC 开源平台:Processing ,就可以方便的实现上述需求,有很多爱好者分享的视觉处理库可以尝试,由于是开源,会不断有新资源分享,使你的学习过程可以不断持续、深入。 为何如此构思? 此次小车设计放弃了传感器,将机器视觉作为小车的全部信息来源,相当于人的眼睛。 小车使用传感器主要是知道自己的位置及环境,如今机器视觉已不稀罕,借助于PC和摄像头,很容易实现图像识别。为降低难度,还可在小车上贴色标,图像识别变成了最简单的色块捕捉。 微软的Kinect出现,证明了这是趋势。 之所以将小车设计的很小,就是为了便于摄像头的捕捉,因为摄像头的拍摄区域有限。 以往 Windows 下实现图像采集和识别是比较专业的事,使用了 Processing,事情变得极为简单。 之所以没有采用蓝牙,是因为蓝牙实现广播困难,而所构思的活动形式需要以广播方式发送坐标。 特别声明! 本小车所期望构建的是娱乐平台,而非应对专业的“机器人足球”比赛!按照目前的价位,连一个专业足球机器人的电机都买不来,当然性能也就没法和专业的足球机器人相比。 在所有机器人活动中,唯有“机器人足球”最有趣,最具挑战性,同时也最有延伸的空间,不会像许多比赛内容,很快进入“饱和”状态,很难再提升。目前的“智能车大赛”就有此迹象。 做此小车是想让“机器人足球”比赛走下圣殿,成为像棋、牌、桌球一样的百姓娱乐内容,在娱乐中顺带提高素质,实现“学有趣,玩有益”! 以下方式供参考: 1、在前后壁上打孔,固定铜柱: 2、有了这些支点,传感器可以按如下方式安装: 如果想加装小机械手之类的设施,可利用: Arduino 控制板上的2个固定螺丝是经过铜柱固定在底盘上的,所以比较牢固。 还可以: 在这样一个小平台上,做上述扩展应该够了吧? 结语: 小车只是一个平台。 作为学生,可以把它看成一个工程“应用题”,期望能帮助你学会运用所学知识去解决问题,但不失趣味! 作为玩家,可以把它看成一个“可编程玩具”,让你随时可以活动活动大脑,但不完全是消遣!就像打球,娱乐之外还可健身。 换一种心态编程,或许能更好的发挥,刺激出灵感。 Arduino 是开源的,虽说所服务的是非专业人士,但编写 Arduino的绝非等闲之辈,源程序中也许有你需要的思想。 由于 Arduino的简化,使很多不想纠缠于Datasheet、但又想操控硬件与现实交互的人有了可能。 同时还是很好的启蒙手段,可以陪孩子玩。目前教育中怪题、难题将孩子训练得热衷于“剑走偏锋”,而大量的选择式答题导致孩子思维无序,编程将使孩子“跳跃”的思维重归条理。 但愿小车能物尽其用!
小车设计初衷:
首先:
为学习编程者提供有趣的编程素材。
创建首款(至少我没有听说过)将编程作为PK内容的娱乐平台。
在无处不使用电脑的世界中,却独缺一个PK编程水平的游戏,希望这个平台能补上这个缺!
用PC摄像头拍摄小车的活动区域,基于小车上的色标获取小车的位置,通过无线通道发送给小车。
将无线摄像头(建议选用模拟的)安装在小车上,摄像头的无线通道将图像传送至PC,由PC上的程序负责图像识别等处理,将处理结果再通过小车的无线通道送回小车。实现一般传感器所能达到的功能,如走轨迹,避障。
智能小车算是“机器人”的一种。而提到“机器人活动”,立刻想到的是“走轨迹”、“避障”等,纠缠于各类传感器,编程反被忽视。由于传感器的局限性(缺钱、没时间),很多想法只能放弃,使活动总在低水平上重复。
无线通讯也是为此服务,实现PC 和小车的信息交互。
不过,可能还是有客户希望加装传感器,这个小车上可以吗?