In this article, we show how the Barracuda App Server can be used to rapidly and interactively develop control logic in an embedded FreeRTOS system without having to compile or upload new firmware during the development process.
Without using C/C++, we will show how to interactively create IoT firmware that turns an LED on and sends an SMS to your phone via an online IoT service when a button is pressed.
The real benefit with Lua comes when mixing real time modules implemented in C code with control logic designed in Lua. The dynamic nature of Lua enables the developers to interactively test control code in an embedded device without having to build and upload new firmware.
The flexibility of Lua together with its ability to significantly speed up the development time can greatly benefit any company seeking to optimize the development flow.
In the following video tutorial, we will look into how Lua can significantly speed up the interactive development time of an IoT enabled headless device. A headless device simply means it has no graphical user interface, neither onboard or remotely via web. However, we will use a web based IDE and the Barracuda App Server running on the microcontroller during the interactive development process to speed up the development time. When the development is complete, the web based IDE will be removed and the final IoT application implemented in Lua will be embedded as a ZIP file inside the firmware image.
The following video shows the complete development process from rapid interactive development to creating the final firmware release. The video starts by providing an introduction to the available tools and documentation.
We use an ESP32 in the video tutorial below, but Lua can run on most embedded systems. You can follow along the video tutorial with your own ESP32 if you install the Barracuda App Server for ESP32.
Python may be the king of the desktop, but Lua rocks in embedded systems. Python's main focus is to be a generic and easy to use command line scripting language, while Lua is designed to be a C Library with its main focus on being easy to integrate into a larger program. Lua is found in many games such as World of Warcraft. Lua has traditionally been selected when speed and size matters. Developers generally find Lua to be much faster and less resource hungry than Python. A developer that knows Python will find it easy to learn Lua since both languages are similar.
The C/C++ programming languages dominate embedded systems programming, but developers often run into issues such as buffer overflows, memory leaks, and other memory corruption errors. With Lua you avoid these problems, particularly in larger projects where many computer programmers with varying skills are involved.
Lua abstracts out the details for the underlying microcontroller hardware. Instead of worrying about the bits and the bytes, a developer simply accesses methods of a peripheral object to control the hardware. Hardware control is done via a so called Lua binding. The abstraction of the hardware layer allows developers to focus on the application specifics rather than on the workings of the low-lying hardware.