在“关于Robot DIY 活动的思考”一文中我提出了参加 RobotDIY 活动的目的问题,并提出建议:在论坛中针对活动的目的设立一些项目,作为大家共同参与、交流、合作、竞赛的主题,在这个过程中,共同得到提高,共同体验快乐。
关于初级机器人入门项目的设想
在“关于 Robot DIY 活动的思考”一文中我提出了参加 RobotDIY 活动的目的问题,并提出建议:在论坛中针对活动的目的设立一些项目,作为大家共同参与、交流、合作、竞赛的主题,在这个过程中,共同得到提高,共同体验快乐。
为了能将这个想法付诸实施,我先提个设想,希望能起到抛砖引玉的作用。马上要到暑假了,如果能将这个活动落实,对即将开始暑假生活的学生爱好者来说,无疑是个“福音”,他们有可能度过一个充实的假期。
这个设想的前提是:参加机器人活动是为了通过设计、制作的过程满足自己的爱好,体验成功的快乐,同时学习到一些知识,提高自己的综合能力。
活动的对象是:对机器人、单片机控制、计算机编程有兴趣但还不知如何入门的青少年;以及学过一些这方面知识,想实践但没有目标或不知如何实践的大学生。
项目内容:沿线走小车
选择一个遥控模型车为控制对象,设计、制作一个单片机系统以及必要的传感器,改造这个遥控模型车为自动控制的小车,实现沿线走的功能。
关于沿线走的要求,分成三个层次:
- “传统”的沿线走,“线”为在白色基底上的2 cm 宽的黑线,线路为直线和弯路的组合,要求不偏离路线,走得越快越好。这主要是锻炼基本的逻辑控制思维和初级编程技巧。
- 将线路改为迷宫类型,设置一些死“胡同”,要求通过一次“自学习”后,再次从起点走到终点,要求快、不走冤枉路。这主要是锻炼编程的能力,要涉及一些略微复杂的算法和程序结构。
- 将黑线改为中间黑两边渐渐变白的形式,以便可以通过判断反射的强度测出小车偏离路线的程度,从而根据偏离程度来调整纠偏的力度,这样更接近真实世界,要求小车行走不但要快,还要“流畅”,不要“乱甩”。这主要是希望通过这种控制方式学习真正的自动控制算法。(这样“路”的自制可能有些麻烦,如果不能实现,还可以通过增加光电检测器实现这个目的,如每侧用4个,同样可以检测出偏离的程度,具体采用什么方式大家可以讨论。)
项目的目标:
从单片机的入门开始,学会设计、完成一个小型的嵌入式控制系统应用项目,要求是一个完整的过程,即要求包含:
- 需求分析
- 规格说明(概要设计)
- 体系结构设计(详细设计)
- 设计硬件构件和软件构件
- 电原理图、PCB图
- 带注释的软件清单
总之,参照软件工程和嵌入式系统设计的标准方式去做,这方面参考书很多,如《嵌入式计算机系统设计原理》、《嵌入式系统设计》、《嵌入式系统的C程序设计》、《代码大全》等,尤其是《代码大全》(英文名为:Code Complete)这本书,对于初学编程的人来说,我个人认为是很有帮助的,这本书已很难买到,但网上有电子版的,建议下载一读。
由于我们要做的项目很小,不可能完全按书上的去做,可以适当简化,关键是要学习这样的思维方式。
项目的实施方式:
- 有意参加的网友报名,组织一个团队,并推选一个“队长”,需要的话增加一个助理,制定一个基本的活动规则,后面的活动由队长组织、协调。
- 所有队员共同商议确定一个品牌、规格的模型作为控制对象,最好选择一个性价比高的,比较容易买到的模型,电源要在6V 以上,便于给控制部分供电。选定后参加者自己买,或委托队友买。
- 所有队员共同商议选择一个单片机作为控制器的核心,各自提出自己的理由,通过论坛讨论确定一个单片机。我个人意见还是选择51系列,因为51 系列的资源是任何其它单片机不可比的,而且大都是免费资源,最好选用带 ISP 或ICP 的FLASH 单片机,当然这最后由大家讨论确定。
- 单片机确定后,由队长根据项目内容及模型和选定的单片机制定一个“设计任务书”,包含项目分几个阶段、各阶段的要求、进度、如何交流、评价等内容。队员也可以发表意见。
- 所有队员根据“设计任务书”进行设计,内容除软件构件和软件外,其余都要完成,软件只要有个总体框架,硬件要完成电原理图和PCB 图。要求尽量按照标准的工程方式写出技术文档,写出后通过 E_mail 投递给所有队友,这个过程中队友应当相互交流、学习、指导。
- 所有队员都完成后(可以设置一个期限),由队长组织讨论、评比,选出“最佳设计者”、“最认真设计者”、“最创意设计者”等。
- 确定一个硬件方案为最终的共同方案,在此基础上,由设计者根据大家认同的修改意见作最后修改定案。
- 由队长出面协调,由一个队员统一制作 PCB, 因为 PCB 分开制作不经济,器件的采购由队员自行解决,可以相互委托、帮助,但制作、调试由各自完成。
- 在制作、编程、调试过程中,队员可以随时交流、学习。设置一个期限,作为成品的完成期。
- 由队长提议、队员讨论确定一个第一层次走的轨迹。
- 队员先自己调试,成功后自己拍摄成一段视频文件上传到网站上,供大家下载观看(这需要网管配合),第一个完成的评为“最快制作者”。
- 拍摄视频时最好能表示出“走”完全程的时间,这样各个队员可以根据视频初步判断自己的水平。
- 所有队员完成后,开始竞赛。竞赛分两种:一是纯软件竞赛,所有队员将程序(编译好的执行程序)交给队长或大家商议确定的一个队员,由他分别将程序下载到同一辆小车上走,看谁的成绩好,这样评比出一个“最佳编程者”。另一种是实物竞赛,愿意的队员将小车寄给队长或或大家商议确定的一个队员,进行比赛,这样得到一个“最佳制作者”。
- 负责比赛的队员必须拍摄出比赛的视频,上传到网站,供所有队员下载观看。
- “最佳编程者”必须公开自己的源代码,包括软件设计的全套技术文档。“最佳制作者”还必须公开自己在硬件上的改进,并介绍为何如此。其他队员如果愿意也可以将自己的设计文档上传,供有兴趣的人查阅、学习,因为每个人都会有自己独到的想法,这也是展示自己的机会。而且这些文件的公示也许能对你自己的未来有所“帮助”。(这就要求网管提供一个平台,配合这个内容的实施)
- 所有完成的队员都应将自己改造的小车拍成数码照片上传到网站,尽量将自己的制作水平表现出来,大家评比出一个“最佳工艺者”。
- 同样,从第10 步重复,再完成另外两个层次的比赛。
以上实施方法只是我的一些不成熟的想法,而且我对网络能提供的功能还不是很了解,所以,一定有网友能提出更合适的实施方案。
这样活动虽然不能像正式的比赛那样获得奖状、奖品、奖金,也不能得到“保送”,但是,如果你真正认真的做了,一定会终生受益,而且如果我们把这个活动认真搞下去,水平和规模都不断提高,说不定对你进入大学、找工作都有帮助呢!至少你会认识许多志同道合的朋友,对你今后的工作是绝对有利的,如今的技术日新月异,靠个人的知识面很难应付,有时朋友的一句“点拨”可以让你少走很多弯路,甚至能改变你的命运,我就有亲身体会。
这只是项目的初步设想,我希望这个项目可以延伸,这个“标准”的硬件平台可以进一步发挥更大的作用,如:下一步可以用它来学习 RTOS, 仍然用上面的项目内容,但程序的主体是实时操作系统,通过同样的任务体验不同编程方式的差别。
等到第一步迈出后,我想我们一定会越走越好的。
一个过来人:Hanker
June 19. 2004