先说观点,很多人问我开始学习Arduino的时候,用什么编码软件学习?我一般推荐mBlock软件——虽然我不喜欢MakeBlock的硬件——mBlock这个软件还是很好用的。
目前比较流行的Arduino开源硬件图形化编程有mBlock、魔爪、咔哒爸爸、Mixly、ArduBlock、Mind+等软件,非图形化的编程软件一般就是Arduino、Processing、Sublime+Arduino插件,甚至是Vim都是可以的。
但是我一般强烈推荐mBlock——MakeBlock不给我一分钱——因为mBlock是基于Scratch 2.0开发的,能够实现物理计算Physical Computing,小学生现在逐步将熟悉Scratch,学习Scratch之后再使用mBlock来对Arduino编程,衔接非常紧密,最重要的是mBlock可以实现传感器与舞台的互动——其实就是上位机程序——可以实现更多创意,而这时Mixly、ArduBlock等不具备的。
开源硬件编程软件的分类
从编程的形式上分:
- 纯粹的文本编程软件,比如Arduino、Processing等,纯粹使用c语言进行编程,对于初高中生,有编程基础的人来说开发效率高,编程速度快
- 图形化的编程软件,但是不带舞台,以Mixly、ArduBlock(我从未见过如此之丑的软件)为代表,实现了图形化的开源硬件编程,但是无法实现传感器与舞台的互动,或者说无法实现类似S4A——上位机——程序。
- 类Scratch的图形化编程软件,如mBlock、魔爪:mBlock可以看做是Scratch 2.0时代的S4A,举个简单的例子,Scratch里面有当角色被单击、或者某个键被按下的时候,可以控制硬件的LED灯。这些是指利用在线编程模式,就是先烧录一个固件到硬件,然后实时修改代码块,硬件体现变化。
这样小学生们就可以有很多丰富的创意,把软硬件结合起来,这是我最看重的。
开源硬件编程软件的另外一种分类
根据上面的分类,开源硬件编程软件其实就分为两类:
- 带舞台的,可以实现Arduino控制器、传感器和舞台角色的互动
- 不带舞台的,从这个角度来说,Mixly、ArduBlock和Arduino、Processing是同一类的软件
其实mBlock吧,对于开源硬件的支持是很有限的,远不如Mixly支持的传感器多,Mixly支持的厂家和传感器都多,但是小学生阶段并不需要太复杂的传感器,很简单的舵机、电机、LED、声音传感器、光敏传感器等用mBlock提供的Arduino基本编程功能都可以实现的,基本上就是读、写IO引脚的状态,或者读取值。
就像只要顺序、判断、循环可以实现复杂的程序一样,Arduino只需要有限的代码块,也可以实现很多开源硬件的编程。
当然如果Mixly下一步如果实现了舞台功能,我肯定会拥抱Mixly的。
Mixly还有个问题是,基于Blockly编程,设计思路并不是很接近小学生,对于中学生是没有问题的,作为中学生开源软件编程入门,然后转c是可以的。
当前国内的图形化编程软件很多,有的是不开源,免费使用的,有的是免费使用的,虽然都是图形化编程,有的是基于Scratch 2.0的,比如mBlock和魔爪;有的是基于Blockly的,比如Mixly和AppInventor;还有的是基于Scratch 3.0的,也就是Scratch Blocks;然后就是有的公司提前开始行动,基于Google和MIT媒体实验室合作的Scratch Blocks开发的软件;然后目前Google Blockly Games现在也比较流行;再就是有基于伯克利大学的Snap来开发的,比如树上科技的ScratchPi软件,跟Scratch非常类似,比较好用呢。
在mBlock或者说Scratch 2.0的基础上,很多公司开发定制了自己的软件,比如咔哒爸爸——据说是一个工程师爸爸为儿子开发的——kBlock软件;KittenBot等,包括美科的软件。
这些在Scratch 2.0基础上开发的软件,有的是自己重新实现了固件,比如mBlock自己写了底层,自己定义了协议;
很多别的公司也是在Scratch 2.0基础上开发了自己的固件,然后实现了在线编程;甚至还有的公司直接在mBlock基础上二次开发,仅仅是自己组了一些套件,然后根据Scratch的标准来写扩展,实现了自己的代码包:
而且可以自己设计硬件,然后写固件硬件,定义自己的接口,每家的硬件无论是MakeBlock自己家的,咔哒爸爸,还是张晓胜老师的桌面试验箱,都是自己定义了固件,接口,自己做了适配
实际上还有一种方式,就是在浏览器里对Arduino尽心改变成,需要安装Scratch官方的插件,作为中介通信;像诺丁科技做的东西是在线云编译。
其实像Mind+、ArduBlock这些开源软件,后来都不维护了,是很可惜的,当然自己用的也少。
这种