不难看出,Arduino模块采用的是19200 8N1方式来进行串口通信的。确定了这些之后,按下Arduino模块的复位按钮,随后立即执行File->Upload to I/O Board菜单命令将编译好的程序下载到Arduino模块中。Arduino的bootloader被设计成如果在给定的时间(通常有7到8秒)内没有接收到任何来自集成开发环境的命令,就自动运行之前已经下载的程序,所以我们必须保证在正确的时间段内给Arduino模块发送程序下载的指令。除了通过菜单命令外,下载程序也可以通过快捷键Ctrl+U,或者直接点击工具栏上的相应按钮来完成:
将Arduino程序上传到Arduino模块中需要花一些时间,并且取决于工程的大小。当程序上传成功之后,可以在Arduino集成开发环境的console窗口中看到上传后的程序大小,以及该Arduino模块能够接受的最大程序的大小:
现在再次复位Arduino模块,会看到发光二极管立即闪了一下,表明bootloader正常工作了。接着再过一段时间,大约7到8秒,会看到发光二极管间歇性地不断亮灭,这就表明第一个Arduino程序已经成功地运行起来了,CONGRATULATIONS!
我在这期间遇到的唯一问题是刚开始的时候无法通过串口线下载程序,最初怀疑是串口通信的问题,后来慢慢排查发现Arduino模块能够从串口收数据,但却无法从串口发数据。仔细检查了硬件发现原来我在Arduino模块上接的是串口的公头,自然收发的两条线没有同PC机完全正常地连接上,后来换成一个母头就一切正常了。这一过程中的另一收区是仔细读了Arduino关于串口部分的原理图,原来这部分还是一个实用的TTL转232的电平转换电路,其中只用到了电阻、二极管和三极管,省去了一个MAX232芯片。 至此,DIY Arduino模块的工作算是暂告一段落,剩下的是如何对各个硬件功能进行详细的验证,这可以结合实际的项目来完成。我计划下一步做一些简单的Arduino工程,大部分可能都来源于Arduino网站或者是网上收集到的资料,以验证我的Arduino模块,同时也可以当作入门的教程供大家参考。 AUG26
DIY Arduino: PCB和焊接
Arduino, DIY7 Comments ?
读了一些有关Arduino的介绍性的文章之后,才知道这么一个小东东居然在国外是大红大紫,虽然没有完全想清楚其中的原因,但似乎并不妨碍自己DIY它的决心。Arduino采用开放源代码的模式,其原理图和电路图都可以从其网站免费得到。在权衡比较了一番之后,我决定从其采用串口方式的版本开始,这一方面是因为原理相对简单,能够降低组装和调试的难度,另一方面则考虑到USB模拟的串口并不总是那么稳定。
决定开工之后,花了一上午的时间画好了原理图,基本凑和吧。可轮到电路图时可就不一样了,封装和走线对我这业务选手来讲的确不是件容易的事情。花了两个晚上的时间,最后还是决定放弃,因为Arduino官方提供的电路图在我看来确实比自己布的要漂亮多了,看来这一修养只能在随后的日子里慢慢积累了。
去做电路板时遇到一些问题,由于我问到的制造电路板的厂商基本上只认Protel,根本不知道还有Eagle CAD一说,甚至有人还将其与AutoCAD混为一谈,告诉我这个软件不是用来画电路图的。没有办法,只好回家一顿Google,将其生成Gerber文件后再将送过去。这一过程也算有点收获,除了知道何为Gerber文件以及如何在Eagle CAD中生成Gerber文件之外,还找到了一个用来查看Gerber文件的好工具:CAM350。
电路板从送去到拿到一般需要一周多的时间,这期间的主要任务当然是购买元器件了。一开始并没有注意到Arduino串口版本的元件列表,以为与NG版本一样也采用的是ATmega168,问了好些地方都没得卖,最好只好高价比香港快递过来,估计贵了不止一倍。最后在组装的时候才发现原来串口版本采用的仍旧是ATmega8,而这在村里还算是很好买到的,这一个郁闷啊! 元件都准备妥当之后,电路板也做出来了,虽然不是与Arduino官方一致的蓝色,但还是挺漂亮的;-)
将元件焊接到PCB板上又是一次对基本功的训练,好在这一版本的Arduino采用的都是分立元件,焊接上没有遇到太大的麻烦。期间再一次深刻体会到了工具的重要性,不时幻想自己手中那把最便宜的铬铁啥里也能更新换代一下,虽然他的寿命还不到短短的一个月。
焊接完成之后,万里长征估计还只完成了第一步,要让Arduino能够正常的运行起来,肯定还有相当多的调试和排错的工作要做,而这也正是DIY的乐趣所在;-)
Arduino 电子积木专用传感器扩展板 V4
Arduino, 电子积木2 Comments ?
真没想到,一块传感器扩展板居然被我改到了第四版,而且估计还会继续修改下去。最初的传感器扩展板在设计的时候,只考虑到了如何将数字传感器和模拟传感器很方便地连接起来。因此在最初定义数字传感器线序的时候,没有更多可以参照的地方,直到后来有人提出是否可以考虑与伺服电机(舵机)的连线顺序一样,我才很认真地考虑这一问题,并且在最新的V4版本上采用,原因在于:
? ? ?
可以很方便地与舵机相连
不容易出现短路的情况,在接错钱时不会有很严重的后果 可以与模拟传感器接口统一起来,保持通用
用这么多的好处,自然是忍不住在V4上做了这么一个大的修改,好处多多,但升级也会给之前的用户一些不便。最主要的影响在于数字连接线,由于连线的顺序不一样,因此混用的时候会有一定的麻烦;-) 也就是说,使用V4之前的传感器扩展板的用户,依旧要使用以前的数字连接线;而使用V4版本的用户,则需要使用另一种数字连接线(我暂时叫它通用传感器连接线)。
V4上其它的改动还包括:
? ? ? ? ?
调用了模拟传感器座的位置
POWER区域与最新的Arduino保持一致 数字传感器连接座4个一组,方便连线 添加了一组适合通用连接线的模拟接口 加入了4针的COM/IIC连接座
COM/IIC连接座是为以后的串口模块和IIC模块做准备的,通过设置两个跳线进行相应的选择。 从使用上讲,V4跟之前的版本是一样的,直接连接到标准的Arduino上就可以了: 数字传感器可以借助通用传感器连接线与其相应接:
模块传感器则即可以通过模拟传感器连接线,也可以通过通用传感器连接线与传感器扩展板相连:
最后,因为数字传感器接口与舵机接口兼容,这样用传感器扩展板就可以直接驱动舵机了:)
相关推荐: