- مبلغ: ۸۶,۰۰۰ تومان
- مبلغ: ۹۱,۰۰۰ تومان
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.
In this paper we have introduced the Arduino Service Interface Programming model (ASIP). This is an infrastructure that comprises: • a software architecture to manage micro-controllers as clients of higher-level languages; • a language for messages exchanged over a range of communication channels between micro-controllers and clients; • a communication and network architecture that can be based on direct serial (USB) links, TCP sockets, and MQTT publish/subscribe messaging. We have provided a concrete implementation for Arduino micro-controllers and libraries for a range of programming languages. All our source code has been released as open source. We have performed an extensive assessment of the performance of the ASIP infrastructure using Java and Python clients both direct serial connections and over networked connections. The results obtained are very encouraging and show that latency and throughput are adequate for controlling precise navigation of a robot over a wireless network. Besides performance consideration, we have provided a qualitative evaluation showing how applications can be developed by exploiting the existing libraries using only a few lines of code and delegating the communication and coordination issues among microcontrollers to the underlying ASIP infrastructure. For the future, we are currently working on the implementation of ASIP bridges based on the ESP8266 chip. While this paper has focused on the practical implementation for Arduino microcontrollers, we remark that the service model described is independent from the actual micro-controller hardware. The only requirement is that the micro-controller should support a communication stream and support execution loops. From a system and software engineering point of view we consider this work a first step in the direction of model-based development for complex applications involving multiple microcontrollers. Our aim is to enable automatic code generation from our service model, working in the direction of verification and certification activities for complex domains .