Taking Arduino to the Internet of Things: The ASIP programming model

Taking Arduino to the Internet of Things: The ASIP programming model
复制标题

DOI:
10.1016/j.comcom.2016.03.016
复制
发表时间:
2016-09
期刊:
Comput. Commun.
影响因子:
--
通讯作者:
G. Barbon;M. Margolis;Filippo Palumbo;F. Raimondi;Nick Weldin
G. Barbon;M. Margolis;Filippo Palumbo;F. Raimondi;Nick Weldin
中科院分区:
其他
文献类型:
--
作者:
G. Barbon;M. Margolis;Filippo Palumbo;F. Raimondi;Nick Weldin

文献摘要

相似文献

像Arduino这样的微控制器被世界各地的各种制造商广泛使用。受欢迎的原因是Arduino的使用简单,以及大量传感器和库可用于扩展这些控制器的基本功能。在过去的十年里,物联网的软件工程解决方案激增,但在某些情况下,这些解决方案需要比简单的、资源有限的微控制器更高级的计算资源。令人惊讶的是,尽管是复杂硬件-软件系统的基本组成部分,但似乎没有一种简单而灵活的方法来(1)扩展微控制器的基本功能,(2)协调物联网中互连的微控制器。在本文中,我们提出了Arduino服务接口编程(ASIP)模型,该新模型通过以下方式来解决上述问题:(1)提供服务抽象以容易地向微控制器添加新能力;(2)使用包括套接字连接、桥接设备、基于MQTT的发布-订阅消息传递、发现服务、我们提供了在Arduino板上运行的代码的开源实现,以及Java、Python、racket和Erlang的客户端库。我们展示了ASIP如何支持非平凡应用程序的快速开发(分布式电路板上的输入/输出协调以及远程机器人的直线跟踪算法的实现),并从定量和定性两个方面评估ASIP的性能。
Micro-controllers such as Arduino are widely used by all kinds of makers worldwide. Popularity has been driven by Arduino’s simplicity of use and the large number of sensors and libraries available to extend the basic capabilities of these controllers. The last decade has witnessed a surge of software engineering solutions for “the Internet of Things”, but in several cases these solutions require computational resources that are more advanced than simple, resource-limited micro-controllers.Surprisingly, in spite of being the basic ingredients of complex hardware–software systems, there does not seem to be a simple and flexible way to (1) extend the basic capabilities of micro-controllers, and (2) to coordinate inter-connected micro-controllers in “the Internet of Things”. Indeed, new capabilities are added on a per-application basis and interactions are mainly limited to bespoke, point-to-point protocols that target the hardware I/O rather than the services provided by this hardware.In this paper we present the Arduino Service Interface Programming (ASIP) model, a new model that addresses the issues above by (1) providing a “Service” abstraction to easily add new capabilities to micro-controllers, and (2) providing support for networked boards using a range of strategies, including socket connections, bridging devices, MQTT-based publish–subscribe messaging, discovery services, etc. We provide an open-source implementation of the code running on Arduino boards and client libraries in Java, Python, Racket and Erlang. We show how ASIP enables the rapid development of non-trivial applications (coordination of input/output on distributed boards and implementation of a line-following algorithm for a remote robot) and we assess the performance of ASIP in several ways, both quantitative and qualitative.