SoEasy: A Software Framework for Easy Hardware Control Programming for Diverse IoT Platforms
Abstract
:1. Introduction
- Deriving the requirements (i.e., easiness, extensibility, and portability) for an easy programming framework, and the new software framework named SoEasy, which appears simple and easy to use for a beginner and provides sophisticated programming functions and services for an advanced user;
- Presenting the design for and results from the implementation of SoEasy, which addresses the aforementioned requirements and is verified in two representative open hardware platforms, ARM-based Raspberry Pi2 and X86-based Galileo;
- Evaluating the framework with a real application development procedure.
2. Related Work
2.1. On-Demand Source Code Provision through the Web
2.2. Visual Programming Tools
3. SoEasy Software Framework Design
- Web User Interface: This is the part that interfaces with users and updates the Database via user requests. The Web User Interface, with the help of a Web server, provides users with an intuitive Graphical User Interface (GUI) and helps non-expert users configure peripherals and easily create an application.
- Database: The updated data affect the Control Program. The Database stores and manages all the information for SoEasy, including the configuration values for each built-in peripheral device, such as the general purpose input output (GPIO) controller and add-on function implementations.
- Control Program: The Control Program is a service agent that controls the hardware platform according to the information in the Database.
4. Implementation
4.1. Control Program
4.1.1. SoEasy Functions
4.1.2. SoEasy Services
4.2. Web User Interface
4.3. Database
4.4. Advanced Functions
4.4.1. Code Editing for Extensibility
4.4.2. Export and Import for Portability
5. Evaluation
- By comparison with the conventional approach and the existing Web or mobile application -based frameworks
- From a case study on designing a mobile robot control application in SoEasy to show the feasibility of the SoEasy framework.
- On the portability supported by SoEasy
5.1. Comparison with the Conventional Approach and the Existing Web- or Mobile Application-Based Frameworks
5.2. Mobile Robot Control Application
5.3. Portability
6. Conclusions
Author Contributions
Funding
Acknowledgments
Conflicts of Interest
Abbreviations
API | Application programming interface |
GPIO | General purpose input and output |
IoT | Internet of Things |
UART | Universal asynchronous receiver and transmitter |
PWM | Pulse width modulation |
References
- Open Source Hardware Associatoin (OSHWA). Available online: https://www.oshwa.org/ (accessed on 22 November 2017).
- Arduino. Available online: https://www.arduino.cc (accessed on 22 November 2017).
- RASPBERRY PI 2 MODEL B. Available online: https://www.raspberrypi.org/products/raspberry-pi-2-model-b/ (accessed on 19 December 2017).
- Guinard, D.; Trifa, V. Building the Web of Things: With Examples in Node.js and Raspberry Pi; Manning Publications Co.: Shelter Island, NY, USA, 2016. [Google Scholar]
- Intel Galileo Gen 2 Development Board. Available online: https://www.intel.com/content/dam/www/public/us/en/documents/datasheets/galileo-g2-datasheet.pdf (accessed on 19 December 2017).
- Jie, L.; Ghayvat, H.; Mukhopadhyay, S. Introducing Intel Galileo as a development platform of smart sensor: Evolution, opportunities and challenges. In Proceedings of the 2015 IEEE 10th Conference on Industrial Electronics and Applications (ICIEA), Auckland, New Zealand, 15–17 June 2015; pp. 1797–1802. [Google Scholar]
- Serna, M.Á.; Sreenan, C.J.; Fedor, S. A visual programming framework for wireless sensor networks in smart home applications. In Proceedings of the 2015 IEEE Tenth International Conference on Intelligent Sensors, Sensor Networks and Information Processing (ISSNIP), Singapore, 7–9 April 2015; pp. 1–6. [Google Scholar]
- Gubbi, J.; Buyya, R.; Marusic, S.; Palaniswami, M. Internet of Things (IoT): A vision, architectural elements, and future directions. Future Gener. Comput. Syst. 2013, 29, 1645–1660. [Google Scholar] [CrossRef] [Green Version]
- Libmraa—Low Level Skeleton Library for Communication on GNU/Linux Platforms. Available online: https://github.com/intel-iot-devkit/mraa (accessed on 22 November 2017).
- Hwio. Available online: https://github.com/mrmorphic/hwio (accessed on 22 November 2017).
- Ray, P.P. A survey of IoT cloud platforms. Future Comput. Inform. J. 2016, 1, 35–46. [Google Scholar] [CrossRef]
- Temboo. Available online: https://temboo.com/ (accessed on 22 November 2017).
- LEGO MINDSTORMS. Available online: https://www.lego.com/en-us/mindstorms (accessed on 27 November 2017).
- Introduction to Blockly. Available online: https://developers.google.com/blockly/guides/overview (accessed on 22 November 2017).
- Hsu, T.C.; Hu, H.C. Application of the Four Phases of Computational Thinking and Integration of Blocky Programming in a Sixth-Grade Mathematics Course; Siu-Cheung KONG The Education University of Hong Kong: Hong Kong, China, 2017; p. 73. [Google Scholar]
- Kalelioğlu, F. A new way of teaching programming skills to K-12 students: Code.org. Comput. Hum. Behav. 2015, 52, 200–210. [Google Scholar] [CrossRef]
- Resnick, M.; Maloney, J.; Monroy-Hernández, A.; Rusk, N.; Eastmond, E.; Brennan, K.; Millner, A.; Rosenbaum, E.; Silver, J.; Silverman, B.; et al. Scratch: Programming for all. Commun. ACM 2009, 52, 60–67. [Google Scholar] [CrossRef]
- Lin, Y.W.; Lin, Y.B.; Yang, M.T.; Lin, J.H. ArduTalk: An Arduino Network Application Development Platform Based on IoTtalk. IEEE Syst. J. 2017, 1–9. [Google Scholar] [CrossRef]
- Webduino. Available online: https://webduino.io/en (accessed on 23 June 2018).
- Saravanan, P.; Thandalam, C. Review Article: Complete Reference on Remote Device Control through WebIOPi IoT Framework using BCM 2835 SOC. Aust. J. Basic Appl. Sci. 2016, 10, 185–190. [Google Scholar]
- WebIOPi. Available online: http://webiopi.trouch.com/ (accessed on 23 June 2018).
- Singh, K.J.; Kapoor, D.S. Create Your Own Internet of Things: A survey of IoT platforms. IEEE Consum. Electron. Mag. 2017, 6, 57–68. [Google Scholar] [CrossRef]
- Blynk. Available online: https://www.blynk.cc/ (accessed on 23 June 2018).
- Mochel, P. The sysfs filesystem. Linux Symposium. 2005, p. 313. Available online: https://www.kernel.org/doc/mirror/ols2005v1.pdf#page=321 (accessed on 4 July 2018).
- Intel Galileo—Configuring the Serial Port in Linux. Available online: http://www.malinov.com/Home/sergey-s-blog/intelgalileo-configuringtheserialportinlinux (accessed on 22 November 2017).
- WiringPi. Available online: http://wiringpi.com/ (accessed on 22 November 2017).
- Camera Module V2. Available online: https://www.raspberrypi.org/products/camera-module-v2/ (accessed on 15 December 2017).
- Multi Chassis Tank (Rescue vehicle). DG012-RP. Available online: http://www.dagurobot.com/goods.php?id=56 (accessed on 22 November 2017).
- [JMOD-MOTOR-1] High Efficient 2 Channel DC Motor Driver Module. Available online: http://jcnet.co.kr/?p=347 (accessed on 22 November 2017).
- Bluetooth Shield. Available online: http://wiki.seeedstudio.com/wiki/Bluetooth_Shield (accessed on 22 November 2017).
- Park, K.I.; Shin, J.H.; Lee, J.H.; Yoo, S.E. Poster: SoEasy—A Software Framework for Easy Peripheral Control Programming in Diverse Hardware Platforms. In Proceedings of the 2016 International Conference on Embedded Wireless Systems and Networks (EWSN ’16), Graz, Austria, 15–17 February 2016; pp. 275–276. [Google Scholar]
DB Table | Table Fields |
---|---|
Pin-digital | Pin number, Digital pin data |
Pin-analog | Pin number, Analog pin data |
Pin-compare | Pin number, Comparison operators (>=, <=, <, >, ==), Comparison value, Target pin, Pin data |
Pin-mode | Pin number, Pin mode (Digital, Analog, PWM, UART) |
Pin-pair | Paired pins |
Pin-name | Pin number, Pin name |
Dutycycle-step | Pin number, Dutycycle-step |
Group-control | Group-control name, Pin number, Pin data |
Tik-Tok | Pin number, Timer count index, Pin data, Toggle index, Default timer index, Repeat index |
Module-index | Module name, Data for portability |
Requirements | SoEasy | Webduino | WebIOPi | Temboo | Blynk |
---|---|---|---|---|---|
Multi platforms | Raspberry Pi 2/3 Intel Galileo 1/2 | Arduino with WiFi | Raspberry Pi 2/3 | Arduino with WiFi Samsung ARTIC TI CC3220 | Arduino Raspberry Pi Particle Photon SparkFun Blynk |
ease | O | O | O/Δ | Δ | O |
extensibility | O | X | X | X | X |
portability | O | O/Δ | X | O | O |
Pin Number | SoEasy Mode | Usage |
---|---|---|
0 | UART Rx (5) | Bluetooth Tx |
1 | UART Tx (6) | Bluetooth Rx |
2 | Digital (1) | Motor Driver STBY |
3 | Digital (1) | Motor 1 A IN |
4 | Digital (1) | Motor 2 A IN |
6 | Digital (1) | Motor 1 B IN |
7 | Digital (1) | Motor 2 B IN |
9 | PWM (4) | Motor 1 PWM |
11 | PWM (4) | Motor 2 PWM |
UART RX | Operation | Motor 1 A IN | Motor 2 A IN | Motor 1 B IN | Motor 2 B IN | Motor 1 PWM | Motor 2 PWM |
---|---|---|---|---|---|---|---|
0 | Forward | High | High | Low | Low | 5,000,000 | 5,000,000 |
1 | Stop | High | High | High | High | 0 | 0 |
2 | Backward | Low | Low | High | High | 5,000,000 | 5,000,000 |
3 | Left Turn | High | High | Low | High | 5,000,000 | 0 |
4 | Right Turn | High | High | High | Low | 0 | 5,000,000 |
© 2018 by the authors. Licensee MDPI, Basel, Switzerland. This article is an open access article distributed under the terms and conditions of the Creative Commons Attribution (CC BY) license (http://creativecommons.org/licenses/by/4.0/).
Share and Cite
Lee, J.; Park, G.-i.; Shin, J.-h.; Lee, J.-h.; Sreenan, C.J.; Yoo, S.-e. SoEasy: A Software Framework for Easy Hardware Control Programming for Diverse IoT Platforms. Sensors 2018, 18, 2162. https://doi.org/10.3390/s18072162
Lee J, Park G-i, Shin J-h, Lee J-h, Sreenan CJ, Yoo S-e. SoEasy: A Software Framework for Easy Hardware Control Programming for Diverse IoT Platforms. Sensors. 2018; 18(7):2162. https://doi.org/10.3390/s18072162
Chicago/Turabian StyleLee, Junyoung, Gwang-il Park, Jong-ha Shin, Jin-hae Lee, Cormac J. Sreenan, and Seong-eun Yoo. 2018. "SoEasy: A Software Framework for Easy Hardware Control Programming for Diverse IoT Platforms" Sensors 18, no. 7: 2162. https://doi.org/10.3390/s18072162