Amalgam: Hardware Hacking for Web Developers with Style (Sheets)
- 975 Downloads
Abstract
Web programming technologies such as HTML, JavaScript, and CSS have become a popular choice for user interface design due to their capabilities: flexible interface, first-class networking, and available libraries. In parallel, driven by the standards set by the mobile companies, embedded devices manufacturers now want to replicate these capabilities. As a result, embedded devices that use web technologies for their graphical interface have started to emerge. However, the programming effort required to integrate web technologies with embedded software hinders its adaption. In this paper, we introduce Amalgam, a system that facilitates the development of embedded devices that use web programming technologies. Amalgam does this by translating the physical interface of embedded hardware components found (e.g., a push button) directly into the HTML and CSS syntax. Our system reduces the programming effort required to develop new embedded devices that use web technologies, as well as adds new interesting capabilities to the design of these. We show Amalgam’s capabilities by exploring three embedded devices built using web programming technologies. Also, we demonstrate how Amalgam reduces programming effort by comparing two traditional approaches of building one of these devices against Amalgam. Results show our system reduces the lines of code required to integrate hardware elements into an embedded device application to a line of code per hardware component added to the device.
Keywords
Rapid development Embedded devices IoT Web user interface CSS HTMLReferences
- 1.AngularJS - Superheroic JavaScript MVW Framework. https://angularjs.org/
- 2.Arduino Reference. https://www.arduino.cc/reference/en/
- 3.Electron—Build Cross Platform Desktop Apps with JavaScript, HTML, and CSS. https://electronjs.org/
- 4.Generic Sensor API. https://www.w3.org/TR/generic-sensor
- 5.HTML Media Capture. https://www.w3.org/TR/html-media-capture/
- 6.Johnny-Five: The JavaScript Robotics & IoT Platform. http://johnny-five.io/
- 7.Linuxduino - A JavScript Library for Communicating with Hardware in a Arduino Style Programming for Any Linux Platform. http://www.w3.org/TR/html5
- 8.Node.js. https://nodejs.org/en/
- 9.Raspberry Pi - Teach, Learn, and Make with Raspberry Pi. https://www.raspberrypi.org/
- 10.Rythm.js - GitHub Pages. https://okazari.github.io/Rythm.js/
- 11.Specifications - webcomponents.org. https://www.webcomponents.org/specs
- 12.Web Bluetooth Community Group. www.w3.org/community/web-bluetooth
- 13.WebAssembly. https://webassembly.org/
- 14.YouTube Player API Reference for iframe Embeds - Google Developers. https://developers.google.com/youtube/iframe_api_reference
- 15.Volder, K.: JQuery: a generic code browser with a declarative configuration language. In: Van Hentenryck, P. (ed.) PADL 2006. LNCS, vol. 3819, pp. 88–102. Springer, Heidelberg (2005). https://doi.org/10.1007/11603023_7CrossRefGoogle Scholar
- 16.Dürkop, L., Imtiaz, J., Trsek, H., Jasperneite, J.: Service-oriented architecture for the autoconfiguration of real-time ethernet systems. In: 3rd Annual Colloquium Communication in Automation (KommA) (2012)Google Scholar
- 17.EETimes: 2017 Embedded Markets Study: Integrating IoT and Advanced Technology Designs, Application Development Processing Environments, April 2017. https://m.eet.com/media/1246048/2017-embedded-market-study.pdf
- 18.Gavrin, E., Lee, S.J., Ayrapetyan, R., Shitov, A.: Ultra lightweight JavaScript engine for Internet of Things. In: Companion Proceedings of the 2015 ACM SIGPLAN International Conference on Systems, Programming, Languages and Applications: Software for Humanity, SPLASH Companion 2015, pp. 19–20. ACM, New York (2015). https://doi.org/10.1145/2814189.2816270. http://doi.acm.org/10.1145/2814189.2816270
- 19.Guan, G., Dong, W., Gao, Y., Fu, K., Cheng, Z.: TinyLink: a holistic system for rapid development of IoT applications. In: Proceedings of the 23rd Annual International Conference on Mobile Computing and Networking, pp. 383–395. ACM (2017)Google Scholar
- 20.Guinard, D., Trifa, V.: Towards the Web of Things: web mashups for embedded devices. In: Workshop on Mashups, Enterprise Mashups and Lightweight Composition on the Web (MEM 2009), in Proceedings of WWW (International World Wide Web Conferences), Madrid, vol. 15 (2009)Google Scholar
- 21.Kuc, R., Jackson, E.W., Kuc, A.: Teaching introductory autonomous robotics with JavaScript simulations and actual robots. IEEE Trans. Educ. 47(1), 74–82 (2004)CrossRefGoogle Scholar
- 22.Locke, D.: MQ Telemetry Transport (MQTT) v3. 1 Protocol Specification. IBM Developer Works Technical Library (2010)Google Scholar
- 23.Osentoski, S., Jay, G., Crick, C., Pitzer, B., DuHadway, C., Jenkins, O.C.: Robots as web services: reproducible experimentation and application development using rosjs. In: IEEE International Conference on Robotics and Automation (ICRA), pp. 6078–6083. IEEE (2011)Google Scholar
- 24.Schlett, M.: Trends in embedded-microprocessor design. Computer 31(8), 44–49 (1998). https://doi.org/10.1109/2.707616CrossRefGoogle Scholar
- 25.Villar, N., Scott, J., Hodges, S., Hammil, K., Miller, C.:NET gadgeteer: a platform for custom devices. In: Kay, J., Lukowicz, P., Tokuda, H., Olivier, P., Krüger, A. (eds.) Pervasive 2012. LNCS, vol. 7319, pp. 216–233. Springer, Heidelberg (2012). https://doi.org/10.1007/978-3-642-31205-2_14CrossRefGoogle Scholar