Written by Dalibor Dobrilovic, Francesco Flammini, Andrea Gaglione, and Daniel Tokody
Considering the recent advances of ICT technologies and the expansion of networked paradigms such as the Internet of Things (IoT), the design and rapid prototyping of scalable architectures in this context are becoming particularly relevant. IoT systems span over a multi-layered architecture, including devices, edge networks, and back-end IoT cloud platforms, which typically offer centralized storing and processing capabilities. The approach in designing IoT systems is gradually changing: processing tasks are moving closer to data sources and alternative design patterns - such as fog, edge, and mist computing - are emerging.
Edge computing brings data processing capabilities directly to the devices or gateway nodes closer to them. Open-source platforms, such as Arduino, are widely used in prototyping IoT products, whereas artificial intelligence (AI) techniques are usually applied for processing data.
This article investigates the role and applicability of both IoT and AI technologies in edge computing scenarios and presents a performance evaluation of an open-source hardware platform running AI algorithms locally.
Let’s start with the differences in various architectural approaches. Cloud computing stands for remotely accessible data centers offering their users centralized storage, computing power, and data processing without the need of users to make efforts in maintaining the system. This approach, while having many advantages, also has some drawbacks. The weaknesses of this approach may include high bandwidth demands, high power consumption, complex security issues, and high latency. To overcome these issues new architectural approaches are proposed. These approaches include fog, edge, and in recent times the mist computing. All of these are attempts to decentralized data processing, bringing it close to the users and end devices.
Fig. 1 Microcontroller role in edge computing
Edge computing shifts data processing directly to end devices, with the sensors attached. This provides near-real-time processing, lower latency, and can significantly release the pressure on centralized cloud. Fog computing is located in the area between the end devices and the central part of the system, allowing decentralized computing by processing data at the fog node. Besides the computing capabilities, fog nodes should also have the facilities for storing a certain amount of data. Recently, the paradigm of mist has considered the relocation of computing to the extreme edge of the network, having the micro-controllers and sensors to the computational tasks, right after collecting the data.
Another interesting phenomenon in the ICT world is the open-source hardware (OSH) movement. This move promotes hardware design to provide all information that allows other users to reproduce and use such hardware. The hardware, its documentation, and components, such as mechanical drawings, schematics, bills of material, PCB layout data, source codes, and software are available for all interested persons. Arduino microcontroller boards are one of the most frequently used open-source hardware platforms. They are applicable in numerous maker’s and home-made projects, but also in developing testing platforms as well as academic development. Considering the popularity of Arduino in making testing platforms for IoT systems, it could be interesting to investigate the possible usage of Arduino and its clones, such as Edge/mist computing device. To achieve this, the performances of Arduino and clone platforms with the implementation of artificial intelligence should be examined.
The starting point of this research was a GitHub project repository. At GitHub, one can find the diversity of Arduino projects with implemented AI. The search with keywords “Arduino” AND "artificial intelligence" returns 22 repository results. Furthermore, the search with keywords “Arduino” AND "neural networks" gives 92 results; the keywords “Arduino” AND "machine learning" lead to 165 repositories; and “Arduino” AND "deep learning" gives 31 repository results.
A total of five boards have been tested, Arduino UNO Rev3, Arduino MEGA 2560, NodeMCU, Wemos D1 R2, and Arduino DUE. Arduino boards use an Atmel 8-bit AVR microcontroller, while 32-bit Arduino Due is based on the Atmel SAM3X8E. For comparison, Arduino Uno uses an ATmega328P microcontroller, has 32 KB Flash Memory of which 0.5 KB used by bootloader, 2KB SRAM 1 KB EEPROM, and Clock Speed of 16 MHz. Arduino MEGA 2560 is based on ATmega2560 and has 256KB Flash Memory of which 8 KB is used by bootloader, 8KB SRAM, 4 KB EEPROM, and clock speed of 16 MHz. Next, Arduino DUE is based on an AT91SAM3X8E microcontroller and has 512 KB flash memory, 96 KB SRAM, and a clock speed of 84 MHz. NodeMCU is based on microcontroller ESP-8266 32-bit, has 4MB flash memory, and 64 KB SRAM. Wemos D1 R2 is based on ESP-8266EX.
The experiment started with one randomly selected AI Arduino sketch. The sketch was modified, primarily to display the time in milliseconds of starting the Arduino AI code, and to display the time in milliseconds after the code completion. The sketch was uploaded to several Arduino platforms. The time data (in milliseconds) were sent to the serial port of the PC, and captured and saved to disk in a CSV file for further statistical analyses. The experiment was used to give an overview of the processing speed of Arduino variants.
In all five tests, Arduino showed similar results. The code running time was 2.386, 2.392, 2.3, 2.299, and 2.293 respectively. This small experiment shows that Arduino and its clone boards can be used as an edge node with AI support for prototyping in edge computing architecture. The results justify further research in developing AI codes for Arduino edge nodes, and further research guiding to the implementation of intelligent Arduino nodes in various IoT scenarios.
This article was edited by Kristina Kunert