创新db1——《无线电》第10期
2012-10-29 13:54:33文/杜洋
自从我的《爱上单片机》一书问世,“爱上”一词就在电子制作的圈子里小火了一把。随后又出现了《爱上制作》、《爱上arduino》,还有一大堆类似名字的出版物。虽然每一本的内容都很精彩,但总这么爱来爱去的,是不是有点审美疲劳呢?本来这篇文章是想取名《爱上db1》的,可是再这样爱下去,大家都变成花心大萝卜了,所以我必须在取名上有所创新。既然要创新,干脆就叫《创新db1》好了。没错,“d”、“b”、“1”,就是两个字母和一个数字的正常发音,是不是要比arduino这个名字好记多了?
为什么要提arduino呢?有人把arduino叫电子积木,我今天要介绍给大家的新朋友也是电子积木,叫db1。
【电子diy现状】
每一位电子爱好者都有一段不同寻常的经历,我们聪明、热情、对世界充满好奇。不论是音响还是电视机,我们总想拆开看看,弄个明白。虽然有时会遭到家长的阻挠,但这并不能阻止我们对电子diy的热爱。在我们心中始终有一个梦想,那就是制作出各种电子小作品,让我们的生活变得更方便、更智能。为此我们学习电子制作方法和单片机技术,学习电路设计和程序开发。就是为了终有一天可以开发出属于我们自己的作品。那我们要怎样开发和制作呢?目前我们有以下几种载体的选择:开发板、面包板、洞洞板、自制pcb和arduino。
先来说说开发板。开发板不用我说,大家都很清楚,许多单片机爱好者都是通过开发板入门的(通过《爱上单片机》入门的读者除外)。开发板又叫学习板、实验板,就是把单片机和许多功能电路制作在一块pcb上,用于初学者的学习实践。开发板上的元器件都是焊接好的,学习者只能硬性的记忆电路原理图,不能对电路进行修改和创新。这样的学习也只能学到一半的知识和经验。而且开发板上的大部分元器件是固定的,一旦实验完成就要被闲置在一边了。所以我个人不推荐初学者用开发板入门,我们需要更灵活可变的学习平台。
面包板是一个好的平台,它可以将元器件直接插在上面,简单、快速。通过它来学习单片机,即可以了解单片机的电路原理,又可以自己设计前所未有的电路,尝试创新。这对学习是非常有利的。我正是看到了面包板的这一优势发,才在《爱上单片机》一书中采用这样的学习方法。从读者的意见反馈上看,这个方法是方便有效的。只可惜面包的体积比较大,还仅能用直插元器件。一般情况下,仅一块40脚单片机就占据了较大的空间,更别说还要接一些外围电路和模块。看来面包板是实验的好工具,但不能用它来直接制作成品。
那成品要用什么制作呢?目前我们有洞洞板和自制pcb两种选择。洞洞板又叫万能实验板,是在一片pcb上呈阵列形式地放置着许多孔洞和焊盘。其实也就是对面包板结构的一种继承。洞洞板因为自身是pcb材质,坚固耐用。但制作比较复杂,不仅要焊接元器件,还要连接繁多的飞线。我还曾研发过一款leaf系列叶式结构洞洞板,就是把洞洞板的焊盘做得像叶子一样,可以很方便地在焊盘之间走线。虽然这样可提高效率,但总体上看还是麻烦的。而且动手焊接还有一定的危险,不适合小爱好者的入门。
这么看来,自制pcb应该是不错的选择。一些爱好者会花钱找工厂定做pcb,一次下来至少也有200元。万一做错了,又花同样的价钱重新制作。所以不少大学生都会选择土法自制pcb,最常见的方法是热转印法。但工序很复杂,需要设计、打印、切板、打磨、转印、配济、腐蚀、清洗、钻孔、盖油、测试、焊接,耗时又费力。
arduino是一款从国外流行到国内的单片机开发板。arduino与其他开发板不同的是,它上面没有集成功能电路,而是留出单片机接口,通过外接功能模块和在面包板上搭建电路的方式完成制作。电路制作灵活、快速,而且相关的功能模块也很丰富。从这个角度看来,arduino是一款理想的开发平台,简单、快速、无用焊接、接口丰富。《无线电》杂志也发现了arduino的方便之处,曾在前几期文章中重点介绍arduino的开发与应用。可能就在我这篇文章的旁边,就有一个基于arduino的小制作呢。
arduino虽然流行,但静下来考虑,arduino目前的样子并不是最好的设计。据我了解,arduino板最开始出现时的目的是为了帮助科研人员完成某一项研究任务。任务完成后,设计者就将其开源放到网上,随后就被电子爱好者直接拿来使用了。也就是说arduino最初的设计并不是为了电子爱好者对广泛意义的电子diy而开发的。所以它在设计时很少考虑、甚至没有考虑到自身的结构设计,也很少考虑到单片机接口的排列与众多现有功能模块的兼容性。这种前期设计的缺失,导致使用者在连接功能模块时只能用导线连接。
最后一点,arduino板的价格相对较高,就算是购买国产较次质量的,也有60~100元,还不包括其他功能组件。在价格问题上,虽然arduino是开源的,不需要支付凯发k8国际首页登录的版权费用。但是arduino板上集成了复杂的电源稳压和下载电路,这些电路一般只有在下载程序的时候使用,平时是用不到的。也就是说,如果你用arduino制作一款成品,它上面有一部分是浪费的,而你必须为此“埋单”。在笔者看来,arduino作为免焊接的开发平台,应该尽量做到防尘、绝缘和防短路的设计。可是我们可以看到arduino板外观,所有元器件都裸露在外面。若不小心有导线或金属碎屑掉在上面,很可能导致失灵甚至损坏。
综合来看,我个人觉得arduino缺少必要的设计,可奇怪的是arduino很少进行自我优化和改进,虽然有一些国内的arduino开发的公司曾对它进行了技术和设计上的改进,但似乎他们生怕别人以为他们的改进版不是arduino,所以不敢有重大创新和颠覆性的措施。同时,其他公司也没有想过建立比arduino更好的新平台,因为那需要花时间和金钱去研发和推广,还不如拿现成的产品来销售,所以市场上一直少有与arduino类似的新平台推出。在我看来,arduino之所以流行,是电子爱好者们对这种电子产品原型模块化设计方式和丰富支撑资源的认可,但并非对arduino本身别无选择。正是因为如此,对我而言,设计新的电子制作基础开发平台的想法呼之欲出。也许是以一种无知者无畏的态度,我们在基础开发平台这个层面上大胆创新,开发出db1电子积木。
【db1登场】
db1主模块
db1接口定义图
db1电子积木是一款全新概念的单片机开发平台。你可以说它是在单片机最小系统板上加了一块面包板,也可以说它是在面包板下面隐藏了一块单片机。总之,它是一个综合体,把开发板和面包板的优势结合起来。这种结合,不是简单的组合,而是做了很多的设计。
从db1的照片上我们可以看到,db1的外观上没有裸露任何电路,所有元器件都隐藏在面包板的下面。单片机接口在面包板的两侧,每一侧有34个接口,通过导线可以很方便地将单片机i/o接口连到面包板上。db1集成的是增强型51单片机,共有60kb的编程空间和44个多功能i/o接口。你可以用这些i/o接口直接驱动led点阵屏,或者用adc接口读取模拟数据量。除了i/o接口外,我们还引出了较多的5v、3v电源和gnd,以提供外接元器件的电源。我们为db1设计了看似混乱的接口定义,其实是经过深思熟虑的。因为我们希望常用的功能模块可以省略连接线,直接插在接口上面。于是,我们找来了各种可能会插到db1上的功能模块,研究它们的接口定义和摆放位置。有哪些模块是重要的,哪些是要同时使用的,最终确定了现在的接口定义。db1的设计使得它有很强的设计感,外观精致小巧,没有任何元器件裸露在外,整个模块浑然一体。强大的功能可让你尽情发挥创意。
db1的最大创新是将电路连接与结构设计融为一体,设计外观的同时也是在制作电路,这是一种概念的创新。我们在用普通面包板制作电路时,直插式单片机占据了很大的空间,还有一些不为用户所用的外围电路。这些东西虽然重要,但却是不必让用户看到的。db1把它们都隐藏起来,留出全部的空间插接用户关注的东西。插接出来的样子就是成品的样子。下面就让我和大家一起diy几款实用小制作,一展db1的魅力。
【制作1:炫彩led夜灯】
首先我们从最简单的开始制作吧。炫彩led夜灯,就是使用2个按键控制1个彩色led灯的亮度和颜色。你可以把它放在床头,选择适合的亮度和颜色来装点出浪漫气氛。制作所需的组件非常少,db1主模块1个,三基色共阳led灯1个,微动开关2个。制作过程非常非常简单,不需要导线,只要将微动开关和led插到db1对应的排孔即可。制作完成后,插上usb电源,按左键可开关led灯,同时可选择3挡亮度。按右键可选择8种单色和3挡渐变色效果。可以说是制作简单、功能强大的一件作品。你可以在《无线电》凯发k8国际首页登录官网上找到这个制作的hex写入文件和源程序文件,把hex文件下载到db1主模块中就可以使用了。
电路连接示意图
在开始制作之前,先用usb下载模块给单片机下载hex文件。
只要将组件插入db1的接口中即可完成制作。
左键控制led开关和亮度,右键选择led灯颜色。颜色有粉、红、橙、黄、绿、青、蓝、紫、白和自动渐变色。
【制作2:数码管时钟】
第二件制作是数码管时钟,可以显示小时和分钟,不需要时钟芯片,用单片机产生时间。这回我们用到了面包板连接线,所以会略微复杂一点。但组件依然很少,只需要db1主模块1个,4位共阳数码管1个,微动开关2个,面包板连接线n个。2个微动开关用来设置时间。在同样这个硬件电路上,不仅可以制作时钟,只要改一下程序,就可以把它变成计时器或者计数器。你可以在《无线电》凯发k8国际首页登录官网上找到这个制作的hex写入文件和源程序文件,这个制作的程序是开源的,并有“时钟程序”、“正计时器”、“倒计时器”等开源程序供你参考。源程序中还有详细的注解,语句简单、易理解。你可以按你的想法修改源程序,比如加上日期显示什么的,让它变得更实用、更酷。
制作仅需db1主模块、数码管、微动开关和连接线。
将连接线从单片机接口引到面包板上。
把数码管插到面包板对应位置,连接2个按键。
为db1主模块下载程序,完成后可通过2个按键设置时间。
只要插上dys8100时钟模块再改一下程序,就可以做出高精度的时间和温度显示时钟。
【制作3:4×4彩色立方】
4×4彩色立方是用4个三基色led灯制作的彩色点阵,我还特意为它设计了一个方形的有机玻璃外壳。可以显示出很漂亮的色彩。因为篇幅关系,我们下一期再介绍它的详细制作方法。而且它是开放源程序的,大家可以任何修改显示的效果,发挥你的制作创意。敬请期待,我们下期再见喽!