跳到主要内容

ShineBlink 和 Arduino 区别

区别

ShineBlink 为工业物联网而生,Arduino 为极客创造而生。

二者详细对比如下:

ShineBlinkArduino
开发环境用 ShineBlink 开发时,仅仅需要一个文本编辑器就行了(比如Sublime、Vim、Notepad++、甚至记事本软件),因为ShineBlink内置编译器。用 Arduino 开发时,不管是在 Win 电脑上还是Mac 电脑上都需要装一个与相应电脑系统配套的 IDE 软件来搭建 Arduino 的开发环境。
开发难度ShineBlink 提供的库函数结构简单,命名也统一规范,所有的传感器和硬件外设功能一般只用两个 Api 即可实现,复杂点的功能比如 WIFI,蓝牙也只用三个 Api 即可实现。Arduino 上提供的库函数复杂度取决于不同的贡献者,开发一些复杂的功能涉及的 Api 个数也会非常多,往往会发现和在 mcu 嵌入式开发环境下的 c 语言开发复杂度差不多,但却没有 c 语言嵌入式开发更灵活
代码和文档ShineBlink 开发中所需的一切源代码、文档和资料都清晰的集中在www.shineblink.com 和 www.flexlua.com 官网上,并且所用到的一切 Api 函数接口描述都在《Api文档》中能轻易找到。由于Arduino 是由全球各地的爱好者维护,所以源代码,文档以及资料水平参差不齐,分布也比较散乱,有不少资料国内找不到还需要您通过科学上网来查找。
性能ShineBlink 的定位不仅仅是为业余爱好或专业开发人员提供一个更容易开发上手的平台,ShineBlink 提供的所有功能开发者都可以拿来任意随机组合,而不用担心各种功能在系统层面会互相阻塞,比如开发者可以让ShineBlink同时运行多个传感器,多种通信(4G, wifi,蓝牙,以太网,USB等的随机组合)。为了满足这种需求,ShineBlink在系统底层也用类似Linux的思想,根据每种硬件设备的特性将驱动分为类似字符设备,块设备类似这样的类型,并结合操作系统,缓存,内存管理等技术将整个系统有条不紊的组织起来。Arduino在十几年前诞生时不像现在芯片的性能已经翻了很多倍,当时的定位是为了方便开发者基于单线程的方式快速实现某一种功能。但是目前随着物联网的发展,各种通信协议栈的植入,系统的复杂度已经不是通过一个单片机单线程的方式就可以满足了。所以我们在网上看到的大多数Arduino应用案例都不是太复杂的,因为Arduino库里提供的各种驱动函数都是基于单线程的模式编写的,无法达到并行执行的效果,想要实现更复杂的功能组合几乎是不可能。
稳定性ShineBlink提供的每个功能都会考虑其失效情况,比如某个基于 IIc 总线的传感器,如果因为外部干扰可能出现总线无Ack导致主机一直等待Ack卡死的情况,ShineBlink针对这种情况不仅提供了一个等待周期,并且在等待周期内CPU不会卡死,不会影响其他功能的执行。再比如像 4G, wifi、nbiot 这种无线通信设备,可能长长期运行中发生通讯断开的情况,无论是系统层原因造成的、通信链路故障造成的、远端服务器造成的、亦或通信模组自身Bug造成,ShineBlink都会自动尝试重新恢复通信,而不需要开发者去考虑这些复杂的情况。熟悉Arduino的应该知道,像 Adafruit、Sparkfun、Seeed 这样的公司为Arduino提供了大多数的优质库函数,如果我们去阅读这些库函数的源代码我们会发现尽管都是严格按照硬件芯片手册实现的,但在失效处理上基本上都是采用 while(delay--) 这种机制。所以一旦出现失效的情况,系统会出现卡顿,如果软件功能稍微复杂一点,这种卡顿造成的连锁反映甚至可能导致系统的崩溃。
生态及可持续发展规划ShineBlink 内核是闭源的,类似手机操作系统中的 iOS 系统内核源码不开放,这样能为开发者提供更简单的开发接口,让开发者的精力专注在自己的应用实现上,而不需要去考虑那些兼容性、稳定性的问题。让专业的人来维护这些底层的东西,ShineBlink只暴露出最简单的最稳定可靠的接口给开发者,甚至让刚入门小白用户也能开发出功能复杂且稳定的产品。
对于未来的发展,ShineBlink将时刻关注IOT领域的新技术新传感器,并将它们都纳入到ShineBlink的库函数中。并且ShineBlink希望不仅能够为专业人士,甚至非硬件领域的外行人士提供一个进入IOT领域的工具,因为物联网硬件仅仅是万物互联的实现工具,促进这个领域繁荣的一定不是工具,而是使用这个工具的各行各业的其他专业人才。
Arduino 类似手机操作系统中的安卓系统,各路业余爱好者、专业爱好者、以及开发板销售商都可以为其提供驱动库,但各家提供的驱动库很难做到遵循统一的规范,所以虽然庞大但并不强大。但由于Arduino生态已经发展了十余年,其实很多业余爱好者用Arduino的初衷也就仅仅实现一些简单的功能,不需要考虑那么多,所以在这个领域Arduino未来仍然有它的价值。