echo '' ;

Archives

ESP32 Lua-RTOS – IDE Setup and Firmware Flash

Lua RTOS is an open-source real-time operating system (RTOS) designed to run Lua applications on microcontrollers and other embedded systems. It aims to provide a lightweight and efficient platform for developing embedded applications with Lua scripting capabilities.Here will discuss ESP32 Lua RTOS Flash Firmware tutorial.

Overall, Lua RTOS is a versatile and lightweight operating system that empowers developers to build embedded applications with Lua scripting capabilities. Its integration with popular microcontroller platforms and active community support make it a compelling choice for IoT and embedded systems development. We tested with EPSressif ESP-Wroom-32 Dev Board and ESP32 Core firmware with the ESPressif Flash tool.

Read more: ESP32 Lua-RTOS – IDE Setup and Firmware Flash

Overview of Lua RTOS

FeatureDescription
LanguageLua RTOS is built on Lua, a lightweight scripting language. Lua is known for its simplicity, ease of use, and flexibility, making it ideal for embedded systems development.
Real-Time Operating SystemLua RTOS provides a real-time operating system (RTOS) environment for embedded systems. It offers task scheduling, inter-task communication, and synchronization mechanisms.
Supported HardwareLua RTOS supports various microcontroller architectures, including ESP32, ESP8266, STM32, and others. It is highly portable and can be adapted to different hardware platforms.
MultitaskingLua RTOS enables multitasking, allowing multiple Lua scripts to run concurrently as separate tasks. Tasks can communicate and synchronize through message passing and semaphores.
File SystemLua RTOS includes a file system API for accessing files on external storage devices such as SD cards or SPI flash memory. It supports file operations like reading, writing, and listing.
NetworkingLua RTOS supports networking protocols such as TCP/IP, UDP, MQTT, and HTTP. It allows embedded devices to communicate over Ethernet, Wi-Fi, or other network interfaces.
Peripheral SupportLua RTOS provides APIs for interfacing with various peripherals such as GPIO, UART, SPI, I2C, ADC, DAC, and more. Developers can easily control and communicate with hardware components.
Development EnvironmentLua RTOS development can be done using lightweight text editors or integrated development environments (IDEs) with Lua support. It offers flexibility in choosing development tools.
CommunityLua RTOS has an active community of developers and users who contribute to its development, share knowledge, and provide support through forums, mailing lists, and social media.

This table summarizes the key features and characteristics of Lua RTOS, providing an overview of its capabilities and suitability for embedded systems development.

Setting up Lua RTOS

StepDescription
1. Obtain Lua RTOSDownload Lua RTOS from the official repository or source.
2. Install prerequisitesInstall any required dependencies, such as Git and GCC, according to Lua RTOS documentation.
3. Set up development environmentConfigure your development environment, including setting up a terminal and text editor.
4. Initialize project directoryCreate a new directory for your Lua RTOS project.
5. Write your Lua codeDevelop Lua scripts and application logic within the project directory.
6. Configure Lua RTOSCustomize Lua RTOS configuration files to match your project requirements.
7. Compile Lua RTOSUse the provided build system to compile Lua RTOS for your target hardware platform.
8. Flash Lua RTOSFlash the compiled Lua RTOS image to your target hardware using tools like esptool.py.
9. Test your applicationVerify the functionality of your Lua RTOS application on the target hardware platform.
10. Iterate and improveContinuously refine your Lua RTOS application based on testing feedback and requirements.

Firmware

Where to get Lua-RTOS firmware? (Pr-compiled binaries)


Flash Tool

The software and hardware resources required for downloading firmware to flash are
listed below.

  • Hardware:
    o 1 x module to which firmware is downloaded
    o 1 x PC (Windows 7 [64 bits], Windows 10)
  • Software:
    Download Tool: Flash Download Tool ESpressif Flash Download Tool,

This tool supports the following SOCs

  • ESP32 series
  • ESP8266 series
  • ESP32-S2 series
  • ESP32-C3 series
  • ESP32-S3 series
  • ESP32-C2 series
  • ESP32-C6 series
  • ESP32-H2 series

Steps to follow

Download the appropriate firmware for your ESP32 board from the provided link. Once you’ve downloaded the appropriate firmware, unzip the file anywhere on your machine. Similarly, download the Flash tool from the same link and unzip it. Next, open the flash tool designed for ESP32 and configure the following parameters:

  • Baud rate: 921600
  • Flash mode: “dio”
  • Flash frequency: “40m”

For flashing the firmware, use the following addresses:

  • Bootloader.WHITECAT-ESP32-N1.bin – Address: 0x1000
  • lua_rtos.WHITECAT-ESP32-N1.bin – Address: 0x10000
  • partitions_singleapp.WHITECAT-ESP32-N1.bin – Address: 0x8000

For flashing the file system, use:

  • spiff_image.WHITECAT-ESP32-N1.Bin

Once the flashing process is complete, you’re all set.

Note: Make sure to adjust the “esp-idf path” and “usb path” as per your requirements.


Connect to the Console

Connect any UART Serial Tool to your device and configure the following parameters:

  • Speed: 115200 bauds
  • Data bits: 8
  • Stop bits: 1
  • Parity: None
  • Terminal emulation: VT100

Ensure these settings are accurately configured for seamless communication between your devices.

after connecting esp32 to the PC you will see the following.

   /\       /\
  /  \_____/  \
/_____________\
W H I T E C A T

Lua RTOS beta 0.1 build 1479953238 Copyright (C) 2015 - 2017 whitecatboard.org
cpu ESP32 at 240 Mhz
spiffs0 start address at 0x180000, size 512 Kb
spiffs0 mounted
spi2 at pins sdi=012/sdo=013/sck=014/cs=015
sd0 is at spi2, pin cs=015
sd0 type II, size 1943552 kbytes, speed 15 Mhz
sd0a partition type 0b, sector 227, size 1943438 kbytes
fat init file system
fat0 mounted
redirecting console messages to file system ...

Lua RTOS beta 0.1 powered by Lua 5.3.4


Executing /system.lua ...
Executing /autorun.lua ...

/ >

ESP32 Lua RTOS Flash Firmware tutorial

ESP32 Lua-RTOS Module – PIO

The PIO (Programmable Input/Output) module in the ESP32 Lua-RTOS is a versatile feature that allows users to configure and control the GPIO pins of the ESP32 microcontroller dynamically. It provides an interface for performing various operations such as digital input, digital output, and pulse-width modulation (PWM) generation, among others.

Functionalities and Capabilities

  1. Digital Input/Output: The PIO module allows users to configure GPIO pins as digital inputs or outputs. Digital inputs can be used to read the state of external sensors or switches, while digital outputs can drive external devices such as LEDs, relays, or motors.
  2. Interrupt Handling: It supports interrupt handling on GPIO pins, allowing users to trigger actions based on changes in pin states. This feature is useful for implementing event-driven applications where real-time responses to external events are required.
  3. Pull-up/Pull-down Resistors: The PIO module enables users to enable or disable the internal pull-up or pull-down resistors on GPIO pins, ensuring stable and reliable signal readings.
  4. Pulse-Width Modulation (PWM): It provides support for generating PWM signals on GPIO pins, allowing users to control the intensity of analog devices such as LEDs, motors, or servos.
  5. Pin Configuration: Users can dynamically configure the functionality and characteristics of GPIO pins using the PIO module, including setting pin modes (input/output), configuring interrupt triggers, and adjusting PWM parameters.
  6. Low-Level Access: The PIO module offers low-level access to GPIO pins, allowing users to directly manipulate pin states and registers for advanced control and customization.
  7. Resource Management: It provides mechanisms for managing GPIO pin resources efficiently, preventing conflicts and ensuring proper allocation of resources across different tasks or modules.

Overall, the PIO module in the ESP32 Lua-RTOS enhances the flexibility and versatility of the ESP32 microcontroller, enabling users to implement a wide range of GPIO-based applications with ease and efficiency. Whether for simple digital I/O tasks or more complex PWM generation and interrupt handling, the PIO module offers powerful capabilities for interacting with external devices and sensors in Lua-RTOS projects.

Read more… →