嵌入式开发——关于Arduino开发的一些思考

    上学的时候有一门课叫——微机原理与接口技术,课程主线主要是以MCS-51(8051)单片机来讲解,它拥有一个8位的cpu、256B的RAM、8KB的ROM、4x8位并行IO接口……当时老师讲课是先从硬件结构开始的,各种时序振荡器、各种标志位、各种指令周期、各种听不懂...于是不知出于什么心理,那段相当重要的课程被我落下了,但接着转机出现了,老师的讲课的节奏很快(大家都在混,我不想这样说,但事实如此),在讲过指令系统和寻址方式之后,我们进入了"写的阶段"——用汇编写一些简单的小程序,起初写的很high,但基础不牢固导致的问题出现了,设计并焊接外围电路的事情一直困扰着我,但还好,我们小组(共6个人)有一个电子电路比较牛的小伙包揽了这方面的任务,汇编程序则由我来写,当时写的都不太复杂,作为例子程序,一个让4个一排的LED顺序点亮又顺序熄灭的控制程序不会超过20行汇编代码,最复杂的是在两块组合在一起的液晶上显示倒计时,然后,我们就考试了,这门课就结束了,而课程的教材(只有一本)还剩2/5的内容没讲!然而自己已经消化不了这些知识了,对我来说电路设计是最大的障碍,别人可以在面包板上随意摆弄各种元器件,但这方面自己太衰了,也曾尝试过自学,但短期不可能掌握,就放弃了。


        我想说的是——有没有其他方法让我们不必自己设计(制作)电路或是进行很少的设计(制作)进而达到目的呢?这个目的可以是前边说过的点亮LED的应用,当然,我们的需求不止于此,我们还想让某些设备达到预想的自动控制的功能。说到自动控制,绕不开的——传感器和执行器,同样绕不开的还有外围电路,在一个普通编程人员的眼里,从传感器到控制芯片引脚之间的里程是多么复杂与神奇?而且对于不同的传感器或者执行器,他们所需要的外围电路也不尽相同,编程人员会说——我们需要通用的接口!


        是的,给我们通用的硬件接口,让我们用代码来控制电路的行为,“我需要一个模拟的输入”——“好的,这是模拟信号,给你,不不!那个不能动,那个是数字的”。跟软件做的事情一样,将各种复杂的电路抽象,放到一个盒子里边,盖上盖子,留下输入和输出的引脚,然后在盒子上按需编程。
这种盒子早已存在,比如说Arduino——用AVR芯片和少量(注意:确实是少量的)外围电路搭建出来的通用计算平台,它从某种角度解除了上述困扰,释放了(编程人员的)想象空间。像这样的需求——你需要从n个的传感器读数据还要向n个执行器(比方说马达)写数据,可以用一块计算能力稍微强大一点的ARM11板作为上位机,毕竟Arduino的计算能力太弱,但作为数据中转站再适合不过。这样考虑:在ARM的板上加上一个zigbee模块。Arduino上也接上zigbee,同时接上传感器或者执行器,这样ARM的上位机可以通过zigbee与所有连接至Arduino上的传感器和执行器通讯。而且现在的好多ARM板子上面都可以预装可稳定运行的嵌入式操作系统,还有各种的通讯协议,这样我们可以很容易的在上边进行数据处理系统和决策系统的开发。同样的,数据转化的操作以及执行器的控制功能在Arduino上边也能很容易的进行开发(C或者Processing语言)。


        这种结构能做些什么?容我慢慢去想,无论如何,它打破了想法上的一些桎梏。更重要的是在这个过程中收获的一些想法。
    关于主从机器之间的通讯,也许zigbee可能成本太高,而且没有完全发挥zigbee的全部能力,可以考虑更加经济的方法,比如红外通讯(十米以内)、RF、蓝牙等,其中我对RF比较感兴趣,通过射频来通讯,带宽可达2Mbit/s,可一对多组网,与Arduino集成相对zigbee容易,可以用usb接口与arm板集成,最重要的是成本低廉。

你可能感兴趣的:(通讯,ARM,arduino,上位机)