Abstract
Hands-on computing has emerged as an exciting and accessible way to learn about computing and engineering in the physical world for students and makers of all ages. Current end-to-end approaches like Microsoft MakeCode require tethered or battery-powered devices like a micro:bit, limiting usefulness and applicability, as well as abdicating responsibility for teaching sustainable practices. Unfortunately, energy harvesting computing devices are usually only programmable by experts and require significant supporting toolchains and knowledge across multiple engineering and computing disciplines to work effectively. This paper bridges the gap between sustainable computing efforts, the maker movement, and novice-focused programming environments with MakeCode-Iceberg, a set of compiler extensions to Microsoft's open-source MakeCode project. The extensions automatically and invisibly transform user code in any language supported (Blocks, JavaScript, Python)into a version that can safely and correctly execute across intermittent power failures caused by unreliable energy harvesting. Determining where, when, and what to save in a checkpoint on limited energy, time, and hardware budget is challenging. We leverage the unique intermediate representation of the MakeCode source-to-source compiler to design and deploy various checkpointing techniques. Our approach allows us to provide, for the first time, a fully web-based and toolchain-free environment to program intermittent computing devices, making battery-free operation accessible to all. We demonstrate new use cases with multiple energy harvesters, peripherals, and application domains: including a Smart Terrarium, Step Counter, and Combination Lock. MakeCode-Iceberg provides sustainable hands-on computing opportunities to a broad audience of makers and learners, democratizing access to energy harvesting and battery-free embedded systems.
Supplemental Material
Available for Download
Supplemental movie, appendix, image and software files for, Battery-free MakeCode: Accessible Programming for Intermittent Computing
- Kofi Sarpong Adu-Manu, Nadir Adam, Cristiano Tapparello, Hoda Ayatollahi, and Wendi Heinzelman. 2018. Energy-harvesting Wireless Sensor Networks (EH-WSNs): A Review. ACM Transactions on Sensor Networks 14, 2 (July 2018), 10:1--10:50.Google Scholar
- Saad Ahmed, Naveed Anwar Bhatti, Muhammad Hamad Alizai, Junaid Haroon Siddiqui, and Luca Mottola. 2019. Efficient intermittent computing with differential checkpointing. In Proceedings of the 20th ACM SIGPLAN/SIGBED International Conference on Languages, Compilers, and Tools for Embedded Systems.Google ScholarDigital Library
- Saad Ahmed, Naveed Anwar Bhatti, Martina Brachmann, and Muhammad Hamad Alizai. 2021. A survey on program-state retention for transiently-powered systems. Journal of Systems Architecture (2021), 102013.Google Scholar
- Arduino. 2021. UNO WIFI. https://store.arduino.cc/usa/arduino-uno-wifi-rev2. [Online; accessed 02-March-2021].Google Scholar
- ARM. 2021. White Paper: The economics of a trillion connected devices. https://community.arm.com/iot/b/internet-of-things/posts/white-paper-the-route-to-a-trillion-devices. [Online; accessed 02-March-2021].Google Scholar
- Jonny Austin, Howard Baker, Thomas Ball, James Devine, Joe Finney, Peli De Halleux, Steve Hodges, Michał Moskal, and Gareth Stockdale. 2020. The BBC Micro:Bit: From the U.K. to the World. Commun. ACM 63, 3 (Feb. 2020), 62--69. https://doi.org/10.1145/3368856Google ScholarDigital Library
- Abu Bakar, Alexander G. Ross, Kasim Sinan Yildirim, and Josiah Hester. 2021. REHASH: A Flexible, Developer Focused, Heuristic Adaptation Platform for Intermittently Powered Computing. Proceedings of the ACM on Interactive, Mobile, Wearable and Ubiquitous Technologies 5, 3, Article 87 (sep 2021), 42 pages. https://doi.org/10.1145/3478077Google ScholarDigital Library
- Domenico Balsamo, Alex S Weddell, Anup Das, Alberto Rodriguez Arreola, Davide Brunelli, Bashir M Al-Hashimi, Geoff V Merrett, and Luca Benini. 2016. Hibernus++: a self-calibrating and adaptive system for transiently-powered embedded devices. IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems (2016).Google Scholar
- Domenico Balsamo, Alex S Weddell, Geoff V Merrett, Bashir M Al-Hashimi, Davide Brunelli, and Luca Benini. 2015. Hibernus: Sustaining computation during intermittent supply for energy-harvesting systems. IEEE Embedded Systems Letters (2015).Google Scholar
- BBC. 2017. BBC micro:bit celebrates huge impact in first year, with 90% of students saying it helped show that anyone can code. https://www.bbc.co.uk/mediacentre/latestnews/2017/microbit-first-year. [Online; accessed 02-March-2021].Google Scholar
- Naveed Anwar Bhatti, Muhammad Hamad Alizai, Affan A Syed, and Luca Mottola. 2016. Energy harvesting and wireless transfer in sensor network applications: Concepts and experiences. ACM Transactions on Sensor Networks (TOSN) 12, 3 (2016), 1--40.Google ScholarDigital Library
- Naveed Anwar Bhatti and Luca Mottola. 2017. HarvOS: Efficient code instrumentation for transiently-powered embedded sensing. In 2017 16th ACM/IEEE International Conference on Information Processing in Sensor Networks (IPSN). IEEE, 209--220.Google ScholarDigital Library
- Alexei Colin and Brandon Lucia. 2016. Chain: tasks and channels for reliable intermittent programs. In Proceedings of the 2016 ACM SIGPLAN International Conference on Object-Oriented Programming, Systems, Languages, and Applications.Google ScholarDigital Library
- Alexei Colin and Brandon Lucia. 2018. Termination checking and task decomposition for task-based intermittent programs. In Proceedings of the 27th International Conference on Compiler Construction. 116--127.Google ScholarDigital Library
- Alexei Colin, Emily Ruppel, and Brandon Lucia. 2018. A reconfigurable energy storage architecture for energy-harvesting devices. In Proceedings of the Twenty-Third International Conference on Architectural Support for Programming Languages and Operating Systems. 767--781.Google ScholarDigital Library
- Paul Curzon, Mark Dorling, Thomas Ng, Cynthia Selby, and John Woollard. 2014. Developing computational thinking in the classroom: a framework. (2014).Google Scholar
- Jasper De Winkel, Vito Kortbeek, Josiah Hester, and Przemysław Pawełczak. 2020. Battery-free game boy. Proceedings of the ACM on Interactive, Mobile, Wearable and Ubiquitous Technologies 4, 3 (2020), 1--34.Google ScholarDigital Library
- James Devine, Joe Finney, Peli de Halleux, Michał Moskal, Thomas Ball, and Steve Hodges. 2018. MakeCode and CODAL: intuitive and efficient embedded systems programming for education. ACM SIGPLAN Notices 53, 6 (2018), 19--30.Google ScholarDigital Library
- Josiah Hester and Jacob Sorber. 2017. Flicker: Rapid Prototyping for the Batteryless Internet-of-Things. In Proceedings of the 15th ACM Conference on Embedded Networked Sensor Systems (Nov. 6-8). ACM, Delft, The Netherlands, 19:1--19:13.Google ScholarDigital Library
- Josiah Hester and Jacob Sorber. 2017. The future of sensing is batteryless, intermittent, and awesome. In Proceedings of the 15th ACM Conference on Embedded Network Sensor Systems. 1--6.Google ScholarDigital Library
- Josiah Hester and Jacob Sorber. 2019. Batteries not included. XRDS: Crossroads, The ACM Magazine for Students 26, 1 (2019), 23--27.Google ScholarDigital Library
- Josiah Hester and Lanny Sitanayah Jacob Sorber. 2015. Tragedy of the Coulombs: Federating Energy Storage for Tiny, Intermittently-Powered Sensors. In Proceedings of the 14th ACM Conference on Embedded Networked Sensor Systems (Nov. 1-4). ACM, Seoul, South Korea, 5--16.Google Scholar
- Josiah Hester, Kevin Storer, and Jacob Sorber. 2017. Timely execution on intermittently powered batteryless sensors. In Proceedings of the 15th ACM Conference on Embedded Network Sensor Systems. 1--13.Google ScholarDigital Library
- Josiah Hester, Nicole Tobias, Amir Rahmati, Lanny Sitanayah, Daniel Holcomb, Kevin Fu, Wayne P Burleson, and Jacob Sorber. 2016. Persistent clocks for batteryless sensing devices. ACM Transactions on Embedded Computing Systems (TECS) 15, 4 (2016), 1--28.Google ScholarDigital Library
- Matthew Hicks. 2017. Clank: Architectural Support for Intermittent Computation. In Proceedings of the 44th Annual International Symposium on Computer Architecture.Google ScholarDigital Library
- Bashima Islam and Shahriar Nirjon. 2020. Zygarde: Time-Sensitive On-Device Deep Inference and Adaptation on Intermittently-Powered Systems. Proceedings of the ACM on Interactive, Mobile, Wearable and Ubiquitous Technologies 4, 3 (2020), 1--29.Google ScholarDigital Library
- Jennifer Jacobs and Leah Buechley. 2013. Codeable Objects: Computational Design and Digital Fabrication for Novice Programmers. In Proc. CHI (Apr. 27 - May. 2). ACM, Paris, France, 1589--1598.Google ScholarDigital Library
- Junsu Jang and Fadel Adib. 2019. Underwater backscatter networking. In Proceedings of the ACM Special Interest Group on Data Communication. 187--199.Google ScholarDigital Library
- Hrishikesh Jayakumar, Arnab Raha, Woo Suk Lee, and Vijay Raghunathan. 2015. Quick Recall: A HW/SW Approach for Computing across Power Cycles in Transiently Powered Computers. ACM Journal on Emerging Technologies in Computing Systems (JETC) (2015).Google Scholar
- Karen H Jin, Howard Eglowstein, and Mihaela Sabin. 2018. Using Physical Computing Projects in Teaching Introductory Programming. In Proceedings of the 19th Annual Sig Conference on Information Technology Education. 155--155.Google ScholarDigital Library
- Pouya Kamalinejad, Chinmaya Mahapatra, Zhengguo Sheng, Shahriar Mirabbasi, Victor CM Leung, and Yong Liang Guan. 2015. Wireless energy harvesting for the Internet of Things. IEEE Communications Magazine 53, 6 (2015), 102--108.Google ScholarDigital Library
- Hyung-Sin Kim, Michael P Andersen, Kaifei Chen, Sam Kumar, William J Zhao, Kevin Ma, and David E Culler. 2018. System architecture directions for post-soc/32-bit networked sensors. In Proceedings of the 16th ACM Conference on Embedded Networked Sensor Systems. 264--277.Google ScholarDigital Library
- Vito Kortbeek, Abu Bakar, Stefany Cruz, Kasim Sinan Yildirim, Przemysław Pawełczak, and Josiah Hester. 2020. BFree: Enabling Battery-free Sensor Prototyping with Python. Proceedings of the ACM on Interactive, Mobile, Wearable and Ubiquitous Technologies 4, 4 (2020), 1--39.Google ScholarDigital Library
- Vito Kortbeek, Kasim Sinan Yildirim, Abu Bakar, Jacob Sorber, Josiah Hester, and Przemysław Pawełczak. 2020. Time-sensitive intermittent computing meets legacy software. In Proceedings of the Twenty-Fifth International Conference on Architectural Support for Programming Languages and Operating Systems. 85--99.Google ScholarDigital Library
- Seulki Lee, Bashima Islam, Yubo Luo, and Shahriar Nirjon. 2019. Intermittent learning: On-device machine learning on intermittently powered system. Proceedings of the ACM on Interactive, Mobile, Wearable and Ubiquitous Technologies 3, 4 (2019), 1--30.Google ScholarDigital Library
- Brandon Lucia, Vignesh Balaji, Alexei Colin, Kiwan Maeng, and Emily Ruppel. 2017. Intermittent computing: Challenges and opportunities. In 2nd Summit on Advances in Programming Languages (SNAPL 2017). Schloss Dagstuhl-Leibniz-Zentrum fuer Informatik.Google Scholar
- Brandon Lucia and Benjamin Ransford. 2015. A simpler, safer programming and execution model for intermittent systems. ACM SIGPLAN Notices (2015).Google Scholar
- Yunfei Ma, Zhihong Luo, Christoph Steiger, Giovanni Traverso, and Fadel Adib. 2018. Enabling deep-tissue networking for miniature medical devices. In Proceedings of the 2018 Conference of the ACM Special Interest Group on Data Communication. 417--431.Google ScholarDigital Library
- Kiwan Maeng, Alexei Colin, and Brandon Lucia. 2017. Alpaca: intermittent execution without checkpoints. Proceedings of the ACM on Programming Languages (2017).Google ScholarDigital Library
- Kiwan Maeng and Brandon Lucia. 2018. Adaptive dynamic checkpointing for safe efficient intermittent computing. In 13th USENIX Symposium on Operating Systems Design and Implementation (OSDI 18).Google Scholar
- Kiwan Maeng and Brandon Lucia. 2020. Adaptive Low-Overhead Scheduling for Periodic and Reactive Intermittent Execution. In Proceedings of the 41st ACM SIGPLAN Conference on Programming Language Design and Implementation (London, UK) (PLDI 2020). Association for Computing Machinery, New York, NY, USA, 1005--1021. https://doi.org/10.1145/3385412.3385998Google ScholarDigital Library
- Andrea Maioli and Luca Mottola. 2021. ALFRED: Virtual Memory for Intermittent Computing. In Proceedings of the 19th ACM Conference on Embedded Networked Sensor Systems (SenSys 2021). 261--273.Google ScholarDigital Library
- Amjad Yousef Majid, Carlo Delle Donne, Kiwan Maeng, Alexei Colin, Kasim Sinan Yildirim, Brandon Lucia, and Przemysław Pawełczak. 2020. Dynamic task-based intermittent execution for energy-harvesting devices. ACM Transactions on Sensor Networks (TOSN) 16, 1 (2020), 1--24.Google ScholarDigital Library
- Will McGrath, Daniel Drew, Jeremy Warner, Majeed Kazemitabaar, Mitchell Karchemsky, David Mellis, and Björn Hartmann. 2017. Bifröst: Visualizing and Checking Behavior of Embedded Systems Across Hardware and Software. In Proc. USIT (Oct. 22-25). ACM, Québec City, QC, Canada, 299--310.Google ScholarDigital Library
- William McGrath, Jeremy Warner, Mitchell Karchemsky, Andrew Head, Daniel Drew, and Bjoern Hartmann. 2018. WiFröst: Bridging the Information Gap for Debugging of Networked Embedded Systems. In Proc. UIST (Oct. 14-17). ACM, Berlin, Germany, 447--455.Google ScholarDigital Library
- Microbit. 2021. Meet the new BBC micro:bit. https://microbit.org/new-microbit/. [Online; accessed 02-March-2021].Google Scholar
- Microsoft. 2020. MakeCode: Hands on computing education. https://www.microsoft.com/en-us/makecode. [Online; accessed 02-March-2021].Google Scholar
- Microsoft. 2021. MakeCode Maker. https://maker.makecode.com/. [Online; accessed 02-March-2021].Google Scholar
- Nature. 2021. Lithium-ion batteries need to be greener and more ethical. https://www.nature.com/articles/d41586-021-01735-z. [Online; accessed 16-November-2021].Google Scholar
- Stefanos Nikiforos, C Kontomaris, and K Chorianopoulos. 2013. MIT Scratch: A Powerful Tool for Improving Teaching of Programming.Google Scholar
- Erik Pasternak, Rachel Fenichel, and Andrew N Marshall. 2017. Tips for creating a block language with blockly. In 2017 IEEE Blocks and Beyond Workshop (B&B). IEEE, 21--24.Google ScholarCross Ref
- Powercast. 2021. Wireless energy harvesting and RF Power. https://www.powercastco.com/. [Online; accessed 02-November-2021].Google Scholar
- R Venkatesha Prasad, Shruti Devasenapathy, Vijay S Rao, and Javad Vazifehdan. 2013. Reincarnation in the ambiance: Devices and networks with energy harvesting. IEEE Communications Surveys & Tutorials 16, 1 (2013), 195--213.Google ScholarCross Ref
- Damith C. Ranasinghe, Roberto L. Shinmoto Torres, Alanson P. Sample, Joshua R. Smith, Keith Hill, and Renuka Visvanathan. 2012. Towards Falls Prevention: a Wearable Wireless and Battery-less Sensing and Automatic Identification-Tag for Real Time Monitoring of Human Movements. In Proc. EMBC (Aug. 28 - Sep. 1). IEEE, San Diego, CA, USA, 6402--6405.Google ScholarCross Ref
- Benjamin Ransford, Jacob Sorber, and Kevin Fu. 2011. Mementos: System support for long-running computation on RFID-scale devices. In Proceedings of the sixteenth international conference on Architectural support for programming languages and operating systems. 159--170.Google ScholarDigital Library
- Saul Rodriguez, Stig Ollmar, Muhammad Waqar, and Ana Rusu. 2015. A batteryless sensor ASIC for implantable bio-impedance applications. IEEE transactions on biomedical circuits and systems 10, 3 (2015), 533--544.Google Scholar
- Evan Strasnick, Maneesh Agrawala, and Sean Follmer. 2017. Scanalog: Interactive Design and Debugging of Analog Circuits with Programmable Hardware. In Proc. USIT (Oct. 22-25). ACM, Québec City, QC, Canada, 321--330.Google ScholarDigital Library
- Vamsi Talla, Bryce Kellogg, Shyamnath Gollakota, and Joshua R Smith. 2017. Battery-free cellphone. Proceedings of the ACM on Interactive, Mobile, Wearable and Ubiquitous Technologies 1, 2 (2017), 1--20.Google ScholarDigital Library
- Joel Van Der Woude and Matthew Hicks. 2016. Intermittent computation without hardware support or programmer intervention. In Proceedings of OSDI'16: 12th USENIX Symposium on Operating Systems Design and Implementation.Google Scholar
- Nicolas Villar and Steve Hodges. 2010. The Peppermill: A human-powered user interface device. In Proceedings of the fourth international conference on Tangible, embedded, and embodied interaction. 29--32.Google ScholarDigital Library
- David Weintrop and Uri Wilensky. 2017. Comparing Block-Based and Text-Based Programming in High School Computer Science Classrooms. ACM Trans. Comput. Educ. 18, 1, Article 3 (oct 2017), 25 pages. https://doi.org/10.1145/3089799Google ScholarDigital Library
- Harrison Williams, Xun Jian, and Matthew Hicks. 2020. Forget failure: Exploiting sram data remanence for low-overhead intermittent computation. In Proceedings of the Twenty-Fifth International Conference on Architectural Support for Programming Languages and Operating Systems. 69--84.Google ScholarDigital Library
- Harrison Williams, Michael Moukarzel, and Matthew Hicks. 2021. Failure sentinels: ubiquitous just-in-time intermittent computation via low-cost hardware support for voltage monitoring. In 2021 ACM/IEEE 48th Annual International Symposium on Computer Architecture (ISCA). IEEE, 665--678.Google ScholarDigital Library
- Kasım Sinan Yıldırım, Amjad Yousef Majid, Dimitris Patoukas, Koen Schaper, Przemyslaw Pawelczak, and Josiah Hester. 2018. Ink: Reactive kernel for tiny batteryless sensors. In Proceedings of the 16th ACM Conference on Embedded Networked Sensor Systems. 41--53.Google ScholarDigital Library
Index Terms
- Battery-free MakeCode: Accessible Programming for Intermittent Computing
Recommendations
BFree: Enabling Battery-free Sensor Prototyping with Python
Building and programming tiny battery-free energy harvesting embedded computer systems is hard for the average maker because of the lack of tools, hard to comprehend programming models, and frequent power failures. With the high ecologic cost of ...
Battery-Free Game Boy
We present ENGAGE, the first battery-free, personal mobile gaming device powered by energy harvested from the gamer actions and sunlight. Our design implements a power failure resilient Nintendo Game Boy emulator that can run off-the-shelf classic Game ...
Making sense of intermittent energy harvesting
ENSsys '18: Proceedings of the 6th International Workshop on Energy Harvesting & Energy-Neutral Sensing SystemsBatteryless, energy harvesting sensing devices enable new applications and deployment scenarios with their promise of zero maintenance, long lifetime, and small size. These devices fail often and for variable lengths of time because of the ...
Comments