Home > misc > Arduino 暗示的另一种可能

Arduino 暗示的另一种可能

November 25th, 2010 :: jackyz

这篇跳出了软件世界,可以说是完全跑题,各位读者小心。

“将来,每一台家电设备都会有自己的 CPU ,那将会是一个‘智能家电’的时代”——这话听过不知道多少遍了。可我每次听到的时候都在内心暗自怀疑——怎么会,一台电脑多少钱,一个电饭煲多少钱,‘产业升级’再离谱,电饭煲也卖不出一台电脑的钱来吧。好吧,我得承认,我确实是个成天只知道盯着软件看的眼界狭窄的老土鳖。所以,当前几天机缘巧合,当我第一次认真审视一款名字叫做 Arduino 的开源硬件平台时(硬件现在也有开源的了,开源就是好来就是好哇),立刻就被震惊了。

先说被震出“内伤”的地方:成本。Arduino 的核心,是一块 Atmel 公司 AVR 核心的芯片。比较 NB 的是整个核心系统就只有这么一块芯片和不超过十个的外围元件而已。芯片本身只要 20 元左右 RMB 就可以从淘宝拍回来了。在我这个外行看来,这确实是一块神奇的芯片——几乎所有你能想到的“一台电脑”应该具有的东西:CPU,RAM,IO,FLASH,它都已经给你做到芯片里了,那些外围元件基本都是打酱油的。基本上,一个芯片上就是一台“全功能”的超微型电脑。而且,功耗非常低,几节电池都能带起来,还能跑很久。再而且,这个玩意儿已经量产了很多年,成熟得不得了(再次觉得自己 OUT 了)。还而且,作为一个软件工程师,最重要的当然是,它是可以编程的,而且配合了 Arduino 的开发工具之后,可以用类似于 C 的高级语言来编程,然后一键“装”到芯片里去,变得非常简单。

说回上面提到的电饭煲——从成本角度,如果说电饭煲里加一个 x86 的 CPU 确实有点儿痴人说梦,那么在电饭煲里加这么一个 20 元左右的 AVR CPU 就完全没有什么不可以的了,不是吗。

好吧,这是一个便宜到可以放到电饭煲里的电脑。那么,用途?可以拿他来干什么用?自己翻墙到 Youtube 上用 Arduino 做关键词搜搜看吧。从无人驾驶飞机到 Segway 再到激光吉他还有电子快门等等,简直应有尽有,就差战斧式自动巡航导弹了(现在都有 GPS 模块了,估计这个做起来也没多难)。查了一下,国内的玩家们似乎大多都是将 Arduino 当做是“机器人”的开发平台,搞得好像“很学院,很高科技”的样子。在我看来,这似乎还是太装了。比如说,我现在住在村里,成天都要和“全手动控制”的上古太阳能热水器费劲,用 Arduino 来做一个“很农村,很低科技”的控制系统,也未尝不可嘛(有人已经做了一个,俺来晚了,哈哈)。

这一次是意大利的哥们用 Atmel 的 Atmega328 捣鼓出了 Arduino 形成了一个解决通用问题的计算平台。其实类似的事,在计算机的历史上,也曾经华丽地发生过。比如,当 Jobs 和他的哥们在车库里用 Motorola 的 Z80 捣鼓出 Apple I 的时候。又或者 IBM 的哥们用 Intel 的 8088 捣鼓出 PC 的时候。这类事情的实质就是通用系统作为“平台”解决了计算机应用的“门槛”问题,因而,在此之上,各种语言、库、解决方案被陆续发明出来,一旦到了这个阶段,它的广泛被应用也就可以预期了。

这一波计算机领域的 DIY 潮流,被冠以 physical computing 的新名词。想想也是,当 CPU 被装在电饭煲、台灯、玩具,这些东西里时,你确实会觉得这些物品也开始学会计算了。好吧,既然是从 Erlang 完全跑题了,那么,还是在结尾的部分拐回来一点点吧。

这是 Arduino 的 Hello World (让某个 LED 闪烁)

/*
  Blink
  Turns on an LED on for one second, then off for one second, repeatedly.
 
  This example code is in the public domain.
 */

 
void setup() {               
 
// initialize the digital pin as an output.
 
// Pin 13 has an LED connected on most Arduino boards:
 
pinMode(13, OUTPUT);   
}
 
void loop() {
 
digitalWrite(13, HIGH);   // set the LED on
 
delay(1000);              // wait for a second
 
digitalWrite(13, LOW);    // set the LED off
 
delay(1000);              // wait for a second
}

如何?这种 setup – loop 的程序结构,是不是让你想起了 gen_fsm 呢?

有兴趣的硬件 hacker 们可以点[这里]扩充阅读。

misc

  1. sothis
    November 25th, 2010 at 19:23 | #1

    单片机不都是这样么?设置一个管脚状态,然后死循环等着中断,处理就是了,事件驱动硬件可是鼻祖啊.

  2. sothis
    November 25th, 2010 at 19:26 | #2

    @sothis
    Arduino的好处,就是有开源的硬件电路图,和现成的模块,和代码api可用.

  3. November 26th, 2010 at 13:54 | #3

    我之前都是用这个给我老婆的器材写代码的。。。

  4. jackyz
    December 1st, 2010 at 16:43 | #4

    @mryufeng
    我靠,大家原来都很牛B啊。我土鳖了。

  5. December 2nd, 2010 at 12:17 | #5

    我们一直致力于Arduino在国内的使用和推广,有兴趣的话可以逛逛我们的blog:blog.flamingoeda.com

  6. baozii
    December 9th, 2010 at 22:55 | #6

    可能只是隔行如隔山的缘故吧,其实做自动化,控制的那些工程师搞这些好多年了,我们大学时候的课程设计之一就是拿8051做一个小“计算机”

  7. jackyz
    December 12th, 2010 at 17:06 | #7

    baozii :
    可能只是隔行如隔山的缘故吧,其实做自动化,控制的那些工程师搞这些好多年了,我们大学时候的课程设计之一就是拿8051做一个小“计算机”

    其实我上大学的时候也学过单板机(而不是单片机)。只不过,那会儿用的是 Z80 的 CPU ,板子是一大块,很贵,至少没有便宜到你会想把它用到你生活中的某个东西上;上课写程序的时候,是做“人肉”编译,很痛苦,也就是你先得用汇编写个小程序,然后自己查代码表,把它转成十六进制的机器码,再一个一个的输进去,一堂课下来,输完一个小程序,算手快的了。我还记得,那门课程是叫做“计算机组成原理”,学习的目的压根不是为了怎么着“用计算机”,而是了解“计算机的底层到底是怎么回事”。

    我感慨的是:价钱居然可以变得这么便宜,开发居然可以变得这么简单。门槛一下子就降低了。所以,未来也变得似乎不是那么“不可能”。 :D

  8. yogoloth
    December 15th, 2010 at 17:35 | #8

    arm7大概就是20块钱的样子,开发板也不到100,做的小东西也就只能卖个千把,经济上似乎不怎么合算

  9. baozii
    December 20th, 2010 at 22:10 | #9

    jackyz :

    baozii :可能只是隔行如隔山的缘故吧,其实做自动化,控制的那些工程师搞这些好多年了,我们大学时候的课程设计之一就是拿8051做一个小“计算机”

    其实我上大学的时候也学过单板机(而不是单片机)。只不过,那会儿用的是 Z80 的 CPU ,板子是一大块,很贵,至少没有便宜到你会想把它用到你生活中的某个东西上;上课写程序的时候,是做“人肉”编译,很痛苦,也就是你先得用汇编写个小程序,然后自己查代码表,把它转成十六进制的机器码,再一个一个的输进去,一堂课下来,输完一个小程序,算手快的了。我还记得,那门课程是叫做“计算机组成原理”,学习的目的压根不是为了怎么着“用计算机”,而是了解“计算机的底层到底是怎么回事”。
    我感慨的是:价钱居然可以变得这么便宜,开发居然可以变得这么简单。门槛一下子就降低了。所以,未来也变得似乎不是那么“不可能”。

    原来jacky哥是老前辈了~

    我们那届的时候电子元件都已经好便宜了,无线电社的人每隔一段时间都要去广州的批发市场“团购”一批回来焊东西,不是为了省钱,而是很多东西都是十几,上百个起卖的~

  10. m
    January 27th, 2011 at 14:09 | #10

    @FlamingoEDA
    现在出了个arduino的arm版本
    maple 芯片用的stm32
    39io 16adc 2个硬件spi 2个硬件i2c
    3个串口
    一个usb

    他们官方网站 http://www.leaflabs.com

  11. m
    January 27th, 2011 at 14:10 | #11

    @yogoloth
    avr去年代理集体囤货涨价

  12. January 30th, 2011 at 11:35 | #12

    NB

  13. momo5269
    March 16th, 2011 at 09:40 | #13

    如果单片机能够再整体大幅度进化就好了,可惜价格就会那啥了

  14. momo5269
    March 16th, 2011 at 09:41 | #14

    为啥我会有头像?难道是站点用了Gravatar的系统吗?

  15. August 31st, 2011 at 06:02 | #15

    Arduino 我玩了半年多了,囤了一堆的芯片、各类元件、电路板。不过一直没空折腾点大个的项目。
    我认为Arduino的重要意义在于捅破了那层窗户纸。有点类似于解释性语言之于编译型语言。Arduino让有一定程序能力的人,通过较少的硬件知识,就能快速的上手试验,而且很多硬件外设的功能已经模块化了,更增加了信心。

    剩下的,就是想象力和动手了。

  1. No trackbacks yet.