其他博客地址

主力博客:https://tonghuix.io

2013年1月6日星期日

中国梦,创客梦——简评DFrobot的“梦想家”系列控制板

新年肇始,纪元终开。
2012年对开源硬件来说,实在是大步跨越的一年,一个个创客空间如雨后春笋般在神州大地茁壮成长,虽然现在创客依然是小众群体,但是其撬动地球的勇气,DIY一切的魅力,蚍蜉撼大树般的创客文化影响了无数的有识之士!
遥想五十年前,在美国麻省理工大学(MIT)成立了一个著名的“铁路模型技术俱乐部”(Tech Model Railroad Club,缩写为 TMRC),世界上最早的“黑客”群体就此诞生,从这里走出了世界上最著名的计算机科学家/程序员。包括有“人工智能之父”之称的John McCarthy约翰·麦卡锡和“自由软件之父”Richard Stallman理查德·斯托曼。四十年前,互联网的原型ARPAnet也诞生在这里!
回想二十八年前,Richard Stallman一个人与私有软件孤军奋战,提出了划时代的GNU计划,创立了“自由软件基金会”(Free Software Foundation, FSF),这位MIT“最后的黑客”以几乎自我牺牲的方式,为以后开源的发展创造了理论和意识形态基础。
回望二十二年前,Linus Torvalds在学习之余开发了后来被称为开源世界“第一屡阳光”的Linux操作系统,现在Linux已经从个人PC、服务器走入了手机(Android),走入了寻常百姓家(Ubuntu TV)。
回忆15年前,Eric Raymond和Bruce Perens一起提出了“开源 Open Source"这个概念,从此世界进入了完全的“开源世界“。
五年前,“开源硬件”终于回来了,想想五十年前的黑客前辈们动手对硬件的修改,而借助轰轰烈烈的开源运动我们也可以改造硬件了!现在是一个人人都可以是创客的时代,一个人人都共享技术的时代,一个开放互联的时代!
2012年,DFrobot推出了基于Arduino MEGA 1280的新控制板“梦想家”Dreamer MEGA。一款划时代的产品横空出世,将开源硬件带入了完全不同的新境地!

传统Arduino的问题

Arduino引入了非常开放的开源硬件标准,而借助这个平台,Arduino将开源硬件提高了前所未有的高度。众所周知,Arduino通过各种扩展板(Shield)来引出其引脚接口,并引出更多的应用。
然而传统Arduino很快就被发现各种问题,虽然引入了很好的开放接口,但是随着应用复杂度的增加,这些扩展板已经越来越不适应人们的需求。
  1. Arduino并没有发挥微控制器的最大效能,没有引出全部引脚,比如Arduino MEGA控制板,MEGA1280总共有100多个引脚,而实际上只有50几个被引出,如果用户想使用这些引脚资源就没有办法了。
  2. 为了更好地体现“电子积木”,要求每层的扩展板都需要将所有IO口引出,而实际上即便用现在整合兼容性最好的扩展板,最多叠落三层。这样的设计不仅增大了成本了,还大大制约了应用。
  3. 引脚引出,势必造成连线复杂,杜邦线少则三五根,多则几十根!对刚刚入门的新手非常不友好,由此产生的问题会造成很多的小问题,影响自信心。

Dreamer的横空出世

Dreamer产品线正是为了避免以上这些Arduino问题而产生的。引入了兼容.Net Gadgeteer的接口标准,使用1.27毫米10芯接线来连接主板和模块。主要特性如下:
  • Arduino MEGA 1280
  • 16个不同种类的Gadgeteer模块接口将芯片的所有引脚都引出!
  • 微型的10芯线(1.27mm 间距) IDC10
  • USB接口:使用任何手机或者平板的Micro USB
  • 电源输出接口
  • 内部锂电池充电电路
  • 外部输入电压 7V 至 12V。
对于熟悉UNIX哲学的人可以发现,这个Dreamer完全符合UNIX设计哲学。下面简述如下:
  • 模块化设计:所有Dreamer的外围硬件都以模块方式产生,不论是传感器还是电机驱动,甚至是LCD显示屏都是高度模块化的。每个模块只做一件事,并尽可能做好。
  • 小即是美:每个模块都以最小系统方式组织和生产。
  • 尽可能的榨取硬件的全部价值:整个芯片的所有引脚全部引出,将芯片的效能全部发挥出来了。
  • 明晰的接口:对于并行设备,将其转变为串行接口设计,比如I2C接口或者SPI接口。
  • 快速的原型设计:由于简化了接线,这样基础的硬件设计就节省下来了,然后可以为产品原型的开发提速。工程师可以不用处理硬件设计,直接为应用编写软件即可!
  • 自由可定制化的接口:由于芯片引脚都可以作为通用IO口使用,同时很多引脚都有多重定义,因此每个接口都可以完全自由的定制,适应几乎所有的应用范围。

兼容M$ .Net Gadgeteer标准

作为崇尚开源的人,一般都是厌烦M$的东西的。没错,M$的产品崇尚傻瓜化和集成化,与定制化和模块化是完全相对的,而唯独 .Net Gadgeteer接口标准是完全不同的,这很让笔者感觉诧异。
当然,事情不对看得太绝对,这个 .Net Gadgeteer接口确实让我很是喜欢,拿到Dreamer板子以后更是爱不释手阿。 .Net Gadgeteer配合IDC10芯线将主板和各个模块有机结合,让创意从此不再因为硬件而局限!

小应用:刷卡机

需求:实现简单的RFID刷卡机,通过LCD显示屏,显示刷卡者的信息。
试想如果用传统Arduino实现这个功能将会耗费多少呢?连线要连接多少根线?模块需要大量的焊接操作?现在完全采用Dreamer系列模块和开发板,只需要如下材料:
  • Dreamer MEGA主板
  • RFID模块、白卡
  • LCD 2004模块
  • IDC10芯线两根
按图所示接好线就OK了,剩下的就是软件编程了。在模块的WIKI上都有模块的示例代码,需要安装I2C LCD的库。后面只需要非常简单的整合即可,这里给出一个简单方法,具体代码不给出,留给读者自由发挥。
首先,在RFID的示例代码开头加上一行LCD的库调用,并实例化一个lcd对象:
#include  <LiquidCrystalI2C.h>
LiquidCrystal I2C lcd(0x27,20,4);
然后在setup()函数里初始化一下LCD设备,使用init方法,并将背光关闭一下:
lcd.init();
lcd.backlight();
最后,在需要LCD显示的地方使用print方法输出:
lcd.print(str);
还可以结合SD卡模块和按键模块实现一个完整的刷卡考勤机!

Dreamer的不足之处

实话实说,几乎没有,但是众所周知完美的事物是不存在的,在平时使用中笔者确实发现了一些勉强可以算成是”不足“的地方:
  1. 锂电池充电电路有点鸡肋。平时使用时电池基本都是单独充电的,直接使用控制板充电确实很少出现,而这部分电路的成本是很高的,我当然不希望花很多钱去购买自己不需要的功能。
  2. IDC10芯线容易损坏,这种线价格高,而损坏率也高。插拔的时候如果过于用力或者使用不小心都会造成线材损坏,进而降低它的优点——降低连线时的成本。
  3. 兼容模块太少。DFrobot正在将现有模块产品升级,力图尽快兼容Dreamer系列控制板。

梦想家的未来

从产品定位的角度出发,“梦想家”系列产品是面向需要快速产品原型开发的工程师,简化学习过程的单片机爱好者和学生,以及大规模控制应用的创客群体。因此从低端到高端,从学生到工程师都可以通过这样的产品快速完成开发。
与此同时,目前只有MEGA 1280控制板,而后面据悉DFrobot也将基于更多的微控制器开发更多”梦想家“系列控制板,很可能不仅仅限于Arduino。另外,更多的模块也在小型化和兼容Gadegeteer接口标准,也欢迎更多的开发者开发这样的模块,进一步丰富开源世界!可以说DFrobot正在通过自己的方式为开源硬件做出实质的贡献!
2012年已经不再是”世界末日“了,玛雅历法开启了新的一个篇章,而现在我们也进入了完全开源的世界,开放互联已经成为了世界的标准,任何人通过各种手段封闭的企图都被证实是违背历史发展规律的。2013,欢迎你我一起共享这个属于开放源代码的新纪元!
【相关产品】
梦想家系列-Dreamer MEGA主板
RFID Reader Module
Mifare One RFID卡片
IIC/TWI LCD2004液晶模块(Arduino兼容)
Gadgeteer ADkey 按键模块
Gadgeteer SD Card 模块